Diff: STRATO-apps/wordpress_03/app/wp-content/themes/blocksy/inc/panel-builder/header/socials/sync.js

Keine Baseline-Datei – Diff nur gegen leer.
Zur Liste
1 -
1 + import ctEvents from 'ct-events'
2 + import { handleResponsiveSwitch } from '../../../../static/js/customizer/sync/helpers'
3 + import { updateAndSaveEl } from '../../../../static/js/customizer/sync'
4 + import {
5 + responsiveClassesFor,
6 + getRootSelectorFor,
7 + assembleSelector,
8 + mutateSelector,
9 + } from '../../../../static/js/customizer/sync/helpers'
10 + import { typographyOption } from '../../../../static/js/customizer/sync/variables/typography'
11 +
12 + ctEvents.on(
13 + 'ct:header:sync:collect-variable-descriptors',
14 + (variableDescriptors) => {
15 + variableDescriptors['socials'] = ({ itemId }) => ({
16 + socialsIconSize: {
17 + selector: assembleSelector(getRootSelectorFor({ itemId })),
18 + variable: 'theme-icon-size',
19 + responsive: true,
20 + unit: 'px',
21 + },
22 +
23 + socialsIconSpacing: {
24 + selector: assembleSelector(getRootSelectorFor({ itemId })),
25 + variable: 'items-spacing',
26 + responsive: true,
27 + unit: 'px',
28 + },
29 +
30 + headerSocialsMargin: {
31 + selector: assembleSelector(getRootSelectorFor({ itemId })),
32 + type: 'spacing',
33 + variable: 'margin',
34 + responsive: true,
35 + important: true,
36 + },
37 +
38 + ...typographyOption({
39 + id: 'socials_label_font',
40 +
41 + selector: assembleSelector(
42 + mutateSelector({
43 + selector: getRootSelectorFor({ itemId }),
44 + operation: 'suffix',
45 + to_add: '.ct-label',
46 + })
47 + ),
48 + }),
49 +
50 + // default state
51 + header_socials_font_color: [
52 + {
53 + selector: assembleSelector(
54 + mutateSelector({
55 + selector: getRootSelectorFor({ itemId }),
56 + operation: 'suffix',
57 + to_add: 'a',
58 + })
59 + ),
60 + variable: 'theme-link-initial-color',
61 + type: 'color:default',
62 + responsive: true,
63 + },
64 +
65 + {
66 + selector: assembleSelector(
67 + mutateSelector({
68 + selector: getRootSelectorFor({ itemId }),
69 + operation: 'suffix',
70 + to_add: 'a',
71 + })
72 + ),
73 + variable: 'theme-link-hover-color',
74 + type: 'color:hover',
75 + responsive: true,
76 + },
77 + ],
78 +
79 + headerSocialsIconColor: [
80 + {
81 + selector: assembleSelector(
82 + mutateSelector({
83 + selector: getRootSelectorFor({ itemId }),
84 + operation: 'suffix',
85 + to_add: '[data-color="custom"]',
86 + })
87 + ),
88 + variable: 'theme-icon-color',
89 + type: 'color:default',
90 + responsive: true,
91 + },
92 +
93 + {
94 + selector: assembleSelector(
95 + mutateSelector({
96 + selector: getRootSelectorFor({ itemId }),
97 + operation: 'suffix',
98 + to_add: '[data-color="custom"]',
99 + })
100 + ),
101 + variable: 'theme-icon-hover-color',
102 + type: 'color:hover',
103 + responsive: true,
104 + },
105 + ],
106 +
107 + headerSocialsIconBackground: [
108 + {
109 + selector: assembleSelector(
110 + mutateSelector({
111 + selector: getRootSelectorFor({ itemId }),
112 + operation: 'suffix',
113 + to_add: '[data-color="custom"]',
114 + })
115 + ),
116 + variable: 'background-color',
117 + type: 'color:default',
118 + responsive: true,
119 + },
120 +
121 + {
122 + selector: assembleSelector(
123 + mutateSelector({
124 + selector: getRootSelectorFor({ itemId }),
125 + operation: 'suffix',
126 + to_add: '[data-color="custom"]',
127 + })
128 + ),
129 + variable: 'background-hover-color',
130 + type: 'color:hover',
131 + responsive: true,
132 + },
133 + ],
134 +
135 + // transparent state
136 + transparent_header_socials_font_color: [
137 + {
138 + selector: assembleSelector(
139 + mutateSelector({
140 + selector: mutateSelector({
141 + selector: getRootSelectorFor({ itemId }),
142 + operation: 'suffix',
143 + to_add: 'a',
144 + }),
145 +
146 + operation: 'between',
147 + to_add: '[data-transparent-row="yes"]',
148 + })
149 + ),
150 + variable: 'theme-link-initial-color',
151 + type: 'color:default',
152 + responsive: true,
153 + },
154 +
155 + {
156 + selector: assembleSelector(
157 + mutateSelector({
158 + selector: mutateSelector({
159 + selector: getRootSelectorFor({ itemId }),
160 + operation: 'suffix',
161 + to_add: 'a',
162 + }),
163 +
164 + operation: 'between',
165 + to_add: '[data-transparent-row="yes"]',
166 + })
167 + ),
168 + variable: 'theme-link-hover-color',
169 + type: 'color:hover',
170 + responsive: true,
171 + },
172 + ],
173 +
174 + transparentHeaderSocialsIconColor: [
175 + {
176 + selector: assembleSelector(
177 + mutateSelector({
178 + selector: mutateSelector({
179 + selector: getRootSelectorFor({ itemId }),
180 + operation: 'suffix',
181 + to_add: '[data-color="custom"]',
182 + }),
183 +
184 + operation: 'between',
185 + to_add: '[data-transparent-row="yes"]',
186 + })
187 + ),
188 +
189 + variable: 'theme-icon-color',
190 + type: 'color:default',
191 + responsive: true,
192 + },
193 +
194 + {
195 + selector: assembleSelector(
196 + mutateSelector({
197 + selector: mutateSelector({
198 + selector: getRootSelectorFor({ itemId }),
199 + operation: 'suffix',
200 + to_add: '[data-color="custom"]',
201 + }),
202 +
203 + operation: 'between',
204 + to_add: '[data-transparent-row="yes"]',
205 + })
206 + ),
207 +
208 + variable: 'theme-icon-hover-color',
209 + type: 'color:hover',
210 + responsive: true,
211 + },
212 + ],
213 +
214 + transparentHeaderSocialsIconBackground: [
215 + {
216 + selector: assembleSelector(
217 + mutateSelector({
218 + selector: mutateSelector({
219 + selector: getRootSelectorFor({ itemId }),
220 + operation: 'suffix',
221 + to_add: '[data-color="custom"]',
222 + }),
223 +
224 + operation: 'between',
225 + to_add: '[data-transparent-row="yes"]',
226 + })
227 + ),
228 +
229 + variable: 'background-color',
230 + type: 'color:default',
231 + responsive: true,
232 + },
233 +
234 + {
235 + selector: assembleSelector(
236 + mutateSelector({
237 + selector: mutateSelector({
238 + selector: getRootSelectorFor({ itemId }),
239 + operation: 'suffix',
240 + to_add: '[data-color="custom"]',
241 + }),
242 +
243 + operation: 'between',
244 + to_add: '[data-transparent-row="yes"]',
245 + })
246 + ),
247 +
248 + variable: 'background-hover-color',
249 + type: 'color:hover',
250 + responsive: true,
251 + },
252 + ],
253 +
254 + // sticky state
255 + sticky_header_socials_font_color: [
256 + {
257 + selector: assembleSelector(
258 + mutateSelector({
259 + selector: mutateSelector({
260 + selector: getRootSelectorFor({ itemId }),
261 + operation: 'suffix',
262 + to_add: 'a',
263 + }),
264 +
265 + operation: 'between',
266 + to_add: '[data-sticky*="yes"]',
267 + })
268 + ),
269 + variable: 'theme-link-initial-color',
270 + type: 'color:default',
271 + responsive: true,
272 + },
273 +
274 + {
275 + selector: assembleSelector(
276 + mutateSelector({
277 + selector: mutateSelector({
278 + selector: getRootSelectorFor({ itemId }),
279 + operation: 'suffix',
280 + to_add: 'a',
281 + }),
282 +
283 + operation: 'between',
284 + to_add: '[data-sticky*="yes"]',
285 + })
286 + ),
287 + variable: 'theme-link-hover-color',
288 + type: 'color:hover',
289 + responsive: true,
290 + },
291 + ],
292 +
293 + stickyHeaderSocialsIconColor: [
294 + {
295 + selector: assembleSelector(
296 + mutateSelector({
297 + selector: mutateSelector({
298 + selector: getRootSelectorFor({ itemId }),
299 + operation: 'suffix',
300 + to_add: '[data-color="custom"]',
301 + }),
302 +
303 + operation: 'between',
304 + to_add: '[data-sticky*="yes"]',
305 + })
306 + ),
307 + variable: 'theme-icon-color',
308 + type: 'color:default',
309 + responsive: true,
310 + },
311 +
312 + {
313 + selector: assembleSelector(
314 + mutateSelector({
315 + selector: mutateSelector({
316 + selector: getRootSelectorFor({ itemId }),
317 + operation: 'suffix',
318 + to_add: '[data-color="custom"]',
319 + }),
320 +
321 + operation: 'between',
322 + to_add: '[data-sticky*="yes"]',
323 + })
324 + ),
325 + variable: 'theme-icon-hover-color',
326 + type: 'color:hover',
327 + responsive: true,
328 + },
329 + ],
330 +
331 + stickyHeaderSocialsIconBackground: [
332 + {
333 + selector: assembleSelector(
334 + mutateSelector({
335 + selector: mutateSelector({
336 + selector: getRootSelectorFor({ itemId }),
337 + operation: 'suffix',
338 + to_add: '[data-color="custom"]',
339 + }),
340 +
341 + operation: 'between',
342 + to_add: '[data-sticky*="yes"]',
343 + })
344 + ),
345 + variable: 'background-color',
346 + type: 'color:default',
347 + responsive: true,
348 + },
349 +
350 + {
351 + selector: assembleSelector(
352 + mutateSelector({
353 + selector: mutateSelector({
354 + selector: getRootSelectorFor({ itemId }),
355 + operation: 'suffix',
356 + to_add: '[data-color="custom"]',
357 + }),
358 +
359 + operation: 'between',
360 + to_add: '[data-sticky*="yes"]',
361 + })
362 + ),
363 + variable: 'background-hover-color',
364 + type: 'color:hover',
365 + responsive: true,
366 + },
367 + ],
368 + })
369 + }
370 + )
371 +
372 + ctEvents.on(
373 + 'ct:header:sync:item:socials',
374 + ({ itemId, optionId, optionValue, values }) => {
375 + const selector = `[data-id="${itemId}"]`
376 +
377 + if (optionId === 'socialsType' || optionId === 'socialsFillType') {
378 + updateAndSaveEl(selector, (el) => {
379 + const box = el.querySelector('.ct-social-box')
380 +
381 + box.dataset.iconsType = `${values.socialsType}${
382 + values.socialsType === 'simple'
383 + ? ''
384 + : `:${values.socialsFillType || 'solid'}`
385 + }`
386 + })
387 + }
388 +
389 + if (optionId === 'socialsIconSize') {
390 + updateAndSaveEl(
391 + selector,
392 + (el) =>
393 + (el.querySelector('.ct-social-box').dataset.size =
394 + values.socialsIconSize)
395 + )
396 + }
397 +
398 + if (optionId === 'socialsLabelVisibility') {
399 + updateAndSaveEl(selector, (el) => {
400 + ;[...el.querySelectorAll('.ct-label')].map((label) => {
401 + responsiveClassesFor(optionValue, label)
402 + })
403 + })
404 + }
405 +
406 + if (optionId === 'visibility') {
407 + updateAndSaveEl(selector, (el) =>
408 + responsiveClassesFor({ ...optionValue, desktop: true }, el)
409 + )
410 + }
411 + }
412 + )
413 +