| 1 |
/** |
| 2 |
* PPOM input scripts |
| 3 |
**/ |
| 4 |
|
| 5 |
"use strict" |
| 6 |
|
| 7 |
/* global wpcomment_input_vars */ |
| 8 |
|
| 9 |
var wpcomment_bulkquantity_meta = ''; |
| 10 |
var wpcomment_pricematrix_discount_type = ''; |
| 11 |
|
| 12 |
jQuery(function($) { |
| 13 |
|
| 14 |
// Tooltip Init |
| 15 |
// $('.wpcomment-tooltip').powerTip({ |
| 16 |
// placement: 'n', |
| 17 |
// smartPlacement: true, |
| 18 |
// mouseOnToPopup: true |
| 19 |
// }); |
| 20 |
|
| 21 |
// Remove Emoji from text input |
| 22 |
// $('.wpcomment-wrapper').on('input keyup', 'input[type="text"]', function(e) { |
| 23 |
|
| 24 |
// const input_val = $(this).val(); |
| 25 |
// const new_val = input_val.replace(/([\u2700-\u27BF]|[\uE000-\uF8FF]|\uD83C[\uDC00-\uDFFF]|\uD83D[\uDC00-\uDFFF]|[\u2011-\u26FF]|\uD83E[\uDD10-\uDDFF])/g, ''); |
| 26 |
// $(this).val(new_val); |
| 27 |
// }); |
| 28 |
|
| 29 |
|
| 30 |
|
| 31 |
// $('[data-toggle="tooltip"]').tooltip({container:'body', trigger:'hover'}); |
| 32 |
|
| 33 |
if ($('.wpcomment-modals').length > 0) { |
| 34 |
$('.wpcomment-modals').appendTo('body'); |
| 35 |
} |
| 36 |
|
| 37 |
wpcomment_init_js_for_wpcomment_fields(wpcomment_input_vars.field_meta); |
| 38 |
|
| 39 |
}); |
| 40 |
|
| 41 |
// JS Init PPOM Inputs |
| 42 |
function wpcomment_init_js_for_wpcomment_fields(wpcomment_fields) { |
| 43 |
|
| 44 |
|
| 45 |
// Fixed the form button issue |
| 46 |
if (wpcomment_fields && wpcomment_fields.length > 0) { |
| 47 |
const css_type = jQuery('form.cart').css('display'); |
| 48 |
if (css_type === 'flex') { |
| 49 |
jQuery('form.cart').addClass('wpcomment-flex-controller'); |
| 50 |
} |
| 51 |
} |
| 52 |
|
| 53 |
jQuery.each(wpcomment_fields, function(index, input) { |
| 54 |
|
| 55 |
// console.log(input.type); |
| 56 |
var InputSelector = jQuery("#" + input.data_name); |
| 57 |
|
| 58 |
// Applying JS on inputs |
| 59 |
switch (input.type) { |
| 60 |
|
| 61 |
// masking |
| 62 |
case 'text': |
| 63 |
if (input.input_mask == undefined || input.input_mask == '') break; |
| 64 |
InputSelector.inputmask(); |
| 65 |
if (input.type === 'text' && |
| 66 |
input.input_mask !== '' && |
| 67 |
input.use_regex !== 'on') { |
| 68 |
InputSelector.inputmask(input.input_mask); |
| 69 |
} |
| 70 |
break; |
| 71 |
|
| 72 |
|
| 73 |
// only allow numbers and periods in number fields |
| 74 |
case "number": |
| 75 |
InputSelector.bind("keydown keyup keypress", function(event) { |
| 76 |
if (event.key === "Backspace" || event.key === "Delete" || event.key === "Tab" || |
| 77 |
(event.ctrlKey === true && event.key === "a") || |
| 78 |
(event.ctrlKey === true && event.key === "x") || |
| 79 |
(event.ctrlKey === true && event.key === "Backspace") || |
| 80 |
(event.which >= 48 && event.which <= 57) || |
| 81 |
(event.which >= 96 && event.which <= 105) || |
| 82 |
(event.key === "." && $(this).val().indexOf(".") <= 1)) { |
| 83 |
// think happy thoughts :-) |
| 84 |
} |
| 85 |
else { event.preventDefault(); } |
| 86 |
}).bind("focus blur", function() { |
| 87 |
if (typeof InputSelector.attr("max") !== 'undefined') { |
| 88 |
if (parseFloat(InputSelector.val()) > parseFloat(InputSelector.attr("max"))) { |
| 89 |
InputSelector.val(InputSelector.attr("max")); |
| 90 |
} |
| 91 |
} |
| 92 |
}); |
| 93 |
break; |
| 94 |
|
| 95 |
case 'date': |
| 96 |
if (input.jquery_dp === 'on') { |
| 97 |
|
| 98 |
InputSelector.datepicker("destroy"); |
| 99 |
InputSelector.datepicker({ |
| 100 |
changeMonth: true, |
| 101 |
changeYear: true, |
| 102 |
dateFormat: input.date_formats.wpcomment_js_stripSlashes(), |
| 103 |
yearRange: input.year_range, |
| 104 |
}); |
| 105 |
|
| 106 |
if( input.past_dates === 'on' ){ |
| 107 |
InputSelector.datepicker('option', 'minDate', 0); |
| 108 |
} |
| 109 |
|
| 110 |
if (typeof input.past_dates !== 'max_date') { |
| 111 |
if (input.past_dates.length > 0) { |
| 112 |
var max_date = input.max_date.trim(); |
| 113 |
InputSelector.datepicker('option', 'maxDate', max_date); |
| 114 |
} |
| 115 |
} |
| 116 |
|
| 117 |
if (input.no_weekends === 'on') { |
| 118 |
InputSelector.datepicker('option', 'beforeShowDay', jQuery.datepicker.noWeekends); |
| 119 |
} |
| 120 |
} |
| 121 |
break; |
| 122 |
|
| 123 |
case 'image': |
| 124 |
|
| 125 |
var img_id = input.data_name; |
| 126 |
// Image Tooltip |
| 127 |
if (input.show_popup === 'on' && !wpcomment_input_vars.is_mobile) { |
| 128 |
jQuery('.wpcomment-zoom-' + img_id).imageTooltip({ |
| 129 |
xOffset: 5, |
| 130 |
yOffset: 5 |
| 131 |
}); |
| 132 |
} |
| 133 |
|
| 134 |
// Data Tooltip |
| 135 |
// $(".pre_upload_image").tooltip({container: 'body'}); |
| 136 |
break; |
| 137 |
// date_range |
| 138 |
case 'daterange': |
| 139 |
|
| 140 |
InputSelector.daterangepicker({ |
| 141 |
autoApply: (input.auto_apply == 'on') ? true : false, |
| 142 |
locale: { |
| 143 |
format: (input.date_formats !== '') ? input.date_formats : "YYYY-MM-DD" |
| 144 |
}, |
| 145 |
showDropdowns: (input.drop_down == 'on') ? true : false, |
| 146 |
showWeekNumbers: (input.show_weeks == 'on') ? true : false, |
| 147 |
timePicker: (input.time_picker == 'on') ? true : false, |
| 148 |
timePickerIncrement: (input.tp_increment !== '') ? parseInt(input.tp_increment) : '', |
| 149 |
timePicker24Hour: (input.tp_24hours == 'on') ? true : false, |
| 150 |
timePickerSeconds: (input.tp_seconds == 'on') ? true : false, |
| 151 |
drops: (input.open_style !== '') ? input.open_style : 'down', |
| 152 |
startDate: (input.start_date == '') ? false : input.start_date, |
| 153 |
endDate: (input.end_date == '') ? false : input.end_date, |
| 154 |
minDate: (input.min_date == '') ? false : input.min_date, |
| 155 |
maxDate: (input.max_date == '') ? false : input.max_date, |
| 156 |
}); |
| 157 |
break; |
| 158 |
|
| 159 |
// color: iris |
| 160 |
case 'color': |
| 161 |
|
| 162 |
InputSelector.css('background-color', input.default_color); |
| 163 |
var iris_options = { |
| 164 |
'palettes': wpcomment_get_palette_setting(input), |
| 165 |
'hide': input.show_onload == 'on' ? false : true, |
| 166 |
'color': input.default_color, |
| 167 |
'mode': input.palettes_mode != '' ? input.palettes_mode : 'hsv', |
| 168 |
'width': input.palettes_width != '' ? input.palettes_width : 200, |
| 169 |
change: function(event, ui) { |
| 170 |
|
| 171 |
InputSelector.css('background-color', ui.color.toString()); |
| 172 |
InputSelector.css('color', '#fff'); |
| 173 |
|
| 174 |
// Getting Color Code for update price |
| 175 |
InputSelector.val(ui.color.toString()) |
| 176 |
} |
| 177 |
} |
| 178 |
|
| 179 |
console.log(iris_options); |
| 180 |
|
| 181 |
InputSelector.iris(iris_options); |
| 182 |
|
| 183 |
// Following script is added to close picker |
| 184 |
// when color is picked |
| 185 |
jQuery(document).click(function(e) { |
| 186 |
if (!jQuery(e.target).is(".wpcomment-input.color, .iris-picker, .iris-picker-inner")) { |
| 187 |
jQuery('.wpcomment-input.color').iris('hide'); |
| 188 |
return e; |
| 189 |
} |
| 190 |
}); |
| 191 |
|
| 192 |
jQuery('.wpcomment-input.color').click(function(event) { |
| 193 |
jQuery('.wpcomment-input.color').iris('hide'); |
| 194 |
jQuery(this).iris('show'); |
| 195 |
return event; |
| 196 |
}); |
| 197 |
break; |
| 198 |
|
| 199 |
// Palettes |
| 200 |
case 'palettes': |
| 201 |
|
| 202 |
const max_selected = parseInt(input.max_selected) || undefined; |
| 203 |
if (!max_selected) break; |
| 204 |
|
| 205 |
jQuery(document).on('click', `.wpcomment-palettes-${input.data_name} input.wpcomment-input`, function(e) { |
| 206 |
if (jQuery(`.wpcomment-palettes-${input.data_name} input.wpcomment-input:checked`).length > max_selected) { |
| 207 |
alert(`You can only select a maximum of ${max_selected} ${input.title} colors`); |
| 208 |
e.preventDefault(); |
| 209 |
// return false; |
| 210 |
} |
| 211 |
}); |
| 212 |
break; |
| 213 |
// Bulk quantity |
| 214 |
case 'bulkquantity': |
| 215 |
|
| 216 |
setTimeout(function() { jQuery('.quantity.buttons_added').hide(); }, 50); |
| 217 |
jQuery('form.cart').find('.quantity').hide(); |
| 218 |
|
| 219 |
// setting formatter |
| 220 |
/*if ($('form.cart').closest('div').find('.price').length > 0){ |
| 221 |
wc_price_DOM = $('form.cart').closest('div').find('.price'); |
| 222 |
}*/ |
| 223 |
|
| 224 |
wpcomment_bulkquantity_meta = input.options; |
| 225 |
|
| 226 |
var min_quantity_value = jQuery('.wpcomment-bulkquantity-qty').val(); |
| 227 |
|
| 228 |
// Starting value |
| 229 |
wpcomment_bulkquantity_price_manager(min_quantity_value); |
| 230 |
break; |
| 231 |
|
| 232 |
case 'pricematrix': |
| 233 |
|
| 234 |
wpcomment_pricematrix_discount_type = input.discount_type; |
| 235 |
|
| 236 |
if (input.show_slider === 'on' && jQuery('.wpcomment-range-slide').length > 0) { |
| 237 |
var slider = new Slider('.wpcomment-range-slide', { |
| 238 |
formatter: function(value) { |
| 239 |
jQuery.event.trigger({ |
| 240 |
type: "wpcomment_range_slider_updated", |
| 241 |
qty: value, |
| 242 |
time: new Date() |
| 243 |
}); |
| 244 |
return wpcomment_input_vars.text_quantity + ": " + value; |
| 245 |
} |
| 246 |
}); |
| 247 |
} |
| 248 |
|
| 249 |
jQuery('.wpcomment-range-bs-slider').on('change', function(e) { |
| 250 |
jQuery.event.trigger({ |
| 251 |
type: "wpcomment_range_slider_updated", |
| 252 |
qty: jQuery(this).val(), |
| 253 |
time: new Date() |
| 254 |
}); |
| 255 |
}); |
| 256 |
break; |
| 257 |
case 'quantities': |
| 258 |
var enable_plusminus = input.enable_plusminus; |
| 259 |
var field_selectot = jQuery('.wpcomment-input-' + input.data_name); |
| 260 |
if (enable_plusminus == 'on') { |
| 261 |
jQuery('.wpcomment-quantity', field_selectot).niceNumber(); |
| 262 |
} |
| 263 |
break; |
| 264 |
|
| 265 |
} |
| 266 |
|
| 267 |
|
| 268 |
}); |
| 269 |
} |
| 270 |
|
| 271 |
|
| 272 |
|
| 273 |
function wpcomment_get_palette_setting(input) { |
| 274 |
|
| 275 |
var palettes_setting = false; |
| 276 |
// first check if palettes is on |
| 277 |
if (input.show_palettes === 'on') { |
| 278 |
palettes_setting = true; |
| 279 |
} |
| 280 |
if (palettes_setting && input.palettes_colors !== '') { |
| 281 |
palettes_setting = input.palettes_colors.split(','); |
| 282 |
} |
| 283 |
|
| 284 |
return palettes_setting; |
| 285 |
} |
| 286 |
|
| 287 |
function wpcomment_get_field_type_by_id(field_id) { |
| 288 |
|
| 289 |
var field_type = ''; |
| 290 |
jQuery.each(wpcomment_input_vars.field_meta, function(i, field) { |
| 291 |
|
| 292 |
if (field.data_name === field_id) { |
| 293 |
field_type = field.field_type; |
| 294 |
return; |
| 295 |
} |
| 296 |
}); |
| 297 |
|
| 298 |
return field_type; |
| 299 |
} |
| 300 |
|
| 301 |
// Get all field meta by id |
| 302 |
function wpcomment_get_field_meta_by_id(field_id) { |
| 303 |
|
| 304 |
var field_meta = ''; |
| 305 |
jQuery.each(wpcomment_input_vars.field_meta, function(i, field) { |
| 306 |
|
| 307 |
if (field.data_name === field_id) { |
| 308 |
field_meta = field; |
| 309 |
return; |
| 310 |
} |
| 311 |
}); |
| 312 |
|
| 313 |
return field_meta; |
| 314 |
} |
| 315 |
|
| 316 |
function wpcomment_get_field_meta_by_type(type) { |
| 317 |
|
| 318 |
var field_meta = Array(); |
| 319 |
jQuery.each(wpcomment_input_vars.field_meta, function(i, field) { |
| 320 |
|
| 321 |
if (field.type === type) { |
| 322 |
field_meta.push(field); |
| 323 |
return; |
| 324 |
} |
| 325 |
}); |
| 326 |
|
| 327 |
return field_meta; |
| 328 |
} |
| 329 |
|
| 330 |
String.prototype.wpcomment_js_stripSlashes = function() { |
| 331 |
return this.replace(/\\(.)/mg, "$1"); |
| 332 |
} |