PluginProbe ʕ •ᴥ•ʔ
Starter Sites & Templates by Neve / 1.4.1
Starter Sites & Templates by Neve v1.4.1
1.4.1 1.4.0 1.3.0 1.2.29 1.2.28 1.2.6 1.2.7 1.2.8 1.2.9 trunk 1.0.10 1.0.11 1.0.7 1.0.8 1.0.9 1.1.0 1.1.1 1.1.10 1.1.11 1.1.12 1.1.13 1.1.14 1.1.15 1.1.16 1.1.17 1.1.18 1.1.19 1.1.2 1.1.20 1.1.21 1.1.22 1.1.23 1.1.24 1.1.25 1.1.26 1.1.27 1.1.28 1.1.29 1.1.3 1.1.30 1.1.31 1.1.32 1.1.33 1.1.34 1.1.35 1.1.36 1.1.37 1.1.38 1.1.39 1.1.4 1.1.5 1.1.6 1.1.7 1.1.8 1.1.9 1.2.0 1.2.1 1.2.10 1.2.11 1.2.12 1.2.13 1.2.14 1.2.15 1.2.16 1.2.17 1.2.18 1.2.19 1.2.2 1.2.20 1.2.21 1.2.22 1.2.23 1.2.24 1.2.25 1.2.26 1.2.27 1.2.3 1.2.4 1.2.5
templates-patterns-collection / beaver / src / index.js
templates-patterns-collection / beaver / src Last commit date
components 1 year ago data 1 year ago editor.scss 5 years ago export.js 1 year ago icon.js 5 years ago index.js 5 years ago
index.js
213 lines
1 /* global FLBuilder */
2
3 import { Modal } from '@wordpress/components';
4 import { useDispatch, useSelect } from '@wordpress/data';
5 import { render, useState } from '@wordpress/element';
6
7 import './data/store/index.js';
8 import './export.js';
9 import './editor.scss';
10 import Header from './components/header';
11 import Content from './components/content';
12
13 const App = () => {
14 const currentTab = useSelect( ( select ) =>
15 select( 'tpc/beaver' ).getCurrentTab()
16 );
17
18 const { setFetching, updateCurrentTab } = useDispatch( 'tpc/beaver' );
19
20 const [ nodeID, setNodeID ] = useState( null );
21
22 const [ isOpen, setOpen ] = useState( false );
23
24 const [ searchQuery, setSearchQuery ] = useState( {
25 templates: '',
26 library: '',
27 } );
28
29 const [ sortingOrder, setSortingOrder ] = useState( {
30 templates: {
31 order: 'DESC',
32 orderby: 'date',
33 },
34 library: {
35 order: 'DESC',
36 orderby: 'date',
37 },
38 } );
39
40 const [ isSearch, setSearch ] = useState( {
41 templates: false,
42 library: false,
43 } );
44
45 const initModal = ( node ) => {
46 setNodeID( node );
47 setOpen( true );
48 };
49
50 const initModalExport = () => {
51 setOpen( true );
52 updateCurrentTab( 'export' );
53 };
54
55 window.tiTpc.initBeaver = ( node ) => initModal( node );
56
57 window.tiTpc.initModalExport = initModalExport;
58
59 const closeModal = () => {
60 setOpen( false );
61 FLBuilder._settingsCancelClicked();
62 };
63
64 const isGeneral = currentTab === 'templates';
65
66 const setQuery = ( query ) => {
67 if ( isGeneral ) {
68 return setSearchQuery( {
69 ...searchQuery,
70 templates: query,
71 } );
72 }
73
74 return setSearchQuery( {
75 ...searchQuery,
76 library: query,
77 } );
78 };
79
80 const getSearchQuery = () => {
81 if ( isGeneral ) {
82 return searchQuery.templates;
83 }
84
85 return searchQuery.library;
86 };
87
88 const setSorting = ( order ) => {
89 if ( isGeneral ) {
90 return setSortingOrder( {
91 ...sortingOrder,
92 templates: order,
93 } );
94 }
95
96 return setSortingOrder( {
97 ...sortingOrder,
98 library: order,
99 } );
100 };
101
102 const getOrder = () => {
103 if ( isGeneral ) {
104 return sortingOrder.templates;
105 }
106
107 return sortingOrder.library;
108 };
109
110 const setSearchStatus = ( status ) => {
111 if ( isGeneral ) {
112 return setSearch( {
113 ...searchQuery,
114 templates: status,
115 } );
116 }
117
118 return setSearch( {
119 ...isSearch,
120 library: status,
121 } );
122 };
123
124 const getSearchStatus = () => {
125 if ( isGeneral ) {
126 return isSearch.templates;
127 }
128
129 return isSearch.library;
130 };
131
132 const importTemplate = ( template ) => {
133 setFetching( true );
134
135 FLBuilder.ajax(
136 {
137 action: 'ti_get_position',
138 node: nodeID,
139 },
140 ( response ) => {
141 FLBuilder._settingsCancelClicked();
142 const position = response;
143
144 FLBuilder.ajax(
145 {
146 action: 'ti_apply_template',
147 template,
148 position,
149 },
150 ( res ) => {
151 setFetching( false );
152
153 if ( undefined !== res.success && ! res.success ) {
154 return FLBuilder.alert(
155 `<h1>${ window.tiTpc.exporter.importFailed }</h1> ${ res.data }`
156 );
157 }
158
159 closeModal();
160
161 const data = FLBuilder._jsonParse( res );
162 if ( data.layout ) {
163 FLBuilder._renderLayout( data.layout );
164 FLBuilder.triggerHook( 'didApplyTemplate' );
165 }
166 }
167 );
168 }
169 );
170 };
171
172 if ( isOpen ) {
173 return (
174 <Modal
175 title={ window.tiTpc.library.templatesCloud }
176 shouldCloseOnClickOutside={ false }
177 onRequestClose={ closeModal }
178 isDismissible={ false }
179 overlayClassName="tpc-template-cloud-modal"
180 >
181 <Header
182 closeModal={ closeModal }
183 getOrder={ getOrder }
184 getSearchQuery={ getSearchQuery }
185 />
186
187 <Content
188 importTemplate={ importTemplate }
189 getOrder={ getOrder }
190 setQuery={ setQuery }
191 getSearchQuery={ getSearchQuery }
192 setSorting={ setSorting }
193 isSearch={ getSearchStatus() }
194 setSearch={ setSearchStatus }
195 />
196 </Modal>
197 );
198 }
199
200 return <p>:)</p>;
201 };
202
203 if ( ! window.tiTpc ) {
204 window.tiTpc = {};
205 }
206
207 const elem = document.createElement( 'div' );
208 elem.id = 'ti-tpc-beaver-modal';
209 elem.style = 'display:none;';
210 document.body.appendChild( elem );
211
212 render( <App />, document.getElementById( 'ti-tpc-beaver-modal' ) );
213