PluginProbe
MotoPress Hotel Booking for Divi / trunk
MotoPress Hotel Booking for Divi vtrunk
trunk 1.0.3 1.0.4 1.0.5 1.0.6 1.0.7 1.0.8 1.1.0 2.0.0
mphb-divi / divi-5 / visual-builder / src / index.jsx

index.jsx in MotoPress Hotel Booking for Divi trunk, at divi-5/visual-builder/src/index.jsx

144 lines 2.8 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 import modules from './modules';
2
3 const vendor = window && window.vendor ? window.vendor : {};
4 const wpPackages = vendor.wp ? vendor.wp : {};
5 const wpHooks = wpPackages.hooks ? wpPackages.hooks : {};
6 const diviPackages = window && window.divi ? window.divi : {};
7 const diviModule = diviPackages.module ? diviPackages.module : {};
8 const diviModuleLibrary = diviPackages.moduleLibrary
9 ? diviPackages.moduleLibrary
10 : {};
11 const addAction = wpHooks.addAction;
12 const ModuleContainer = diviModule.ModuleContainer;
13 const StyleContainer = diviModule.StyleContainer;
14 const CssStyle = diviModule.CssStyle;
15 const registerModule = diviModuleLibrary.registerModule;
16
17 const ModuleStyles = ( {
18 elements,
19 attrs,
20 mode,
21 state,
22 noStyleTag,
23 orderClass,
24 } ) => (
25 <StyleContainer mode={ mode } state={ state } noStyleTag={ noStyleTag }>
26 { elements.style( {
27 attrName: 'module',
28 } ) }
29 <CssStyle
30 selector={ orderClass }
31 attr={ attrs.css }
32 cssFields={ elements?.moduleMetadata?.customCssFields }
33 />
34 </StyleContainer>
35 );
36
37 const Placeholder = ( { title, description } ) => (
38 <div
39 style={ {
40 background: '#f6f7f7',
41 borderRadius: '10px',
42 padding: '3em 1em',
43 } }
44 >
45 <p
46 style={ {
47 textAlign: 'center',
48 fontWeight: '700',
49 fontSize: '1.25em',
50 } }
51 >
52 { title }
53 </p>
54 { description ? (
55 <p style={ { textAlign: 'center' } }>{ description }</p>
56 ) : null }
57 </div>
58 );
59
60 const Edit = ( props ) => {
61 const { attrs, id, name, elements, metadata, previewRender } = props;
62 const PreviewRender = previewRender;
63
64 return (
65 <ModuleContainer
66 attrs={ attrs }
67 elements={ elements }
68 id={ id }
69 moduleClassName={ metadata.moduleClassName }
70 name={ name }
71 stylesComponent={ ModuleStyles }
72 >
73 { PreviewRender ? (
74 <PreviewRender
75 attrs={ attrs }
76 fallback={
77 <Placeholder
78 title={ metadata.title }
79 description={ metadata.description }
80 />
81 }
82 />
83 ) : (
84 <Placeholder
85 title={ metadata.title }
86 description={ metadata.description }
87 />
88 ) }
89 </ModuleContainer>
90 );
91 };
92
93 const createModule = (
94 metadata,
95 conversionOutline,
96 settings,
97 previewRender
98 ) => ( {
99 metadata,
100 conversionOutline,
101 settings,
102 renderers: {
103 edit: ( props ) => (
104 <Edit
105 { ...props }
106 metadata={ metadata }
107 previewRender={ previewRender }
108 />
109 ),
110 },
111 placeholderContent: {
112 module: {
113 meta: {
114 adminLabel: {
115 desktop: {
116 value: metadata.title,
117 },
118 },
119 },
120 },
121 },
122 } );
123
124 if ( addAction && registerModule ) {
125 addAction(
126 'divi.moduleLibrary.registerModuleLibraryStore.after',
127 'mphbDivi.registerModules',
128 () => {
129 modules.forEach(
130 ( { metadata, conversionOutline, settings, previewRender } ) =>
131 registerModule(
132 metadata,
133 createModule(
134 metadata,
135 conversionOutline,
136 settings,
137 previewRender
138 )
139 )
140 );
141 }
142 );
143 }
144