PluginProbe
Float menu – awesome floating side menu / 6.1
Float menu – awesome floating side menu v6.1
7.2.5 trunk 2.1 2.2 3.0.1 3.1 3.2.2 3.3.1 3.5 3.5.1 3.5.2 3.5.3. 3.5.4 4.0 4.1 4.1.1 4.2 4.3 4.3.1 4.3.2 5.0 5.0.1 5.0.2 5.0.3 5.1 All 57 releases
float-menu / admin / assets / js / 6.rules.js

6.rules.js in Float menu – awesome floating side menu 6.1, at admin/assets/js/6.rules.js

133 lines 4.1 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 'use strict';
2
3 jQuery(document).ready(function ($) {
4
5 const selectors = {
6 settings: '.wpie-settings__main',
7 show: '[data-field="show"]',
8 add_rules: '.wpie-add-rule',
9 users: '[data-field="users"]',
10 add_schedule: '.wpie-add-schedule',
11 dates: '[data-field="dates"]',
12 remove: '.wpie-remove',
13 };
14
15 function set_up() {
16 $(selectors.users).each(change_users);
17 $(selectors.show).each(change_show);
18 $(selectors.dates).each(change_dates);
19 }
20
21 function initialize_events() {
22 $(selectors.settings).on('click', selectors.add_rules, clone_rules);
23 $(selectors.settings).on('change', selectors.show, change_show);
24 $(selectors.settings).on('change', selectors.users, change_users);
25 $(selectors.settings).on('click', selectors.add_schedule, clone_schedule);
26 $(selectors.settings).on('change', selectors.dates, change_dates);
27 $(selectors.settings).on('click', selectors.remove, remove_item);
28
29 }
30
31 function clone_rules(e) {
32 e.preventDefault();
33 const parent = get_parent_fields($(this), '.wpie-fieldset');
34 const selector = $(parent).find('hr');
35 const template = $('#template-rules').clone().html();
36 $(template).insertBefore($(selector));
37 }
38
39 function change_show() {
40 const $this = $(this);
41 const parent = get_parent_fields($this);
42 const box = get_field_box($this);
43
44 // making direct jQuery object of parent fields
45 const fields = $('[data-field-box]', parent).not(box);
46 fields.addClass('is-hidden');
47
48 let type = $this.val();
49
50 if (type.includes('custom_post_selected')) {
51 type = 'post_selected';
52 } else if (type.includes('custom_post_tax')) {
53 type = 'post_category';
54 }
55
56 let selectorsToUnhide = [];
57
58 switch (type) {
59 case 'post_selected':
60 case 'post_category':
61 case 'post_tag':
62 case 'page_selected':
63 case '_is_category':
64 case '_is_tag':
65 case '_is_author':
66 selectorsToUnhide = ['operator', 'ids'];
67 break;
68 case 'page_type':
69 selectorsToUnhide = ['operator', 'page_type'];
70 break;
71 default:
72 // Do nothing
73 return;
74 }
75
76 selectorsToUnhide.forEach(selector => {
77 $(`[data-field-box="${selector}"]`, parent).removeClass('is-hidden');
78 });
79 }
80 function change_users() {
81 const type = $(this).val();
82 const parent = get_parent_fields($(this));
83 const box = get_field_box($(this));
84 const fields = $(parent).find('[data-field-box]').not($(box));
85 $(fields).addClass('is-hidden');
86 if (type === '2') {
87 $(fields).removeClass('is-hidden');
88 }
89 }
90
91 function clone_schedule(e) {
92 e.preventDefault();
93 const parent = get_parent_fields($(this), '.wpie-fieldset');
94 const selector = $(parent).find('hr');
95 const template = $('#template-schedule').clone().html();
96 $(template).insertBefore($(selector));
97 $(selectors.dates).each(change_dates);
98 }
99
100 function change_dates() {
101 const type = $(this).val();
102 const parent = get_parent_fields($(this));
103 const box = get_field_box($(this));
104 const fields = $(parent).find('[data-field-box="date_start"], [data-field-box="date_end"]');
105 $(fields).addClass('is-hidden');
106 if (type === 'enabled') {
107 $(fields).removeClass('is-hidden');
108 }
109 }
110
111 function remove_item() {
112 const userConfirmed = confirm("Are you sure you want to remove this element?");
113 if (userConfirmed) {
114 const parent = get_parent_fields($(this));
115 $(parent).remove();
116 }
117 }
118
119 function initialize() {
120 set_up();
121 initialize_events();
122 }
123
124 function get_parent_fields($el, $class = '.wpie-fields') {
125 return $el.closest($class);
126 }
127
128 function get_field_box($el, $class = '.wpie-field') {
129 return $el.closest($class);
130 }
131
132 initialize();
133 });