PluginProbe
Elementor Website Builder – more than just a page builder / 3.8.0-beta1
Elementor Website Builder – more than just a page builder v3.8.0-beta1
4.3.4 4.3.3 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 All 457 releases
elementor / app / assets / js / molecules / collapse.js

collapse.js in Elementor Website Builder – more than just a page builder 3.8.0-beta1, at app/assets/js/molecules/collapse.js

55 lines 1.3 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 import { arrayToClassName } from 'elementor-app/utils/utils.js';
3
4 import { CollapseContext } from './collapse-context';
5
6 import CollapseToggle from './collapse-toggle';
7 import CollapseContent from './collapse-content';
8
9 import './collapse.scss';
10
11 export default function Collapse( props ) {
12 const [ isOpened, setIsOpened ] = useState( props.isOpened ),
13 classNameBase = 'e-app-collapse',
14 classes = [ classNameBase, props.className, { [ classNameBase + '--opened' ]: isOpened } ],
15 toggle = () => setIsOpened( ( prevState ) => ! prevState );
16
17 useEffect( () => {
18 if ( props.isOpened !== isOpened ) {
19 setIsOpened( props.isOpened );
20 }
21 }, [ props.isOpened ] );
22
23 useEffect( () => {
24 if ( props.onChange ) {
25 props.onChange( isOpened );
26 }
27 }, [ isOpened ] );
28
29 return (
30 <CollapseContext.Provider value={ { toggle } }>
31 <div className={ arrayToClassName( classes ) }>
32 { props.children }
33 </div>
34 </CollapseContext.Provider>
35 );
36 }
37
38 Collapse.propTypes = {
39 className: PropTypes.string,
40 isOpened: PropTypes.bool,
41 onChange: PropTypes.func,
42 children: PropTypes.oneOfType( [
43 PropTypes.node,
44 PropTypes.arrayOf( PropTypes.node ),
45 ] ),
46 };
47
48 Collapse.defaultProps = {
49 className: '',
50 isOpened: false,
51 };
52
53 Collapse.Toggle = CollapseToggle;
54 Collapse.Content = CollapseContent;
55