File "kit-content.js"
Full Path: /home/warrior1/public_html/wp-content/plugins/elementor/app/modules/import-export/assets/js/shared/kit-content/kit-content.js
File size: 3.81 KB
MIME-type: text/x-java
Charset: utf-8
import { useState, useContext } from 'react';
import TemplatesFeatures from './components/templates-features/templates-features';
import KitContentCheckbox from './components/kit-content-checkbox/kit-content-checkbox';
import CptOptionsSelectBox from '../cpt-select-box/cpt-select-box';
import GoProButton from 'elementor-app/molecules/go-pro-button';
import Box from 'elementor-app/ui/atoms/box';
import List from 'elementor-app/ui/molecules/list';
import Heading from 'elementor-app/ui/atoms/heading';
import Text from 'elementor-app/ui/atoms/text';
import Grid from 'elementor-app/ui/grid/grid';
import { appsEventTrackingDispatch } from 'elementor-app/event-track/apps-event-tracking';
import { SharedContext } from './../../context/shared-context/shared-context-provider.js';
import './kit-content.scss';
export default function KitContent( { contentData, hasPro } ) {
const [ containerHover, setContainerHover ] = useState( {} ),
sharedContext = useContext( SharedContext ),
{ referrer, currentPage } = sharedContext.data,
// Need to read the hasPro value first from the props because the plugin might be installed during the process.
isProExist = hasPro || elementorAppConfig.hasPro,
getTemplateFeatures = ( features, index ) => {
if ( ! features ) {
return;
}
return (
<TemplatesFeatures
features={ features }
isLocked={ ! isProExist }
showTooltip={ containerHover[ index ] }
/>
);
},
setContainerHoverState = ( index, state ) => {
setContainerHover( ( prevState ) => ( { ...prevState, [ index ]: state } ) );
},
eventTracking = ( event, chosenPart ) => {
if ( 'kit-library' === referrer ) {
const command = event.target.checked && event.target.checked ? 'check' : 'uncheck';
appsEventTrackingDispatch(
`kit-library/${ command }`,
{
page_source: 'import',
step: currentPage,
event_type: 'click',
site_part: chosenPart,
},
);
}
};
if ( ! contentData.length ) {
return null;
}
return (
<Box>
<List separated className="e-app-export-kit-content">
{
contentData.map( ( { type, data }, index ) => {
const isLockedFeaturesNoPro = data.features?.locked && ! isProExist;
return (
<List.Item padding="20" key={ type } className="e-app-export-kit-content__item">
<div
onMouseEnter={ () => isLockedFeaturesNoPro && setContainerHoverState( index, true ) }
onMouseLeave={ () => isLockedFeaturesNoPro && setContainerHoverState( index, false ) }
>
<Grid container noWrap >
<KitContentCheckbox
type={ type }
className="e-app-export-kit-content__checkbox"
onCheck={ ( event, chosenPart ) => {
eventTracking( event, chosenPart );
} }
/>
<Grid item container>
<Heading variant="h4" tag="h3" className="e-app-export-kit-content__title">
{ data.title }
</Heading>
<Grid item container direction={ isLockedFeaturesNoPro ? 'row' : 'column' } alignItems={ 'baseline' } >
<Text variant="sm" tag="p" className="e-app-export-kit-content__description">
{ data.description || getTemplateFeatures( data.features, index ) }
</Text>
{ 'content' === type && <CptOptionsSelectBox /> }
{
isLockedFeaturesNoPro &&
<GoProButton
className="e-app-export-kit-content__go-pro-button"
url="https://go.elementor.com/go-pro-import-export"
/>
}
</Grid>
</Grid>
</Grid>
</div>
</List.Item>
);
} )
}
</List>
</Box>
);
}
KitContent.propTypes = {
className: PropTypes.string,
contentData: PropTypes.array.isRequired,
hasPro: PropTypes.bool,
};
KitContent.defaultProps = {
className: '',
};