PluginProbe ʕ •ᴥ•ʔ
Presto Player / 2.2.2
Presto Player v2.2.2
4.3.0 4.2.4 4.2.3 4.2.2 4.2.0 4.2.1 trunk 1.10.0 1.10.1 1.10.2 1.11.0 1.12.0 1.13.0 1.14.0 1.14.1 1.5.10 1.5.11 1.5.12 1.5.13 1.5.14 1.5.15 1.5.5 1.5.6 1.5.7 1.5.8 1.5.9 1.6.0 1.6.1 1.6.10 1.6.11 1.6.12 1.6.13 1.6.2 1.6.3 1.6.4 1.6.5 1.6.6 1.6.7 1.6.8 1.6.9 1.7.0 1.7.1 1.7.2 1.8.0 1.8.1 1.8.2 1.8.3 1.8.4 1.8.5 1.8.6 1.9.0 1.9.1 1.9.10 1.9.11 1.9.12 1.9.13 1.9.14 1.9.2 1.9.3 1.9.4 1.9.5 1.9.6 1.9.7 1.9.8 1.9.9 2.0.0 2.0.1 2.0.10 2.0.11 2.0.12 2.0.13 2.0.14 2.0.15 2.0.16 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.0.8 2.0.9 2.1.0 2.2.0 2.2.1 2.2.2 2.2.3 2.2.3-beta1 2.3.0 2.3.1 2.3.2 2.3.3 3.0.0 3.0.0-beta1 3.0.1 3.0.2 3.0.3 3.0.4 3.0.5 3.0.6 3.0.7 3.0.8 3.1.0 3.1.1 3.1.2 3.1.3 4.0.0 4.0.1 4.0.2 4.0.3 4.0.4 4.0.5 4.0.6 4.0.7 4.0.8 4.1.0 4.1.1 4.1.2 4.1.3 4.1.4
presto-player / src / admin / ui / Table.js
presto-player / src / admin / ui Last commit date
Menu.js 2 years ago Pagination.js 5 years ago StatCard.js 4 years ago Table.js 4 years ago
Table.js
75 lines
1 const { __ } = wp.i18n;
2 const { useRef, useEffect, useState } = wp.element;
3 const { Card, CardBody, Flex, FlexBlock, Button, ButtonGroup } = wp.components;
4
5 import classNames from "classnames";
6
7 export default ({ columns, data, onRowClick, title }) => {
8 if (!data.length) {
9 return (
10 <Card size="large" className="presto-card table-card">
11 <CardBody className="presto-flow">
12 <div className="presto-card__title">{title}</div>
13 <div style={{ opacity: 0.65 }}>
14 {__("No data available.", "presto-player")}
15 </div>
16 </CardBody>
17 </Card>
18 );
19 }
20
21 return (
22 <Card size="large" className="presto-card table-card">
23 <CardBody className="presto-flow">
24 <div className="presto-card__title">{title}</div>
25 <table
26 role="table"
27 className={classNames("presto-table", { "is-clickable": onRowClick })}
28 >
29 <thead role="rowgroup">
30 <tr role="row">
31 {columns &&
32 columns.map((column) => {
33 return (
34 <th key={column.key} role="columnheader">
35 {column.label}
36 </th>
37 );
38 })}
39 </tr>
40 </thead>
41
42 <tbody role="rowgroup">
43 {data.map((row, rowIndex) => {
44 return (
45 <tr
46 role="row"
47 key={`row-${rowIndex}`}
48 onClick={() => onRowClick && onRowClick(row)}
49 >
50 {columns.map((column, columnIndex) => {
51 return (
52 <td
53 role="cell"
54 data-title={column.label}
55 key={`row-${rowIndex}-${columnIndex}`}
56 aria-label={column.label}
57 >
58 {column.render ? (
59 column.render(row)
60 ) : (
61 <div>{column.value(row)}</div>
62 )}
63 </td>
64 );
65 })}
66 </tr>
67 );
68 })}
69 </tbody>
70 </table>
71 </CardBody>
72 </Card>
73 );
74 };
75