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 / ui / atoms / drag-drop.js

drag-drop.js in Elementor Website Builder – more than just a page builder 3.8.0-beta1, at app/assets/js/ui/atoms/drag-drop.js

72 lines 1.4 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 import { useState } from 'react';
2
3 import { arrayToClassName } from '../../utils/utils';
4
5 import './drag-drop.scss';
6
7 export default function DragDrop( props ) {
8 const [ isDragOver, setIsDragOver ] = useState( false ),
9 getClassName = () => {
10 const baseClassName = 'e-app-drag-drop',
11 classes = [ baseClassName, props.className ];
12
13 if ( isDragOver && ! props.isLoading ) {
14 classes.push( baseClassName + '--drag-over' );
15 }
16
17 return arrayToClassName( classes );
18 },
19 onDragDropActions = ( event ) => {
20 event.preventDefault();
21 event.stopPropagation();
22 },
23 dragDropEvents = {
24 onDrop: ( event ) => {
25 onDragDropActions( event );
26
27 setIsDragOver( false );
28
29 if ( props.onDrop ) {
30 props.onDrop( event );
31 }
32 },
33 onDragOver: ( event ) => {
34 onDragDropActions( event );
35
36 setIsDragOver( true );
37
38 if ( props.onDragOver ) {
39 props.onDragOver( event );
40 }
41 },
42 onDragLeave: ( event ) => {
43 onDragDropActions( event );
44
45 setIsDragOver( false );
46
47 if ( props.onDragLeave ) {
48 props.onDragLeave( event );
49 }
50 },
51 };
52
53 return (
54 <div { ...dragDropEvents } className={ getClassName() }>
55 { props.children }
56 </div>
57 );
58 }
59
60 DragDrop.propTypes = {
61 className: PropTypes.string,
62 children: PropTypes.any,
63 onDrop: PropTypes.func,
64 onDragLeave: PropTypes.func,
65 onDragOver: PropTypes.func,
66 isLoading: PropTypes.bool,
67 };
68
69 DragDrop.defaultProps = {
70 className: '',
71 };
72