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-toggle.js

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

43 lines 1.0 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 import { useContext } from 'react';
2 import { arrayToClassName, pxToRem } from 'elementor-app/utils/utils.js';
3
4 import { CollapseContext } from './collapse-context';
5
6 export default function CollapseToggle( props ) {
7 const context = useContext( CollapseContext ),
8 style = { '--e-app-collapse-toggle-icon-spacing': pxToRem( props.iconSpacing ) },
9 classNameBase = 'e-app-collapse-toggle',
10 classes = [ classNameBase, { [ classNameBase + '--active' ]: props.active } ],
11 attrs = {
12 style,
13 className: arrayToClassName( classes ),
14 };
15
16 if ( props.active ) {
17 attrs.onClick = () => context.toggle();
18 }
19
20 return (
21 <div { ...attrs }>
22 { props.children }
23
24 { props.active && props.showIcon && <i className="eicon-caret-down e-app-collapse-toggle__icon" /> }
25 </div>
26 );
27 }
28
29 CollapseToggle.propTypes = {
30 className: PropTypes.string,
31 iconSpacing: PropTypes.number,
32 showIcon: PropTypes.bool,
33 active: PropTypes.bool,
34 children: PropTypes.any,
35 };
36
37 CollapseToggle.defaultProps = {
38 className: '',
39 iconSpacing: 20,
40 showIcon: true,
41 active: true,
42 };
43