PluginProbe
Elementor Website Builder – more than just a page builder / 3.9.0
Elementor Website Builder – more than just a page builder v3.9.0
4.3.2 4.3.1 4.3.0 4.3.0-beta3 4.3.0-beta2 4.3.0-beta1 4.2.4 4.2.3 4.2.2 4.2.1 4.2.0 4.1.5 4.2.0-beta2 4.2.0-dev2 4.2.0-beta1 4.1.4 4.1.3 4.1.2 4.1.1 4.1.0 4.1.0-beta3 4.1.0-dev3 4.0.9 4.1.0-beta2 4.1.0-dev2 All 455 releases
elementor / app / assets / js / ui / table / table.js

table.js in Elementor Website Builder – more than just a page builder 3.9.0, at app/assets/js/ui/table/table.js

64 lines 1.6 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 import { useState, useEffect } from 'react';
2
3 import { Context } from './table-context';
4 import { arrayToClassName } from 'elementor-app/utils/utils.js';
5
6 import TableHead from './table.head';
7 import TableBody from './table-body';
8 import TableRow from './table-row';
9 import TableCell from './table-cell';
10 import TableCheckbox from './table-checkbox';
11
12 import './table.scss';
13
14 export default function Table( { className, initialSelected, initialDisabled, selection, children, onSelect } ) {
15 const [ selected, setSelected ] = useState( initialSelected ),
16 [ disabled, setDisabled ] = useState( initialDisabled ),
17 classNameBase = 'eps-table',
18 classes = [ classNameBase, { [ classNameBase + '--selection' ]: selection }, className ];
19
20 useEffect( () => {
21 if ( onSelect ) {
22 onSelect( selected );
23 }
24 }, [ selected ] );
25
26 return (
27 <Context.Provider value={ { selected, setSelected, disabled, setDisabled } }>
28 <table className={ arrayToClassName( classes ) }>
29 {
30 selection &&
31 <colgroup>
32 <col className={ classNameBase + '__checkboxes-column' } />
33 </colgroup>
34 }
35
36 { children }
37 </table>
38 </Context.Provider>
39 );
40 }
41
42 Table.Head = TableHead;
43 Table.Body = TableBody;
44 Table.Row = TableRow;
45 Table.Cell = TableCell;
46 Table.Checkbox = TableCheckbox;
47
48 Table.propTypes = {
49 children: PropTypes.any.isRequired,
50 className: PropTypes.string,
51 headers: PropTypes.array,
52 initialDisabled: PropTypes.array,
53 initialSelected: PropTypes.array,
54 rows: PropTypes.array,
55 selection: PropTypes.bool,
56 onSelect: PropTypes.func,
57 };
58
59 Table.defaultProps = {
60 selection: false,
61 initialDisabled: [],
62 initialSelected: [],
63 };
64