File "upload-file.js"
Full Path: /home/warrior1/public_html/languages/wp-content/plugins/elementor/app/assets/js/molecules/upload-file.js
File size: 2.55 KB
MIME-type: text/x-java
Charset: utf-8
import { useRef } from 'react';
import Button from 'elementor-app/ui/molecules/button';
import { arrayToClassName, isOneOf } from 'elementor-app/utils/utils.js';
import './upload-file.scss';
export default function UploadFile( props ) {
const fileInput = useRef( null ),
baseClassName = 'e-app-upload-file',
classes = [ baseClassName, props.className ];
// For 'wp-media' type.
let frame;
return (
<div className={ arrayToClassName( classes ) }>
<input
ref={ fileInput }
type="file"
accept={ props.filetypes.map( ( type ) => '.' + type ).join( ', ' ) }
className="e-app-upload-file__input"
onChange={ ( event ) => {
const file = event.target.files[ 0 ];
if ( file && isOneOf( file.type, props.filetypes ) ) {
props.onFileSelect( file, event, 'browse' );
} else {
fileInput.current.value = '';
props.onError( {
id: 'file_not_allowed',
message: __( 'This file type is not allowed', 'elementor' ),
} );
}
} }
/>
<Button
className="e-app-upload-file__button"
text={ props.text }
variant={ props.variant }
color={ props.color }
size="lg"
hideText={ props.isLoading }
icon={ props.isLoading ? 'eicon-loading eicon-animation-spin' : '' }
onClick={ () => {
if ( props.onFileChoose ) {
props.onFileChoose();
}
if ( ! props.isLoading ) {
if ( props.onButtonClick ) {
props.onButtonClick();
}
if ( 'file-explorer' === props.type ) {
fileInput.current.click();
} else if ( 'wp-media' === props.type ) {
if ( frame ) {
frame.open();
return;
}
// Initialize the WP Media frame.
frame = wp.media( {
multiple: false,
library: {
type: [ 'image', 'image/svg+xml' ],
},
} );
frame.on( 'select', () => {
if ( props.onWpMediaSelect ) {
props.onWpMediaSelect( frame );
}
} );
frame.open();
}
}
} }
/>
</div>
);
}
UploadFile.propTypes = {
className: PropTypes.string,
type: PropTypes.string,
onWpMediaSelect: PropTypes.func,
text: PropTypes.string,
onFileSelect: PropTypes.func,
isLoading: PropTypes.bool,
filetypes: PropTypes.array.isRequired,
onError: PropTypes.func,
variant: PropTypes.string,
color: PropTypes.string,
onButtonClick: PropTypes.func,
onFileChoose: PropTypes.func,
};
UploadFile.defaultProps = {
className: '',
type: 'file-explorer',
text: __( 'Select File', 'elementor' ),
onError: () => {},
variant: 'contained',
color: 'primary',
};