PluginProbe
QuadMenu – Mega Menu / 1.9.4
QuadMenu – Mega Menu v1.9.4
3.3.7 3.3.6 trunk 1.8.4 1.8.5 1.8.7 1.8.8 1.8.9 1.9.0 1.9.2 1.9.3 1.9.4 1.9.5 1.9.6 1.9.7 1.9.8 1.9.9 2.0.0 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 All 87 releases
quadmenu / includes / options.php

options.php in QuadMenu – Mega Menu 1.9.4, at includes/options.php

2,300 lines 103.5 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 if (!defined('ABSPATH')) {
4 die('-1');
5 }
6
7 class QuadMenu_Options {
8
9 private $defaults = array();
10
11 public function __construct() {
12
13 // include options that the user can't change
14 add_filter('redux/options/' . QUADMENU_OPTIONS . '/options', array($this, 'developer'));
15 add_filter('redux/options/' . QUADMENU_OPTIONS . '/global_variable', array($this, 'developer'));
16 add_filter('redux/options/' . QUADMENU_OPTIONS . '/global_variable', array($this, 'compatibility'));
17 add_filter('redux/options/' . QUADMENU_OPTIONS . '/ajax_save/response', array($this, 'developer_ajax'));
18
19 add_filter('redux/options/' . QUADMENU_OPTIONS . '/sections', array($this, 'configuration'));
20 add_filter('redux/options/' . QUADMENU_OPTIONS . '/sections', array($this, 'locations'));
21 add_filter('redux/options/' . QUADMENU_OPTIONS . '/sections', array($this, 'responsive'));
22 add_filter('redux/options/' . QUADMENU_OPTIONS . '/sections', array($this, 'themes'));
23 add_filter('redux/options/' . QUADMENU_OPTIONS . '/sections', array($this, 'css'));
24
25 if (!is_admin() && !is_customize_preview())
26 return;
27
28 add_filter('redux/page/' . QUADMENU_OPTIONS . '/form/before', array($this, 'remove'));
29 }
30
31 // Comaptibility with old versions
32 // -------------------------------------------------------------------------
33 function compatibility($options) {
34
35 foreach ($options as $key => $value) {
36
37 if (is_array($value) && isset($value['color']) && isset($value['alpha'])) {
38 $options[$key] = Redux_Helpers::hex2rgba($value['color'], $value['alpha']);
39 }
40 }
41
42 return $options;
43 }
44
45 function developer($options = array()) {
46
47 $developer = apply_filters('quadmenu_developer_options', array());
48
49 if (!empty($developer) && is_array($developer)) {
50
51 $options = array_merge($options, $developer);
52
53 foreach ($developer as $id => $value) {
54
55 add_filter('redux/options/' . QUADMENU_OPTIONS . '/field/' . $id, '__return_null');
56 }
57 }
58
59 return $options;
60 }
61
62 function developer_ajax($return_array) {
63
64 $return_array['options'] = apply_filters('quadmenu_developer_options', $return_array['options']);
65
66 return $return_array;
67 }
68
69 function remove($redux) {
70
71 $class = '';
72
73 foreach ($redux->parent->sections as $key => $section) {
74
75 if (empty($section['fields'])) {
76
77 if (isset($redux->parent->sections[$key]['class'])) {
78
79 $class = ' ' . $redux->parent->sections[$key]['class'];
80 }
81
82 $redux->parent->sections[$key]['class'] = 'empty_section' . $class;
83 }
84 }
85
86 return $redux->parent->sections;
87 }
88
89 function configuration($sections) {
90
91 $this->defaults = apply_filters('quadmenu_default_options', array());
92
93 $sections[] = array(
94 //'customizer' => true,
95 'id' => 'quadmenu_configuration',
96 'title' => esc_html__('Configuration', 'quadmenu'),
97 'heading' => false,
98 'icon' => 'dashicons dashicons-admin-generic',
99 'permissions' => 'manage_options',
100 'fields' => array(
101 array(
102 'customizer' => false,
103 'compiler' => false,
104 'id' => 'viewport',
105 'type' => 'switch',
106 'title' => esc_html__('Viewport', 'quadmenu'),
107 'subtitle' => esc_html__('Include the viewport meta tag in site head.', 'quadmenu'),
108 'default' => (bool) $this->defaults['viewport'],
109 ),
110 array(
111 'customizer' => false,
112 'compiler' => false,
113 'id' => 'styles',
114 'type' => 'switch',
115 'title' => esc_html__('Stylesheet', 'quadmenu'),
116 'subtitle' => esc_html__('Load styles in your theme.', 'quadmenu'),
117 'compiler' => false,
118 'default' => (bool) $this->defaults['styles'],
119 ),
120 array(
121 'customizer' => true,
122 'transport' => 'refresh',
123 'compiler' => false,
124 'id' => 'styles_normalize',
125 'type' => 'switch',
126 'title' => esc_html__('Normalize', 'quadmenu'),
127 'subtitle' => esc_html__('Try to clean residual styling of the theme.', 'quadmenu'),
128 'required' => array(
129 'styles',
130 '=',
131 1
132 ),
133 'default' => (bool) $this->defaults['styles_normalize'],
134 ),
135 array(
136 'customizer' => true,
137 'transport' => 'refresh',
138 'compiler' => false,
139 'id' => 'styles_widgets',
140 'type' => 'switch',
141 'title' => esc_html__('Widgets', 'quadmenu'),
142 'subtitle' => esc_html__('Load default widgets stylesheets.', 'quadmenu'),
143 'required' => array(
144 'styles',
145 '=',
146 1
147 ),
148 'default' => (bool) $this->defaults['styles_widgets'],
149 ),
150 array(
151 'customizer' => true,
152 'transport' => 'refresh',
153 'compiler' => false,
154 'id' => 'styles_pscrollbar',
155 'type' => 'switch',
156 'title' => esc_html__('Perfect ScrollBar', 'quadmenu'),
157 'subtitle' => esc_html__('Load Perfect scroll bar files.', 'quadmenu'),
158 'default' => (bool) $this->defaults['styles_pscrollbar'],
159 ),
160 array(
161 'customizer' => false,
162 'compiler' => false,
163 'id' => 'styles_owlcarousel',
164 'type' => 'switch',
165 'title' => esc_html__('OWL Carousel', 'quadmenu'),
166 'subtitle' => esc_html__('Load OWL Carousel files.', 'quadmenu'),
167 'default' => (bool) $this->defaults['styles_owlcarousel'],
168 ),
169 array(
170 'customizer' => false,
171 'compiler' => false,
172 'id' => 'styles_icons',
173 'type' => 'select',
174 'options' => _QuadMenu()->registered_icons_names(),
175 'title' => esc_html__('Icons', 'quadmenu'),
176 'subtitle' => esc_html__('Select the fonticon for your menus.', 'quadmenu'),
177 'select2' => array(
178 'allowClear' => false
179 ),
180 'required' => array(
181 'styles',
182 '=',
183 1
184 ),
185 'default' => $this->defaults['styles_icons'],
186 'validate' => 'no_special_chars',
187 ),
188 ),
189 );
190
191 return $sections;
192 }
193
194 function css($sections) {
195
196 $this->defaults = apply_filters('quadmenu_default_options', array());
197
198 $sections[] = array(
199 'heading' => false,
200 'id' => 'quadmenu_css',
201 'title' => esc_html__('Customize', 'quadmenu'),
202 'icon' => 'dashicons dashicons-editor-code',
203 'permissions' => 'edit_theme_options',
204 'fields' => array(
205 array(
206 'customizer' => true,
207 'transport' => 'refresh',
208 'compiler' => false,
209 'id' => 'css',
210 'type' => 'ace_editor',
211 'mode' => 'css',
212 'title' => esc_html__('CSS', 'quadmenu'),
213 'subtitle' => esc_html__('Quickly add some CSS to your theme by adding it to this block.', 'quadmenu'),
214 'theme' => 'chrome',
215 'default' => $this->defaults['css']
216 ),
217 ),
218 );
219
220 return $sections;
221 }
222
223 function locations($sections) {
224
225 global $quadmenu_locations;
226
227 $theme = get_stylesheet();
228
229 $all_locations_defaults = apply_filters('quadmenu_default_options_locations', array());
230
231 foreach ($quadmenu_locations as $id => $location) {
232
233 $current_location_defaults = apply_filters('quadmenu_default_options_location_' . $id, $all_locations_defaults);
234
235 foreach ($current_location_defaults as $key => $value) {
236
237 $this->defaults["{$id}_{$key}"] = $value;
238 }
239 }
240
241 $this->defaults = apply_filters('quadmenu_default_options', $this->defaults);
242
243 foreach ($quadmenu_locations as $id => $location) {
244
245 extract($location);
246
247 $sections[] = array(
248 //'customizer' => true,
249 'subsection' => true,
250 'heading' => false,
251 'icon' => 'dashicons dashicons-editor-insertmore',
252 'id' => 'quadmenu_location_' . $id,
253 'title' => $name,
254 'permissions' => 'edit_theme_options',
255 'fields' => array(
256 array(
257 'customizer' => true,
258 'transport' => 'refresh',
259 'id' => $id . '_integration',
260 'type' => 'switch',
261 'title' => esc_html__('Integration', 'quadmenu'),
262 'subtitle' => esc_html__('Integrate QuadMenu in this theme location.', 'quadmenu'),
263 'default' => $this->defaults[$id . '_integration'],
264 ),
265 array(
266 'customizer' => true,
267 'transport' => 'refresh',
268 'id' => $id . '_unwrap',
269 'type' => 'switch',
270 'title' => esc_html__('Conflicts', 'quadmenu'),
271 'subtitle' => esc_html__('Try to solve conflicts of residual theme style.', 'quadmenu'),
272 'default' => $this->defaults[$id . '_unwrap'],
273 'required' => array(
274 $id . '_integration',
275 '=',
276 1
277 ),
278 ),
279 array(
280 'customizer' => true,
281 'transport' => 'refresh',
282 'type' => 'select',
283 'id' => $id . '_theme',
284 'title' => __('Theme', 'quadmenu'),
285 'subtitle' => __('Select a theme for this theme location', 'quadmenu'),
286 'class' => 'current_theme',
287 'options' => (array) $GLOBALS['quadmenu_themes'],
288 'default' => $this->defaults[$id . '_theme'],
289 ),
290 array(
291 'customizer' => false,
292 'id' => $id . '_information',
293 'type' => 'info',
294 'title' => esc_html__('Integration', 'quadmenu'),
295 'style' => 'success',
296 'desc' => sprintf('<p>%s</p>', esc_html__('If your menu doesn\'t seem to be working properly after using Automatic Integration, the most common scenario is that you have residual styling from your theme and would need to use Manual Integration instead.', 'quadmenu')),
297 'required' => array(
298 $id . '_integration',
299 '=',
300 1
301 ),
302 ),
303 array(
304 'customizer' => false,
305 'id' => $id . '_manual',
306 'type' => 'info',
307 'title' => esc_html__('Manual Integration', 'quadmenu'),
308 'style' => 'info',
309 'class' => 'info_manual',
310 'desc' => sprintf('<p>%s</p><p><code>&lt;?php quadmenu(array(&quot;theme_location&quot; => &quot;%s&quot;, &quot;theme&quot; => &quot;<span class="current_theme">%s</span>&quot;)); ?&gt;</code></p>', esc_html__('Copy the generated PHP function code and paste it into the appropriate template in your theme.', 'quadmenu'), $id, 'default_theme'),
311 ),
312 )
313 );
314 }
315
316 return $sections;
317 }
318
319 function responsive($sections) {
320
321 $this->defaults = apply_filters('quadmenu_default_options', array());
322
323 $sections[] = array(
324 'customizer' => true,
325 'heading' => false,
326 'id' => 'quadmenu_responsive',
327 'title' => esc_html__('Responsive', 'quadmenu'),
328 'icon' => 'dashicons dashicons-desktop',
329 'permissions' => 'edit_theme_options',
330 'fields' => array(
331 array(
332 'compiler' => true,
333 'id' => 'gutter',
334 'type' => 'slider',
335 'title' => esc_html__('Gutter', 'quadmenu'),
336 'subtitle' => esc_html__('Padding between columns.', 'quadmenu'),
337 'min' => '0',
338 'step' => '2',
339 'max' => '60',
340 'default' => (int) $this->defaults['gutter'],
341 'validate' => 'numeric'
342 ),
343 array(
344 'compiler' => true,
345 'id' => 'screen_sm_width',
346 'type' => 'slider',
347 'title' => esc_html__('Screen Small', 'quadmenu'),
348 'subtitle' => esc_html__('Small screens breakpoint.', 'quadmenu'),
349 'min' => '480',
350 'step' => '1',
351 'max' => '1000',
352 'default' => (int) $this->defaults['screen_sm_width'],
353 'validate' => 'numeric'
354 ),
355 array(
356 'compiler' => true,
357 'id' => 'screen_md_width',
358 'type' => 'slider',
359 'title' => esc_html__('Screen Medium', 'quadmenu'),
360 'subtitle' => esc_html__('Medium screens breakpoint.', 'quadmenu'),
361 'min' => '481',
362 'step' => '1',
363 'max' => '1200',
364 'default' => (int) $this->defaults['screen_md_width'],
365 'validate' => 'numeric'
366 ),
367 array(
368 'compiler' => true,
369 'id' => 'screen_lg_width',
370 'type' => 'slider',
371 'title' => esc_html__('Screen Large', 'quadmenu'),
372 'subtitle' => esc_html__('Large screens breakpoint.', 'quadmenu'),
373 'min' => '801',
374 'step' => '1',
375 'max' => '1600',
376 'default' => (int) $this->defaults['screen_lg_width'],
377 'validate' => 'numeric'
378 ),
379 )
380 );
381
382 return $sections;
383 }
384
385 function themes($sections) {
386
387 global $quadmenu_themes;
388
389 $all_themes_defaults = apply_filters('quadmenu_default_options_themes', array());
390
391 foreach ($quadmenu_themes as $theme => $name) {
392
393 $current_theme_defaults = apply_filters('quadmenu_default_options_theme_' . $theme, $all_themes_defaults);
394
395 foreach ($current_theme_defaults as $key => $value) {
396
397 $this->defaults["{$theme}_{$key}"] = $value;
398 }
399 }
400
401 $this->defaults = apply_filters('quadmenu_default_options', $this->defaults);
402
403 foreach ($quadmenu_themes as $key => $theme) {
404
405 $sections[] = array(
406 //'customizer' => true,
407 'customizer_title' => esc_html('Layout', 'quadmenu'),
408 'subsection' => false,
409 'heading' => false,
410 'id' => 'quadmenu_layout_' . $key,
411 'title' => $theme,
412 'icon' => 'dashicons dashicons-menu',
413 'permissions' => 'edit_theme_options',
414 'class' => 'quadmenu_theme_' . $key,
415 'fields' => array(
416 array(
417 'customizer' => false,
418 'id' => $key . '_theme_title',
419 'type' => 'text',
420 'title' => esc_html__('Theme', 'quadmenu'),
421 'subtitle' => esc_html__('Change theme name.', 'quadmenu'),
422 'default' => $theme,
423 'validate' => 'no_special_chars',
424 ),
425 array(
426 'customizer' => true,
427 'transport' => 'selective',
428 'class' => $key,
429 'id' => $key . '_layout',
430 'type' => 'image_select',
431 'title' => esc_html__('Menu', 'quadmenu'),
432 'subtitle' => esc_html__('Change menu layout.', 'quadmenu'),
433 'options' => array(
434 'embed' => array(
435 'alt' => esc_html__('Embed', 'quadmenu'),
436 'img' => QUADMENU_URL_ASSETS . 'backend/images/layouts/embed.png'
437 ),
438 'collapse' => array(
439 'alt' => esc_html__('Collapse', 'quadmenu'),
440 'img' => QUADMENU_URL_ASSETS . 'backend/images/layouts/collapse.png'
441 ),
442 'offcanvas' => array(
443 'alt' => esc_html__('Offcanvas', 'quadmenu'),
444 'img' => QUADMENU_URL_ASSETS . 'backend/images/layouts/offcanvas.png'
445 ),
446 'vertical' => array(
447 'alt' => esc_html__('Vertical', 'quadmenu'),
448 'img' => QUADMENU_URL_ASSETS . 'backend/images/layouts/vertical.png'
449 ),
450 'inherit' => array(
451 'alt' => esc_html__('Inherit', 'quadmenu'),
452 'img' => QUADMENU_URL_ASSETS . 'backend/images/layouts/inherit.png'
453 ),
454 ),
455 'default' => $this->validate($this->defaults[$key . '_layout'], array('embed', 'collapse', 'offcanvas', 'vertical', 'inherit')),
456 ),
457 array(
458 'customizer' => true,
459 'transport' => 'selective',
460 'id' => $key . '_layout_offcanvas_float',
461 'type' => 'image_select',
462 'title' => esc_html__('Float', 'quadmenu'),
463 'subtitle' => esc_html__('Vertical menu position.', 'quadmenu'),
464 'options' => array(
465 'left' => array(
466 'alt' => esc_html__('Left', 'quadmenu'),
467 'img' => QUADMENU_URL_ASSETS . 'backend/images/layouts/fleft.png'
468 ),
469 'right' => array(
470 'alt' => esc_html__('Right', 'quadmenu'),
471 'img' => QUADMENU_URL_ASSETS . 'backend/images/layouts/fright.png'
472 ),
473 ),
474 'required' => array(
475 array($key . '_layout', '=', array('offcanvas', 'vertical')),
476 ),
477 'default' => $this->validate($this->defaults[$key . '_layout_offcanvas_float'], array('left', 'right')),
478 ),
479 array(
480 'customizer' => true,
481 'transport' => 'selective',
482 'id' => $key . '_layout_align',
483 'type' => 'image_select',
484 'title' => esc_html__('Align', 'quadmenu'),
485 'subtitle' => esc_html__('Menu items alignment.', 'quadmenu'),
486 'options' => array(
487 'left' => array(
488 'alt' => esc_html__('Left', 'quadmenu'),
489 'img' => QUADMENU_URL_ASSETS . 'backend/images/layouts/aleft.png'
490 ),
491 'center' => array(
492 'alt' => esc_html__('Center', 'quadmenu'),
493 'img' => QUADMENU_URL_ASSETS . 'backend/images/layouts/acenter.png'
494 ),
495 'right' => array(
496 'alt' => esc_html__('Right', 'quadmenu'),
497 'img' => QUADMENU_URL_ASSETS . 'backend/images/layouts/aright.png'
498 ),
499 ),
500 'required' => array(
501 array($key . '_layout', '=', array('embed', 'collapse', 'offcanvas')),
502 ),
503 'default' => $this->validate($this->defaults[$key . '_layout_align'], array('left', 'right')),
504 ),
505 // Behaviour
506 // ---------------------------------------------------------
507 array(
508 'customizer' => true,
509 'transport' => 'postMessage',
510 'id' => $key . '_menu_divider',
511 'type' => 'section',
512 'title' => esc_html__('Menu', 'quadmenu'),
513 'indent' => false,
514 ),
515 array(
516 'customizer' => true,
517 'transport' => 'selective',
518 'id' => $key . '_layout_breakpoint',
519 'type' => 'slider',
520 'title' => esc_html__('Breakpoint', 'quadmenu'),
521 'subtitle' => esc_html__('Point at which the navbar becomes uncollapsed.', 'quadmenu'),
522 'min' => '0',
523 'step' => '1',
524 'max' => '1600',
525 'required' => array(
526 array($key . '_layout', '=', array('embed', 'collapse', 'offcanvas', 'vertical')),
527 ),
528 'default' => (int) $this->defaults[$key . '_layout_breakpoint'],
529 ),
530 array(
531 'customizer' => true,
532 'transport' => 'selective',
533 'id' => $key . '_layout_width',
534 'type' => 'switch',
535 'title' => esc_html__('Width', 'quadmenu'),
536 'subtitle' => esc_html__('Try to force menu width to fit screen.', 'quadmenu'),
537 'required' => array(
538 array($key . '_layout', '=', array('collapse', 'offcanvas')),
539 ),
540 'default' => (int) $this->defaults[$key . '_layout_width'],
541 ),
542 array(
543 'customizer' => true,
544 'transport' => 'selective',
545 'id' => $key . '_layout_width_inner',
546 'type' => 'switch',
547 'title' => esc_html__('Inner', 'quadmenu'),
548 'subtitle' => esc_html__('Try to force menu inner width to fit selector.', 'quadmenu'),
549 'required' => array(
550 array($key . '_layout', '=', array('collapse', 'offcanvas')),
551 ),
552 'default' => (int) $this->defaults[$key . '_layout_width_inner'],
553 ),
554 array(
555 'customizer' => true,
556 'transport' => 'selective',
557 'id' => $key . '_layout_width_inner_selector',
558 'type' => 'text',
559 'title' => esc_html__('Selector', 'quadmenu'),
560 'subtitle' => esc_html__('The menu container will take the width of this selector.', 'quadmenu'),
561 'placeholder' => '.container',
562 'default' => $this->defaults[$key . '_layout_width_inner_selector'],
563 'required' => array(
564 array($key . '_layout', '=', array('collapse', 'offcanvas')),
565 ),
566 'required' => array(
567 array($key . '_layout_width_inner', '=', 1),
568 ),
569 ),
570 array(
571 'customizer' => true,
572 'transport' => 'selective',
573 'id' => $key . '_layout_lazyload',
574 'type' => 'switch',
575 'title' => esc_html__('Lazyload', 'quadmenu'),
576 'subtitle' => esc_html__('Defer images load until they are required.', 'quadmenu'),
577 'default' => (bool) $this->defaults[$key . '_layout_lazyload'],
578 'description' => esc_html__('This is a beta function, please test it carefully.', 'quadmenu'),
579 ),
580 array(
581 'customizer' => true,
582 'transport' => 'selective',
583 'id' => $key . '_layout_current',
584 'type' => 'switch',
585 'title' => esc_html__('Open', 'quadmenu'),
586 'subtitle' => esc_html__('Open dropdown if is current page.', 'quadmenu'),
587 'compiler' => false,
588 'default' => (bool) $this->defaults[$key . '_layout_current'],
589 ),
590 array(
591 'customizer' => true,
592 'transport' => 'selective',
593 'id' => $key . '_layout_divider',
594 'type' => 'button_set',
595 'title' => esc_html__('Divider', 'quadmenu'),
596 'subtitle' => esc_html__('Show a small divider bar between each menu item.', 'quadmenu'),
597 'options' => array(
598 'show' => esc_html__('Show', 'quadmenu'),
599 'hide' => esc_html__('Hide', 'quadmenu')
600 ),
601 'required' => array(
602 array($key . '_layout', '=', array('embed', 'collapse', 'offcanvas')),
603 ),
604 'default' => $this->validate($this->defaults[$key . '_layout_divider'], array('show', 'hide')),
605 ),
606 array(
607 'customizer' => true,
608 'transport' => 'selective',
609 'id' => $key . '_layout_caret',
610 'type' => 'button_set',
611 'title' => esc_html__('Caret', 'quadmenu'),
612 'subtitle' => esc_html__('Show carets on items with dropdown menus.', 'quadmenu'),
613 'options' => array(
614 'show' => esc_html__('Show', 'quadmenu'),
615 'hide' => esc_html__('Hide', 'quadmenu')
616 ),
617 'required' => array(
618 array($key . '_layout', '=', array('embed', 'collapse', 'offcanvas')),
619 ),
620 'default' => $this->validate($this->defaults[$key . '_layout_caret'], array('show', 'hide')),
621 ),
622 array(
623 'customizer' => false,
624 'id' => $key . '_layout_classes',
625 'type' => 'text',
626 'title' => esc_html__('Classes', 'quadmenu'),
627 'subtitle' => esc_html__('Include your own classes in the menu.', 'quadmenu'),
628 'default' => $this->defaults[$key . '_layout_classes'],
629 'validate' => 'no_special_chars',
630 ),
631 // Dropdown
632 // ---------------------------------------------------------
633 array(
634 'id' => $key . '_dropdown_divider',
635 'type' => 'section',
636 'title' => esc_html__('Dropdown', 'quadmenu'),
637 'indent' => false,
638 ),
639 array(
640 'customizer' => true,
641 'transport' => 'selective',
642 'id' => $key . '_layout_trigger',
643 'type' => 'button_set',
644 'title' => esc_html__('Trigger', 'quadmenu'),
645 'options' => array(
646 'hoverintent' => esc_html__('Hover', 'quadmenu'),
647 'click' => esc_html__('Click', 'quadmenu')
648 ),
649 'subtitle' => esc_html__('Open dropdown menu on mouseover or click.', 'quadmenu'),
650 'default' => $this->validate($this->defaults[$key . '_layout_trigger'], array('hoverintent', 'click')),
651 'required' => array(
652 array($key . '_layout', '=', array('embed', 'collapse', 'offcanvas')),
653 ),
654 ),
655 array(
656 'customizer' => true,
657 'transport' => 'selective',
658 'id' => $key . '_layout_dropdown_maxheight',
659 'type' => 'switch',
660 'title' => esc_html__('Max Height', 'quadmenu'),
661 'subtitle' => esc_html__('Set the max height of dropdowns.', 'quadmenu'),
662 'compiler' => false,
663 'default' => (bool) $this->defaults[$key . '_layout_dropdown_maxheight'],
664 'required' => array(
665 array($key . '_layout', '=', array('embed', 'collapse', 'offcanvas')),
666 ),
667 ),
668 ),
669 );
670
671 $sections[] = array(
672 //'customizer' => true,
673 'subsection' => true,
674 'heading' => false,
675 'icon' => 'dashicons dashicons-desktop',
676 'id' => 'quadmenu_navbar_' . $key,
677 'title' => esc_html__('Menu', 'quadmenu'),
678 'permissions' => 'edit_theme_options',
679 'fields' => array(
680 array(
681 'compiler' => true,
682 'customizer' => true,
683 'transport' => 'selective',
684 'id' => $key . '_navbar_background',
685 'type' => 'button_set',
686 'title' => esc_html__('Background', 'quadmenu'),
687 'subtitle' => esc_html__('Select the navbar background.', 'quadmenu'),
688 'options' => array(
689 'color' => esc_html__('Color', 'quadmenu'),
690 'gradient' => esc_html__('Gradient', 'quadmenu'),
691 ),
692 'default' => $this->validate($this->defaults[$key . '_navbar_background'], array('color', 'gradient'))
693 ),
694 array(
695 'compiler' => true,
696 'customizer' => true,
697 'transport' => 'postMessage',
698 'id' => $key . '_navbar_background_color',
699 'title' => esc_html__('Color', 'quadmenu'),
700 'subtitle' => esc_html__('Pick a background color for the navbar.', 'quadmenu'),
701 'type' => 'rgba',
702 'transparent' => false,
703 'validate' => 'colorrgba',
704 //'options' => array(
705 // 'allow_empty' => false,
706 //),
707 'default' => $this->defaults[$key . '_navbar_background_color']
708 ),
709 array(
710 'compiler' => true,
711 'customizer' => true,
712 'transport' => 'postMessage',
713 'id' => $key . '_navbar_background_to',
714 'title' => esc_html__('Gradient', 'quadmenu'),
715 'subtitle' => esc_html__('Pick a background color for the navbar.', 'quadmenu'),
716 'type' => 'rgba',
717 'transparent' => false,
718 'required' => array(
719 $key . '_navbar_background',
720 '=',
721 'gradient'
722 ),
723 'validate' => 'colorrgba',
724 //'options' => array(
725 // 'allow_empty' => false,
726 //),
727 'default' => $this->defaults[$key . '_navbar_background_to']
728 ),
729 array(
730 'compiler' => true,
731 'customizer' => true,
732 'transport' => 'postMessage',
733 'id' => $key . '_navbar_background_deg',
734 'title' => esc_html__('Degrees', 'quadmenu'),
735 'subtitle' => esc_html__('Pick a degrees angle for background gradient.', 'quadmenu'),
736 'type' => 'spinner',
737 'min' => '0',
738 'step' => '1',
739 'max' => '360',
740 'validate' => 'numeric',
741 'required' => array(
742 $key . '_navbar_background',
743 '=',
744 'gradient'
745 ),
746 'default' => (int) $this->defaults[$key . '_navbar_background_deg']
747 ),
748 array(
749 'compiler' => true,
750 'customizer' => true,
751 'transport' => 'postMessage',
752 'title' => esc_html__('Text', 'quadmenu'),
753 'subtitle' => esc_html__('Pick a color for the navbar text.', 'quadmenu'),
754 'id' => $key . '_navbar_text',
755 'type' => 'color',
756 'transparent' => false,
757 'validate' => 'not_empty',
758 'default' => $this->defaults[$key . '_navbar_text']
759 ),
760 // Navbar
761 // ---------------------------------------------------------
762 array(
763 'customizer' => true,
764 'transport' => 'postMessage',
765 'id' => $key . '_navbar',
766 'type' => 'section',
767 'title' => esc_html__('Menu', 'quadmenu'),
768 'indent' => false
769 ),
770 array(
771 'compiler' => true,
772 'customizer' => true,
773 'transport' => 'postMessage',
774 'id' => $key . '_navbar_height',
775 'type' => 'slider',
776 'title' => esc_html__('Height', 'quadmenu'),
777 'subtitle' => esc_html__('Change the items height.', 'quadmenu'),
778 'min' => '30',
779 'step' => '2',
780 'max' => '160',
781 'default' => (int) $this->defaults[$key . '_navbar_height'],
782 'validate' => 'numeric',
783 ),
784 array(
785 'compiler' => true,
786 'id' => $key . '_navbar_width',
787 'type' => 'slider',
788 'title' => esc_html__('Width', 'quadmenu'),
789 'subtitle' => esc_html__('Change the items width.', 'quadmenu'),
790 'min' => '60',
791 'step' => '1',
792 'max' => '500',
793 'default' => (int) $this->defaults[$key . '_navbar_width'],
794 'validate' => 'numeric',
795 ),
796 // Logo
797 // ---------------------------------------------------------
798 array(
799 'customizer' => true,
800 'transport' => 'postMessage',
801 'id' => $key . '_logo',
802 'type' => 'section',
803 'title' => esc_html__('Logo', 'quadmenu'),
804 'indent' => false,
805 //'required' => array(
806 // array($key . '_layout', '=', array('collapse', 'offcanvas', 'vertical', 'inherit')),
807 //),
808 ),
809 array(
810 'customizer' => true,
811 'transport' => 'postMessage',
812 'id' => $key . '_navbar_logo_link',
813 'type' => 'text',
814 'title' => esc_html__('Link', 'quadmenu'),
815 'subtitle' => esc_html__('Set navbar logo url.', 'quadmenu'),
816 'default' => $this->defaults[$key . '_navbar_logo_link'],
817 'validate' => 'url',
818 //'required' => array(
819 // array($key . '_layout', '=', array('collapse', 'offcanvas', 'vertical', 'inherit')),
820 //),
821 ),
822 array(
823 'customizer' => true,
824 'transport' => 'postMessage',
825 'id' => $key . '_navbar_logo',
826 'type' => 'media',
827 'title' => esc_html__('Image', 'quadmenu'),
828 'subtitle' => esc_html__('Upload the navbar logo image.', 'quadmenu'),
829 'default' => $this->defaults[$key . '_navbar_logo'],
830 //'required' => array(
831 // array($key . '_layout', '=', array('collapse', 'offcanvas', 'vertical', 'inherit')),
832 //),
833 ),
834 array(
835 'compiler' => true,
836 'customizer' => true,
837 'transport' => 'postMessage',
838 'id' => $key . '_navbar_logo_height',
839 'type' => 'slider',
840 'title' => esc_html__('Height', 'quadmenu'),
841 'subtitle' => esc_html__('Max logo height in px.', 'quadmenu'),
842 'min' => '20',
843 'step' => '1',
844 'max' => '160',
845 'default' => (int) $this->defaults[$key . '_navbar_logo_height'],
846 'validate' => 'numeric',
847 //'required' => array(
848 // array($key . '_layout', '=', array('collapse', 'offcanvas', 'vertical', 'inherit')),
849 //),
850 ),
851 array(
852 'compiler' => true,
853 'customizer' => true,
854 'transport' => 'postMessage',
855 'id' => $key . '_navbar_logo_bg',
856 'title' => esc_html__('Background', 'quadmenu'),
857 'subtitle' => esc_html__('Pick a background color for the navbar logo.', 'quadmenu'),
858 'type' => 'rgba',
859 'transparent' => false,
860 'validate' => 'colorrgba',
861 //'options' => array(
862 // 'allow_empty' => false,
863 //),
864 'default' => $this->defaults[$key . '_navbar_logo_bg'],
865 //'required' => array(
866 // array($key . '_layout', '=', array('collapse', 'offcanvas', 'vertical', 'inherit')),
867 //),
868 ),
869 // Layout
870 // ---------------------------------------------------------
871 array(
872 'customizer' => false,
873 'transport' => 'postMessage',
874 'id' => $key . '_navbar_layout',
875 'type' => 'section',
876 'title' => esc_html__('Layout', 'quadmenu'),
877 'indent' => false
878 ),
879 array(
880 'compiler' => true,
881 'customizer' => false,
882 'transport' => 'postMessage',
883 'title' => esc_html__('Margin', 'quadmenu'),
884 'subtitle' => esc_html__('Set the margin for the navbar links.', 'quadmenu'),
885 'id' => $key . '_navbar_link_margin',
886 'type' => 'border',
887 'all' => false,
888 'style' => false,
889 'color' => false,
890 'default' => $this->validate_border($this->defaults[$key . '_navbar_link_margin'])
891 ),
892 array(
893 'compiler' => true,
894 'customizer' => false,
895 'transport' => 'postMessage',
896 'title' => esc_html__('Radius', 'quadmenu'),
897 'subtitle' => esc_html__('Set the radius for the navbar links.', 'quadmenu'),
898 'id' => $key . '_navbar_link_radius',
899 'type' => 'border',
900 'all' => false,
901 'style' => false,
902 'color' => false,
903 'default' => $this->defaults[$key . '_navbar_link_radius']
904 ),
905 // Link
906 // ---------------------------------------------------------
907 array(
908 'customizer' => true,
909 'transport' => 'postMessage',
910 'id' => $key . '_link',
911 'type' => 'section',
912 'title' => esc_html__('Links', 'quadmenu'),
913 'indent' => false
914 ),
915 array(
916 'compiler' => true,
917 'customizer' => true,
918 'transport' => 'postMessage',
919 'title' => esc_html__('Color', 'quadmenu'),
920 'subtitle' => esc_html__('Pick a color for the navbar links.', 'quadmenu'),
921 'id' => $key . '_navbar_link',
922 'type' => 'color',
923 'transparent' => false,
924 //'validate' => 'color',
925 'validate' => 'not_empty',
926 'default' => $this->defaults[$key . '_navbar_link']
927 ),
928 array(
929 'compiler' => true,
930 'customizer' => true,
931 'transport' => 'postMessage',
932 'title' => esc_html__('Background', 'quadmenu'),
933 'subtitle' => esc_html__('Pick a color for the navbar background.', 'quadmenu'),
934 'id' => $key . '_navbar_link_bg',
935 'type' => 'rgba',
936 'transparent' => false,
937 'validate' => 'colorrgba',
938 //'options' => array(
939 // 'allow_empty' => false,
940 //),
941 'default' => $this->defaults[$key . '_navbar_link_bg']
942 ),
943 array(
944 'compiler' => true,
945 'customizer' => true,
946 'transport' => 'postMessage',
947 'title' => esc_html__('Hover', 'quadmenu'),
948 'subtitle' => esc_html__('Pick a color for the navbar links on mousehover.', 'quadmenu'),
949 'id' => $key . '_navbar_link_hover',
950 'type' => 'color',
951 'transparent' => false,
952 //'validate' => 'color',
953 'validate' => 'not_empty',
954 'default' => $this->defaults[$key . '_navbar_link_hover']
955 ),
956 array(
957 'compiler' => true,
958 'customizer' => true,
959 'transport' => 'postMessage',
960 'title' => esc_html__('Background', 'quadmenu'),
961 'subtitle' => esc_html__('Pick a color for the navbar background on mousehover.', 'quadmenu'),
962 'id' => $key . '_navbar_link_bg_hover',
963 'type' => 'rgba',
964 'transparent' => false,
965 'validate' => 'colorrgba',
966 //'options' => array(
967 // 'allow_empty' => false,
968 //),
969 'default' => $this->defaults[$key . '_navbar_link_bg_hover']
970 ),
971 array(
972 'compiler' => true,
973 'customizer' => true,
974 'transport' => 'postMessage',
975 'title' => esc_html__('Divider', 'quadmenu'),
976 'subtitle' => esc_html__('Pick a color for the navbar links divider.', 'quadmenu'),
977 'id' => $key . '_navbar_divider',
978 'type' => 'rgba',
979 'transparent' => false,
980 'validate' => 'colorrgba',
981 //'options' => array(
982 // 'allow_empty' => false,
983 //),
984 'default' => $this->defaults[$key . '_navbar_divider']
985 ),
986 array(
987 'compiler' => true,
988 'title' => esc_html__('Effect', 'quadmenu'),
989 'subtitle' => esc_html__('Pick a color for the navbar link effect on mousehover.', 'quadmenu'),
990 'id' => $key . '_navbar_link_hover_effect',
991 'type' => 'rgba',
992 'transparent' => false,
993 'validate' => 'colorrgba',
994 //'options' => array(
995 // 'allow_empty' => false,
996 //),
997 'default' => $this->defaults[$key . '_navbar_link_hover_effect']
998 ),
999 // Icon
1000 // ---------------------------------------------------------
1001 array(
1002 'customizer' => true,
1003 'transport' => 'postMessage',
1004 'id' => $key . '_icon',
1005 'type' => 'section',
1006 'title' => esc_html__('Icon', 'quadmenu'),
1007 'indent' => false
1008 ),
1009 array(
1010 'compiler' => true,
1011 'customizer' => true,
1012 'transport' => 'postMessage',
1013 'title' => esc_html__('Icon', 'quadmenu'),
1014 'subtitle' => esc_html__('Pick a color for the navbar links icon.', 'quadmenu'),
1015 'id' => $key . '_navbar_link_icon',
1016 'type' => 'color',
1017 'transparent' => false,
1018 //'validate' => 'color',
1019 'validate' => 'not_empty',
1020 'default' => $this->defaults[$key . '_navbar_link_icon']
1021 ),
1022 array(
1023 'compiler' => true,
1024 'customizer' => true,
1025 'transport' => 'postMessage',
1026 'title' => esc_html__('Hover', 'quadmenu'),
1027 'subtitle' => esc_html__('Pick a color for the navbar links icon on hover.', 'quadmenu'),
1028 'id' => $key . '_navbar_link_icon_hover',
1029 'type' => 'color',
1030 'transparent' => false,
1031 //'validate' => 'color',
1032 'validate' => 'not_empty',
1033 'default' => $this->defaults[$key . '_navbar_link_icon_hover']
1034 ),
1035 // Subtitle
1036 // ---------------------------------------------------------
1037 array(
1038 'customizer' => true,
1039 'transport' => 'postMessage',
1040 'id' => $key . '_subtitle',
1041 'type' => 'section',
1042 'title' => esc_html__('Subtitle', 'quadmenu'),
1043 'indent' => false
1044 ),
1045 array(
1046 'compiler' => true,
1047 'customizer' => true,
1048 'transport' => 'postMessage',
1049 'title' => esc_html__('Color', 'quadmenu'),
1050 'subtitle' => esc_html__('Pick a color for the navbar links subtitle.', 'quadmenu'),
1051 'id' => $key . '_navbar_link_subtitle',
1052 'type' => 'color',
1053 'transparent' => false,
1054 //'validate' => 'color',
1055 'validate' => 'not_empty',
1056 'default' => $this->defaults[$key . '_navbar_link_subtitle']
1057 ),
1058 array(
1059 'compiler' => true,
1060 'customizer' => true,
1061 'transport' => 'postMessage',
1062 'title' => esc_html__('Hover', 'quadmenu'),
1063 'subtitle' => esc_html__('Pick a color for the navbar links subtitle on hover.', 'quadmenu'),
1064 'id' => $key . '_navbar_link_subtitle_hover',
1065 'type' => 'color',
1066 'transparent' => false,
1067 //'validate' => 'color',
1068 'validate' => 'not_empty',
1069 'default' => $this->defaults[$key . '_navbar_link_subtitle_hover']
1070 ),
1071 // Badge
1072 // ---------------------------------------------------------
1073 array(
1074 'customizer' => true,
1075 'transport' => 'postMessage',
1076 'id' => $key . '_badge',
1077 'type' => 'section',
1078 'title' => esc_html__('Badge', 'quadmenu'),
1079 'indent' => false
1080 ),
1081 array(
1082 'compiler' => true,
1083 'customizer' => true,
1084 'transport' => 'postMessage',
1085 'title' => esc_html__('Color', 'quadmenu'),
1086 'subtitle' => esc_html__('Pick a color for the badge.', 'quadmenu'),
1087 'id' => $key . '_navbar_badge_color',
1088 'type' => 'color',
1089 'transparent' => false,
1090 //'validate' => 'color',
1091 'validate' => 'not_empty',
1092 'default' => $this->defaults[$key . '_navbar_badge_color']
1093 ),
1094 array(
1095 'compiler' => true,
1096 'customizer' => true,
1097 'transport' => 'postMessage',
1098 'title' => esc_html__('Background', 'quadmenu'),
1099 'subtitle' => esc_html__('Pick a background color for the badge.', 'quadmenu'),
1100 'id' => $key . '_navbar_badge',
1101 'type' => 'color',
1102 'transparent' => false,
1103 //'validate' => 'color',
1104 'validate' => 'not_empty',
1105 'default' => $this->defaults[$key . '_navbar_badge']
1106 ),
1107 // Button
1108 // ---------------------------------------------------------
1109 array(
1110 'id' => $key . '_button',
1111 'type' => 'section',
1112 'title' => esc_html__('Button', 'quadmenu'),
1113 'indent' => false
1114 ),
1115 array(
1116 'title' => esc_html__('Color', 'quadmenu'),
1117 'subtitle' => esc_html__('Pick a color for the navbar button.', 'quadmenu'),
1118 'id' => $key . '_navbar_button',
1119 'type' => 'color',
1120 'transparent' => false,
1121 //'validate' => 'color',
1122 'validate' => 'not_empty',
1123 'compiler' => true,
1124 'default' => $this->defaults[$key . '_navbar_button']
1125 ),
1126 array(
1127 'title' => esc_html__('Background', 'quadmenu'),
1128 'subtitle' => esc_html__('Pick a color for the navbar button.', 'quadmenu'),
1129 'id' => $key . '_navbar_button_background',
1130 'type' => 'color',
1131 'transparent' => false,
1132 //'validate' => 'color',
1133 'validate' => 'not_empty',
1134 'compiler' => true,
1135 'default' => $this->defaults[$key . '_navbar_button_background']
1136 ),
1137 array(
1138 'title' => esc_html__('Hover', 'quadmenu'),
1139 'subtitle' => esc_html__('Pick a color for the navbar button on mousehover.', 'quadmenu'),
1140 'id' => $key . '_navbar_button_hover',
1141 'type' => 'color',
1142 'transparent' => false,
1143 //'validate' => 'color',
1144 'validate' => 'not_empty',
1145 'compiler' => true,
1146 'default' => $this->defaults[$key . '_navbar_button_hover']
1147 ),
1148 array(
1149 'title' => esc_html__('Background', 'quadmenu'),
1150 'subtitle' => esc_html__('Pick a color for the navbar button on mousehover.', 'quadmenu'),
1151 'id' => $key . '_navbar_button_hover_background',
1152 'type' => 'color',
1153 'transparent' => false,
1154 //'validate' => 'color',
1155 'validate' => 'not_empty',
1156 'compiler' => true,
1157 'default' => $this->defaults[$key . '_navbar_button_hover_background']
1158 ),
1159 array(
1160 'compiler' => true,
1161 'customizer' => true,
1162 'transport' => 'postMessage',
1163 'title' => esc_html__('Radius', 'quadmenu'),
1164 'subtitle' => esc_html__('Button border radius.', 'quadmenu'),
1165 'id' => $key . '_navbar_button_radius',
1166 'type' => 'border',
1167 'all' => false,
1168 'style' => false,
1169 'color' => false,
1170 'default' => $this->validate_border($this->defaults[$key . '_navbar_button_radius'])
1171 ),
1172 // Scrollbar
1173 // ---------------------------------------------------------
1174 array(
1175 'customizer' => false,
1176 'id' => $key . '_scrollbar',
1177 'type' => 'section',
1178 'title' => esc_html__('ScrollBar', 'quadmenu'),
1179 'indent' => false,
1180 'required' => array(
1181 'styles_pscrollbar',
1182 '=',
1183 true
1184 ),
1185 ),
1186 array(
1187 'compiler' => true,
1188 'customizer' => false,
1189 'title' => esc_html__('Scroll', 'quadmenu'),
1190 'subtitle' => esc_html__('Pick a color for the scrollbar.', 'quadmenu'),
1191 'id' => $key . '_navbar_scrollbar',
1192 'type' => 'rgba',
1193 'transparent' => false,
1194 'validate' => 'colorrgba',
1195 'default' => $this->defaults[$key . '_navbar_scrollbar']
1196 ),
1197 array(
1198 'compiler' => true,
1199 'customizer' => false,
1200 'title' => esc_html__('Background', 'quadmenu'),
1201 'subtitle' => esc_html__('Pick a color for the scrollbar rail.', 'quadmenu'),
1202 'id' => $key . '_navbar_scrollbar_rail',
1203 'type' => 'rgba',
1204 'transparent' => false,
1205 'validate' => 'colorrgba',
1206 'default' => $this->defaults[$key . '_navbar_scrollbar_rail']
1207 ),
1208 )
1209 );
1210
1211 $sections[] = array(
1212 //'customizer' => true,
1213 'subsection' => true,
1214 'heading' => false,
1215 'icon' => 'dashicons dashicons-sticky',
1216 'id' => 'quadmenu_sticky_' . $key,
1217 'title' => esc_html__('Sticky', 'quadmenu'),
1218 'permissions' => 'edit_theme_options',
1219 'fields' => array(
1220 // Sticky
1221 // ---------------------------------------------------------
1222 array(
1223 'customizer' => true,
1224 'transport' => 'selective',
1225 'id' => $key . '_layout_sticky',
1226 'type' => 'switch',
1227 'title' => esc_html__('Sticky', 'quadmenu'),
1228 'subtitle' => esc_html__('Make the menu sticky on scroll.', 'quadmenu'),
1229 'default' => (int) $this->defaults[$key . '_layout_sticky'],
1230 ),
1231 array(
1232 'customizer' => true,
1233 'transport' => 'selective',
1234 'id' => $key . '_layout_sticky_offset',
1235 'type' => 'slider',
1236 'title' => esc_html__('Offset', 'quadmenu'),
1237 'subtitle' => esc_html__('Set the length of the scroll for each user to pass before the menu will stick to the top of the window.', 'quadmenu'),
1238 'min' => '0',
1239 'step' => '1',
1240 'max' => '340',
1241 'required' => array(
1242 $key . '_layout_sticky',
1243 '=',
1244 1
1245 ),
1246 'default' => (int) $this->defaults[$key . '_layout_sticky_offset'],
1247 ),
1248 array(
1249 'compiler' => true,
1250 'customizer' => true,
1251 'transport' => 'postMessage',
1252 'id' => $key . '_sticky_background',
1253 'title' => esc_html__('Background', 'quadmenu'),
1254 'subtitle' => esc_html__('Change the navbar sticky background.', 'quadmenu'),
1255 'type' => 'rgba',
1256 'validate' => 'colorrgba',
1257 //'options' => array(
1258 // 'allow_empty' => false,
1259 //),
1260 'transparent' => false,
1261 'default' => $this->defaults[$key . '_sticky_background']
1262 ),
1263 array(
1264 'compiler' => true,
1265 'customizer' => true,
1266 'transport' => 'postMessage',
1267 'id' => $key . '_sticky_height',
1268 'type' => 'slider',
1269 'title' => esc_html__('Height', 'quadmenu'),
1270 'subtitle' => esc_html__('Change the navbar sticky height.', 'quadmenu'),
1271 'min' => '30',
1272 'step' => '2',
1273 'max' => '160',
1274 'default' => $this->defaults[$key . '_sticky_height'],
1275 ),
1276 array(
1277 'compiler' => true,
1278 'customizer' => true,
1279 'transport' => 'postMessage',
1280 'id' => $key . '_sticky_logo_height',
1281 'type' => 'slider',
1282 'title' => esc_html__('Logo', 'quadmenu'),
1283 'subtitle' => esc_html__('Max logo height in px.', 'quadmenu'),
1284 'min' => '20',
1285 'step' => '1',
1286 'max' => '160',
1287 'default' => $this->defaults[$key . '_sticky_logo_height'],
1288 ),
1289 )
1290 );
1291
1292
1293 $sections[] = array(
1294 //'customizer' => true,
1295 'subsection' => true,
1296 'heading' => false,
1297 'icon' => 'dashicons dashicons-tablet',
1298 'id' => 'quadmenu_mobile_' . $key,
1299 'title' => esc_html__('Mobile', 'quadmenu'),
1300 'permissions' => 'edit_theme_options',
1301 'fields' => array(
1302 // Mobile
1303 // ---------------------------------------------------------
1304 /* array(
1305 'id' => $key . '_mobile',
1306 'type' => 'section',
1307 'title' => esc_html__('Mobile', 'quadmenu'),
1308 'indent' => true
1309 ), */
1310 array(
1311 'customizer' => true,
1312 'transport' => 'selective',
1313 'id' => $key . '_mobile_shadow',
1314 'type' => 'button_set',
1315 'title' => esc_html__('Shadow', 'quadmenu'),
1316 'subtitle' => esc_html__('Display shadow on mobile navbar.', 'quadmenu'),
1317 'options' => array(
1318 'show' => esc_html__('Show', 'quadmenu'),
1319 'hide' => esc_html__('Hide', 'quadmenu')
1320 ),
1321 'default' => $this->validate($this->defaults[$key . '_mobile_shadow'], array('show', 'hide')),
1322 ),
1323 array(
1324 'compiler' => true,
1325 'title' => esc_html__('Border', 'quadmenu'),
1326 'subtitle' => esc_html__('Pick a color for the border separator.', 'quadmenu'),
1327 'id' => $key . '_navbar_mobile_border',
1328 'type' => 'rgba',
1329 'transparent' => false,
1330 'validate' => 'colorrgba',
1331 'default' => $this->defaults[$key . '_navbar_mobile_border']
1332 ),
1333 // Toggle
1334 // ---------------------------------------------------------
1335 array(
1336 'customizer' => true,
1337 'transport' => 'postMessage',
1338 'id' => $key . '_toggle',
1339 'type' => 'section',
1340 'title' => esc_html__('Toggle', 'quadmenu'),
1341 'indent' => false
1342 ),
1343 array(
1344 'compiler' => true,
1345 'customizer' => true,
1346 'transport' => 'postMessage',
1347 'title' => esc_html__('Open', 'quadmenu'),
1348 'subtitle' => esc_html__('Pick a color for the toggle icon.', 'quadmenu'),
1349 'id' => $key . '_navbar_toggle_open',
1350 'type' => 'color',
1351 'transparent' => false,
1352 'validate' => 'not_empty',
1353 'default' => $this->defaults[$key . '_navbar_toggle_open']
1354 ),
1355 array(
1356 'compiler' => true,
1357 'customizer' => true,
1358 'transport' => 'postMessage',
1359 'title' => esc_html__('Close', 'quadmenu'),
1360 'subtitle' => esc_html__('Pick a color for the toggle button background on hover.', 'quadmenu'),
1361 'id' => $key . '_navbar_toggle_close',
1362 'type' => 'color',
1363 'transparent' => false,
1364 'validate' => 'not_empty',
1365 'default' => $this->defaults[$key . '_navbar_toggle_close']
1366 ),
1367 array(
1368 'customizer' => true,
1369 'transport' => 'postMessage',
1370 'id' => $key . '_mobile_link',
1371 'type' => 'section',
1372 'title' => esc_html__('Link', 'quadmenu'),
1373 'indent' => false
1374 ),
1375 array(
1376 'compiler' => true,
1377 'customizer' => false,
1378 'transport' => 'postMessage',
1379 'title' => esc_html__('Margin', 'quadmenu'),
1380 'subtitle' => esc_html__('Set the margin for the mobile links.', 'quadmenu'),
1381 'id' => $key . '_mobile_link_padding',
1382 'type' => 'border',
1383 'all' => false,
1384 'style' => false,
1385 'color' => false,
1386 'default' => $this->defaults[$key . '_mobile_link_padding']
1387 ),
1388 array(
1389 'compiler' => true,
1390 'customizer' => true,
1391 'transport' => 'postMessage',
1392 'title' => esc_html__('Border', 'quadmenu'),
1393 'subtitle' => esc_html__('Pick a border color for the mobile menu links border.', 'quadmenu'),
1394 'id' => $key . '_mobile_link_border',
1395 'type' => 'border',
1396 'default' => $this->defaults[$key . '_mobile_link_border']
1397 ),
1398 )
1399 );
1400
1401
1402 $sections[] = array(
1403 //'customizer' => true,
1404 'subsection' => true,
1405 'heading' => false,
1406 'icon' => 'dashicons dashicons-editor-break',
1407 'id' => 'quadmenu_dropdown_' . $key,
1408 'title' => esc_html__('Dropdown', 'quadmenu'),
1409 'permissions' => 'edit_theme_options',
1410 'fields' => array(
1411 array(
1412 'customizer' => true,
1413 'transport' => 'selective',
1414 'id' => $key . '_dropdown_shadow',
1415 'type' => 'button_set',
1416 'title' => esc_html__('Shadow', 'quadmenu'),
1417 'subtitle' => esc_html__('Display shadow on dropdown menus.', 'quadmenu'),
1418 'options' => array(
1419 'show' => esc_html__('Show', 'quadmenu'),
1420 'hide' => esc_html__('Hide', 'quadmenu')
1421 ),
1422 'default' => $this->validate($this->defaults[$key . '_dropdown_shadow'], array('show', 'hide')),
1423 ),
1424 array(
1425 'compiler' => true,
1426 'customizer' => true,
1427 'transport' => 'postMessage',
1428 'id' => $key . '_dropdown_margin',
1429 'type' => 'spinner',
1430 'title' => esc_html__('Margin', 'quadmenu'),
1431 'subtitle' => esc_html__('Dropdown margin top.', 'quadmenu'),
1432 'min' => '0',
1433 'step' => '1',
1434 'max' => '45',
1435 'default' => (int) $this->defaults[$key . '_dropdown_margin'],
1436 ),
1437 array(
1438 'compiler' => true,
1439 'customizer' => true,
1440 'transport' => 'postMessage',
1441 'title' => esc_html__('Radius', 'quadmenu'),
1442 'subtitle' => esc_html__('Dropdown border radius.', 'quadmenu'),
1443 'id' => $key . '_dropdown_radius',
1444 'type' => 'border',
1445 'all' => false,
1446 'style' => false,
1447 'color' => false,
1448 'default' => $this->validate_border($this->defaults[$key . '_dropdown_radius'])
1449 ),
1450 array(
1451 'compiler' => true,
1452 'customizer' => true,
1453 'transport' => 'postMessage',
1454 'title' => esc_html__('Border', 'quadmenu'),
1455 'subtitle' => esc_html__('Pick a border color for the dropdown.', 'quadmenu'),
1456 'id' => $key . '_dropdown_border',
1457 'type' => 'border',
1458 'all' => false,
1459 'style' => false,
1460 'default' => $this->validate_border($this->defaults[$key . '_dropdown_border'])
1461 ),
1462 array(
1463 'compiler' => true,
1464 'customizer' => true,
1465 'transport' => 'postMessage',
1466 'title' => esc_html__('Background', 'quadmenu'),
1467 'subtitle' => esc_html__('Pick a background color for the dropdown menu.', 'quadmenu'),
1468 'id' => $key . '_dropdown_background',
1469 'type' => 'rgba',
1470 'transparent' => false,
1471 'validate' => 'colorrgba',
1472 //'options' => array(
1473 // 'allow_empty' => false,
1474 //),
1475 'default' => $this->defaults[$key . '_dropdown_background']
1476 ),
1477 // Link
1478 // ---------------------------------------------------------
1479 array(
1480 'customizer' => true,
1481 'transport' => 'postMessage',
1482 'id' => $key . '_dropdown_link_section',
1483 'type' => 'section',
1484 'title' => esc_html__('Link', 'quadmenu'),
1485 'indent' => false
1486 ),
1487 array(
1488 'compiler' => true,
1489 'customizer' => true,
1490 'transport' => 'postMessage',
1491 'title' => esc_html__('Color', 'quadmenu'),
1492 'subtitle' => esc_html__('Pick a color for the dropdown menu links.', 'quadmenu'),
1493 'id' => $key . '_dropdown_link',
1494 'type' => 'color',
1495 'transparent' => false,
1496 //'validate' => 'color',
1497 'validate' => 'not_empty',
1498 'default' => $this->defaults[$key . '_dropdown_link']
1499 ),
1500 array(
1501 'compiler' => true,
1502 'customizer' => true,
1503 'transport' => 'postMessage',
1504 'title' => esc_html__('Hover', 'quadmenu'),
1505 'subtitle' => esc_html__('Pick a color for the dropdown menu links on mousehover.', 'quadmenu'),
1506 'id' => $key . '_dropdown_link_hover',
1507 'type' => 'color',
1508 'transparent' => false,
1509 //'validate' => 'color',
1510 'validate' => 'not_empty',
1511 'default' => $this->defaults[$key . '_dropdown_link_hover']
1512 ),
1513 array(
1514 'compiler' => true,
1515 'customizer' => true,
1516 'transport' => 'postMessage',
1517 'title' => esc_html__('Background', 'quadmenu'),
1518 'subtitle' => esc_html__('Pick a background color for the links on mouseover.', 'quadmenu'),
1519 'id' => $key . '_dropdown_link_bg_hover',
1520 'type' => 'rgba',
1521 'transparent' => false,
1522 'validate' => 'colorrgba',
1523 //'options' => array(
1524 // 'allow_empty' => false,
1525 //),
1526 'default' => $this->defaults[$key . '_dropdown_link_bg_hover']
1527 ),
1528 /* array(
1529 'compiler' => true,
1530 'customizer' => false,
1531 'transport' => 'postMessage',
1532 'title' => esc_html__('Margin', 'quadmenu'),
1533 'subtitle' => esc_html__('Set the margin for the navbar links.', 'quadmenu'),
1534 'id' => $key . '_dropdown_link_padding',
1535 'type' => 'border',
1536 'all' => false,
1537 'style' => false,
1538 'color' => false,
1539 'default' => $this->defaults[$key . '_dropdown_link_padding']
1540 ), */
1541 array(
1542 'compiler' => true,
1543 'customizer' => true,
1544 'transport' => 'postMessage',
1545 'title' => esc_html__('Border', 'quadmenu'),
1546 'subtitle' => esc_html__('Pick a border color for the dropdown menu links border.', 'quadmenu'),
1547 'id' => $key . '_dropdown_link_border',
1548 'type' => 'border',
1549 'default' => $this->defaults[$key . '_dropdown_link_border']
1550 ),
1551 // Title
1552 // ---------------------------------------------------------
1553 array(
1554 'customizer' => true,
1555 'transport' => 'postMessage',
1556 'id' => $key . '_title',
1557 'type' => 'section',
1558 'title' => esc_html__('Title', 'quadmenu'),
1559 'indent' => false
1560 ),
1561 array(
1562 'compiler' => true,
1563 'customizer' => true,
1564 'transport' => 'postMessage',
1565 'title' => esc_html__('Title', 'quadmenu'),
1566 'subtitle' => esc_html__('Pick a color for the dropdown menu title.', 'quadmenu'),
1567 'id' => $key . '_dropdown_title',
1568 'type' => 'color',
1569 'transparent' => false,
1570 //'validate' => 'color',
1571 'validate' => 'not_empty',
1572 'default' => $this->defaults[$key . '_dropdown_title']
1573 ),
1574 array(
1575 'compiler' => true,
1576 'customizer' => true,
1577 'transport' => 'postMessage',
1578 'title' => esc_html__('Border', 'quadmenu'),
1579 'subtitle' => esc_html__('Pick a color for the dropdown menu title border.', 'quadmenu'),
1580 'id' => $key . '_dropdown_title_border',
1581 'type' => 'border',
1582 'default' => $this->defaults[$key . '_dropdown_title_border']
1583 ),
1584 // Icon
1585 // ---------------------------------------------------------
1586 array(
1587 'customizer' => true,
1588 'transport' => 'postMessage',
1589 'id' => $key . '_icon',
1590 'type' => 'section',
1591 'title' => esc_html__('Icon', 'quadmenu'),
1592 'indent' => false
1593 ),
1594 array(
1595 'compiler' => true,
1596 'customizer' => true,
1597 'transport' => 'postMessage',
1598 'title' => esc_html__('Icon', 'quadmenu'),
1599 'icon' => esc_html__('Pick a color for the dropdown links icon.', 'quadmenu'),
1600 'id' => $key . '_dropdown_link_icon',
1601 'type' => 'color',
1602 'transparent' => false,
1603 //'validate' => 'color',
1604 'validate' => 'not_empty',
1605 'default' => $this->defaults[$key . '_dropdown_link_icon']
1606 ),
1607 array(
1608 'compiler' => true,
1609 'customizer' => true,
1610 'transport' => 'postMessage',
1611 'title' => esc_html__('Hover', 'quadmenu'),
1612 'icon' => esc_html__('Pick a color for the dropdown links icon on hover.', 'quadmenu'),
1613 'id' => $key . '_dropdown_link_icon_hover',
1614 'type' => 'color',
1615 'transparent' => false,
1616 //'validate' => 'color',
1617 'validate' => 'not_empty',
1618 'default' => $this->defaults[$key . '_dropdown_link_icon_hover']
1619 ),
1620 // Subtitle
1621 // ---------------------------------------------------------
1622 array(
1623 'customizer' => true,
1624 'transport' => 'postMessage',
1625 'id' => $key . '_subtitle',
1626 'type' => 'section',
1627 'title' => esc_html__('Subtitle', 'quadmenu'),
1628 'indent' => false
1629 ),
1630 array(
1631 'compiler' => true,
1632 'customizer' => true,
1633 'transport' => 'postMessage',
1634 'title' => esc_html__('Color', 'quadmenu'),
1635 'subtitle' => esc_html__('Pick a color for the dropdown links subtitle.', 'quadmenu'),
1636 'id' => $key . '_dropdown_link_subtitle',
1637 'type' => 'color',
1638 'transparent' => false,
1639 //'validate' => 'color',
1640 'validate' => 'not_empty',
1641 'default' => $this->defaults[$key . '_dropdown_link_subtitle']
1642 ),
1643 array(
1644 'compiler' => true,
1645 'customizer' => true,
1646 'transport' => 'postMessage',
1647 'title' => esc_html__('Hover', 'quadmenu'),
1648 'subtitle' => esc_html__('Pick a color for the dropdown links subtitle on hover.', 'quadmenu'),
1649 'id' => $key . '_dropdown_link_subtitle_hover',
1650 'type' => 'color',
1651 'transparent' => false,
1652 //'validate' => 'color',
1653 'validate' => 'not_empty',
1654 'default' => $this->defaults[$key . '_dropdown_link_subtitle_hover']
1655 ),
1656 // Button
1657 // ---------------------------------------------------------
1658 array(
1659 'customizer' => true,
1660 'transport' => 'postMessage',
1661 'id' => $key . '_button',
1662 'type' => 'section',
1663 'title' => esc_html__('Button', 'quadmenu'),
1664 'indent' => false
1665 ),
1666 array(
1667 'compiler' => true,
1668 'customizer' => true,
1669 'transport' => 'postMessage',
1670 'title' => esc_html__('Color', 'quadmenu'),
1671 'subtitle' => esc_html__('Pick a color for the navbar button.', 'quadmenu'),
1672 'id' => $key . '_dropdown_button',
1673 'type' => 'color',
1674 'transparent' => false,
1675 //'validate' => 'color',
1676 'validate' => 'not_empty',
1677 'default' => $this->defaults[$key . '_dropdown_button']
1678 ),
1679 array(
1680 'compiler' => true,
1681 'customizer' => true,
1682 'transport' => 'postMessage',
1683 'title' => esc_html__('Background', 'quadmenu'),
1684 'subtitle' => esc_html__('Pick a color for the navbar button.', 'quadmenu'),
1685 'id' => $key . '_dropdown_button_bg',
1686 'type' => 'color',
1687 'transparent' => false,
1688 //'validate' => 'color',
1689 'validate' => 'not_empty',
1690 'default' => $this->defaults[$key . '_dropdown_button_bg']
1691 ),
1692 array(
1693 'compiler' => true,
1694 'customizer' => true,
1695 'transport' => 'postMessage',
1696 'title' => esc_html__('Hover', 'quadmenu'),
1697 'subtitle' => esc_html__('Pick a color for the navbar button on hover.', 'quadmenu'),
1698 'id' => $key . '_dropdown_button_hover',
1699 'type' => 'color',
1700 'transparent' => false,
1701 //'validate' => 'color',
1702 'validate' => 'not_empty',
1703 'default' => $this->defaults[$key . '_dropdown_button_hover']
1704 ),
1705 array(
1706 'compiler' => true,
1707 'customizer' => true,
1708 'transport' => 'postMessage',
1709 'title' => esc_html__('Background', 'quadmenu'),
1710 'subtitle' => esc_html__('Pick a color for the navbar button on hover.', 'quadmenu'),
1711 'id' => $key . '_dropdown_button_bg_hover',
1712 'type' => 'color',
1713 'transparent' => false,
1714 //'validate' => 'color',
1715 'validate' => 'not_empty',
1716 'default' => $this->defaults[$key . '_dropdown_button_bg_hover']
1717 ),
1718 /* array(
1719 'compiler' => true,
1720 'customizer' => true,
1721 'transport' => 'postMessage',
1722 'title' => esc_html__('Radius', 'quadmenu'),
1723 'subtitle' => esc_html__('Dropdown button border radius.', 'quadmenu'),
1724 'id' => $key . '_dropdown_button_radius',
1725 'type' => 'border',
1726 'all' => false,
1727 'style' => false,
1728 'color' => false,
1729 'default' => $this->validate_border($this->defaults[$key . '_dropdown_button_radius'])
1730 ), */
1731 // Tab
1732 // ---------------------------------------------------------
1733 array(
1734 'customizer' => true,
1735 'transport' => 'postMessage',
1736 'id' => $key . '_tab',
1737 'type' => 'section',
1738 'title' => esc_html__('Tab', 'quadmenu'),
1739 'indent' => false
1740 ),
1741 array(
1742 'compiler' => true,
1743 'customizer' => true,
1744 'transport' => 'postMessage',
1745 'title' => esc_html__('Background', 'quadmenu'),
1746 'subtitle' => esc_html__('Pick a color for the navbar tab.', 'quadmenu'),
1747 'id' => $key . '_dropdown_tab_bg',
1748 'type' => 'rgba',
1749 'transparent' => false,
1750 'validate' => 'colorrgba',
1751 'transparent' => false,
1752 'default' => $this->defaults[$key . '_dropdown_tab_bg']
1753 ),
1754 array(
1755 'compiler' => true,
1756 'customizer' => true,
1757 'transport' => 'postMessage',
1758 'title' => esc_html__('Hover', 'quadmenu'),
1759 'subtitle' => esc_html__('Pick a color for the navbar tab on hover.', 'quadmenu'),
1760 'id' => $key . '_dropdown_tab_bg_hover',
1761 'type' => 'rgba',
1762 'transparent' => false,
1763 'validate' => 'colorrgba',
1764 'transparent' => false,
1765 'default' => $this->defaults[$key . '_dropdown_tab_bg_hover']
1766 ),
1767 // Scrollbar
1768 // ---------------------------------------------------------
1769 array(
1770 'customizer' => false,
1771 'id' => $key . '_dropdown_scrollbar_section',
1772 'type' => 'section',
1773 'title' => esc_html__('ScrollBar', 'quadmenu'),
1774 'indent' => false,
1775 'required' => array(
1776 'styles_pscrollbar',
1777 '=',
1778 true
1779 ),
1780 ),
1781 array(
1782 'compiler' => true,
1783 'customizer' => false,
1784 'title' => esc_html__('Scroll', 'quadmenu'),
1785 'subtitle' => esc_html__('Pick a color for the scrollbar.', 'quadmenu'),
1786 'id' => $key . '_dropdown_scrollbar',
1787 'type' => 'rgba',
1788 'transparent' => false,
1789 'validate' => 'colorrgba',
1790 'default' => $this->defaults[$key . '_dropdown_scrollbar']
1791 ),
1792 array(
1793 'compiler' => true,
1794 'customizer' => false,
1795 'title' => esc_html__('Background', 'quadmenu'),
1796 'subtitle' => esc_html__('Pick a color for the scrollbar rail.', 'quadmenu'),
1797 'id' => $key . '_dropdown_scrollbar_rail',
1798 'type' => 'rgba',
1799 'transparent' => false,
1800 'validate' => 'colorrgba',
1801 'default' => $this->defaults[$key . '_dropdown_scrollbar_rail']
1802 ),
1803 ),
1804 );
1805
1806 $sections[] = array(
1807 'subsection' => true,
1808 'heading' => false,
1809 'icon' => 'dashicons dashicons-editor-paste-text',
1810 'id' => 'quadmenu_typography_' . $key,
1811 'title' => esc_html__('Typography', 'quadmenu'),
1812 'permissions' => 'edit_theme_options',
1813 'fields' => array(
1814 array(
1815 'compiler' => true,
1816 'id' => $key . '_font',
1817 'type' => 'typography',
1818 'title' => esc_html__('General', 'quadmenu'),
1819 'subtitle' => esc_html__('Specify the font properties.', 'quadmenu'),
1820 'font-weight' => true,
1821 'font-size' => true,
1822 'font-style' => true,
1823 'letter-spacing' => true,
1824 'line-height' => false,
1825 'google' => true,
1826 'text-align' => false,
1827 'color' => false,
1828 'subsets' => true,
1829 'default' => $this->validate_font($this->defaults[$key . '_font'])
1830 ),
1831 array(
1832 'compiler' => true,
1833 'id' => $key . '_navbar_font',
1834 'type' => 'typography',
1835 'title' => esc_html__('Menu', 'quadmenu'),
1836 'subtitle' => esc_html__('Specify the font properties.', 'quadmenu'),
1837 'font-weight' => true,
1838 'font-size' => true,
1839 'font-style' => true,
1840 'line-height' => false,
1841 'letter-spacing' => true,
1842 'google' => true,
1843 'text-align' => false,
1844 'color' => false,
1845 'subsets' => true,
1846 'default' => $this->validate_font($this->defaults[$key . '_navbar_font'])
1847 ),
1848 array(
1849 'compiler' => true,
1850 'customizer' => true,
1851 'transport' => 'postMessage',
1852 'title' => esc_html__('Transform', 'quadmenu'),
1853 'subtitle' => esc_html__('Pick a text transform for the link.', 'quadmenu'),
1854 'id' => $key . '_navbar_link_transform',
1855 'type' => 'select',
1856 'options' => array(
1857 'none' => esc_html__('None', 'quadmenu'),
1858 'capitalize' => esc_html__('Capitalize', 'quadmenu'),
1859 'uppercase' => esc_html__('Uppercase', 'quadmenu'),
1860 'lowercase' => esc_html__('Lowercase', 'quadmenu'),
1861 ),
1862 'default' => $this->defaults[$key . '_navbar_link_transform']
1863 ),
1864 array(
1865 'compiler' => true,
1866 'id' => $key . '_dropdown_font',
1867 'type' => 'typography',
1868 'title' => esc_html__('Submenu', 'quadmenu'),
1869 'subtitle' => esc_html__('Specify the font properties.', 'quadmenu'),
1870 'font-weight' => true,
1871 'font-size' => true,
1872 'font-style' => true,
1873 'line-height' => false,
1874 'letter-spacing' => true,
1875 'google' => true,
1876 'text-align' => false,
1877 'color' => false,
1878 'subsets' => true,
1879 'default' => $this->validate_font($this->defaults[$key . '_dropdown_font'])
1880 ),
1881 array(
1882 'compiler' => true,
1883 'customizer' => true,
1884 'transport' => 'postMessage',
1885 'title' => esc_html__('Transform', 'quadmenu'),
1886 'subtitle' => esc_html__('Pick a text transform for the link.', 'quadmenu'),
1887 'id' => $key . '_dropdown_link_transform',
1888 'type' => 'select',
1889 'options' => array(
1890 'none' => esc_html__('None', 'quadmenu'),
1891 'capitalize' => esc_html__('Capitalize', 'quadmenu'),
1892 'uppercase' => esc_html__('Uppercase', 'quadmenu'),
1893 'lowercase' => esc_html__('Lowercase', 'quadmenu'),
1894 ),
1895 'default' => $this->defaults[$key . '_dropdown_link_transform']
1896 ),
1897 )
1898 );
1899
1900
1901 $sections[] = array(
1902 'subsection' => true,
1903 'heading' => false,
1904 'icon' => 'dashicons dashicons-format-video',
1905 'id' => 'quadmenu_animations_' . $key,
1906 'title' => esc_html__('Animations', 'quadmenu'),
1907 'permissions' => 'edit_theme_options',
1908 'fields' => array(
1909 array(
1910 'customizer' => true,
1911 'transport' => 'selective',
1912 'id' => $key . '_layout_hover_effect',
1913 'type' => 'select',
1914 'title' => esc_html__('Effect', 'quadmenu'),
1915 'subtitle' => esc_html__('Add an amazing effect for the hover event.', 'quadmenu'),
1916 'options' => array(
1917 'quadmenu-hover-ripple' => esc_html__('Ripple', 'quadmenu'),
1918 //'quadmenu-hover-text-top' => esc_html__('Text Top', 'quadmenu'),
1919 'quadmenu-hover-slidebar sl-top' => esc_html__('SlideBar Top (Horizontal)', 'quadmenu'),
1920 'quadmenu-hover-slidebar sl-middle' => esc_html__('SlideBar Middle (Horizontal)', 'quadmenu'),
1921 'quadmenu-hover-slidebar sl-bottom' => esc_html__('SlideBar Bottom (Horizontal)', 'quadmenu'),
1922 ),
1923 'required' => array(
1924 array($key . '_layout', '=', array('collapse', 'offcanvas', 'embed')),
1925 ),
1926 'default' => $this->defaults[$key . '_layout_hover_effect'],
1927 ),
1928 array(
1929 'customizer' => true,
1930 'transport' => 'selective',
1931 'id' => $key . '_navbar_animation_text',
1932 'type' => 'animation',
1933 'title' => esc_html__('Text', 'quadmenu'),
1934 'subtitle' => esc_html__('Select the animation for the link text.', 'quadmenu'),
1935 'options' => array(
1936 '' => esc_html__('None', 'quadmenu'),
1937 'quadmenu_bounce' => esc_html__('Bounce', 'quadmenu'),
1938 'quadmenu_pulse' => esc_html__('Pulse', 'quadmenu'),
1939 'quadmenu_rubberBand' => esc_html__('Rubber', 'quadmenu'),
1940 'quadmenu_swing' => esc_html__('Swing', 'quadmenu'),
1941 'quadmenu_tada' => esc_html__('Tada', 'quadmenu'),
1942 'quadmenu_wobble' => esc_html__('Wobble', 'quadmenu'),
1943 ),
1944 'action' => array(
1945 'load' => esc_html__('Load', 'quadmenu'),
1946 'hover' => esc_html__('Hover', 'quadmenu'),
1947 'loop' => esc_html__('Loop', 'quadmenu'),
1948 ),
1949 'speed' => array(
1950 't_200' => 200,
1951 't_300' => 300,
1952 't_500' => 500,
1953 't_700' => 700,
1954 't_1000' => 1000,
1955 't_1500' => 1500,
1956 't_2000' => 2000,
1957 ),
1958 'default' => $this->defaults[$key . '_navbar_animation_text'],
1959 ),
1960 array(
1961 'customizer' => true,
1962 'transport' => 'selective',
1963 'id' => $key . '_navbar_animation_subtitle',
1964 'type' => 'animation',
1965 'title' => esc_html__('Subtitle', 'quadmenu'),
1966 'subtitle' => esc_html__('Select the animation for the link subtitle.', 'quadmenu'),
1967 'options' => array(
1968 '' => esc_html__('None', 'quadmenu'),
1969 'quadmenu_bounce' => esc_html__('Bounce', 'quadmenu'),
1970 'quadmenu_pulse' => esc_html__('Pulse', 'quadmenu'),
1971 'quadmenu_rubberBand' => esc_html__('Rubber', 'quadmenu'),
1972 'quadmenu_swing' => esc_html__('Swing', 'quadmenu'),
1973 'quadmenu_tada' => esc_html__('Tada', 'quadmenu'),
1974 'quadmenu_wobble' => esc_html__('Wobble', 'quadmenu'),
1975 ),
1976 'action' => array(
1977 'load' => esc_html__('Load', 'quadmenu'),
1978 'hover' => esc_html__('Hover', 'quadmenu'),
1979 'loop' => esc_html__('Loop', 'quadmenu'),
1980 ),
1981 'speed' => array(
1982 't_200' => 200,
1983 't_300' => 300,
1984 't_500' => 500,
1985 't_700' => 700,
1986 't_1000' => 1000,
1987 't_1500' => 1500,
1988 't_2000' => 2000,
1989 ),
1990 'default' => $this->defaults[$key . '_navbar_animation_subtitle'],
1991 ),
1992 array(
1993 'customizer' => true,
1994 'transport' => 'selective',
1995 'id' => $key . '_navbar_animation_icon',
1996 'type' => 'animation',
1997 'title' => esc_html__('Icon', 'quadmenu'),
1998 'subtitle' => esc_html__('Select the animation for the links icons.', 'quadmenu'),
1999 'options' => array(
2000 '' => esc_html__('None', 'quadmenu'),
2001 'quadmenu_bounce' => esc_html__('Bounce', 'quadmenu'),
2002 'quadmenu_pulse' => esc_html__('Pulse', 'quadmenu'),
2003 'quadmenu_rubberBand' => esc_html__('Rubber', 'quadmenu'),
2004 'quadmenu_swing' => esc_html__('Swing', 'quadmenu'),
2005 'quadmenu_tada' => esc_html__('Tada', 'quadmenu'),
2006 'quadmenu_wobble' => esc_html__('Wobble', 'quadmenu'),
2007 ),
2008 'action' => array(
2009 'load' => esc_html__('Load', 'quadmenu'),
2010 'hover' => esc_html__('Hover', 'quadmenu'),
2011 'loop' => esc_html__('Loop', 'quadmenu'),
2012 ),
2013 'speed' => array(
2014 't_200' => 200,
2015 't_300' => 300,
2016 't_500' => 500,
2017 't_700' => 700,
2018 't_1000' => 1000,
2019 't_1500' => 1500,
2020 't_2000' => 2000,
2021 ),
2022 'default' => $this->defaults[$key . '_navbar_animation_icon'],
2023 ),
2024 array(
2025 'customizer' => true,
2026 'transport' => 'selective',
2027 'id' => $key . '_navbar_animation_badge',
2028 'type' => 'animation',
2029 'title' => esc_html__('Badge', 'quadmenu'),
2030 'subtitle' => esc_html__('Select the animation for the links badges.', 'quadmenu'),
2031 'options' => array(
2032 '' => esc_html__('None', 'quadmenu'),
2033 'quadmenu_bounce' => esc_html__('Bounce', 'quadmenu'),
2034 'quadmenu_pulse' => esc_html__('Pulse', 'quadmenu'),
2035 'quadmenu_rubberBand' => esc_html__('Rubber', 'quadmenu'),
2036 'quadmenu_swing' => esc_html__('Swing', 'quadmenu'),
2037 'quadmenu_tada' => esc_html__('Tada', 'quadmenu'),
2038 'quadmenu_wobble' => esc_html__('Wobble', 'quadmenu'),
2039 ),
2040 'action' => array(
2041 'load' => esc_html__('Load', 'quadmenu'),
2042 'hover' => esc_html__('Hover', 'quadmenu'),
2043 'loop' => esc_html__('Loop', 'quadmenu'),
2044 ),
2045 'speed' => array(
2046 't_200' => 200,
2047 't_300' => 300,
2048 't_500' => 500,
2049 't_700' => 700,
2050 't_1000' => 1000,
2051 't_1500' => 1500,
2052 't_2000' => 2000,
2053 ),
2054 'default' => $this->defaults[$key . '_navbar_animation_badge'],
2055 ),
2056 array(
2057 'customizer' => true,
2058 'transport' => 'selective',
2059 'id' => $key . '_navbar_animation_cart',
2060 'type' => 'animation',
2061 'title' => esc_html__('Cart', 'quadmenu'),
2062 'subtitle' => esc_html__('Select the animation for the cart bubble.', 'quadmenu'),
2063 'options' => array(
2064 '' => esc_html__('None', 'quadmenu'),
2065 'quadmenu_bounce' => esc_html__('Bounce', 'quadmenu'),
2066 'quadmenu_pulse' => esc_html__('Pulse', 'quadmenu'),
2067 'quadmenu_rubberBand' => esc_html__('Rubber', 'quadmenu'),
2068 'quadmenu_swing' => esc_html__('Swing', 'quadmenu'),
2069 'quadmenu_tada' => esc_html__('Tada', 'quadmenu'),
2070 'quadmenu_wobble' => esc_html__('Wobble', 'quadmenu'),
2071 ),
2072 'speed' => array(
2073 't_200' => 200,
2074 't_300' => 300,
2075 't_500' => 500,
2076 't_700' => 700,
2077 ),
2078 'default' => $this->defaults[$key . '_navbar_animation_cart'],
2079 ),
2080 array(
2081 'customizer' => true,
2082 'transport' => 'postMessage',
2083 'id' => $key . '_dropdown',
2084 'type' => 'section',
2085 'title' => esc_html__('Dropdown', 'quadmenu'),
2086 'indent' => false
2087 ),
2088 array(
2089 'customizer' => true,
2090 'transport' => 'selective',
2091 'id' => $key . '_layout_animation',
2092 'type' => 'animation',
2093 'title' => esc_html__('Dropdown', 'quadmenu'),
2094 'subtitle' => esc_html__('Select the animation for the dropdowns.', 'quadmenu'),
2095 'options' => array(
2096 'quadmenu_fadeIn' => esc_html__('FadeIn', 'quadmenu'),
2097 'quadmenu_btt' => esc_html__('Bottom to top', 'quadmenu'),
2098 'quadmenu_rtl' => esc_html__('Right to left', 'quadmenu'),
2099 'quadmenu_ltr' => esc_html__('Left to right', 'quadmenu'),
2100 'quadmenu_hinge' => esc_html__('Hinge', 'quadmenu'),
2101 'quadmenu_flip' => esc_html__('Flip', 'quadmenu'),
2102 ),
2103 'speed' => array(
2104 't_100' => 100,
2105 't_200' => 200,
2106 't_300' => 300,
2107 't_500' => 500,
2108 't_700' => 700,
2109 't_1000' => 1000,
2110 ),
2111 'default' => $this->defaults[$key . '_layout_animation'],
2112 'required' => array(
2113 array($key . '_layout', '=', array('embed', 'collapse', 'offcanvas')),
2114 ),
2115 'validate' => 'no_special_chars',
2116 ),
2117 array(
2118 'customizer' => true,
2119 'transport' => 'selective',
2120 'id' => $key . '_dropdown_animation_text',
2121 'type' => 'animation',
2122 'title' => esc_html__('Text', 'quadmenu'),
2123 'subtitle' => esc_html__('Select the animation for the menu links.', 'quadmenu'),
2124 'options' => array(
2125 '' => esc_html__('None', 'quadmenu'),
2126 'quadmenu_bounce' => esc_html__('Bounce', 'quadmenu'),
2127 'quadmenu_pulse' => esc_html__('Pulse', 'quadmenu'),
2128 'quadmenu_rubberBand' => esc_html__('Rubber', 'quadmenu'),
2129 'quadmenu_swing' => esc_html__('Swing', 'quadmenu'),
2130 'quadmenu_tada' => esc_html__('Tada', 'quadmenu'),
2131 'quadmenu_wobble' => esc_html__('Wobble', 'quadmenu'),
2132 ),
2133 'action' => array(
2134 'load' => esc_html__('Load', 'quadmenu'),
2135 'hover' => esc_html__('Hover', 'quadmenu'),
2136 'loop' => esc_html__('Loop', 'quadmenu'),
2137 ),
2138 'speed' => array(
2139 't_200' => 200,
2140 't_300' => 300,
2141 't_500' => 500,
2142 't_700' => 700,
2143 't_1000' => 1000,
2144 't_1500' => 1500,
2145 't_2000' => 2000,
2146 ),
2147 'default' => $this->defaults[$key . '_dropdown_animation_text'],
2148 ),
2149 array(
2150 'customizer' => true,
2151 'transport' => 'selective',
2152 'id' => $key . '_dropdown_animation_subtitle',
2153 'type' => 'animation',
2154 'title' => esc_html__('Subtitle', 'quadmenu'),
2155 'subtitle' => esc_html__('Select the animation for the menu links.', 'quadmenu'),
2156 'options' => array(
2157 '' => esc_html__('None', 'quadmenu'),
2158 'quadmenu_bounce' => esc_html__('Bounce', 'quadmenu'),
2159 'quadmenu_pulse' => esc_html__('Pulse', 'quadmenu'),
2160 'quadmenu_rubberBand' => esc_html__('Rubber', 'quadmenu'),
2161 'quadmenu_swing' => esc_html__('Swing', 'quadmenu'),
2162 'quadmenu_tada' => esc_html__('Tada', 'quadmenu'),
2163 'quadmenu_wobble' => esc_html__('Wobble', 'quadmenu'),
2164 ),
2165 'action' => array(
2166 'load' => esc_html__('Load', 'quadmenu'),
2167 'hover' => esc_html__('Hover', 'quadmenu'),
2168 'loop' => esc_html__('Loop', 'quadmenu'),
2169 ),
2170 'speed' => array(
2171 't_200' => 200,
2172 't_300' => 300,
2173 't_500' => 500,
2174 't_700' => 700,
2175 't_1000' => 1000,
2176 't_1500' => 1500,
2177 't_2000' => 2000,
2178 ),
2179 'default' => $this->defaults[$key . '_dropdown_animation_subtitle'],
2180 ),
2181 array(
2182 'customizer' => true,
2183 'transport' => 'selective',
2184 'id' => $key . '_dropdown_animation_icon',
2185 'type' => 'animation',
2186 'title' => esc_html__('Icon', 'quadmenu'),
2187 'subtitle' => esc_html__('Select the animation for the menu links.', 'quadmenu'),
2188 'options' => array(
2189 '' => esc_html__('None', 'quadmenu'),
2190 'quadmenu_bounce' => esc_html__('Bounce', 'quadmenu'),
2191 'quadmenu_pulse' => esc_html__('Pulse', 'quadmenu'),
2192 'quadmenu_rubberBand' => esc_html__('Rubber', 'quadmenu'),
2193 'quadmenu_swing' => esc_html__('Swing', 'quadmenu'),
2194 'quadmenu_tada' => esc_html__('Tada', 'quadmenu'),
2195 'quadmenu_wobble' => esc_html__('Wobble', 'quadmenu'),
2196 ),
2197 'action' => array(
2198 'load' => esc_html__('Load', 'quadmenu'),
2199 'hover' => esc_html__('Hover', 'quadmenu'),
2200 'loop' => esc_html__('Loop', 'quadmenu'),
2201 ),
2202 'speed' => array(
2203 't_200' => 200,
2204 't_300' => 300,
2205 't_500' => 500,
2206 't_700' => 700,
2207 't_1000' => 1000,
2208 't_1500' => 1500,
2209 't_2000' => 2000,
2210 ),
2211 'default' => $this->defaults[$key . '_dropdown_animation_icon'],
2212 ),
2213 array(
2214 'customizer' => true,
2215 'transport' => 'selective',
2216 'id' => $key . '_dropdown_animation_badge',
2217 'subtitle' => esc_html__('Select the animation for the menu links.', 'quadmenu'),
2218 'title' => esc_html__('Badge', 'quadmenu'),
2219 'type' => 'animation',
2220 'options' => array(
2221 '' => esc_html__('None', 'quadmenu'),
2222 'quadmenu_bounce' => esc_html__('Bounce', 'quadmenu'),
2223 'quadmenu_pulse' => esc_html__('Pulse', 'quadmenu'),
2224 'quadmenu_rubberBand' => esc_html__('Rubber', 'quadmenu'),
2225 'quadmenu_swing' => esc_html__('Swing', 'quadmenu'),
2226 'quadmenu_tada' => esc_html__('Tada', 'quadmenu'),
2227 'quadmenu_wobble' => esc_html__('Wobble', 'quadmenu'),
2228 ),
2229 'action' => array(
2230 'load' => esc_html__('Load', 'quadmenu'),
2231 'hover' => esc_html__('Hover', 'quadmenu'),
2232 'loop' => esc_html__('Loop', 'quadmenu'),
2233 ),
2234 'speed' => array(
2235 't_200' => 200,
2236 't_300' => 300,
2237 't_500' => 500,
2238 't_700' => 700,
2239 't_1000' => 1000,
2240 't_1500' => 1500,
2241 't_2000' => 2000,
2242 ),
2243 'default' => $this->defaults[$key . '_dropdown_animation_badge'],
2244 ),
2245 )
2246 );
2247 }
2248
2249 return $sections;
2250 }
2251
2252 function validate($option, $defaults) {
2253
2254 if (!$option || !in_array(sanitize_key($option), $defaults))
2255 return reset($defaults);
2256
2257 return $option;
2258 }
2259
2260 function validate_font($options) {
2261
2262 $defaults = array(
2263 'font-family' => 'Verdana, Geneva, sans-serif',
2264 'font-size' => '11',
2265 'font-style' => 'normal',
2266 'font-weight' => '400',
2267 'letter-spacing' => 'inherit',
2268 );
2269
2270 return wp_parse_args((array) $options, $defaults);
2271 }
2272
2273 function validate_border($options) {
2274
2275 if (!is_array($options)) {
2276 $options = array(
2277 'border-all' => $options,
2278 'border-top' => $options,
2279 'border-right' => $options,
2280 'border-left' => $options,
2281 'border-bottom' => $options,
2282 );
2283 }
2284
2285 $defaults = array(
2286 'border-all' => '0',
2287 'border-top' => '0',
2288 'border-right' => '0',
2289 'border-left' => '0',
2290 'border-bottom' => '0',
2291 'border-color' => '#000000'
2292 );
2293
2294 return wp_parse_args((array) $options, $defaults);
2295 }
2296
2297 }
2298
2299 new QuadMenu_Options();
2300