Changeset 3474408
- Timestamp:
- 03/04/2026 10:09:55 AM (7 days ago)
- Location:
- extra-product-data-for-woocommerce
- Files:
-
- 18 edited
- 1 copied
-
tags/2.0.2 (copied) (copied from extra-product-data-for-woocommerce/trunk)
-
tags/2.0.2/assets/js/wc-meta-boxes-product.min.js (modified) (1 diff)
-
tags/2.0.2/extra-product-data-for-woocommerce.php (modified) (1 diff)
-
tags/2.0.2/readme.txt (modified) (2 diffs)
-
tags/2.0.2/src/assets/js/wc-meta-boxes-product.js (modified) (1 diff)
-
tags/2.0.2/src/constants.php (modified) (1 diff)
-
tags/2.0.2/vendor/autoload.php (modified) (1 diff)
-
tags/2.0.2/vendor/composer/autoload_real.php (modified) (2 diffs)
-
tags/2.0.2/vendor/composer/autoload_static.php (modified) (2 diffs)
-
tags/2.0.2/vendor/composer/installed.php (modified) (2 diffs)
-
trunk/assets/js/wc-meta-boxes-product.min.js (modified) (1 diff)
-
trunk/extra-product-data-for-woocommerce.php (modified) (1 diff)
-
trunk/readme.txt (modified) (2 diffs)
-
trunk/src/assets/js/wc-meta-boxes-product.js (modified) (1 diff)
-
trunk/src/constants.php (modified) (1 diff)
-
trunk/vendor/autoload.php (modified) (1 diff)
-
trunk/vendor/composer/autoload_real.php (modified) (2 diffs)
-
trunk/vendor/composer/autoload_static.php (modified) (2 diffs)
-
trunk/vendor/composer/installed.php (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
extra-product-data-for-woocommerce/tags/2.0.2/assets/js/wc-meta-boxes-product.min.js
r3469202 r3474408 10 10 * @link https://www.triopsi.dev 11 11 */ 12 constructor(){const t=e("#exprdawc_field_body").find("tr.exprdawc_attribute");this.fieldIndex=t.length,this.fieldIndex=e("#exprdawc_field_body tr.exprdawc_attribute").length,this.isDirty=!1,this.init()}init(){this.bindEvents(),this.noEntryContent(),this.bindFormValidation()}bindEvents(){e("#exprdawc_add_custom_field").on("click",this.addCustomField.bind(this)),e(document).on("click",".exprdawc_remove_custom_field",this.removeCustomField.bind(this)),e(document).on("change",".exprdawc_attribute_type",this.toggleOptions.bind(this)),e(document).on("click",".exprdawc_attribute_type",this.openOptionsTable.bind(this)),e(document).on("click",".exprdawc_attribute_input_name",this.openOptionsTable.bind(this)),e(document).on("click",".toggle-options",this.toggleOptionsTable.bind(this)),e(document).on("click",".add_option",this.addOption.bind(this)),e(document).on("click",".remove_option",this.removeOption.bind(this)),e(document).on("change",".exprdawc_input",this.setDirty.bind(this)),e(document).on("change",".exprdawc_autocomplete_field",this.checkAutocompleteField.bind(this)),e(document).on("click",".add_rule_group",this.addRuleGroup.bind(this)),e(document).on("click",".add_rule",this.addRule.bind(this)),e(document).on("click",".remove_rule",this.removeRule.bind(this)),e(document).on("change",".exprdawc_conditional_operator",this.toggleConditionalValueField.bind(this)),e(document).on("change",".exprdawc_conditional_logic_field",this.toggleConditionalTable.bind(this)),e(document).on("click",".exprdawc_adjust_price_field",this.togglePriceAdjustmentTable.bind(this)),e(document).on("change keyup ",".field_option_table_value_td input",this.syncOptionValueToDefault.bind(this)),e(document).on("click",".exprdawc_copy_custom_field",this.exprdawc_copy_custom_field.bind(this)),e(document).on("change keyup","input.field_name",this.updateConditionalFieldOptions.bind(this)),this.toggleConditionalValueFieldAll(),this.initFieldTypeSettings(),e(".exprdawc_field_table tbody").sortable({items:"tr.exprdawc_fields_wrapper",cursor:"move",axis:"y",handle:".move",scrollSensitivity:40,forcePlaceholderSize:!0,helper:"clone",opacity:.65,placeholder:"wc-metabox-sortable-placeholder",start:function(e,t){t.item.css("background-color","#f6f6f6")},stop:function(e,t){t.item.removeAttr("style")},update:function(e,t){this.updateFieldIndices()}}),e(document).on("mouseenter",".exprdawc_options_table tbody",function(){e(this).sortable({items:"tr",cursor:"move",axis:"y",handle:".move",scrollSensitivity:40,forcePlaceholderSize:!0,helper:"clone",opacity:.65,placeholder:"wc-metabox-sortable-placeholder",start:function(e,t){t.item.css("background-color","#f6f6f6")},stop:function(e,t){t.item.removeAttr("style")}})}),e("#exprdawc_attribute_container").on("input",".exprdawc_attribute .exprdawc_attribute_input_name input",function(){var t=e(this).val(),a=e(this).closest(".exprdawc_attribute").find(".attribute_name");t&&a.text(t)})}addCustomField(){this.fieldIndex++,this.setDirty(),e("#exprdawc_field_body").append(`\n <tr class="exprdawc_fields_wrapper">\n <td colspan="5">\n <table class="exprdawc_fields_table" data-index="${this.fieldIndex}">\n\t <tbody>\n <tr class="exprdawc_attribute">\n <td class="move"><i class="dashicons dashicons-move"></i></td>\n <td class="cl-arr"><i class="dashicons dashicons-arrow-up toggle-options"></i></td>\n <td class="exprdawc_attribute_input_name">\n <input type="text" class="exprdawc_input exprdawc_textinput exprdawc_label field_name" name="extra_product_fields[${this.fieldIndex}][label]" placeholder="${exprdawc_admin_meta_boxes.label_placeholder}" />\n </td>\n <td>\n <select id="exprdawc_attribute_type_${this.fieldIndex}" name="extra_product_fields[${this.fieldIndex}][type]" class="exprdawc_attribute_type">\n <option value="text">${exprdawc_admin_meta_boxes.short_text}</option>\n <option value="long_text">${exprdawc_admin_meta_boxes.long_text}</option>\n <option value="email">${exprdawc_admin_meta_boxes.email}</option>\n <option value="number">${exprdawc_admin_meta_boxes.number}</option>\n <option value="date">${exprdawc_admin_meta_boxes.date}</option>\n <option value="yes-no">${exprdawc_admin_meta_boxes.yes_no}</option>\n <option value="radio">${exprdawc_admin_meta_boxes.radio}</option>\n <option value="checkbox">${exprdawc_admin_meta_boxes.checkbox}</option>\n <option value="select">${exprdawc_admin_meta_boxes.select}</option>\n </select>\n </td>\n <td>\n <button type="button" class="exprdawc_remove_custom_field button"><i class="dashicons dashicons-trash"></i></button>\n <button type="button" class="button exprdawc_copy_custom_field"><i class="dashicons dashicons-admin-page"></i></button>\n <input type="hidden" class="exprdawc_attribute_index" name="extra_product_fields[${this.fieldIndex}][index]" value="${this.fieldIndex}"/>\n </td>\n </tr>\n <tr class="exprdawc_options" style="display: none;">\n <td colspan="5">\n\n <table class="exprdawc_settings_table exprdawc_general_table">\n <tbody>\n\n \x3c!-- Text Area Option/Settings --\x3e\n <tr>\n <td class="exprdawc_attribute_require_checkbox">\n <label class="exprdawc_label" for="exprdawc_text_required_${this.fieldIndex}">\n <input type="checkbox" id="exprdawc_text_required_${this.fieldIndex}" class="exprdawc_input exprdawc_checkbox checkbox" name="extra_product_fields[${this.fieldIndex}][required]" value="1" />\n ${exprdawc_admin_meta_boxes.require_input}\n </label> \n <label class="exprdawc_label" for="exprdawc_text_autofocus_${this.fieldIndex}">\n <input type="checkbox" id="exprdawc_text_autofocus_${this.fieldIndex}" class="exprdawc_input exprdawc_checkbox checkbox" name="extra_product_fields[${this.fieldIndex}][autofocus]" value="1" />\n ${exprdawc_admin_meta_boxes.enable_autofocus}\n </label>\n <label class="exprdawc_label" for="exprdawc_text_editable_${this.fieldIndex}">\n <input type="checkbox" id="exprdawc_text_editable_${this.fieldIndex}" class="exprdawc_input exprdawc_checkbox exprdawc_editable_field checkbox" name="extra_product_fields[${this.fieldIndex}][editable]" value="1" />\n ${exprdawc_admin_meta_boxes.enable_editable}\n </label>\n\n \x3c!-- Enable Conditional Logic and show table --\x3e\n <label class="exprdawc_label" for="exprdawc_text_conditional_logic_${this.fieldIndex}">\n <input type="checkbox" id="exprdawc_text_conditional_logic_${this.fieldIndex}" class="exprdawc_input exprdawc_checkbox exprdawc_conditional_logic_field checkbox" name="extra_product_fields[${this.fieldIndex}][conditional_logic]" value="1" />\n ${exprdawc_admin_meta_boxes.enable_conditional_logic}\n </label>\n\n \x3c!-- Enable Price Adjustment and show table --\x3e\n <label class="exprdawc_label" for="exprdawc_text_price_adjustment_${this.fieldIndex}">\n <input type="checkbox" id="exprdawc_text_price_adjustment_${this.fieldIndex}" class="exprdawc_input exprdawc_checkbox exprdawc_adjust_price_field checkbox" name="extra_product_fields[${this.fieldIndex}][adjust_price]" value="1" />\n ${exprdawc_admin_meta_boxes.enable_price_adjustment}\n </label>\n\n </td>\n <td class="exprdawc_attribute_placeholder_text">\n <label class="exprdawc_label" for="exprdawc_text_placeholder_text_${this.fieldIndex}">${exprdawc_admin_meta_boxes.placeholder_text}</label>\n <input type="text" id="exprdawc_text_placeholder_text_${this.fieldIndex}" class="exprdawc_input exprdawc_textinput exprdawc_placeholder" name="extra_product_fields[${this.fieldIndex}][placeholder_text]" placeholder="${exprdawc_admin_meta_boxes.placeholder_text}" />\n </td>\n <td class="exprdawc_attribute_help_text">\n <label class="exprdawc_label" for="exprdawc_text_help_text_${this.fieldIndex}">${exprdawc_admin_meta_boxes.help_text}</label>\n <input type="text" id="exprdawc_text_help_text_${this.fieldIndex}" class="exprdawc_input exprdawc_textinput exprdawc_helptext" name="extra_product_fields[${this.fieldIndex}][help_text]" placeholder="${exprdawc_admin_meta_boxes.help_text}" />\n </td>\n <td>\n <label class="exprdawc_label" for="exprdawc_autocomplete_function_${this.fieldIndex}">${exprdawc_admin_meta_boxes.autocomplete_function}</label>\n <select id="exprdawc_autocomplete_function_${this.fieldIndex}" name="extra_product_fields[${this.fieldIndex}][autocomplete]" class="exprdawc_input exprdawc_attribute_type">\n <option value="on">${exprdawc_admin_meta_boxes.autocomplete_on}</option>\n <option value="off">${exprdawc_admin_meta_boxes.autocomplete_off}</option>\n <option value="address-level1">${exprdawc_admin_meta_boxes.address_level1}</option>\n <option value="address-level2">${exprdawc_admin_meta_boxes.address_level2}</option>\n <option value="address-level3">${exprdawc_admin_meta_boxes.address_level3}</option>\n <option value="address-level4">${exprdawc_admin_meta_boxes.address_level4}</option>\n <option value="address-line1">${exprdawc_admin_meta_boxes.address_line1}</option>\n <option value="address-line2">${exprdawc_admin_meta_boxes.address_line2}</option>\n <option value="address-line3">${exprdawc_admin_meta_boxes.address_line3}</option>\n <option value="bday">${exprdawc_admin_meta_boxes.bday}</option>\n <option value="bday-day">${exprdawc_admin_meta_boxes.bday_day}</option>\n <option value="bday-month">${exprdawc_admin_meta_boxes.bday_month}</option>\n <option value="bday-year">${exprdawc_admin_meta_boxes.bday_year}</option>\n <option value="cc-additional-name">${exprdawc_admin_meta_boxes.cc_additional_name}</option>\n <option value="cc-csc">${exprdawc_admin_meta_boxes.cc_csc}</option>\n <option value="cc-exp">${exprdawc_admin_meta_boxes.cc_exp}</option>\n <option value="cc-exp-month">${exprdawc_admin_meta_boxes.cc_exp_month}</option>\n <option value="cc-exp-year">${exprdawc_admin_meta_boxes.cc_exp_year}</option>\n <option value="cc-family-name">${exprdawc_admin_meta_boxes.cc_family_name}</option>\n <option value="cc-given-name">${exprdawc_admin_meta_boxes.cc_given_name}</option>\n <option value="cc-name">${exprdawc_admin_meta_boxes.cc_name}</option>\n <option value="cc-number">${exprdawc_admin_meta_boxes.cc_number}</option>\n <option value="cc-type">${exprdawc_admin_meta_boxes.cc_type}</option>\n <option value="country">${exprdawc_admin_meta_boxes.country}</option>\n <option value="country-name">${exprdawc_admin_meta_boxes.country_name}</option>\n <option value="email">${exprdawc_admin_meta_boxes.email}</option>\n <option value="language">${exprdawc_admin_meta_boxes.language}</option>\n <option value="photo">${exprdawc_admin_meta_boxes.photo}</option>\n <option value="postal-code">${exprdawc_admin_meta_boxes.postal_code}</option>\n <option value="sex">${exprdawc_admin_meta_boxes.sex}</option>\n <option value="street-address">${exprdawc_admin_meta_boxes.street_address}</option>\n <option value="tel">${exprdawc_admin_meta_boxes.tel}</option>\n <option value="tel-area-code">${exprdawc_admin_meta_boxes.tel_area_code}</option>\n <option value="tel-country-code">${exprdawc_admin_meta_boxes.tel_country_code}</option>\n <option value="tel-extension">${exprdawc_admin_meta_boxes.tel_extension}</option>\n <option value="tel-local">${exprdawc_admin_meta_boxes.tel_local}</option>\n <option value="tel-local-prefix">${exprdawc_admin_meta_boxes.tel_local_prefix}</option>\n <option value="tel-local-suffix">${exprdawc_admin_meta_boxes.tel_local_suffix}</option>\n <option value="tel-national">${exprdawc_admin_meta_boxes.tel_national}</option>\n <option value="transaction-amount">${exprdawc_admin_meta_boxes.transaction_amount}</option>\n <option value="transaction-currency">${exprdawc_admin_meta_boxes.transaction_currency}</option>\n <option value="url">${exprdawc_admin_meta_boxes.url}</option>\n </select>\n </td>\n </tr>\n </tbody>\n </table>\n <hr>\n\n \x3c!-- Price Adjustment --\x3e\n <table class="exprdawc_settings_table exprdawc_price_adjustment_table" style="display:none;">\n <tbody>\n <tr>\n <td>\n <label class="exprdawc_label" for="exprdawc_price_adjustment_type_${this.fieldIndex}">${exprdawc_admin_meta_boxes.price_adjustment_type}</label>\n <select id="exprdawc_price_adjustment_type_${this.fieldIndex}" name="extra_product_fields[${this.fieldIndex}][price_adjustment_type]" class="exprdawc_input exprdawc_price_adjustment_type">\n <option value="fixed">${exprdawc_admin_meta_boxes.fixed}</option>\n <option vlaue="quantity">${exprdawc_admin_meta_boxes.quantity}</option>\n <option value="percentage">${exprdawc_admin_meta_boxes.percentage}</option>\n </select>\n </td>\n <td>\n <label class="exprdawc_label" for="exprdawc_price_adjustment_value_${this.fieldIndex}">${exprdawc_admin_meta_boxes.price_adjustment_value}</label>\n <input type="number" id="exprdawc_price_adjustment_value_${this.fieldIndex}" class="exprdawc_input exprdawc_price_adjustment_value" placeholder="0.00" name="extra_product_fields[${this.fieldIndex}][price_adjustment_value]" value="0" />\n </td>\n </tr>\n </tbody>\n </table>\n\n \x3c!-- Conditional Logic --\x3e\n\t\t\t\t <table class="exprdawc_settings_table exprdawc_conditional_logic_table" style="display:none;">\n <tbody>\n <tr>\n <td colspan="3">\n <label class="exprdawc_label">${exprdawc_admin_meta_boxes.conditionals}</label>\n\t\t\t\t\t\t\t\t <p>${exprdawc_admin_meta_boxes.conditionals_description}</p>\n <div class="exprdawc_conditional_rules">\n <div class="exprdawc_rule_group_container">\n <div class="exprdawc_rule_group">\n <div class="exprdawc_rule">\n <select name="extra_product_fields[${this.fieldIndex}][conditional_rules][0][0][field]" class="exprdawc_input exprdawc_conditional_field">\n <option value="">${exprdawc_admin_meta_boxes.selectFieldNone}</option>\n ${this.getAllFieldsOptions()}\n </select>\n <select name="extra_product_fields[${this.fieldIndex}][conditional_rules][0][0][operator]" class="exprdawc_input exprdawc_conditional_operator">\n <option value="field_is_empty">${exprdawc_admin_meta_boxes.field_is_empty}</option>\n <option value="field_is_not_empty">${exprdawc_admin_meta_boxes.field_is_not_empty}</option>\n <option value="equals">${exprdawc_admin_meta_boxes.equals}</option>\n <option value="not_equals">${exprdawc_admin_meta_boxes.notEquals}</option>\n <option value="greater_than">${exprdawc_admin_meta_boxes.greaterThan}</option>\n <option value="less_than">${exprdawc_admin_meta_boxes.lessThan}</option>\n </select>\n <input type="text" name="extra_product_fields[${this.fieldIndex}][conditional_rules][0][0][value]" class="exprdawc_input exprdawc_conditional_value" placeholder="${exprdawc_admin_meta_boxes.enterValue}" style="display:none;" />\n <button type="button" class="button remove_rule"><i class="dashicons dashicons-trash"></i></button>\n <button type="button" class="button add_rule">${exprdawc_admin_meta_boxes.and}</button>\n </div>\n </div>\n </div>\n </div>\n </td> \n </tr>\n </tbody>\n </table>\n\n\n \x3c!-- Text Area Option/Settings --\x3e\n <table class="exprdawc_settings_table exprdawc_long_text_table" style="display:none;">\n <tbody>\n <tr>\n <td>\n <label class="exprdawc_label" for="exprdawc_long_text_rows_${this.fieldIndex}">${exprdawc_admin_meta_boxes.rows}</label>\n <input type="number" id="exprdawc_long_text_rows_${this.fieldIndex}" class="exprdawc_input exprdawc_long_text_rows" name="extra_product_fields[${this.fieldIndex}][rows]" value="2" />\n </td>\n <td>\n <label class="exprdawc_label" for="exprdawc_long_text_cols_${this.fieldIndex}">${exprdawc_admin_meta_boxes.columns}</label>\n <input type="number" id="exprdawc_long_text_cols_${this.fieldIndex}" class="exprdawc_input exprdawc_long_text_cols" name="extra_product_fields[${this.fieldIndex}][cols]" value="5" />\n </td>\n <td>\n <label class="exprdawc_label" for="exprdawc_long_text_default_${this.fieldIndex}">${exprdawc_admin_meta_boxes.default_value}</label>\n <textarea id="exprdawc_long_text_default_${this.fieldIndex}" class="exprdawc_textarea" rows="3" cols="30" placeholder="${exprdawc_admin_meta_boxes.enter_default_text}" name="extra_product_fields[${this.fieldIndex}][default]"></textarea>\n </td>\n </tr>\n </tbody>\n </table>\n\n \x3c!-- Text Option/Settings for radio, checkboxes and selects --\x3e\n <table class="exprdawc_settings_table exprdawc_text_table" style="display:none;">\n <tbody>\n <tr>\n <td>\n <label class="exprdawc_label" for="exprdawc_text_min_length_${this.fieldIndex}">${exprdawc_admin_meta_boxes.min_length}</label>\n <input type="number" id="exprdawc_text_min_length_${this.fieldIndex}" class="exprdawc_input exprdawc_text_min_length" name="extra_product_fields[${this.fieldIndex}][minlength]" value="0" />\n </td>\n <td>\n <label class="exprdawc_label" for="exprdawc_text_max_length_${this.fieldIndex}">${exprdawc_admin_meta_boxes.max_length}</label>\n <input type="number" id="exprdawc_text_max_length_${this.fieldIndex}" class="exprdawc_input exprdawc_text_max_length" name="extra_product_fields[${this.fieldIndex}][maxlength]" value="255" />\n </td>\n <td>\n <label class="exprdawc_label" for="exprdawc_text_default_${this.fieldIndex}">${exprdawc_admin_meta_boxes.default_value}</label>\n <input type="text" id="exprdawc_text_default_${this.fieldIndex}" class="exprdawc_input exprdawc_text_default" placeholder="${exprdawc_admin_meta_boxes.enter_default_text}" name="extra_product_fields[${this.fieldIndex}][default]" />\n </td>\n </tr>\n </tbody>\n </table>\n\n <table class="exprdawc_options_table" style="display:none;">\n <thead>\n <tr>\n <th></th>\n <th class="field_option_table_label_th">${exprdawc_admin_meta_boxes.option_label}</th>\n <th class="field_option_table_value_th">${exprdawc_admin_meta_boxes.option_value}</th>\n <th class="field_option_table_selected_th">${exprdawc_admin_meta_boxes.default_selected}</th>\n <th class="field_option_table_action_th">${exprdawc_admin_meta_boxes.action}</th>\n </tr>\n </thead>\n <tbody>\n \x3c!-- Options will be dynamically added here --\x3e\n </tbody>\n <tfoot>\n <tr>\n <td colspan="6">\n <button type="button" class="button add_option">${exprdawc_admin_meta_boxes.add_option}</button>\n </td>\n </tr>\n </tfoot>\n </table>\n <p class="exprdawc_no_entry_message" style="display: none;">${exprdawc_admin_meta_boxes.no_options}</p>\n </td>\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n `),this.noEntryContent(),this.updateFieldIndices(),e("#exprdawc_attribute_type_"+this.fieldIndex).trigger("change")}removeCustomField(t){return confirm(exprdawc_admin_meta_boxes.confirm_delete)&&(this.setDirty(),e(t.currentTarget).closest("tr").next(".exprdawc_options").remove(),e(t.currentTarget).closest("tr").remove(),this.updateFieldIndices(),this.noEntryContent()),!1}toggleOptions(t){this.setDirty();const a=e(t.currentTarget).closest("tr"),n=e(t.currentTarget).val(),d=a.next(".exprdawc_options"),i=d.find(".exprdawc_options_table"),o=d.find(".exprdawc_placeholder");"radio"===n||"checkbox"===n||"select"===n?(o.prop("disabled",!0),i.show(),d.find(".exprdawc_attribute_placeholder_text").hide()):(o.prop("disabled",!1),i.hide(),d.find(".exprdawc_attribute_placeholder_text").show()),"long_text"===e(t.currentTarget).val()?d.find(".exprdawc_long_text_table").show():d.find(".exprdawc_long_text_table").hide(),"text"===e(t.currentTarget).val()||"email"===e(t.currentTarget).val()||"number"===e(t.currentTarget).val()||"date"===e(t.currentTarget).val()?d.find(".exprdawc_text_table").show():d.find(".exprdawc_text_table").hide()}toggleOptionsTable(t){const a=e(t.currentTarget);a.closest("tr").next(".exprdawc_options").toggle(),a.toggleClass("dashicons-arrow-down dashicons-arrow-up")}openOptionsTable(t){const a=e(t.currentTarget).closest("tr.exprdawc_attribute"),n=a.next(".exprdawc_options"),d=a.find(".toggle-options");n.show(),d.removeClass("dashicons-arrow-up").addClass("dashicons-arrow-down")}addOption(t){this.setDirty();const a=e(t.currentTarget).closest(".exprdawc_options_table"),n=a.closest(".exprdawc_fields_table").data("index");if(null==n)return void console.error("exprdawc: actual_index is undefined or null",a);const d=a.find("tbody tr").length,i=a.closest(".exprdawc_fields_table").find(".exprdawc_attribute_type").val();let o="";a.closest(".exprdawc_options").find(".exprdawc_adjust_price_field").is(":checked")&&(o=`\n <td class="field_price_adjustment_type_${d} field_price_adjustment_type">\n <select name="extra_product_fields[${n}][options][${d}][price_adjustment_type]" class="exprdawc_input exprdawc_price_adjustment_type">\n <option value="fixed">${exprdawc_admin_meta_boxes.fixed}</option>\n <option value="quantity">${exprdawc_admin_meta_boxes.quantity}</option>\n <option value="percentage">${exprdawc_admin_meta_boxes.percentage}</option>\n </select>\n </td>\n <td class="field_price_adjustment_value_${d} field_price_adjustment_value">\n <input type="number" name="extra_product_fields[${n}][options][${d}][price_adjustment_value]" class="exprdawc_input exprdawc_price_adjustment_value" step="0.01" placeholder="0.00" value="0" />\n </td>\n `),"radio"===i||"select"===i?a.find("tbody").append(`\n <tr>\n <td class="move"><i class="dashicons dashicons-move"></i></td>\n <td class="field_option_table_label_td">\n <input type="text" name="extra_product_fields[${n}][options][${d}][label]" placeholder="${exprdawc_admin_meta_boxes.option_label_placeholder}" />\n </td>\n <td class="field_option_table_value_td">\n <input type="text" name="extra_product_fields[${n}][options][${d}][value]" placeholder="${exprdawc_admin_meta_boxes.option_value_placeholder}" />\n </td>\n <td class="field_option_table_selected_td">\n <input type="radio" name="extra_product_fields[${n}][default]" value="${d}" />\n </td>\n ${o}\n <td class="field_option_table_action_td">\n <button type="button" class="button remove_option">${exprdawc_admin_meta_boxes.remove}</button>\n </td>\n </tr>\n `):a.find("tbody").append(`\n <tr>\n <td class="move"><i class="dashicons dashicons-move"></i></td>\n <td class="field_option_table_label_td">\n <input type="text" name="extra_product_fields[${n}][options][${d}][label]" placeholder="${exprdawc_admin_meta_boxes.option_label_placeholder}" />\n </td>\n <td class="field_option_table_value_td">\n <input type="text" name="extra_product_fields[${n}][options][${d}][value]" placeholder="${exprdawc_admin_meta_boxes.option_value_placeholder}" />\n </td>\n <td class="field_option_table_selected_td">\n <input type="checkbox" name="extra_product_fields[${n}][options][${d}][default]" value="1" />\n </td>\n ${o}\n <td class="field_option_table_action_td">\n <button type="button" class="button remove_option">${exprdawc_admin_meta_boxes.remove}</button>\n </td>\n </tr>\n `),this.checkOptions(a.closest(".exprdawc_options"))}removeOption(t){return confirm(exprdawc_admin_meta_boxes.confirm_delete)&&(this.setDirty(),e(t.currentTarget).closest("tr").remove(),this.checkOptions(e(t.currentTarget).closest(".exprdawc_options"))),!1}checkOptions(e){const t=e.find(".exprdawc_options_table tbody"),a=e.find(".exprdawc_no_entry_message");0===t.find("tr").length?a.show():a.hide()}syncOptionValueToDefault(t){const a=e(t.currentTarget),n=a.closest("tr"),d=a.closest(".exprdawc_options_table"),i=d.find("tbody tr").index(n),o=d.closest(".exprdawc_fields_table").data("index");if(null==o)return void console.error("exprdawc: actualIndex is undefined or null",d);const l=a.val(),_=d.closest(".exprdawc_fields_table").find(".exprdawc_attribute_type").val();if("radio"===_||"select"===_){const e=d.find("tbody tr").eq(i).find('input[type="radio"]');if(e.length)e.val(l);else{const e=d.find('input[type="radio"][name^="extra_product_fields"]');e.length>i&&e.eq(i).val(l)}}}setDirty(){this.isDirty=!0,this.disableExportLink()}disableExportLink(){this.isDirty&&e(".exprdawc-export").hide()}noEntryContent(){var t=e("#exprdawc_field_body .exprdawc_attribute").length,a=e(".exprdawc_no_entry_message"),n=e("#exprdatawc_table_header"),d=e(".exprdawc-export");t>0?(a.hide(),n.show(),d.show()):(a.show(),n.hide(),d.hide())}checkAutocompleteField(t){const a=e(t.currentTarget);if(a.is(":checked")){const t=e(".exprdawc_autocomplete_field").not(a).filter(":checked");if(t.length>0){if(!confirm(exprdawc_admin_meta_boxes.sureAnotherAutocompleCheckedQuestion))return void a.prop("checked",!1);t.prop("checked",!1)}}}addRuleGroup(t){const a=e(t.currentTarget).closest(".exprdawc_conditional_logic_table").find(".exprdawc_conditional_rules"),n=a.find(".exprdawc_rule_group").length,d=e(t.currentTarget).closest(".exprdawc_fields_table").data("index"),i=this.getRuleGroupHtml(d,n);a.append(i)}addRule(t){const a=e(t.currentTarget).closest(".exprdawc_rule_group"),n=a.index(),d=e(t.currentTarget).closest(".exprdawc_fields_table").data("index"),i=a.find(".exprdawc_rule").length,o=this.getRuleHtml(d,n,i);a.append(o)}getRuleGroupHtml(e,t){return`\n <div class="exprdawc_rule_group_container">\n <h2>${exprdawc_admin_meta_boxes.or}</h2>\n <div class="exprdawc_rule_group">\n ${this.getRuleHtml(e,t,0)}\n </div>\n </div>\n `}getRuleHtml(e,t,a){return`\n <div class="exprdawc_rule">\n <select name="extra_product_fields[${e}][conditional_rules][${t}][${a}][field]" class="exprdawc_input exprdawc_conditional_field">\n <option value="">${exprdawc_admin_meta_boxes.selectFieldNone}</option>\n ${this.getAllFieldsOptions()}\n </select>\n <select name="extra_product_fields[${e}][conditional_rules][${t}][${a}][operator]" class="exprdawc_input exprdawc_conditional_operator">\n <option value="field_is_empty">${exprdawc_admin_meta_boxes.field_is_empty}</option>\n <option value="field_is_not_empty">${exprdawc_admin_meta_boxes.field_is_not_empty}</option>\n <option value="equals">${exprdawc_admin_meta_boxes.equals}</option>\n <option value="not_equals">${exprdawc_admin_meta_boxes.notEquals}</option>\n <option value="greater_than">${exprdawc_admin_meta_boxes.greaterThan}</option>\n <option value="less_than">${exprdawc_admin_meta_boxes.lessThan}</option>\n </select>\n <input type="text" name="extra_product_fields[${e}][conditional_rules][${t}][${a}][value]" class="exprdawc_input exprdawc_conditional_value" placeholder="${exprdawc_admin_meta_boxes.enterValue}" style="display:none;" />\n <button type="button" class="button remove_rule"><i class="dashicons dashicons-trash"></i></button>\n <button type="button" class="button add_rule">+ ${exprdawc_admin_meta_boxes.and}</button>\n </div>\n `}toggleConditionalValueField(t){const a=e(t.currentTarget),n=a.closest(".exprdawc_rule").find(".exprdawc_conditional_value");"field_changed"===a.val()||"field_is_empty"===a.val()||"field_is_not_empty"===a.val()?n.hide():n.show()}toggleConditionalValueFieldAll(){e(".exprdawc_conditional_operator").each((e,t)=>{this.toggleConditionalValueField({currentTarget:t})})}togglePriceAdjustmentTableAll(){e(".exprdawc_conditional_operator").each((e,t)=>{this.toggleConditionalTable({currentTarget:t})})}removeRule(t){if(confirm(exprdawc_admin_meta_boxes.confirm_delete_rule)){const a=e(t.currentTarget).closest(".exprdawc_rule_group_container");e(t.currentTarget).closest(".exprdawc_rule").remove(),0===a.find(".exprdawc_rule").length&&a.remove()}return!1}getAllFieldsOptions(){let t="";return e("#exprdawc_field_body tr.exprdawc_attribute").each(function(){const a=e(this).find(".exprdawc_attribute_input_name input").val();t+=`<option value="${a}">${a}</option>`}),t}toggleConditionalTable(t){const a=e(t.currentTarget),n=e(t.currentTarget).closest(".exprdawc_options").find(".exprdawc_conditional_logic_table");a.is(":checked")?n.show():n.hide()}togglePriceAdjustmentTable(t){const a=e(t.currentTarget),n=e(t.currentTarget).closest(".exprdawc_options").find(".exprdawc_price_adjustment_table"),d=e(t.currentTarget).closest(".exprdawc_fields_table").find(".exprdawc_attribute_type").val();if(console.log(d),"radio"!==d&&"checkbox"!==d&&"select"!==d)a.is(":checked")?n.show():n.hide(),e(".field_price_adjustment_type_th, .field_price_adjustment_val_th").remove(),e(".field_price_adjustment_type, .field_price_adjustment_value").remove();else{n.hide(),a.is(":checked")?(e(".field_price_adjustment_type_th, .field_price_adjustment_val_th").show(),e(".field_price_adjustment_type, .field_price_adjustment_value").show()):(e(".field_price_adjustment_type_th, .field_price_adjustment_val_th").hide(),e(".field_price_adjustment_type, .field_price_adjustment_value").hide());const d=e(t.currentTarget).closest(".exprdawc_options").find(".exprdawc_options_table");console.log(d);const i=d.find("tbody tr").length;0===d.find("thead th.field_price_adjustment_type_th").length?(console.log("Adding extra columns"),console.log(d.find("thead th.field_option_table_action_th")),d.find("thead th.field_option_table_action_th").before(`\n <th class="field_price_adjustment_type_th">${exprdawc_admin_meta_boxes.price_adjustment_type}</th>\n <th class="field_price_adjustment_val_th">${exprdawc_admin_meta_boxes.price_adjustment_value}</th>\n `)):console.log("Extra columns already exist"),d.find("tbody tr").each(function(){0===e(this).find(".field_price_adjustment_type").length&&e(this).find(".field_option_table_action_td").before(`\n <td class="field_price_adjustment_type_${i} field_price_adjustment_type">\n <select name="extra_product_fields[${this.fieldIndex}][options][${i}][price_adjustment_type]" class="exprdawc_input exprdawc_price_adjustment_type">\n <option value="fixed">${exprdawc_admin_meta_boxes.fixed}</option>\n <option value="quantity">${exprdawc_admin_meta_boxes.quantity}</option>\n <option value="percentage">${exprdawc_admin_meta_boxes.percentage}</option>\n </select>\n </td>\n <td class="field_price_adjustment_value_${i} field_price_adjustment_value">\n <input type="number" name="extra_product_fields[${this.fieldIndex}][options][${i}][price_adjustment_value]" class="exprdawc_input exprdawc_price_adjustment_value" placeholder="0.00" value="0" />\n </td>\n `)})}}initFieldTypeSettings(){e(".exprdawc_fields_wrapper").each((t,a)=>{const n=e(a).find(".exprdawc_attribute_type").val()||"text",d=e(a).find(".exprdawc_attribute_placeholder_text");"radio"===n||"checkbox"===n?d.hide():d.show()})}exprdawc_copy_custom_field(t){t.preventDefault(),this.setDirty();const a=e(t.currentTarget).closest(".exprdawc_fields_wrapper"),n=a.clone();n.find("input, select").each(function(){const t=e(this);if(t.hasClass("field_name")||t.hasClass("exprdawc_placeholder")){const e=t.val(),a=e.match(/\d+$/);if(a){const n=e.replace(/\d+$/,parseInt(a[0],10)+1);t.val(n)}}t.is("select.exprdawc_conditional_field")&&t.val()&&t.find("option:last").prop("selected",!0),t.removeClass("exprdawc-invalid-field")}),n.removeClass("exprdawc-validation-error"),a.after(n),e(".exprdawc_attribute_type").trigger("change"),this.updateFieldIndices(),this.updateConditionalFieldOptions()}updateConditionalFieldOptions(){const t=this.getAllFieldsOptions();e("select.exprdawc_conditional_field").each(function(){const a=e(this),n=a.val();a.html(t),a.val(n)})}updateFieldIndices(){e("#exprdawc_field_body tr.exprdawc_fields_wrapper").each((t,a)=>{e(a).find(".exprdawc_fields_table").attr("data-index",t),e(a).find("input, select").each(function(){const a=e(this),n=a.attr("name");n&&a.attr("name",n.replace(/\[\d+\]/,`[${t}]`));const d=a.attr("id");d&&a.attr("id",d.replace(/_\d+$/,`_${t}`))})})}bindFormValidation(){e("#post").on("submit",e=>{if(!this.validateFields())return e.preventDefault(),e.stopPropagation(),!1}),e("#publish, #save-post").on("click",e=>{if(!this.validateFields())return e.preventDefault(),e.stopPropagation(),!1})}validateFields(){const t=e("#exprdawc_field_body").find("tr.exprdawc_fields_wrapper");if(0===t.length)return!0;let a=!1;if(t.each((t,n)=>{const d=e(n),i=d.find("input.exprdawc_label");""===i.val().trim()?(a=!0,d.addClass("exprdawc-validation-error"),i.addClass("exprdawc-invalid-field")):(d.removeClass("exprdawc-validation-error"),i.removeClass("exprdawc-invalid-field"))}),a){console.log(exprdawc_admin_meta_boxes.validation_warning);const e=exprdawc_admin_meta_boxes.validation_warning;return alert(e),!1}return!0}}});12 constructor(){const t=e("#exprdawc_field_body").find("tr.exprdawc_attribute");this.fieldIndex=t.length,this.fieldIndex=e("#exprdawc_field_body tr.exprdawc_attribute").length,this.isDirty=!1,this.init()}init(){this.bindEvents(),this.noEntryContent(),this.bindFormValidation()}bindEvents(){e("#exprdawc_add_custom_field").on("click",this.addCustomField.bind(this)),e(document).on("click",".exprdawc_remove_custom_field",this.removeCustomField.bind(this)),e(document).on("change",".exprdawc_attribute_type",this.toggleOptions.bind(this)),e(document).on("click",".exprdawc_attribute_type",this.openOptionsTable.bind(this)),e(document).on("click",".exprdawc_attribute_input_name",this.openOptionsTable.bind(this)),e(document).on("click",".toggle-options",this.toggleOptionsTable.bind(this)),e(document).on("click",".add_option",this.addOption.bind(this)),e(document).on("click",".remove_option",this.removeOption.bind(this)),e(document).on("change",".exprdawc_input",this.setDirty.bind(this)),e(document).on("change",".exprdawc_autocomplete_field",this.checkAutocompleteField.bind(this)),e(document).on("click",".add_rule_group",this.addRuleGroup.bind(this)),e(document).on("click",".add_rule",this.addRule.bind(this)),e(document).on("click",".remove_rule",this.removeRule.bind(this)),e(document).on("change",".exprdawc_conditional_operator",this.toggleConditionalValueField.bind(this)),e(document).on("change",".exprdawc_conditional_logic_field",this.toggleConditionalTable.bind(this)),e(document).on("click",".exprdawc_adjust_price_field",this.togglePriceAdjustmentTable.bind(this)),e(document).on("change keyup keydown input",".field_option_table_value_td input",this.syncOptionValueToDefault.bind(this)),e(document).on("click",".exprdawc_copy_custom_field",this.exprdawc_copy_custom_field.bind(this)),e(document).on("change keyup keydown input","input.field_name",this.updateConditionalFieldOptions.bind(this)),this.toggleConditionalValueFieldAll(),this.initFieldTypeSettings(),e(".exprdawc_field_table tbody").sortable({items:"tr.exprdawc_fields_wrapper",cursor:"move",axis:"y",handle:".move",scrollSensitivity:40,forcePlaceholderSize:!0,helper:"clone",opacity:.65,placeholder:"wc-metabox-sortable-placeholder",start:function(e,t){t.item.css("background-color","#f6f6f6")},stop:function(e,t){t.item.removeAttr("style")},update:function(e,t){this.updateFieldIndices()}}),e(document).on("mouseenter",".exprdawc_options_table tbody",function(){e(this).sortable({items:"tr",cursor:"move",axis:"y",handle:".move",scrollSensitivity:40,forcePlaceholderSize:!0,helper:"clone",opacity:.65,placeholder:"wc-metabox-sortable-placeholder",start:function(e,t){t.item.css("background-color","#f6f6f6")},stop:function(e,t){t.item.removeAttr("style")}})}),e("#exprdawc_attribute_container").on("input",".exprdawc_attribute .exprdawc_attribute_input_name input",function(){var t=e(this).val(),a=e(this).closest(".exprdawc_attribute").find(".attribute_name");t&&a.text(t)})}addCustomField(){this.fieldIndex++,this.setDirty(),e("#exprdawc_field_body").append(`\n <tr class="exprdawc_fields_wrapper">\n <td colspan="5">\n <table class="exprdawc_fields_table" data-index="${this.fieldIndex}">\n\t <tbody>\n <tr class="exprdawc_attribute">\n <td class="move"><i class="dashicons dashicons-move"></i></td>\n <td class="cl-arr"><i class="dashicons dashicons-arrow-up toggle-options"></i></td>\n <td class="exprdawc_attribute_input_name">\n <input type="text" class="exprdawc_input exprdawc_textinput exprdawc_label field_name" name="extra_product_fields[${this.fieldIndex}][label]" placeholder="${exprdawc_admin_meta_boxes.label_placeholder}" />\n </td>\n <td>\n <select id="exprdawc_attribute_type_${this.fieldIndex}" name="extra_product_fields[${this.fieldIndex}][type]" class="exprdawc_attribute_type">\n <option value="text">${exprdawc_admin_meta_boxes.short_text}</option>\n <option value="long_text">${exprdawc_admin_meta_boxes.long_text}</option>\n <option value="email">${exprdawc_admin_meta_boxes.email}</option>\n <option value="number">${exprdawc_admin_meta_boxes.number}</option>\n <option value="date">${exprdawc_admin_meta_boxes.date}</option>\n <option value="yes-no">${exprdawc_admin_meta_boxes.yes_no}</option>\n <option value="radio">${exprdawc_admin_meta_boxes.radio}</option>\n <option value="checkbox">${exprdawc_admin_meta_boxes.checkbox}</option>\n <option value="select">${exprdawc_admin_meta_boxes.select}</option>\n </select>\n </td>\n <td>\n <button type="button" class="exprdawc_remove_custom_field button"><i class="dashicons dashicons-trash"></i></button>\n <button type="button" class="button exprdawc_copy_custom_field"><i class="dashicons dashicons-admin-page"></i></button>\n <input type="hidden" class="exprdawc_attribute_index" name="extra_product_fields[${this.fieldIndex}][index]" value="${this.fieldIndex}"/>\n </td>\n </tr>\n <tr class="exprdawc_options" style="display: none;">\n <td colspan="5">\n\n <table class="exprdawc_settings_table exprdawc_general_table">\n <tbody>\n\n \x3c!-- Text Area Option/Settings --\x3e\n <tr>\n <td class="exprdawc_attribute_require_checkbox">\n <label class="exprdawc_label" for="exprdawc_text_required_${this.fieldIndex}">\n <input type="checkbox" id="exprdawc_text_required_${this.fieldIndex}" class="exprdawc_input exprdawc_checkbox checkbox" name="extra_product_fields[${this.fieldIndex}][required]" value="1" />\n ${exprdawc_admin_meta_boxes.require_input}\n </label> \n <label class="exprdawc_label" for="exprdawc_text_autofocus_${this.fieldIndex}">\n <input type="checkbox" id="exprdawc_text_autofocus_${this.fieldIndex}" class="exprdawc_input exprdawc_checkbox checkbox" name="extra_product_fields[${this.fieldIndex}][autofocus]" value="1" />\n ${exprdawc_admin_meta_boxes.enable_autofocus}\n </label>\n <label class="exprdawc_label" for="exprdawc_text_editable_${this.fieldIndex}">\n <input type="checkbox" id="exprdawc_text_editable_${this.fieldIndex}" class="exprdawc_input exprdawc_checkbox exprdawc_editable_field checkbox" name="extra_product_fields[${this.fieldIndex}][editable]" value="1" />\n ${exprdawc_admin_meta_boxes.enable_editable}\n </label>\n\n \x3c!-- Enable Conditional Logic and show table --\x3e\n <label class="exprdawc_label" for="exprdawc_text_conditional_logic_${this.fieldIndex}">\n <input type="checkbox" id="exprdawc_text_conditional_logic_${this.fieldIndex}" class="exprdawc_input exprdawc_checkbox exprdawc_conditional_logic_field checkbox" name="extra_product_fields[${this.fieldIndex}][conditional_logic]" value="1" />\n ${exprdawc_admin_meta_boxes.enable_conditional_logic}\n </label>\n\n \x3c!-- Enable Price Adjustment and show table --\x3e\n <label class="exprdawc_label" for="exprdawc_text_price_adjustment_${this.fieldIndex}">\n <input type="checkbox" id="exprdawc_text_price_adjustment_${this.fieldIndex}" class="exprdawc_input exprdawc_checkbox exprdawc_adjust_price_field checkbox" name="extra_product_fields[${this.fieldIndex}][adjust_price]" value="1" />\n ${exprdawc_admin_meta_boxes.enable_price_adjustment}\n </label>\n\n </td>\n <td class="exprdawc_attribute_placeholder_text">\n <label class="exprdawc_label" for="exprdawc_text_placeholder_text_${this.fieldIndex}">${exprdawc_admin_meta_boxes.placeholder_text}</label>\n <input type="text" id="exprdawc_text_placeholder_text_${this.fieldIndex}" class="exprdawc_input exprdawc_textinput exprdawc_placeholder" name="extra_product_fields[${this.fieldIndex}][placeholder_text]" placeholder="${exprdawc_admin_meta_boxes.placeholder_text}" />\n </td>\n <td class="exprdawc_attribute_help_text">\n <label class="exprdawc_label" for="exprdawc_text_help_text_${this.fieldIndex}">${exprdawc_admin_meta_boxes.help_text}</label>\n <input type="text" id="exprdawc_text_help_text_${this.fieldIndex}" class="exprdawc_input exprdawc_textinput exprdawc_helptext" name="extra_product_fields[${this.fieldIndex}][help_text]" placeholder="${exprdawc_admin_meta_boxes.help_text}" />\n </td>\n <td>\n <label class="exprdawc_label" for="exprdawc_autocomplete_function_${this.fieldIndex}">${exprdawc_admin_meta_boxes.autocomplete_function}</label>\n <select id="exprdawc_autocomplete_function_${this.fieldIndex}" name="extra_product_fields[${this.fieldIndex}][autocomplete]" class="exprdawc_input exprdawc_attribute_type">\n <option value="on">${exprdawc_admin_meta_boxes.autocomplete_on}</option>\n <option value="off">${exprdawc_admin_meta_boxes.autocomplete_off}</option>\n <option value="address-level1">${exprdawc_admin_meta_boxes.address_level1}</option>\n <option value="address-level2">${exprdawc_admin_meta_boxes.address_level2}</option>\n <option value="address-level3">${exprdawc_admin_meta_boxes.address_level3}</option>\n <option value="address-level4">${exprdawc_admin_meta_boxes.address_level4}</option>\n <option value="address-line1">${exprdawc_admin_meta_boxes.address_line1}</option>\n <option value="address-line2">${exprdawc_admin_meta_boxes.address_line2}</option>\n <option value="address-line3">${exprdawc_admin_meta_boxes.address_line3}</option>\n <option value="bday">${exprdawc_admin_meta_boxes.bday}</option>\n <option value="bday-day">${exprdawc_admin_meta_boxes.bday_day}</option>\n <option value="bday-month">${exprdawc_admin_meta_boxes.bday_month}</option>\n <option value="bday-year">${exprdawc_admin_meta_boxes.bday_year}</option>\n <option value="cc-additional-name">${exprdawc_admin_meta_boxes.cc_additional_name}</option>\n <option value="cc-csc">${exprdawc_admin_meta_boxes.cc_csc}</option>\n <option value="cc-exp">${exprdawc_admin_meta_boxes.cc_exp}</option>\n <option value="cc-exp-month">${exprdawc_admin_meta_boxes.cc_exp_month}</option>\n <option value="cc-exp-year">${exprdawc_admin_meta_boxes.cc_exp_year}</option>\n <option value="cc-family-name">${exprdawc_admin_meta_boxes.cc_family_name}</option>\n <option value="cc-given-name">${exprdawc_admin_meta_boxes.cc_given_name}</option>\n <option value="cc-name">${exprdawc_admin_meta_boxes.cc_name}</option>\n <option value="cc-number">${exprdawc_admin_meta_boxes.cc_number}</option>\n <option value="cc-type">${exprdawc_admin_meta_boxes.cc_type}</option>\n <option value="country">${exprdawc_admin_meta_boxes.country}</option>\n <option value="country-name">${exprdawc_admin_meta_boxes.country_name}</option>\n <option value="email">${exprdawc_admin_meta_boxes.email}</option>\n <option value="language">${exprdawc_admin_meta_boxes.language}</option>\n <option value="photo">${exprdawc_admin_meta_boxes.photo}</option>\n <option value="postal-code">${exprdawc_admin_meta_boxes.postal_code}</option>\n <option value="sex">${exprdawc_admin_meta_boxes.sex}</option>\n <option value="street-address">${exprdawc_admin_meta_boxes.street_address}</option>\n <option value="tel">${exprdawc_admin_meta_boxes.tel}</option>\n <option value="tel-area-code">${exprdawc_admin_meta_boxes.tel_area_code}</option>\n <option value="tel-country-code">${exprdawc_admin_meta_boxes.tel_country_code}</option>\n <option value="tel-extension">${exprdawc_admin_meta_boxes.tel_extension}</option>\n <option value="tel-local">${exprdawc_admin_meta_boxes.tel_local}</option>\n <option value="tel-local-prefix">${exprdawc_admin_meta_boxes.tel_local_prefix}</option>\n <option value="tel-local-suffix">${exprdawc_admin_meta_boxes.tel_local_suffix}</option>\n <option value="tel-national">${exprdawc_admin_meta_boxes.tel_national}</option>\n <option value="transaction-amount">${exprdawc_admin_meta_boxes.transaction_amount}</option>\n <option value="transaction-currency">${exprdawc_admin_meta_boxes.transaction_currency}</option>\n <option value="url">${exprdawc_admin_meta_boxes.url}</option>\n </select>\n </td>\n </tr>\n </tbody>\n </table>\n <hr>\n\n \x3c!-- Price Adjustment --\x3e\n <table class="exprdawc_settings_table exprdawc_price_adjustment_table" style="display:none;">\n <tbody>\n <tr>\n <td>\n <label class="exprdawc_label" for="exprdawc_price_adjustment_type_${this.fieldIndex}">${exprdawc_admin_meta_boxes.price_adjustment_type}</label>\n <select id="exprdawc_price_adjustment_type_${this.fieldIndex}" name="extra_product_fields[${this.fieldIndex}][price_adjustment_type]" class="exprdawc_input exprdawc_price_adjustment_type">\n <option value="fixed">${exprdawc_admin_meta_boxes.fixed}</option>\n <option vlaue="quantity">${exprdawc_admin_meta_boxes.quantity}</option>\n <option value="percentage">${exprdawc_admin_meta_boxes.percentage}</option>\n </select>\n </td>\n <td>\n <label class="exprdawc_label" for="exprdawc_price_adjustment_value_${this.fieldIndex}">${exprdawc_admin_meta_boxes.price_adjustment_value}</label>\n <input type="number" id="exprdawc_price_adjustment_value_${this.fieldIndex}" class="exprdawc_input exprdawc_price_adjustment_value" placeholder="0.00" name="extra_product_fields[${this.fieldIndex}][price_adjustment_value]" value="0" />\n </td>\n </tr>\n </tbody>\n </table>\n\n \x3c!-- Conditional Logic --\x3e\n\t\t\t\t <table class="exprdawc_settings_table exprdawc_conditional_logic_table" style="display:none;">\n <tbody>\n <tr>\n <td colspan="3">\n <label class="exprdawc_label">${exprdawc_admin_meta_boxes.conditionals}</label>\n\t\t\t\t\t\t\t\t <p>${exprdawc_admin_meta_boxes.conditionals_description}</p>\n <div class="exprdawc_conditional_rules">\n <div class="exprdawc_rule_group_container">\n <div class="exprdawc_rule_group">\n <div class="exprdawc_rule">\n <select name="extra_product_fields[${this.fieldIndex}][conditional_rules][0][0][field]" class="exprdawc_input exprdawc_conditional_field">\n <option value="">${exprdawc_admin_meta_boxes.selectFieldNone}</option>\n ${this.getAllFieldsOptions()}\n </select>\n <select name="extra_product_fields[${this.fieldIndex}][conditional_rules][0][0][operator]" class="exprdawc_input exprdawc_conditional_operator">\n <option value="field_is_empty">${exprdawc_admin_meta_boxes.field_is_empty}</option>\n <option value="field_is_not_empty">${exprdawc_admin_meta_boxes.field_is_not_empty}</option>\n <option value="equals">${exprdawc_admin_meta_boxes.equals}</option>\n <option value="not_equals">${exprdawc_admin_meta_boxes.notEquals}</option>\n <option value="greater_than">${exprdawc_admin_meta_boxes.greaterThan}</option>\n <option value="less_than">${exprdawc_admin_meta_boxes.lessThan}</option>\n </select>\n <input type="text" name="extra_product_fields[${this.fieldIndex}][conditional_rules][0][0][value]" class="exprdawc_input exprdawc_conditional_value" placeholder="${exprdawc_admin_meta_boxes.enterValue}" style="display:none;" />\n <button type="button" class="button remove_rule"><i class="dashicons dashicons-trash"></i></button>\n <button type="button" class="button add_rule">${exprdawc_admin_meta_boxes.and}</button>\n </div>\n </div>\n </div>\n </div>\n </td> \n </tr>\n </tbody>\n </table>\n\n\n \x3c!-- Text Area Option/Settings --\x3e\n <table class="exprdawc_settings_table exprdawc_long_text_table" style="display:none;">\n <tbody>\n <tr>\n <td>\n <label class="exprdawc_label" for="exprdawc_long_text_rows_${this.fieldIndex}">${exprdawc_admin_meta_boxes.rows}</label>\n <input type="number" id="exprdawc_long_text_rows_${this.fieldIndex}" class="exprdawc_input exprdawc_long_text_rows" name="extra_product_fields[${this.fieldIndex}][rows]" value="2" />\n </td>\n <td>\n <label class="exprdawc_label" for="exprdawc_long_text_cols_${this.fieldIndex}">${exprdawc_admin_meta_boxes.columns}</label>\n <input type="number" id="exprdawc_long_text_cols_${this.fieldIndex}" class="exprdawc_input exprdawc_long_text_cols" name="extra_product_fields[${this.fieldIndex}][cols]" value="5" />\n </td>\n <td>\n <label class="exprdawc_label" for="exprdawc_long_text_default_${this.fieldIndex}">${exprdawc_admin_meta_boxes.default_value}</label>\n <textarea id="exprdawc_long_text_default_${this.fieldIndex}" class="exprdawc_textarea" rows="3" cols="30" placeholder="${exprdawc_admin_meta_boxes.enter_default_text}" name="extra_product_fields[${this.fieldIndex}][default]"></textarea>\n </td>\n </tr>\n </tbody>\n </table>\n\n \x3c!-- Text Option/Settings for radio, checkboxes and selects --\x3e\n <table class="exprdawc_settings_table exprdawc_text_table" style="display:none;">\n <tbody>\n <tr>\n <td>\n <label class="exprdawc_label" for="exprdawc_text_min_length_${this.fieldIndex}">${exprdawc_admin_meta_boxes.min_length}</label>\n <input type="number" id="exprdawc_text_min_length_${this.fieldIndex}" class="exprdawc_input exprdawc_text_min_length" name="extra_product_fields[${this.fieldIndex}][minlength]" value="0" />\n </td>\n <td>\n <label class="exprdawc_label" for="exprdawc_text_max_length_${this.fieldIndex}">${exprdawc_admin_meta_boxes.max_length}</label>\n <input type="number" id="exprdawc_text_max_length_${this.fieldIndex}" class="exprdawc_input exprdawc_text_max_length" name="extra_product_fields[${this.fieldIndex}][maxlength]" value="255" />\n </td>\n <td>\n <label class="exprdawc_label" for="exprdawc_text_default_${this.fieldIndex}">${exprdawc_admin_meta_boxes.default_value}</label>\n <input type="text" id="exprdawc_text_default_${this.fieldIndex}" class="exprdawc_input exprdawc_text_default" placeholder="${exprdawc_admin_meta_boxes.enter_default_text}" name="extra_product_fields[${this.fieldIndex}][default]" />\n </td>\n </tr>\n </tbody>\n </table>\n\n <table class="exprdawc_options_table" style="display:none;">\n <thead>\n <tr>\n <th></th>\n <th class="field_option_table_label_th">${exprdawc_admin_meta_boxes.option_label}</th>\n <th class="field_option_table_value_th">${exprdawc_admin_meta_boxes.option_value}</th>\n <th class="field_option_table_selected_th">${exprdawc_admin_meta_boxes.default_selected}</th>\n <th class="field_option_table_action_th">${exprdawc_admin_meta_boxes.action}</th>\n </tr>\n </thead>\n <tbody>\n \x3c!-- Options will be dynamically added here --\x3e\n </tbody>\n <tfoot>\n <tr>\n <td colspan="6">\n <button type="button" class="button add_option">${exprdawc_admin_meta_boxes.add_option}</button>\n </td>\n </tr>\n </tfoot>\n </table>\n <p class="exprdawc_no_entry_message" style="display: none;">${exprdawc_admin_meta_boxes.no_options}</p>\n </td>\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n `),this.noEntryContent(),this.updateFieldIndices(),e("#exprdawc_attribute_type_"+this.fieldIndex).trigger("change")}removeCustomField(t){return confirm(exprdawc_admin_meta_boxes.confirm_delete)&&(this.setDirty(),e(t.currentTarget).closest("tr").next(".exprdawc_options").remove(),e(t.currentTarget).closest("tr").remove(),this.updateFieldIndices(),this.noEntryContent()),!1}toggleOptions(t){this.setDirty();const a=e(t.currentTarget).closest("tr"),n=e(t.currentTarget).val(),d=a.next(".exprdawc_options"),i=d.find(".exprdawc_options_table"),o=d.find(".exprdawc_placeholder");"radio"===n||"checkbox"===n||"select"===n?(o.prop("disabled",!0),i.show(),d.find(".exprdawc_attribute_placeholder_text").hide()):(o.prop("disabled",!1),i.hide(),d.find(".exprdawc_attribute_placeholder_text").show()),"long_text"===e(t.currentTarget).val()?d.find(".exprdawc_long_text_table").show():d.find(".exprdawc_long_text_table").hide(),"text"===e(t.currentTarget).val()||"email"===e(t.currentTarget).val()||"number"===e(t.currentTarget).val()||"date"===e(t.currentTarget).val()?d.find(".exprdawc_text_table").show():d.find(".exprdawc_text_table").hide()}toggleOptionsTable(t){const a=e(t.currentTarget);a.closest("tr").next(".exprdawc_options").toggle(),a.toggleClass("dashicons-arrow-down dashicons-arrow-up")}openOptionsTable(t){const a=e(t.currentTarget).closest("tr.exprdawc_attribute"),n=a.next(".exprdawc_options"),d=a.find(".toggle-options");n.show(),d.removeClass("dashicons-arrow-up").addClass("dashicons-arrow-down")}addOption(t){this.setDirty();const a=e(t.currentTarget).closest(".exprdawc_options_table"),n=a.closest(".exprdawc_fields_table").data("index");if(null==n)return void console.error("exprdawc: actual_index is undefined or null",a);const d=a.find("tbody tr").length,i=a.closest(".exprdawc_fields_table").find(".exprdawc_attribute_type").val();let o="";a.closest(".exprdawc_options").find(".exprdawc_adjust_price_field").is(":checked")&&(o=`\n <td class="field_price_adjustment_type_${d} field_price_adjustment_type">\n <select name="extra_product_fields[${n}][options][${d}][price_adjustment_type]" class="exprdawc_input exprdawc_price_adjustment_type">\n <option value="fixed">${exprdawc_admin_meta_boxes.fixed}</option>\n <option value="quantity">${exprdawc_admin_meta_boxes.quantity}</option>\n <option value="percentage">${exprdawc_admin_meta_boxes.percentage}</option>\n </select>\n </td>\n <td class="field_price_adjustment_value_${d} field_price_adjustment_value">\n <input type="number" name="extra_product_fields[${n}][options][${d}][price_adjustment_value]" class="exprdawc_input exprdawc_price_adjustment_value" step="0.01" placeholder="0.00" value="0" />\n </td>\n `),"radio"===i||"select"===i?a.find("tbody").append(`\n <tr>\n <td class="move"><i class="dashicons dashicons-move"></i></td>\n <td class="field_option_table_label_td">\n <input type="text" name="extra_product_fields[${n}][options][${d}][label]" placeholder="${exprdawc_admin_meta_boxes.option_label_placeholder}" />\n </td>\n <td class="field_option_table_value_td">\n <input type="text" name="extra_product_fields[${n}][options][${d}][value]" placeholder="${exprdawc_admin_meta_boxes.option_value_placeholder}" />\n </td>\n <td class="field_option_table_selected_td">\n <input type="radio" name="extra_product_fields[${n}][default]" value="${d}" />\n </td>\n ${o}\n <td class="field_option_table_action_td">\n <button type="button" class="button remove_option">${exprdawc_admin_meta_boxes.remove}</button>\n </td>\n </tr>\n `):a.find("tbody").append(`\n <tr>\n <td class="move"><i class="dashicons dashicons-move"></i></td>\n <td class="field_option_table_label_td">\n <input type="text" name="extra_product_fields[${n}][options][${d}][label]" placeholder="${exprdawc_admin_meta_boxes.option_label_placeholder}" />\n </td>\n <td class="field_option_table_value_td">\n <input type="text" name="extra_product_fields[${n}][options][${d}][value]" placeholder="${exprdawc_admin_meta_boxes.option_value_placeholder}" />\n </td>\n <td class="field_option_table_selected_td">\n <input type="checkbox" name="extra_product_fields[${n}][options][${d}][default]" value="1" />\n </td>\n ${o}\n <td class="field_option_table_action_td">\n <button type="button" class="button remove_option">${exprdawc_admin_meta_boxes.remove}</button>\n </td>\n </tr>\n `),this.checkOptions(a.closest(".exprdawc_options"))}removeOption(t){return confirm(exprdawc_admin_meta_boxes.confirm_delete)&&(this.setDirty(),e(t.currentTarget).closest("tr").remove(),this.checkOptions(e(t.currentTarget).closest(".exprdawc_options"))),!1}checkOptions(e){const t=e.find(".exprdawc_options_table tbody"),a=e.find(".exprdawc_no_entry_message");0===t.find("tr").length?a.show():a.hide()}syncOptionValueToDefault(t){const a=e(t.currentTarget),n=a.closest("tr"),d=a.closest(".exprdawc_options_table"),i=d.find("tbody tr").index(n),o=d.closest(".exprdawc_fields_table").data("index");if(null==o)return void console.error("exprdawc: actualIndex is undefined or null",d);const l=a.val(),_=d.closest(".exprdawc_fields_table").find(".exprdawc_attribute_type").val();if("radio"===_||"select"===_){const e=d.find("tbody tr").eq(i).find('input[type="radio"]');if(e.length)e.val(l);else{const e=d.find('input[type="radio"][name^="extra_product_fields"]');e.length>i&&e.eq(i).val(l)}}}setDirty(){this.isDirty=!0,this.disableExportLink()}disableExportLink(){this.isDirty&&e(".exprdawc-export").hide()}noEntryContent(){var t=e("#exprdawc_field_body .exprdawc_attribute").length,a=e(".exprdawc_no_entry_message"),n=e("#exprdatawc_table_header"),d=e(".exprdawc-export");t>0?(a.hide(),n.show(),d.show()):(a.show(),n.hide(),d.hide())}checkAutocompleteField(t){const a=e(t.currentTarget);if(a.is(":checked")){const t=e(".exprdawc_autocomplete_field").not(a).filter(":checked");if(t.length>0){if(!confirm(exprdawc_admin_meta_boxes.sureAnotherAutocompleCheckedQuestion))return void a.prop("checked",!1);t.prop("checked",!1)}}}addRuleGroup(t){const a=e(t.currentTarget).closest(".exprdawc_conditional_logic_table").find(".exprdawc_conditional_rules"),n=a.find(".exprdawc_rule_group").length,d=e(t.currentTarget).closest(".exprdawc_fields_table").data("index"),i=this.getRuleGroupHtml(d,n);a.append(i)}addRule(t){const a=e(t.currentTarget).closest(".exprdawc_rule_group"),n=a.index(),d=e(t.currentTarget).closest(".exprdawc_fields_table").data("index"),i=a.find(".exprdawc_rule").length,o=this.getRuleHtml(d,n,i);a.append(o)}getRuleGroupHtml(e,t){return`\n <div class="exprdawc_rule_group_container">\n <h2>${exprdawc_admin_meta_boxes.or}</h2>\n <div class="exprdawc_rule_group">\n ${this.getRuleHtml(e,t,0)}\n </div>\n </div>\n `}getRuleHtml(e,t,a){return`\n <div class="exprdawc_rule">\n <select name="extra_product_fields[${e}][conditional_rules][${t}][${a}][field]" class="exprdawc_input exprdawc_conditional_field">\n <option value="">${exprdawc_admin_meta_boxes.selectFieldNone}</option>\n ${this.getAllFieldsOptions()}\n </select>\n <select name="extra_product_fields[${e}][conditional_rules][${t}][${a}][operator]" class="exprdawc_input exprdawc_conditional_operator">\n <option value="field_is_empty">${exprdawc_admin_meta_boxes.field_is_empty}</option>\n <option value="field_is_not_empty">${exprdawc_admin_meta_boxes.field_is_not_empty}</option>\n <option value="equals">${exprdawc_admin_meta_boxes.equals}</option>\n <option value="not_equals">${exprdawc_admin_meta_boxes.notEquals}</option>\n <option value="greater_than">${exprdawc_admin_meta_boxes.greaterThan}</option>\n <option value="less_than">${exprdawc_admin_meta_boxes.lessThan}</option>\n </select>\n <input type="text" name="extra_product_fields[${e}][conditional_rules][${t}][${a}][value]" class="exprdawc_input exprdawc_conditional_value" placeholder="${exprdawc_admin_meta_boxes.enterValue}" style="display:none;" />\n <button type="button" class="button remove_rule"><i class="dashicons dashicons-trash"></i></button>\n <button type="button" class="button add_rule">+ ${exprdawc_admin_meta_boxes.and}</button>\n </div>\n `}toggleConditionalValueField(t){const a=e(t.currentTarget),n=a.closest(".exprdawc_rule").find(".exprdawc_conditional_value");"field_changed"===a.val()||"field_is_empty"===a.val()||"field_is_not_empty"===a.val()?n.hide():n.show()}toggleConditionalValueFieldAll(){e(".exprdawc_conditional_operator").each((e,t)=>{this.toggleConditionalValueField({currentTarget:t})})}togglePriceAdjustmentTableAll(){e(".exprdawc_conditional_operator").each((e,t)=>{this.toggleConditionalTable({currentTarget:t})})}removeRule(t){if(confirm(exprdawc_admin_meta_boxes.confirm_delete_rule)){const a=e(t.currentTarget).closest(".exprdawc_rule_group_container");e(t.currentTarget).closest(".exprdawc_rule").remove(),0===a.find(".exprdawc_rule").length&&a.remove()}return!1}getAllFieldsOptions(){let t="";return e("#exprdawc_field_body tr.exprdawc_attribute").each(function(){const a=e(this).find(".exprdawc_attribute_input_name input").val();t+=`<option value="${a}">${a}</option>`}),t}toggleConditionalTable(t){const a=e(t.currentTarget),n=e(t.currentTarget).closest(".exprdawc_options").find(".exprdawc_conditional_logic_table");a.is(":checked")?n.show():n.hide()}togglePriceAdjustmentTable(t){const a=e(t.currentTarget),n=e(t.currentTarget).closest(".exprdawc_options").find(".exprdawc_price_adjustment_table"),d=e(t.currentTarget).closest(".exprdawc_fields_table").find(".exprdawc_attribute_type").val();if(console.log(d),"radio"!==d&&"checkbox"!==d&&"select"!==d)a.is(":checked")?n.show():n.hide(),e(".field_price_adjustment_type_th, .field_price_adjustment_val_th").remove(),e(".field_price_adjustment_type, .field_price_adjustment_value").remove();else{n.hide(),a.is(":checked")?(e(".field_price_adjustment_type_th, .field_price_adjustment_val_th").show(),e(".field_price_adjustment_type, .field_price_adjustment_value").show()):(e(".field_price_adjustment_type_th, .field_price_adjustment_val_th").hide(),e(".field_price_adjustment_type, .field_price_adjustment_value").hide());const d=e(t.currentTarget).closest(".exprdawc_options").find(".exprdawc_options_table");console.log(d);const i=d.find("tbody tr").length;0===d.find("thead th.field_price_adjustment_type_th").length?(console.log("Adding extra columns"),console.log(d.find("thead th.field_option_table_action_th")),d.find("thead th.field_option_table_action_th").before(`\n <th class="field_price_adjustment_type_th">${exprdawc_admin_meta_boxes.price_adjustment_type}</th>\n <th class="field_price_adjustment_val_th">${exprdawc_admin_meta_boxes.price_adjustment_value}</th>\n `)):console.log("Extra columns already exist"),d.find("tbody tr").each(function(){0===e(this).find(".field_price_adjustment_type").length&&e(this).find(".field_option_table_action_td").before(`\n <td class="field_price_adjustment_type_${i} field_price_adjustment_type">\n <select name="extra_product_fields[${this.fieldIndex}][options][${i}][price_adjustment_type]" class="exprdawc_input exprdawc_price_adjustment_type">\n <option value="fixed">${exprdawc_admin_meta_boxes.fixed}</option>\n <option value="quantity">${exprdawc_admin_meta_boxes.quantity}</option>\n <option value="percentage">${exprdawc_admin_meta_boxes.percentage}</option>\n </select>\n </td>\n <td class="field_price_adjustment_value_${i} field_price_adjustment_value">\n <input type="number" name="extra_product_fields[${this.fieldIndex}][options][${i}][price_adjustment_value]" class="exprdawc_input exprdawc_price_adjustment_value" placeholder="0.00" value="0" />\n </td>\n `)})}}initFieldTypeSettings(){e(".exprdawc_fields_wrapper").each((t,a)=>{const n=e(a).find(".exprdawc_attribute_type").val()||"text",d=e(a).find(".exprdawc_attribute_placeholder_text");"radio"===n||"checkbox"===n?d.hide():d.show()})}exprdawc_copy_custom_field(t){t.preventDefault(),this.setDirty();const a=e(t.currentTarget).closest(".exprdawc_fields_wrapper"),n=a.clone();n.find("input, select").each(function(){const t=e(this);if(t.hasClass("field_name")||t.hasClass("exprdawc_placeholder")){const e=t.val(),a=e.match(/\d+$/);if(a){const n=e.replace(/\d+$/,parseInt(a[0],10)+1);t.val(n)}}t.is("select.exprdawc_conditional_field")&&t.val()&&t.find("option:last").prop("selected",!0),t.removeClass("exprdawc-invalid-field")}),n.removeClass("exprdawc-validation-error"),a.after(n),e(".exprdawc_attribute_type").trigger("change"),this.updateFieldIndices(),this.updateConditionalFieldOptions()}updateConditionalFieldOptions(){const t=this.getAllFieldsOptions();e("select.exprdawc_conditional_field").each(function(){const a=e(this),n=a.val();a.html(t),a.val(n)})}updateFieldIndices(){e("#exprdawc_field_body tr.exprdawc_fields_wrapper").each((t,a)=>{e(a).find(".exprdawc_fields_table").attr("data-index",t),e(a).find("input, select").each(function(){const a=e(this),n=a.attr("name");n&&a.attr("name",n.replace(/\[\d+\]/,`[${t}]`));const d=a.attr("id");d&&a.attr("id",d.replace(/_\d+$/,`_${t}`))})})}bindFormValidation(){e("#post").on("submit",e=>{if(!this.validateFields())return e.preventDefault(),e.stopPropagation(),!1}),e("#publish, #save-post").on("click",e=>{if(!this.validateFields())return e.preventDefault(),e.stopPropagation(),!1})}validateFields(){const t=e("#exprdawc_field_body").find("tr.exprdawc_fields_wrapper");if(0===t.length)return!0;let a=!1;if(t.each((t,n)=>{const d=e(n),i=d.find("input.exprdawc_label");""===i.val().trim()?(a=!0,d.addClass("exprdawc-validation-error"),i.addClass("exprdawc-invalid-field")):(d.removeClass("exprdawc-validation-error"),i.removeClass("exprdawc-invalid-field"))}),a){console.log(exprdawc_admin_meta_boxes.validation_warning);const e=exprdawc_admin_meta_boxes.validation_warning;return alert(e),!1}return!0}}}); -
extra-product-data-for-woocommerce/tags/2.0.2/extra-product-data-for-woocommerce.php
r3469202 r3474408 3 3 * Plugin Name: Extra Product Data for WooCommerce 4 4 * Description: Adds customizable input fields per product in WooCommerce, allowing users to enter extra details on the frontend . 5 * Version: 2.0. 15 * Version: 2.0.2 6 6 * Author: Triopsi 7 7 * Author URI: https:// triopsi.dev -
extra-product-data-for-woocommerce/tags/2.0.2/readme.txt
r3469202 r3474408 5 5 Tested up to: 6.7 6 6 Requires PHP: 8.2 7 Stable tag: 2.0. 17 Stable tag: 2.0.2 8 8 License: GPLv2 or later 9 9 License URI: https://www.gnu.org/licenses/gpl-2.0.html … … 185 185 = 2.0.1 (25.02.2026) = 186 186 * Fix and Bump Version to wg.org 187 188 = 2.0.2 (04.03.2026) = 189 * Fix: Radio default on admin product page now also listens to input event -
extra-product-data-for-woocommerce/tags/2.0.2/src/assets/js/wc-meta-boxes-product.js
r3469202 r3474408 66 66 $(document).on('change', '.exprdawc_conditional_logic_field', this.toggleConditionalTable.bind(this)); 67 67 $(document).on('click', '.exprdawc_adjust_price_field', this.togglePriceAdjustmentTable.bind(this)); 68 $(document).on('change keyup ', '.field_option_table_value_td input', this.syncOptionValueToDefault.bind(this));68 $(document).on('change keyup keydown input', '.field_option_table_value_td input', this.syncOptionValueToDefault.bind(this)); 69 69 $(document).on('click', '.exprdawc_copy_custom_field', this.exprdawc_copy_custom_field.bind(this)); 70 $(document).on('change keyup ', 'input.field_name', this.updateConditionalFieldOptions.bind(this));70 $(document).on('change keyup keydown input', 'input.field_name', this.updateConditionalFieldOptions.bind(this)); 71 71 72 72 // Inits -
extra-product-data-for-woocommerce/tags/2.0.2/src/constants.php
r3469202 r3474408 30 30 31 31 // Useful global constants. 32 $version = '2.0. 1';32 $version = '2.0.2'; 33 33 define( 'EXPRDAWC_VERSION', $version ); 34 34 define( 'EXPRDAWC_PLUGIN_MAIN_FILE', 'extra-product-data-for-woocommerce.php' ); -
extra-product-data-for-woocommerce/tags/2.0.2/vendor/autoload.php
r3469202 r3474408 20 20 require_once __DIR__ . '/composer/autoload_real.php'; 21 21 22 return ComposerAutoloaderInit ba855de335642eb08732e8874f52c56f::getLoader();22 return ComposerAutoloaderInit605971a92764ca4946e1fc35fff9aa18::getLoader(); -
extra-product-data-for-woocommerce/tags/2.0.2/vendor/composer/autoload_real.php
r3469202 r3474408 3 3 // autoload_real.php @generated by Composer 4 4 5 class ComposerAutoloaderInit ba855de335642eb08732e8874f52c56f5 class ComposerAutoloaderInit605971a92764ca4946e1fc35fff9aa18 6 6 { 7 7 private static $loader; … … 25 25 require __DIR__ . '/platform_check.php'; 26 26 27 spl_autoload_register(array('ComposerAutoloaderInit ba855de335642eb08732e8874f52c56f', 'loadClassLoader'), true, true);27 spl_autoload_register(array('ComposerAutoloaderInit605971a92764ca4946e1fc35fff9aa18', 'loadClassLoader'), true, true); 28 28 self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(__DIR__)); 29 spl_autoload_unregister(array('ComposerAutoloaderInit ba855de335642eb08732e8874f52c56f', 'loadClassLoader'));29 spl_autoload_unregister(array('ComposerAutoloaderInit605971a92764ca4946e1fc35fff9aa18', 'loadClassLoader')); 30 30 31 31 require __DIR__ . '/autoload_static.php'; 32 call_user_func(\Composer\Autoload\ComposerStaticInit ba855de335642eb08732e8874f52c56f::getInitializer($loader));32 call_user_func(\Composer\Autoload\ComposerStaticInit605971a92764ca4946e1fc35fff9aa18::getInitializer($loader)); 33 33 34 34 $loader->register(true); -
extra-product-data-for-woocommerce/tags/2.0.2/vendor/composer/autoload_static.php
r3469202 r3474408 5 5 namespace Composer\Autoload; 6 6 7 class ComposerStaticInit ba855de335642eb08732e8874f52c56f7 class ComposerStaticInit605971a92764ca4946e1fc35fff9aa18 8 8 { 9 9 public static $prefixLengthsPsr4 = array ( … … 39 39 { 40 40 return \Closure::bind(function () use ($loader) { 41 $loader->prefixLengthsPsr4 = ComposerStaticInit ba855de335642eb08732e8874f52c56f::$prefixLengthsPsr4;42 $loader->prefixDirsPsr4 = ComposerStaticInit ba855de335642eb08732e8874f52c56f::$prefixDirsPsr4;43 $loader->classMap = ComposerStaticInit ba855de335642eb08732e8874f52c56f::$classMap;41 $loader->prefixLengthsPsr4 = ComposerStaticInit605971a92764ca4946e1fc35fff9aa18::$prefixLengthsPsr4; 42 $loader->prefixDirsPsr4 = ComposerStaticInit605971a92764ca4946e1fc35fff9aa18::$prefixDirsPsr4; 43 $loader->classMap = ComposerStaticInit605971a92764ca4946e1fc35fff9aa18::$classMap; 44 44 45 45 }, null, ClassLoader::class); -
extra-product-data-for-woocommerce/tags/2.0.2/vendor/composer/installed.php
r3469202 r3474408 2 2 'root' => array( 3 3 'name' => 'triopsi/extra-product-data-for-woocommerce', 4 'pretty_version' => '2.0. 1',5 'version' => '2.0. 1.0',4 'pretty_version' => '2.0.2', 5 'version' => '2.0.2.0', 6 6 'reference' => null, 7 7 'type' => 'project', … … 12 12 'versions' => array( 13 13 'triopsi/extra-product-data-for-woocommerce' => array( 14 'pretty_version' => '2.0. 1',15 'version' => '2.0. 1.0',14 'pretty_version' => '2.0.2', 15 'version' => '2.0.2.0', 16 16 'reference' => null, 17 17 'type' => 'project', -
extra-product-data-for-woocommerce/trunk/assets/js/wc-meta-boxes-product.min.js
r3469202 r3474408 10 10 * @link https://www.triopsi.dev 11 11 */ 12 constructor(){const t=e("#exprdawc_field_body").find("tr.exprdawc_attribute");this.fieldIndex=t.length,this.fieldIndex=e("#exprdawc_field_body tr.exprdawc_attribute").length,this.isDirty=!1,this.init()}init(){this.bindEvents(),this.noEntryContent(),this.bindFormValidation()}bindEvents(){e("#exprdawc_add_custom_field").on("click",this.addCustomField.bind(this)),e(document).on("click",".exprdawc_remove_custom_field",this.removeCustomField.bind(this)),e(document).on("change",".exprdawc_attribute_type",this.toggleOptions.bind(this)),e(document).on("click",".exprdawc_attribute_type",this.openOptionsTable.bind(this)),e(document).on("click",".exprdawc_attribute_input_name",this.openOptionsTable.bind(this)),e(document).on("click",".toggle-options",this.toggleOptionsTable.bind(this)),e(document).on("click",".add_option",this.addOption.bind(this)),e(document).on("click",".remove_option",this.removeOption.bind(this)),e(document).on("change",".exprdawc_input",this.setDirty.bind(this)),e(document).on("change",".exprdawc_autocomplete_field",this.checkAutocompleteField.bind(this)),e(document).on("click",".add_rule_group",this.addRuleGroup.bind(this)),e(document).on("click",".add_rule",this.addRule.bind(this)),e(document).on("click",".remove_rule",this.removeRule.bind(this)),e(document).on("change",".exprdawc_conditional_operator",this.toggleConditionalValueField.bind(this)),e(document).on("change",".exprdawc_conditional_logic_field",this.toggleConditionalTable.bind(this)),e(document).on("click",".exprdawc_adjust_price_field",this.togglePriceAdjustmentTable.bind(this)),e(document).on("change keyup ",".field_option_table_value_td input",this.syncOptionValueToDefault.bind(this)),e(document).on("click",".exprdawc_copy_custom_field",this.exprdawc_copy_custom_field.bind(this)),e(document).on("change keyup","input.field_name",this.updateConditionalFieldOptions.bind(this)),this.toggleConditionalValueFieldAll(),this.initFieldTypeSettings(),e(".exprdawc_field_table tbody").sortable({items:"tr.exprdawc_fields_wrapper",cursor:"move",axis:"y",handle:".move",scrollSensitivity:40,forcePlaceholderSize:!0,helper:"clone",opacity:.65,placeholder:"wc-metabox-sortable-placeholder",start:function(e,t){t.item.css("background-color","#f6f6f6")},stop:function(e,t){t.item.removeAttr("style")},update:function(e,t){this.updateFieldIndices()}}),e(document).on("mouseenter",".exprdawc_options_table tbody",function(){e(this).sortable({items:"tr",cursor:"move",axis:"y",handle:".move",scrollSensitivity:40,forcePlaceholderSize:!0,helper:"clone",opacity:.65,placeholder:"wc-metabox-sortable-placeholder",start:function(e,t){t.item.css("background-color","#f6f6f6")},stop:function(e,t){t.item.removeAttr("style")}})}),e("#exprdawc_attribute_container").on("input",".exprdawc_attribute .exprdawc_attribute_input_name input",function(){var t=e(this).val(),a=e(this).closest(".exprdawc_attribute").find(".attribute_name");t&&a.text(t)})}addCustomField(){this.fieldIndex++,this.setDirty(),e("#exprdawc_field_body").append(`\n <tr class="exprdawc_fields_wrapper">\n <td colspan="5">\n <table class="exprdawc_fields_table" data-index="${this.fieldIndex}">\n\t <tbody>\n <tr class="exprdawc_attribute">\n <td class="move"><i class="dashicons dashicons-move"></i></td>\n <td class="cl-arr"><i class="dashicons dashicons-arrow-up toggle-options"></i></td>\n <td class="exprdawc_attribute_input_name">\n <input type="text" class="exprdawc_input exprdawc_textinput exprdawc_label field_name" name="extra_product_fields[${this.fieldIndex}][label]" placeholder="${exprdawc_admin_meta_boxes.label_placeholder}" />\n </td>\n <td>\n <select id="exprdawc_attribute_type_${this.fieldIndex}" name="extra_product_fields[${this.fieldIndex}][type]" class="exprdawc_attribute_type">\n <option value="text">${exprdawc_admin_meta_boxes.short_text}</option>\n <option value="long_text">${exprdawc_admin_meta_boxes.long_text}</option>\n <option value="email">${exprdawc_admin_meta_boxes.email}</option>\n <option value="number">${exprdawc_admin_meta_boxes.number}</option>\n <option value="date">${exprdawc_admin_meta_boxes.date}</option>\n <option value="yes-no">${exprdawc_admin_meta_boxes.yes_no}</option>\n <option value="radio">${exprdawc_admin_meta_boxes.radio}</option>\n <option value="checkbox">${exprdawc_admin_meta_boxes.checkbox}</option>\n <option value="select">${exprdawc_admin_meta_boxes.select}</option>\n </select>\n </td>\n <td>\n <button type="button" class="exprdawc_remove_custom_field button"><i class="dashicons dashicons-trash"></i></button>\n <button type="button" class="button exprdawc_copy_custom_field"><i class="dashicons dashicons-admin-page"></i></button>\n <input type="hidden" class="exprdawc_attribute_index" name="extra_product_fields[${this.fieldIndex}][index]" value="${this.fieldIndex}"/>\n </td>\n </tr>\n <tr class="exprdawc_options" style="display: none;">\n <td colspan="5">\n\n <table class="exprdawc_settings_table exprdawc_general_table">\n <tbody>\n\n \x3c!-- Text Area Option/Settings --\x3e\n <tr>\n <td class="exprdawc_attribute_require_checkbox">\n <label class="exprdawc_label" for="exprdawc_text_required_${this.fieldIndex}">\n <input type="checkbox" id="exprdawc_text_required_${this.fieldIndex}" class="exprdawc_input exprdawc_checkbox checkbox" name="extra_product_fields[${this.fieldIndex}][required]" value="1" />\n ${exprdawc_admin_meta_boxes.require_input}\n </label> \n <label class="exprdawc_label" for="exprdawc_text_autofocus_${this.fieldIndex}">\n <input type="checkbox" id="exprdawc_text_autofocus_${this.fieldIndex}" class="exprdawc_input exprdawc_checkbox checkbox" name="extra_product_fields[${this.fieldIndex}][autofocus]" value="1" />\n ${exprdawc_admin_meta_boxes.enable_autofocus}\n </label>\n <label class="exprdawc_label" for="exprdawc_text_editable_${this.fieldIndex}">\n <input type="checkbox" id="exprdawc_text_editable_${this.fieldIndex}" class="exprdawc_input exprdawc_checkbox exprdawc_editable_field checkbox" name="extra_product_fields[${this.fieldIndex}][editable]" value="1" />\n ${exprdawc_admin_meta_boxes.enable_editable}\n </label>\n\n \x3c!-- Enable Conditional Logic and show table --\x3e\n <label class="exprdawc_label" for="exprdawc_text_conditional_logic_${this.fieldIndex}">\n <input type="checkbox" id="exprdawc_text_conditional_logic_${this.fieldIndex}" class="exprdawc_input exprdawc_checkbox exprdawc_conditional_logic_field checkbox" name="extra_product_fields[${this.fieldIndex}][conditional_logic]" value="1" />\n ${exprdawc_admin_meta_boxes.enable_conditional_logic}\n </label>\n\n \x3c!-- Enable Price Adjustment and show table --\x3e\n <label class="exprdawc_label" for="exprdawc_text_price_adjustment_${this.fieldIndex}">\n <input type="checkbox" id="exprdawc_text_price_adjustment_${this.fieldIndex}" class="exprdawc_input exprdawc_checkbox exprdawc_adjust_price_field checkbox" name="extra_product_fields[${this.fieldIndex}][adjust_price]" value="1" />\n ${exprdawc_admin_meta_boxes.enable_price_adjustment}\n </label>\n\n </td>\n <td class="exprdawc_attribute_placeholder_text">\n <label class="exprdawc_label" for="exprdawc_text_placeholder_text_${this.fieldIndex}">${exprdawc_admin_meta_boxes.placeholder_text}</label>\n <input type="text" id="exprdawc_text_placeholder_text_${this.fieldIndex}" class="exprdawc_input exprdawc_textinput exprdawc_placeholder" name="extra_product_fields[${this.fieldIndex}][placeholder_text]" placeholder="${exprdawc_admin_meta_boxes.placeholder_text}" />\n </td>\n <td class="exprdawc_attribute_help_text">\n <label class="exprdawc_label" for="exprdawc_text_help_text_${this.fieldIndex}">${exprdawc_admin_meta_boxes.help_text}</label>\n <input type="text" id="exprdawc_text_help_text_${this.fieldIndex}" class="exprdawc_input exprdawc_textinput exprdawc_helptext" name="extra_product_fields[${this.fieldIndex}][help_text]" placeholder="${exprdawc_admin_meta_boxes.help_text}" />\n </td>\n <td>\n <label class="exprdawc_label" for="exprdawc_autocomplete_function_${this.fieldIndex}">${exprdawc_admin_meta_boxes.autocomplete_function}</label>\n <select id="exprdawc_autocomplete_function_${this.fieldIndex}" name="extra_product_fields[${this.fieldIndex}][autocomplete]" class="exprdawc_input exprdawc_attribute_type">\n <option value="on">${exprdawc_admin_meta_boxes.autocomplete_on}</option>\n <option value="off">${exprdawc_admin_meta_boxes.autocomplete_off}</option>\n <option value="address-level1">${exprdawc_admin_meta_boxes.address_level1}</option>\n <option value="address-level2">${exprdawc_admin_meta_boxes.address_level2}</option>\n <option value="address-level3">${exprdawc_admin_meta_boxes.address_level3}</option>\n <option value="address-level4">${exprdawc_admin_meta_boxes.address_level4}</option>\n <option value="address-line1">${exprdawc_admin_meta_boxes.address_line1}</option>\n <option value="address-line2">${exprdawc_admin_meta_boxes.address_line2}</option>\n <option value="address-line3">${exprdawc_admin_meta_boxes.address_line3}</option>\n <option value="bday">${exprdawc_admin_meta_boxes.bday}</option>\n <option value="bday-day">${exprdawc_admin_meta_boxes.bday_day}</option>\n <option value="bday-month">${exprdawc_admin_meta_boxes.bday_month}</option>\n <option value="bday-year">${exprdawc_admin_meta_boxes.bday_year}</option>\n <option value="cc-additional-name">${exprdawc_admin_meta_boxes.cc_additional_name}</option>\n <option value="cc-csc">${exprdawc_admin_meta_boxes.cc_csc}</option>\n <option value="cc-exp">${exprdawc_admin_meta_boxes.cc_exp}</option>\n <option value="cc-exp-month">${exprdawc_admin_meta_boxes.cc_exp_month}</option>\n <option value="cc-exp-year">${exprdawc_admin_meta_boxes.cc_exp_year}</option>\n <option value="cc-family-name">${exprdawc_admin_meta_boxes.cc_family_name}</option>\n <option value="cc-given-name">${exprdawc_admin_meta_boxes.cc_given_name}</option>\n <option value="cc-name">${exprdawc_admin_meta_boxes.cc_name}</option>\n <option value="cc-number">${exprdawc_admin_meta_boxes.cc_number}</option>\n <option value="cc-type">${exprdawc_admin_meta_boxes.cc_type}</option>\n <option value="country">${exprdawc_admin_meta_boxes.country}</option>\n <option value="country-name">${exprdawc_admin_meta_boxes.country_name}</option>\n <option value="email">${exprdawc_admin_meta_boxes.email}</option>\n <option value="language">${exprdawc_admin_meta_boxes.language}</option>\n <option value="photo">${exprdawc_admin_meta_boxes.photo}</option>\n <option value="postal-code">${exprdawc_admin_meta_boxes.postal_code}</option>\n <option value="sex">${exprdawc_admin_meta_boxes.sex}</option>\n <option value="street-address">${exprdawc_admin_meta_boxes.street_address}</option>\n <option value="tel">${exprdawc_admin_meta_boxes.tel}</option>\n <option value="tel-area-code">${exprdawc_admin_meta_boxes.tel_area_code}</option>\n <option value="tel-country-code">${exprdawc_admin_meta_boxes.tel_country_code}</option>\n <option value="tel-extension">${exprdawc_admin_meta_boxes.tel_extension}</option>\n <option value="tel-local">${exprdawc_admin_meta_boxes.tel_local}</option>\n <option value="tel-local-prefix">${exprdawc_admin_meta_boxes.tel_local_prefix}</option>\n <option value="tel-local-suffix">${exprdawc_admin_meta_boxes.tel_local_suffix}</option>\n <option value="tel-national">${exprdawc_admin_meta_boxes.tel_national}</option>\n <option value="transaction-amount">${exprdawc_admin_meta_boxes.transaction_amount}</option>\n <option value="transaction-currency">${exprdawc_admin_meta_boxes.transaction_currency}</option>\n <option value="url">${exprdawc_admin_meta_boxes.url}</option>\n </select>\n </td>\n </tr>\n </tbody>\n </table>\n <hr>\n\n \x3c!-- Price Adjustment --\x3e\n <table class="exprdawc_settings_table exprdawc_price_adjustment_table" style="display:none;">\n <tbody>\n <tr>\n <td>\n <label class="exprdawc_label" for="exprdawc_price_adjustment_type_${this.fieldIndex}">${exprdawc_admin_meta_boxes.price_adjustment_type}</label>\n <select id="exprdawc_price_adjustment_type_${this.fieldIndex}" name="extra_product_fields[${this.fieldIndex}][price_adjustment_type]" class="exprdawc_input exprdawc_price_adjustment_type">\n <option value="fixed">${exprdawc_admin_meta_boxes.fixed}</option>\n <option vlaue="quantity">${exprdawc_admin_meta_boxes.quantity}</option>\n <option value="percentage">${exprdawc_admin_meta_boxes.percentage}</option>\n </select>\n </td>\n <td>\n <label class="exprdawc_label" for="exprdawc_price_adjustment_value_${this.fieldIndex}">${exprdawc_admin_meta_boxes.price_adjustment_value}</label>\n <input type="number" id="exprdawc_price_adjustment_value_${this.fieldIndex}" class="exprdawc_input exprdawc_price_adjustment_value" placeholder="0.00" name="extra_product_fields[${this.fieldIndex}][price_adjustment_value]" value="0" />\n </td>\n </tr>\n </tbody>\n </table>\n\n \x3c!-- Conditional Logic --\x3e\n\t\t\t\t <table class="exprdawc_settings_table exprdawc_conditional_logic_table" style="display:none;">\n <tbody>\n <tr>\n <td colspan="3">\n <label class="exprdawc_label">${exprdawc_admin_meta_boxes.conditionals}</label>\n\t\t\t\t\t\t\t\t <p>${exprdawc_admin_meta_boxes.conditionals_description}</p>\n <div class="exprdawc_conditional_rules">\n <div class="exprdawc_rule_group_container">\n <div class="exprdawc_rule_group">\n <div class="exprdawc_rule">\n <select name="extra_product_fields[${this.fieldIndex}][conditional_rules][0][0][field]" class="exprdawc_input exprdawc_conditional_field">\n <option value="">${exprdawc_admin_meta_boxes.selectFieldNone}</option>\n ${this.getAllFieldsOptions()}\n </select>\n <select name="extra_product_fields[${this.fieldIndex}][conditional_rules][0][0][operator]" class="exprdawc_input exprdawc_conditional_operator">\n <option value="field_is_empty">${exprdawc_admin_meta_boxes.field_is_empty}</option>\n <option value="field_is_not_empty">${exprdawc_admin_meta_boxes.field_is_not_empty}</option>\n <option value="equals">${exprdawc_admin_meta_boxes.equals}</option>\n <option value="not_equals">${exprdawc_admin_meta_boxes.notEquals}</option>\n <option value="greater_than">${exprdawc_admin_meta_boxes.greaterThan}</option>\n <option value="less_than">${exprdawc_admin_meta_boxes.lessThan}</option>\n </select>\n <input type="text" name="extra_product_fields[${this.fieldIndex}][conditional_rules][0][0][value]" class="exprdawc_input exprdawc_conditional_value" placeholder="${exprdawc_admin_meta_boxes.enterValue}" style="display:none;" />\n <button type="button" class="button remove_rule"><i class="dashicons dashicons-trash"></i></button>\n <button type="button" class="button add_rule">${exprdawc_admin_meta_boxes.and}</button>\n </div>\n </div>\n </div>\n </div>\n </td> \n </tr>\n </tbody>\n </table>\n\n\n \x3c!-- Text Area Option/Settings --\x3e\n <table class="exprdawc_settings_table exprdawc_long_text_table" style="display:none;">\n <tbody>\n <tr>\n <td>\n <label class="exprdawc_label" for="exprdawc_long_text_rows_${this.fieldIndex}">${exprdawc_admin_meta_boxes.rows}</label>\n <input type="number" id="exprdawc_long_text_rows_${this.fieldIndex}" class="exprdawc_input exprdawc_long_text_rows" name="extra_product_fields[${this.fieldIndex}][rows]" value="2" />\n </td>\n <td>\n <label class="exprdawc_label" for="exprdawc_long_text_cols_${this.fieldIndex}">${exprdawc_admin_meta_boxes.columns}</label>\n <input type="number" id="exprdawc_long_text_cols_${this.fieldIndex}" class="exprdawc_input exprdawc_long_text_cols" name="extra_product_fields[${this.fieldIndex}][cols]" value="5" />\n </td>\n <td>\n <label class="exprdawc_label" for="exprdawc_long_text_default_${this.fieldIndex}">${exprdawc_admin_meta_boxes.default_value}</label>\n <textarea id="exprdawc_long_text_default_${this.fieldIndex}" class="exprdawc_textarea" rows="3" cols="30" placeholder="${exprdawc_admin_meta_boxes.enter_default_text}" name="extra_product_fields[${this.fieldIndex}][default]"></textarea>\n </td>\n </tr>\n </tbody>\n </table>\n\n \x3c!-- Text Option/Settings for radio, checkboxes and selects --\x3e\n <table class="exprdawc_settings_table exprdawc_text_table" style="display:none;">\n <tbody>\n <tr>\n <td>\n <label class="exprdawc_label" for="exprdawc_text_min_length_${this.fieldIndex}">${exprdawc_admin_meta_boxes.min_length}</label>\n <input type="number" id="exprdawc_text_min_length_${this.fieldIndex}" class="exprdawc_input exprdawc_text_min_length" name="extra_product_fields[${this.fieldIndex}][minlength]" value="0" />\n </td>\n <td>\n <label class="exprdawc_label" for="exprdawc_text_max_length_${this.fieldIndex}">${exprdawc_admin_meta_boxes.max_length}</label>\n <input type="number" id="exprdawc_text_max_length_${this.fieldIndex}" class="exprdawc_input exprdawc_text_max_length" name="extra_product_fields[${this.fieldIndex}][maxlength]" value="255" />\n </td>\n <td>\n <label class="exprdawc_label" for="exprdawc_text_default_${this.fieldIndex}">${exprdawc_admin_meta_boxes.default_value}</label>\n <input type="text" id="exprdawc_text_default_${this.fieldIndex}" class="exprdawc_input exprdawc_text_default" placeholder="${exprdawc_admin_meta_boxes.enter_default_text}" name="extra_product_fields[${this.fieldIndex}][default]" />\n </td>\n </tr>\n </tbody>\n </table>\n\n <table class="exprdawc_options_table" style="display:none;">\n <thead>\n <tr>\n <th></th>\n <th class="field_option_table_label_th">${exprdawc_admin_meta_boxes.option_label}</th>\n <th class="field_option_table_value_th">${exprdawc_admin_meta_boxes.option_value}</th>\n <th class="field_option_table_selected_th">${exprdawc_admin_meta_boxes.default_selected}</th>\n <th class="field_option_table_action_th">${exprdawc_admin_meta_boxes.action}</th>\n </tr>\n </thead>\n <tbody>\n \x3c!-- Options will be dynamically added here --\x3e\n </tbody>\n <tfoot>\n <tr>\n <td colspan="6">\n <button type="button" class="button add_option">${exprdawc_admin_meta_boxes.add_option}</button>\n </td>\n </tr>\n </tfoot>\n </table>\n <p class="exprdawc_no_entry_message" style="display: none;">${exprdawc_admin_meta_boxes.no_options}</p>\n </td>\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n `),this.noEntryContent(),this.updateFieldIndices(),e("#exprdawc_attribute_type_"+this.fieldIndex).trigger("change")}removeCustomField(t){return confirm(exprdawc_admin_meta_boxes.confirm_delete)&&(this.setDirty(),e(t.currentTarget).closest("tr").next(".exprdawc_options").remove(),e(t.currentTarget).closest("tr").remove(),this.updateFieldIndices(),this.noEntryContent()),!1}toggleOptions(t){this.setDirty();const a=e(t.currentTarget).closest("tr"),n=e(t.currentTarget).val(),d=a.next(".exprdawc_options"),i=d.find(".exprdawc_options_table"),o=d.find(".exprdawc_placeholder");"radio"===n||"checkbox"===n||"select"===n?(o.prop("disabled",!0),i.show(),d.find(".exprdawc_attribute_placeholder_text").hide()):(o.prop("disabled",!1),i.hide(),d.find(".exprdawc_attribute_placeholder_text").show()),"long_text"===e(t.currentTarget).val()?d.find(".exprdawc_long_text_table").show():d.find(".exprdawc_long_text_table").hide(),"text"===e(t.currentTarget).val()||"email"===e(t.currentTarget).val()||"number"===e(t.currentTarget).val()||"date"===e(t.currentTarget).val()?d.find(".exprdawc_text_table").show():d.find(".exprdawc_text_table").hide()}toggleOptionsTable(t){const a=e(t.currentTarget);a.closest("tr").next(".exprdawc_options").toggle(),a.toggleClass("dashicons-arrow-down dashicons-arrow-up")}openOptionsTable(t){const a=e(t.currentTarget).closest("tr.exprdawc_attribute"),n=a.next(".exprdawc_options"),d=a.find(".toggle-options");n.show(),d.removeClass("dashicons-arrow-up").addClass("dashicons-arrow-down")}addOption(t){this.setDirty();const a=e(t.currentTarget).closest(".exprdawc_options_table"),n=a.closest(".exprdawc_fields_table").data("index");if(null==n)return void console.error("exprdawc: actual_index is undefined or null",a);const d=a.find("tbody tr").length,i=a.closest(".exprdawc_fields_table").find(".exprdawc_attribute_type").val();let o="";a.closest(".exprdawc_options").find(".exprdawc_adjust_price_field").is(":checked")&&(o=`\n <td class="field_price_adjustment_type_${d} field_price_adjustment_type">\n <select name="extra_product_fields[${n}][options][${d}][price_adjustment_type]" class="exprdawc_input exprdawc_price_adjustment_type">\n <option value="fixed">${exprdawc_admin_meta_boxes.fixed}</option>\n <option value="quantity">${exprdawc_admin_meta_boxes.quantity}</option>\n <option value="percentage">${exprdawc_admin_meta_boxes.percentage}</option>\n </select>\n </td>\n <td class="field_price_adjustment_value_${d} field_price_adjustment_value">\n <input type="number" name="extra_product_fields[${n}][options][${d}][price_adjustment_value]" class="exprdawc_input exprdawc_price_adjustment_value" step="0.01" placeholder="0.00" value="0" />\n </td>\n `),"radio"===i||"select"===i?a.find("tbody").append(`\n <tr>\n <td class="move"><i class="dashicons dashicons-move"></i></td>\n <td class="field_option_table_label_td">\n <input type="text" name="extra_product_fields[${n}][options][${d}][label]" placeholder="${exprdawc_admin_meta_boxes.option_label_placeholder}" />\n </td>\n <td class="field_option_table_value_td">\n <input type="text" name="extra_product_fields[${n}][options][${d}][value]" placeholder="${exprdawc_admin_meta_boxes.option_value_placeholder}" />\n </td>\n <td class="field_option_table_selected_td">\n <input type="radio" name="extra_product_fields[${n}][default]" value="${d}" />\n </td>\n ${o}\n <td class="field_option_table_action_td">\n <button type="button" class="button remove_option">${exprdawc_admin_meta_boxes.remove}</button>\n </td>\n </tr>\n `):a.find("tbody").append(`\n <tr>\n <td class="move"><i class="dashicons dashicons-move"></i></td>\n <td class="field_option_table_label_td">\n <input type="text" name="extra_product_fields[${n}][options][${d}][label]" placeholder="${exprdawc_admin_meta_boxes.option_label_placeholder}" />\n </td>\n <td class="field_option_table_value_td">\n <input type="text" name="extra_product_fields[${n}][options][${d}][value]" placeholder="${exprdawc_admin_meta_boxes.option_value_placeholder}" />\n </td>\n <td class="field_option_table_selected_td">\n <input type="checkbox" name="extra_product_fields[${n}][options][${d}][default]" value="1" />\n </td>\n ${o}\n <td class="field_option_table_action_td">\n <button type="button" class="button remove_option">${exprdawc_admin_meta_boxes.remove}</button>\n </td>\n </tr>\n `),this.checkOptions(a.closest(".exprdawc_options"))}removeOption(t){return confirm(exprdawc_admin_meta_boxes.confirm_delete)&&(this.setDirty(),e(t.currentTarget).closest("tr").remove(),this.checkOptions(e(t.currentTarget).closest(".exprdawc_options"))),!1}checkOptions(e){const t=e.find(".exprdawc_options_table tbody"),a=e.find(".exprdawc_no_entry_message");0===t.find("tr").length?a.show():a.hide()}syncOptionValueToDefault(t){const a=e(t.currentTarget),n=a.closest("tr"),d=a.closest(".exprdawc_options_table"),i=d.find("tbody tr").index(n),o=d.closest(".exprdawc_fields_table").data("index");if(null==o)return void console.error("exprdawc: actualIndex is undefined or null",d);const l=a.val(),_=d.closest(".exprdawc_fields_table").find(".exprdawc_attribute_type").val();if("radio"===_||"select"===_){const e=d.find("tbody tr").eq(i).find('input[type="radio"]');if(e.length)e.val(l);else{const e=d.find('input[type="radio"][name^="extra_product_fields"]');e.length>i&&e.eq(i).val(l)}}}setDirty(){this.isDirty=!0,this.disableExportLink()}disableExportLink(){this.isDirty&&e(".exprdawc-export").hide()}noEntryContent(){var t=e("#exprdawc_field_body .exprdawc_attribute").length,a=e(".exprdawc_no_entry_message"),n=e("#exprdatawc_table_header"),d=e(".exprdawc-export");t>0?(a.hide(),n.show(),d.show()):(a.show(),n.hide(),d.hide())}checkAutocompleteField(t){const a=e(t.currentTarget);if(a.is(":checked")){const t=e(".exprdawc_autocomplete_field").not(a).filter(":checked");if(t.length>0){if(!confirm(exprdawc_admin_meta_boxes.sureAnotherAutocompleCheckedQuestion))return void a.prop("checked",!1);t.prop("checked",!1)}}}addRuleGroup(t){const a=e(t.currentTarget).closest(".exprdawc_conditional_logic_table").find(".exprdawc_conditional_rules"),n=a.find(".exprdawc_rule_group").length,d=e(t.currentTarget).closest(".exprdawc_fields_table").data("index"),i=this.getRuleGroupHtml(d,n);a.append(i)}addRule(t){const a=e(t.currentTarget).closest(".exprdawc_rule_group"),n=a.index(),d=e(t.currentTarget).closest(".exprdawc_fields_table").data("index"),i=a.find(".exprdawc_rule").length,o=this.getRuleHtml(d,n,i);a.append(o)}getRuleGroupHtml(e,t){return`\n <div class="exprdawc_rule_group_container">\n <h2>${exprdawc_admin_meta_boxes.or}</h2>\n <div class="exprdawc_rule_group">\n ${this.getRuleHtml(e,t,0)}\n </div>\n </div>\n `}getRuleHtml(e,t,a){return`\n <div class="exprdawc_rule">\n <select name="extra_product_fields[${e}][conditional_rules][${t}][${a}][field]" class="exprdawc_input exprdawc_conditional_field">\n <option value="">${exprdawc_admin_meta_boxes.selectFieldNone}</option>\n ${this.getAllFieldsOptions()}\n </select>\n <select name="extra_product_fields[${e}][conditional_rules][${t}][${a}][operator]" class="exprdawc_input exprdawc_conditional_operator">\n <option value="field_is_empty">${exprdawc_admin_meta_boxes.field_is_empty}</option>\n <option value="field_is_not_empty">${exprdawc_admin_meta_boxes.field_is_not_empty}</option>\n <option value="equals">${exprdawc_admin_meta_boxes.equals}</option>\n <option value="not_equals">${exprdawc_admin_meta_boxes.notEquals}</option>\n <option value="greater_than">${exprdawc_admin_meta_boxes.greaterThan}</option>\n <option value="less_than">${exprdawc_admin_meta_boxes.lessThan}</option>\n </select>\n <input type="text" name="extra_product_fields[${e}][conditional_rules][${t}][${a}][value]" class="exprdawc_input exprdawc_conditional_value" placeholder="${exprdawc_admin_meta_boxes.enterValue}" style="display:none;" />\n <button type="button" class="button remove_rule"><i class="dashicons dashicons-trash"></i></button>\n <button type="button" class="button add_rule">+ ${exprdawc_admin_meta_boxes.and}</button>\n </div>\n `}toggleConditionalValueField(t){const a=e(t.currentTarget),n=a.closest(".exprdawc_rule").find(".exprdawc_conditional_value");"field_changed"===a.val()||"field_is_empty"===a.val()||"field_is_not_empty"===a.val()?n.hide():n.show()}toggleConditionalValueFieldAll(){e(".exprdawc_conditional_operator").each((e,t)=>{this.toggleConditionalValueField({currentTarget:t})})}togglePriceAdjustmentTableAll(){e(".exprdawc_conditional_operator").each((e,t)=>{this.toggleConditionalTable({currentTarget:t})})}removeRule(t){if(confirm(exprdawc_admin_meta_boxes.confirm_delete_rule)){const a=e(t.currentTarget).closest(".exprdawc_rule_group_container");e(t.currentTarget).closest(".exprdawc_rule").remove(),0===a.find(".exprdawc_rule").length&&a.remove()}return!1}getAllFieldsOptions(){let t="";return e("#exprdawc_field_body tr.exprdawc_attribute").each(function(){const a=e(this).find(".exprdawc_attribute_input_name input").val();t+=`<option value="${a}">${a}</option>`}),t}toggleConditionalTable(t){const a=e(t.currentTarget),n=e(t.currentTarget).closest(".exprdawc_options").find(".exprdawc_conditional_logic_table");a.is(":checked")?n.show():n.hide()}togglePriceAdjustmentTable(t){const a=e(t.currentTarget),n=e(t.currentTarget).closest(".exprdawc_options").find(".exprdawc_price_adjustment_table"),d=e(t.currentTarget).closest(".exprdawc_fields_table").find(".exprdawc_attribute_type").val();if(console.log(d),"radio"!==d&&"checkbox"!==d&&"select"!==d)a.is(":checked")?n.show():n.hide(),e(".field_price_adjustment_type_th, .field_price_adjustment_val_th").remove(),e(".field_price_adjustment_type, .field_price_adjustment_value").remove();else{n.hide(),a.is(":checked")?(e(".field_price_adjustment_type_th, .field_price_adjustment_val_th").show(),e(".field_price_adjustment_type, .field_price_adjustment_value").show()):(e(".field_price_adjustment_type_th, .field_price_adjustment_val_th").hide(),e(".field_price_adjustment_type, .field_price_adjustment_value").hide());const d=e(t.currentTarget).closest(".exprdawc_options").find(".exprdawc_options_table");console.log(d);const i=d.find("tbody tr").length;0===d.find("thead th.field_price_adjustment_type_th").length?(console.log("Adding extra columns"),console.log(d.find("thead th.field_option_table_action_th")),d.find("thead th.field_option_table_action_th").before(`\n <th class="field_price_adjustment_type_th">${exprdawc_admin_meta_boxes.price_adjustment_type}</th>\n <th class="field_price_adjustment_val_th">${exprdawc_admin_meta_boxes.price_adjustment_value}</th>\n `)):console.log("Extra columns already exist"),d.find("tbody tr").each(function(){0===e(this).find(".field_price_adjustment_type").length&&e(this).find(".field_option_table_action_td").before(`\n <td class="field_price_adjustment_type_${i} field_price_adjustment_type">\n <select name="extra_product_fields[${this.fieldIndex}][options][${i}][price_adjustment_type]" class="exprdawc_input exprdawc_price_adjustment_type">\n <option value="fixed">${exprdawc_admin_meta_boxes.fixed}</option>\n <option value="quantity">${exprdawc_admin_meta_boxes.quantity}</option>\n <option value="percentage">${exprdawc_admin_meta_boxes.percentage}</option>\n </select>\n </td>\n <td class="field_price_adjustment_value_${i} field_price_adjustment_value">\n <input type="number" name="extra_product_fields[${this.fieldIndex}][options][${i}][price_adjustment_value]" class="exprdawc_input exprdawc_price_adjustment_value" placeholder="0.00" value="0" />\n </td>\n `)})}}initFieldTypeSettings(){e(".exprdawc_fields_wrapper").each((t,a)=>{const n=e(a).find(".exprdawc_attribute_type").val()||"text",d=e(a).find(".exprdawc_attribute_placeholder_text");"radio"===n||"checkbox"===n?d.hide():d.show()})}exprdawc_copy_custom_field(t){t.preventDefault(),this.setDirty();const a=e(t.currentTarget).closest(".exprdawc_fields_wrapper"),n=a.clone();n.find("input, select").each(function(){const t=e(this);if(t.hasClass("field_name")||t.hasClass("exprdawc_placeholder")){const e=t.val(),a=e.match(/\d+$/);if(a){const n=e.replace(/\d+$/,parseInt(a[0],10)+1);t.val(n)}}t.is("select.exprdawc_conditional_field")&&t.val()&&t.find("option:last").prop("selected",!0),t.removeClass("exprdawc-invalid-field")}),n.removeClass("exprdawc-validation-error"),a.after(n),e(".exprdawc_attribute_type").trigger("change"),this.updateFieldIndices(),this.updateConditionalFieldOptions()}updateConditionalFieldOptions(){const t=this.getAllFieldsOptions();e("select.exprdawc_conditional_field").each(function(){const a=e(this),n=a.val();a.html(t),a.val(n)})}updateFieldIndices(){e("#exprdawc_field_body tr.exprdawc_fields_wrapper").each((t,a)=>{e(a).find(".exprdawc_fields_table").attr("data-index",t),e(a).find("input, select").each(function(){const a=e(this),n=a.attr("name");n&&a.attr("name",n.replace(/\[\d+\]/,`[${t}]`));const d=a.attr("id");d&&a.attr("id",d.replace(/_\d+$/,`_${t}`))})})}bindFormValidation(){e("#post").on("submit",e=>{if(!this.validateFields())return e.preventDefault(),e.stopPropagation(),!1}),e("#publish, #save-post").on("click",e=>{if(!this.validateFields())return e.preventDefault(),e.stopPropagation(),!1})}validateFields(){const t=e("#exprdawc_field_body").find("tr.exprdawc_fields_wrapper");if(0===t.length)return!0;let a=!1;if(t.each((t,n)=>{const d=e(n),i=d.find("input.exprdawc_label");""===i.val().trim()?(a=!0,d.addClass("exprdawc-validation-error"),i.addClass("exprdawc-invalid-field")):(d.removeClass("exprdawc-validation-error"),i.removeClass("exprdawc-invalid-field"))}),a){console.log(exprdawc_admin_meta_boxes.validation_warning);const e=exprdawc_admin_meta_boxes.validation_warning;return alert(e),!1}return!0}}});12 constructor(){const t=e("#exprdawc_field_body").find("tr.exprdawc_attribute");this.fieldIndex=t.length,this.fieldIndex=e("#exprdawc_field_body tr.exprdawc_attribute").length,this.isDirty=!1,this.init()}init(){this.bindEvents(),this.noEntryContent(),this.bindFormValidation()}bindEvents(){e("#exprdawc_add_custom_field").on("click",this.addCustomField.bind(this)),e(document).on("click",".exprdawc_remove_custom_field",this.removeCustomField.bind(this)),e(document).on("change",".exprdawc_attribute_type",this.toggleOptions.bind(this)),e(document).on("click",".exprdawc_attribute_type",this.openOptionsTable.bind(this)),e(document).on("click",".exprdawc_attribute_input_name",this.openOptionsTable.bind(this)),e(document).on("click",".toggle-options",this.toggleOptionsTable.bind(this)),e(document).on("click",".add_option",this.addOption.bind(this)),e(document).on("click",".remove_option",this.removeOption.bind(this)),e(document).on("change",".exprdawc_input",this.setDirty.bind(this)),e(document).on("change",".exprdawc_autocomplete_field",this.checkAutocompleteField.bind(this)),e(document).on("click",".add_rule_group",this.addRuleGroup.bind(this)),e(document).on("click",".add_rule",this.addRule.bind(this)),e(document).on("click",".remove_rule",this.removeRule.bind(this)),e(document).on("change",".exprdawc_conditional_operator",this.toggleConditionalValueField.bind(this)),e(document).on("change",".exprdawc_conditional_logic_field",this.toggleConditionalTable.bind(this)),e(document).on("click",".exprdawc_adjust_price_field",this.togglePriceAdjustmentTable.bind(this)),e(document).on("change keyup keydown input",".field_option_table_value_td input",this.syncOptionValueToDefault.bind(this)),e(document).on("click",".exprdawc_copy_custom_field",this.exprdawc_copy_custom_field.bind(this)),e(document).on("change keyup keydown input","input.field_name",this.updateConditionalFieldOptions.bind(this)),this.toggleConditionalValueFieldAll(),this.initFieldTypeSettings(),e(".exprdawc_field_table tbody").sortable({items:"tr.exprdawc_fields_wrapper",cursor:"move",axis:"y",handle:".move",scrollSensitivity:40,forcePlaceholderSize:!0,helper:"clone",opacity:.65,placeholder:"wc-metabox-sortable-placeholder",start:function(e,t){t.item.css("background-color","#f6f6f6")},stop:function(e,t){t.item.removeAttr("style")},update:function(e,t){this.updateFieldIndices()}}),e(document).on("mouseenter",".exprdawc_options_table tbody",function(){e(this).sortable({items:"tr",cursor:"move",axis:"y",handle:".move",scrollSensitivity:40,forcePlaceholderSize:!0,helper:"clone",opacity:.65,placeholder:"wc-metabox-sortable-placeholder",start:function(e,t){t.item.css("background-color","#f6f6f6")},stop:function(e,t){t.item.removeAttr("style")}})}),e("#exprdawc_attribute_container").on("input",".exprdawc_attribute .exprdawc_attribute_input_name input",function(){var t=e(this).val(),a=e(this).closest(".exprdawc_attribute").find(".attribute_name");t&&a.text(t)})}addCustomField(){this.fieldIndex++,this.setDirty(),e("#exprdawc_field_body").append(`\n <tr class="exprdawc_fields_wrapper">\n <td colspan="5">\n <table class="exprdawc_fields_table" data-index="${this.fieldIndex}">\n\t <tbody>\n <tr class="exprdawc_attribute">\n <td class="move"><i class="dashicons dashicons-move"></i></td>\n <td class="cl-arr"><i class="dashicons dashicons-arrow-up toggle-options"></i></td>\n <td class="exprdawc_attribute_input_name">\n <input type="text" class="exprdawc_input exprdawc_textinput exprdawc_label field_name" name="extra_product_fields[${this.fieldIndex}][label]" placeholder="${exprdawc_admin_meta_boxes.label_placeholder}" />\n </td>\n <td>\n <select id="exprdawc_attribute_type_${this.fieldIndex}" name="extra_product_fields[${this.fieldIndex}][type]" class="exprdawc_attribute_type">\n <option value="text">${exprdawc_admin_meta_boxes.short_text}</option>\n <option value="long_text">${exprdawc_admin_meta_boxes.long_text}</option>\n <option value="email">${exprdawc_admin_meta_boxes.email}</option>\n <option value="number">${exprdawc_admin_meta_boxes.number}</option>\n <option value="date">${exprdawc_admin_meta_boxes.date}</option>\n <option value="yes-no">${exprdawc_admin_meta_boxes.yes_no}</option>\n <option value="radio">${exprdawc_admin_meta_boxes.radio}</option>\n <option value="checkbox">${exprdawc_admin_meta_boxes.checkbox}</option>\n <option value="select">${exprdawc_admin_meta_boxes.select}</option>\n </select>\n </td>\n <td>\n <button type="button" class="exprdawc_remove_custom_field button"><i class="dashicons dashicons-trash"></i></button>\n <button type="button" class="button exprdawc_copy_custom_field"><i class="dashicons dashicons-admin-page"></i></button>\n <input type="hidden" class="exprdawc_attribute_index" name="extra_product_fields[${this.fieldIndex}][index]" value="${this.fieldIndex}"/>\n </td>\n </tr>\n <tr class="exprdawc_options" style="display: none;">\n <td colspan="5">\n\n <table class="exprdawc_settings_table exprdawc_general_table">\n <tbody>\n\n \x3c!-- Text Area Option/Settings --\x3e\n <tr>\n <td class="exprdawc_attribute_require_checkbox">\n <label class="exprdawc_label" for="exprdawc_text_required_${this.fieldIndex}">\n <input type="checkbox" id="exprdawc_text_required_${this.fieldIndex}" class="exprdawc_input exprdawc_checkbox checkbox" name="extra_product_fields[${this.fieldIndex}][required]" value="1" />\n ${exprdawc_admin_meta_boxes.require_input}\n </label> \n <label class="exprdawc_label" for="exprdawc_text_autofocus_${this.fieldIndex}">\n <input type="checkbox" id="exprdawc_text_autofocus_${this.fieldIndex}" class="exprdawc_input exprdawc_checkbox checkbox" name="extra_product_fields[${this.fieldIndex}][autofocus]" value="1" />\n ${exprdawc_admin_meta_boxes.enable_autofocus}\n </label>\n <label class="exprdawc_label" for="exprdawc_text_editable_${this.fieldIndex}">\n <input type="checkbox" id="exprdawc_text_editable_${this.fieldIndex}" class="exprdawc_input exprdawc_checkbox exprdawc_editable_field checkbox" name="extra_product_fields[${this.fieldIndex}][editable]" value="1" />\n ${exprdawc_admin_meta_boxes.enable_editable}\n </label>\n\n \x3c!-- Enable Conditional Logic and show table --\x3e\n <label class="exprdawc_label" for="exprdawc_text_conditional_logic_${this.fieldIndex}">\n <input type="checkbox" id="exprdawc_text_conditional_logic_${this.fieldIndex}" class="exprdawc_input exprdawc_checkbox exprdawc_conditional_logic_field checkbox" name="extra_product_fields[${this.fieldIndex}][conditional_logic]" value="1" />\n ${exprdawc_admin_meta_boxes.enable_conditional_logic}\n </label>\n\n \x3c!-- Enable Price Adjustment and show table --\x3e\n <label class="exprdawc_label" for="exprdawc_text_price_adjustment_${this.fieldIndex}">\n <input type="checkbox" id="exprdawc_text_price_adjustment_${this.fieldIndex}" class="exprdawc_input exprdawc_checkbox exprdawc_adjust_price_field checkbox" name="extra_product_fields[${this.fieldIndex}][adjust_price]" value="1" />\n ${exprdawc_admin_meta_boxes.enable_price_adjustment}\n </label>\n\n </td>\n <td class="exprdawc_attribute_placeholder_text">\n <label class="exprdawc_label" for="exprdawc_text_placeholder_text_${this.fieldIndex}">${exprdawc_admin_meta_boxes.placeholder_text}</label>\n <input type="text" id="exprdawc_text_placeholder_text_${this.fieldIndex}" class="exprdawc_input exprdawc_textinput exprdawc_placeholder" name="extra_product_fields[${this.fieldIndex}][placeholder_text]" placeholder="${exprdawc_admin_meta_boxes.placeholder_text}" />\n </td>\n <td class="exprdawc_attribute_help_text">\n <label class="exprdawc_label" for="exprdawc_text_help_text_${this.fieldIndex}">${exprdawc_admin_meta_boxes.help_text}</label>\n <input type="text" id="exprdawc_text_help_text_${this.fieldIndex}" class="exprdawc_input exprdawc_textinput exprdawc_helptext" name="extra_product_fields[${this.fieldIndex}][help_text]" placeholder="${exprdawc_admin_meta_boxes.help_text}" />\n </td>\n <td>\n <label class="exprdawc_label" for="exprdawc_autocomplete_function_${this.fieldIndex}">${exprdawc_admin_meta_boxes.autocomplete_function}</label>\n <select id="exprdawc_autocomplete_function_${this.fieldIndex}" name="extra_product_fields[${this.fieldIndex}][autocomplete]" class="exprdawc_input exprdawc_attribute_type">\n <option value="on">${exprdawc_admin_meta_boxes.autocomplete_on}</option>\n <option value="off">${exprdawc_admin_meta_boxes.autocomplete_off}</option>\n <option value="address-level1">${exprdawc_admin_meta_boxes.address_level1}</option>\n <option value="address-level2">${exprdawc_admin_meta_boxes.address_level2}</option>\n <option value="address-level3">${exprdawc_admin_meta_boxes.address_level3}</option>\n <option value="address-level4">${exprdawc_admin_meta_boxes.address_level4}</option>\n <option value="address-line1">${exprdawc_admin_meta_boxes.address_line1}</option>\n <option value="address-line2">${exprdawc_admin_meta_boxes.address_line2}</option>\n <option value="address-line3">${exprdawc_admin_meta_boxes.address_line3}</option>\n <option value="bday">${exprdawc_admin_meta_boxes.bday}</option>\n <option value="bday-day">${exprdawc_admin_meta_boxes.bday_day}</option>\n <option value="bday-month">${exprdawc_admin_meta_boxes.bday_month}</option>\n <option value="bday-year">${exprdawc_admin_meta_boxes.bday_year}</option>\n <option value="cc-additional-name">${exprdawc_admin_meta_boxes.cc_additional_name}</option>\n <option value="cc-csc">${exprdawc_admin_meta_boxes.cc_csc}</option>\n <option value="cc-exp">${exprdawc_admin_meta_boxes.cc_exp}</option>\n <option value="cc-exp-month">${exprdawc_admin_meta_boxes.cc_exp_month}</option>\n <option value="cc-exp-year">${exprdawc_admin_meta_boxes.cc_exp_year}</option>\n <option value="cc-family-name">${exprdawc_admin_meta_boxes.cc_family_name}</option>\n <option value="cc-given-name">${exprdawc_admin_meta_boxes.cc_given_name}</option>\n <option value="cc-name">${exprdawc_admin_meta_boxes.cc_name}</option>\n <option value="cc-number">${exprdawc_admin_meta_boxes.cc_number}</option>\n <option value="cc-type">${exprdawc_admin_meta_boxes.cc_type}</option>\n <option value="country">${exprdawc_admin_meta_boxes.country}</option>\n <option value="country-name">${exprdawc_admin_meta_boxes.country_name}</option>\n <option value="email">${exprdawc_admin_meta_boxes.email}</option>\n <option value="language">${exprdawc_admin_meta_boxes.language}</option>\n <option value="photo">${exprdawc_admin_meta_boxes.photo}</option>\n <option value="postal-code">${exprdawc_admin_meta_boxes.postal_code}</option>\n <option value="sex">${exprdawc_admin_meta_boxes.sex}</option>\n <option value="street-address">${exprdawc_admin_meta_boxes.street_address}</option>\n <option value="tel">${exprdawc_admin_meta_boxes.tel}</option>\n <option value="tel-area-code">${exprdawc_admin_meta_boxes.tel_area_code}</option>\n <option value="tel-country-code">${exprdawc_admin_meta_boxes.tel_country_code}</option>\n <option value="tel-extension">${exprdawc_admin_meta_boxes.tel_extension}</option>\n <option value="tel-local">${exprdawc_admin_meta_boxes.tel_local}</option>\n <option value="tel-local-prefix">${exprdawc_admin_meta_boxes.tel_local_prefix}</option>\n <option value="tel-local-suffix">${exprdawc_admin_meta_boxes.tel_local_suffix}</option>\n <option value="tel-national">${exprdawc_admin_meta_boxes.tel_national}</option>\n <option value="transaction-amount">${exprdawc_admin_meta_boxes.transaction_amount}</option>\n <option value="transaction-currency">${exprdawc_admin_meta_boxes.transaction_currency}</option>\n <option value="url">${exprdawc_admin_meta_boxes.url}</option>\n </select>\n </td>\n </tr>\n </tbody>\n </table>\n <hr>\n\n \x3c!-- Price Adjustment --\x3e\n <table class="exprdawc_settings_table exprdawc_price_adjustment_table" style="display:none;">\n <tbody>\n <tr>\n <td>\n <label class="exprdawc_label" for="exprdawc_price_adjustment_type_${this.fieldIndex}">${exprdawc_admin_meta_boxes.price_adjustment_type}</label>\n <select id="exprdawc_price_adjustment_type_${this.fieldIndex}" name="extra_product_fields[${this.fieldIndex}][price_adjustment_type]" class="exprdawc_input exprdawc_price_adjustment_type">\n <option value="fixed">${exprdawc_admin_meta_boxes.fixed}</option>\n <option vlaue="quantity">${exprdawc_admin_meta_boxes.quantity}</option>\n <option value="percentage">${exprdawc_admin_meta_boxes.percentage}</option>\n </select>\n </td>\n <td>\n <label class="exprdawc_label" for="exprdawc_price_adjustment_value_${this.fieldIndex}">${exprdawc_admin_meta_boxes.price_adjustment_value}</label>\n <input type="number" id="exprdawc_price_adjustment_value_${this.fieldIndex}" class="exprdawc_input exprdawc_price_adjustment_value" placeholder="0.00" name="extra_product_fields[${this.fieldIndex}][price_adjustment_value]" value="0" />\n </td>\n </tr>\n </tbody>\n </table>\n\n \x3c!-- Conditional Logic --\x3e\n\t\t\t\t <table class="exprdawc_settings_table exprdawc_conditional_logic_table" style="display:none;">\n <tbody>\n <tr>\n <td colspan="3">\n <label class="exprdawc_label">${exprdawc_admin_meta_boxes.conditionals}</label>\n\t\t\t\t\t\t\t\t <p>${exprdawc_admin_meta_boxes.conditionals_description}</p>\n <div class="exprdawc_conditional_rules">\n <div class="exprdawc_rule_group_container">\n <div class="exprdawc_rule_group">\n <div class="exprdawc_rule">\n <select name="extra_product_fields[${this.fieldIndex}][conditional_rules][0][0][field]" class="exprdawc_input exprdawc_conditional_field">\n <option value="">${exprdawc_admin_meta_boxes.selectFieldNone}</option>\n ${this.getAllFieldsOptions()}\n </select>\n <select name="extra_product_fields[${this.fieldIndex}][conditional_rules][0][0][operator]" class="exprdawc_input exprdawc_conditional_operator">\n <option value="field_is_empty">${exprdawc_admin_meta_boxes.field_is_empty}</option>\n <option value="field_is_not_empty">${exprdawc_admin_meta_boxes.field_is_not_empty}</option>\n <option value="equals">${exprdawc_admin_meta_boxes.equals}</option>\n <option value="not_equals">${exprdawc_admin_meta_boxes.notEquals}</option>\n <option value="greater_than">${exprdawc_admin_meta_boxes.greaterThan}</option>\n <option value="less_than">${exprdawc_admin_meta_boxes.lessThan}</option>\n </select>\n <input type="text" name="extra_product_fields[${this.fieldIndex}][conditional_rules][0][0][value]" class="exprdawc_input exprdawc_conditional_value" placeholder="${exprdawc_admin_meta_boxes.enterValue}" style="display:none;" />\n <button type="button" class="button remove_rule"><i class="dashicons dashicons-trash"></i></button>\n <button type="button" class="button add_rule">${exprdawc_admin_meta_boxes.and}</button>\n </div>\n </div>\n </div>\n </div>\n </td> \n </tr>\n </tbody>\n </table>\n\n\n \x3c!-- Text Area Option/Settings --\x3e\n <table class="exprdawc_settings_table exprdawc_long_text_table" style="display:none;">\n <tbody>\n <tr>\n <td>\n <label class="exprdawc_label" for="exprdawc_long_text_rows_${this.fieldIndex}">${exprdawc_admin_meta_boxes.rows}</label>\n <input type="number" id="exprdawc_long_text_rows_${this.fieldIndex}" class="exprdawc_input exprdawc_long_text_rows" name="extra_product_fields[${this.fieldIndex}][rows]" value="2" />\n </td>\n <td>\n <label class="exprdawc_label" for="exprdawc_long_text_cols_${this.fieldIndex}">${exprdawc_admin_meta_boxes.columns}</label>\n <input type="number" id="exprdawc_long_text_cols_${this.fieldIndex}" class="exprdawc_input exprdawc_long_text_cols" name="extra_product_fields[${this.fieldIndex}][cols]" value="5" />\n </td>\n <td>\n <label class="exprdawc_label" for="exprdawc_long_text_default_${this.fieldIndex}">${exprdawc_admin_meta_boxes.default_value}</label>\n <textarea id="exprdawc_long_text_default_${this.fieldIndex}" class="exprdawc_textarea" rows="3" cols="30" placeholder="${exprdawc_admin_meta_boxes.enter_default_text}" name="extra_product_fields[${this.fieldIndex}][default]"></textarea>\n </td>\n </tr>\n </tbody>\n </table>\n\n \x3c!-- Text Option/Settings for radio, checkboxes and selects --\x3e\n <table class="exprdawc_settings_table exprdawc_text_table" style="display:none;">\n <tbody>\n <tr>\n <td>\n <label class="exprdawc_label" for="exprdawc_text_min_length_${this.fieldIndex}">${exprdawc_admin_meta_boxes.min_length}</label>\n <input type="number" id="exprdawc_text_min_length_${this.fieldIndex}" class="exprdawc_input exprdawc_text_min_length" name="extra_product_fields[${this.fieldIndex}][minlength]" value="0" />\n </td>\n <td>\n <label class="exprdawc_label" for="exprdawc_text_max_length_${this.fieldIndex}">${exprdawc_admin_meta_boxes.max_length}</label>\n <input type="number" id="exprdawc_text_max_length_${this.fieldIndex}" class="exprdawc_input exprdawc_text_max_length" name="extra_product_fields[${this.fieldIndex}][maxlength]" value="255" />\n </td>\n <td>\n <label class="exprdawc_label" for="exprdawc_text_default_${this.fieldIndex}">${exprdawc_admin_meta_boxes.default_value}</label>\n <input type="text" id="exprdawc_text_default_${this.fieldIndex}" class="exprdawc_input exprdawc_text_default" placeholder="${exprdawc_admin_meta_boxes.enter_default_text}" name="extra_product_fields[${this.fieldIndex}][default]" />\n </td>\n </tr>\n </tbody>\n </table>\n\n <table class="exprdawc_options_table" style="display:none;">\n <thead>\n <tr>\n <th></th>\n <th class="field_option_table_label_th">${exprdawc_admin_meta_boxes.option_label}</th>\n <th class="field_option_table_value_th">${exprdawc_admin_meta_boxes.option_value}</th>\n <th class="field_option_table_selected_th">${exprdawc_admin_meta_boxes.default_selected}</th>\n <th class="field_option_table_action_th">${exprdawc_admin_meta_boxes.action}</th>\n </tr>\n </thead>\n <tbody>\n \x3c!-- Options will be dynamically added here --\x3e\n </tbody>\n <tfoot>\n <tr>\n <td colspan="6">\n <button type="button" class="button add_option">${exprdawc_admin_meta_boxes.add_option}</button>\n </td>\n </tr>\n </tfoot>\n </table>\n <p class="exprdawc_no_entry_message" style="display: none;">${exprdawc_admin_meta_boxes.no_options}</p>\n </td>\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n `),this.noEntryContent(),this.updateFieldIndices(),e("#exprdawc_attribute_type_"+this.fieldIndex).trigger("change")}removeCustomField(t){return confirm(exprdawc_admin_meta_boxes.confirm_delete)&&(this.setDirty(),e(t.currentTarget).closest("tr").next(".exprdawc_options").remove(),e(t.currentTarget).closest("tr").remove(),this.updateFieldIndices(),this.noEntryContent()),!1}toggleOptions(t){this.setDirty();const a=e(t.currentTarget).closest("tr"),n=e(t.currentTarget).val(),d=a.next(".exprdawc_options"),i=d.find(".exprdawc_options_table"),o=d.find(".exprdawc_placeholder");"radio"===n||"checkbox"===n||"select"===n?(o.prop("disabled",!0),i.show(),d.find(".exprdawc_attribute_placeholder_text").hide()):(o.prop("disabled",!1),i.hide(),d.find(".exprdawc_attribute_placeholder_text").show()),"long_text"===e(t.currentTarget).val()?d.find(".exprdawc_long_text_table").show():d.find(".exprdawc_long_text_table").hide(),"text"===e(t.currentTarget).val()||"email"===e(t.currentTarget).val()||"number"===e(t.currentTarget).val()||"date"===e(t.currentTarget).val()?d.find(".exprdawc_text_table").show():d.find(".exprdawc_text_table").hide()}toggleOptionsTable(t){const a=e(t.currentTarget);a.closest("tr").next(".exprdawc_options").toggle(),a.toggleClass("dashicons-arrow-down dashicons-arrow-up")}openOptionsTable(t){const a=e(t.currentTarget).closest("tr.exprdawc_attribute"),n=a.next(".exprdawc_options"),d=a.find(".toggle-options");n.show(),d.removeClass("dashicons-arrow-up").addClass("dashicons-arrow-down")}addOption(t){this.setDirty();const a=e(t.currentTarget).closest(".exprdawc_options_table"),n=a.closest(".exprdawc_fields_table").data("index");if(null==n)return void console.error("exprdawc: actual_index is undefined or null",a);const d=a.find("tbody tr").length,i=a.closest(".exprdawc_fields_table").find(".exprdawc_attribute_type").val();let o="";a.closest(".exprdawc_options").find(".exprdawc_adjust_price_field").is(":checked")&&(o=`\n <td class="field_price_adjustment_type_${d} field_price_adjustment_type">\n <select name="extra_product_fields[${n}][options][${d}][price_adjustment_type]" class="exprdawc_input exprdawc_price_adjustment_type">\n <option value="fixed">${exprdawc_admin_meta_boxes.fixed}</option>\n <option value="quantity">${exprdawc_admin_meta_boxes.quantity}</option>\n <option value="percentage">${exprdawc_admin_meta_boxes.percentage}</option>\n </select>\n </td>\n <td class="field_price_adjustment_value_${d} field_price_adjustment_value">\n <input type="number" name="extra_product_fields[${n}][options][${d}][price_adjustment_value]" class="exprdawc_input exprdawc_price_adjustment_value" step="0.01" placeholder="0.00" value="0" />\n </td>\n `),"radio"===i||"select"===i?a.find("tbody").append(`\n <tr>\n <td class="move"><i class="dashicons dashicons-move"></i></td>\n <td class="field_option_table_label_td">\n <input type="text" name="extra_product_fields[${n}][options][${d}][label]" placeholder="${exprdawc_admin_meta_boxes.option_label_placeholder}" />\n </td>\n <td class="field_option_table_value_td">\n <input type="text" name="extra_product_fields[${n}][options][${d}][value]" placeholder="${exprdawc_admin_meta_boxes.option_value_placeholder}" />\n </td>\n <td class="field_option_table_selected_td">\n <input type="radio" name="extra_product_fields[${n}][default]" value="${d}" />\n </td>\n ${o}\n <td class="field_option_table_action_td">\n <button type="button" class="button remove_option">${exprdawc_admin_meta_boxes.remove}</button>\n </td>\n </tr>\n `):a.find("tbody").append(`\n <tr>\n <td class="move"><i class="dashicons dashicons-move"></i></td>\n <td class="field_option_table_label_td">\n <input type="text" name="extra_product_fields[${n}][options][${d}][label]" placeholder="${exprdawc_admin_meta_boxes.option_label_placeholder}" />\n </td>\n <td class="field_option_table_value_td">\n <input type="text" name="extra_product_fields[${n}][options][${d}][value]" placeholder="${exprdawc_admin_meta_boxes.option_value_placeholder}" />\n </td>\n <td class="field_option_table_selected_td">\n <input type="checkbox" name="extra_product_fields[${n}][options][${d}][default]" value="1" />\n </td>\n ${o}\n <td class="field_option_table_action_td">\n <button type="button" class="button remove_option">${exprdawc_admin_meta_boxes.remove}</button>\n </td>\n </tr>\n `),this.checkOptions(a.closest(".exprdawc_options"))}removeOption(t){return confirm(exprdawc_admin_meta_boxes.confirm_delete)&&(this.setDirty(),e(t.currentTarget).closest("tr").remove(),this.checkOptions(e(t.currentTarget).closest(".exprdawc_options"))),!1}checkOptions(e){const t=e.find(".exprdawc_options_table tbody"),a=e.find(".exprdawc_no_entry_message");0===t.find("tr").length?a.show():a.hide()}syncOptionValueToDefault(t){const a=e(t.currentTarget),n=a.closest("tr"),d=a.closest(".exprdawc_options_table"),i=d.find("tbody tr").index(n),o=d.closest(".exprdawc_fields_table").data("index");if(null==o)return void console.error("exprdawc: actualIndex is undefined or null",d);const l=a.val(),_=d.closest(".exprdawc_fields_table").find(".exprdawc_attribute_type").val();if("radio"===_||"select"===_){const e=d.find("tbody tr").eq(i).find('input[type="radio"]');if(e.length)e.val(l);else{const e=d.find('input[type="radio"][name^="extra_product_fields"]');e.length>i&&e.eq(i).val(l)}}}setDirty(){this.isDirty=!0,this.disableExportLink()}disableExportLink(){this.isDirty&&e(".exprdawc-export").hide()}noEntryContent(){var t=e("#exprdawc_field_body .exprdawc_attribute").length,a=e(".exprdawc_no_entry_message"),n=e("#exprdatawc_table_header"),d=e(".exprdawc-export");t>0?(a.hide(),n.show(),d.show()):(a.show(),n.hide(),d.hide())}checkAutocompleteField(t){const a=e(t.currentTarget);if(a.is(":checked")){const t=e(".exprdawc_autocomplete_field").not(a).filter(":checked");if(t.length>0){if(!confirm(exprdawc_admin_meta_boxes.sureAnotherAutocompleCheckedQuestion))return void a.prop("checked",!1);t.prop("checked",!1)}}}addRuleGroup(t){const a=e(t.currentTarget).closest(".exprdawc_conditional_logic_table").find(".exprdawc_conditional_rules"),n=a.find(".exprdawc_rule_group").length,d=e(t.currentTarget).closest(".exprdawc_fields_table").data("index"),i=this.getRuleGroupHtml(d,n);a.append(i)}addRule(t){const a=e(t.currentTarget).closest(".exprdawc_rule_group"),n=a.index(),d=e(t.currentTarget).closest(".exprdawc_fields_table").data("index"),i=a.find(".exprdawc_rule").length,o=this.getRuleHtml(d,n,i);a.append(o)}getRuleGroupHtml(e,t){return`\n <div class="exprdawc_rule_group_container">\n <h2>${exprdawc_admin_meta_boxes.or}</h2>\n <div class="exprdawc_rule_group">\n ${this.getRuleHtml(e,t,0)}\n </div>\n </div>\n `}getRuleHtml(e,t,a){return`\n <div class="exprdawc_rule">\n <select name="extra_product_fields[${e}][conditional_rules][${t}][${a}][field]" class="exprdawc_input exprdawc_conditional_field">\n <option value="">${exprdawc_admin_meta_boxes.selectFieldNone}</option>\n ${this.getAllFieldsOptions()}\n </select>\n <select name="extra_product_fields[${e}][conditional_rules][${t}][${a}][operator]" class="exprdawc_input exprdawc_conditional_operator">\n <option value="field_is_empty">${exprdawc_admin_meta_boxes.field_is_empty}</option>\n <option value="field_is_not_empty">${exprdawc_admin_meta_boxes.field_is_not_empty}</option>\n <option value="equals">${exprdawc_admin_meta_boxes.equals}</option>\n <option value="not_equals">${exprdawc_admin_meta_boxes.notEquals}</option>\n <option value="greater_than">${exprdawc_admin_meta_boxes.greaterThan}</option>\n <option value="less_than">${exprdawc_admin_meta_boxes.lessThan}</option>\n </select>\n <input type="text" name="extra_product_fields[${e}][conditional_rules][${t}][${a}][value]" class="exprdawc_input exprdawc_conditional_value" placeholder="${exprdawc_admin_meta_boxes.enterValue}" style="display:none;" />\n <button type="button" class="button remove_rule"><i class="dashicons dashicons-trash"></i></button>\n <button type="button" class="button add_rule">+ ${exprdawc_admin_meta_boxes.and}</button>\n </div>\n `}toggleConditionalValueField(t){const a=e(t.currentTarget),n=a.closest(".exprdawc_rule").find(".exprdawc_conditional_value");"field_changed"===a.val()||"field_is_empty"===a.val()||"field_is_not_empty"===a.val()?n.hide():n.show()}toggleConditionalValueFieldAll(){e(".exprdawc_conditional_operator").each((e,t)=>{this.toggleConditionalValueField({currentTarget:t})})}togglePriceAdjustmentTableAll(){e(".exprdawc_conditional_operator").each((e,t)=>{this.toggleConditionalTable({currentTarget:t})})}removeRule(t){if(confirm(exprdawc_admin_meta_boxes.confirm_delete_rule)){const a=e(t.currentTarget).closest(".exprdawc_rule_group_container");e(t.currentTarget).closest(".exprdawc_rule").remove(),0===a.find(".exprdawc_rule").length&&a.remove()}return!1}getAllFieldsOptions(){let t="";return e("#exprdawc_field_body tr.exprdawc_attribute").each(function(){const a=e(this).find(".exprdawc_attribute_input_name input").val();t+=`<option value="${a}">${a}</option>`}),t}toggleConditionalTable(t){const a=e(t.currentTarget),n=e(t.currentTarget).closest(".exprdawc_options").find(".exprdawc_conditional_logic_table");a.is(":checked")?n.show():n.hide()}togglePriceAdjustmentTable(t){const a=e(t.currentTarget),n=e(t.currentTarget).closest(".exprdawc_options").find(".exprdawc_price_adjustment_table"),d=e(t.currentTarget).closest(".exprdawc_fields_table").find(".exprdawc_attribute_type").val();if(console.log(d),"radio"!==d&&"checkbox"!==d&&"select"!==d)a.is(":checked")?n.show():n.hide(),e(".field_price_adjustment_type_th, .field_price_adjustment_val_th").remove(),e(".field_price_adjustment_type, .field_price_adjustment_value").remove();else{n.hide(),a.is(":checked")?(e(".field_price_adjustment_type_th, .field_price_adjustment_val_th").show(),e(".field_price_adjustment_type, .field_price_adjustment_value").show()):(e(".field_price_adjustment_type_th, .field_price_adjustment_val_th").hide(),e(".field_price_adjustment_type, .field_price_adjustment_value").hide());const d=e(t.currentTarget).closest(".exprdawc_options").find(".exprdawc_options_table");console.log(d);const i=d.find("tbody tr").length;0===d.find("thead th.field_price_adjustment_type_th").length?(console.log("Adding extra columns"),console.log(d.find("thead th.field_option_table_action_th")),d.find("thead th.field_option_table_action_th").before(`\n <th class="field_price_adjustment_type_th">${exprdawc_admin_meta_boxes.price_adjustment_type}</th>\n <th class="field_price_adjustment_val_th">${exprdawc_admin_meta_boxes.price_adjustment_value}</th>\n `)):console.log("Extra columns already exist"),d.find("tbody tr").each(function(){0===e(this).find(".field_price_adjustment_type").length&&e(this).find(".field_option_table_action_td").before(`\n <td class="field_price_adjustment_type_${i} field_price_adjustment_type">\n <select name="extra_product_fields[${this.fieldIndex}][options][${i}][price_adjustment_type]" class="exprdawc_input exprdawc_price_adjustment_type">\n <option value="fixed">${exprdawc_admin_meta_boxes.fixed}</option>\n <option value="quantity">${exprdawc_admin_meta_boxes.quantity}</option>\n <option value="percentage">${exprdawc_admin_meta_boxes.percentage}</option>\n </select>\n </td>\n <td class="field_price_adjustment_value_${i} field_price_adjustment_value">\n <input type="number" name="extra_product_fields[${this.fieldIndex}][options][${i}][price_adjustment_value]" class="exprdawc_input exprdawc_price_adjustment_value" placeholder="0.00" value="0" />\n </td>\n `)})}}initFieldTypeSettings(){e(".exprdawc_fields_wrapper").each((t,a)=>{const n=e(a).find(".exprdawc_attribute_type").val()||"text",d=e(a).find(".exprdawc_attribute_placeholder_text");"radio"===n||"checkbox"===n?d.hide():d.show()})}exprdawc_copy_custom_field(t){t.preventDefault(),this.setDirty();const a=e(t.currentTarget).closest(".exprdawc_fields_wrapper"),n=a.clone();n.find("input, select").each(function(){const t=e(this);if(t.hasClass("field_name")||t.hasClass("exprdawc_placeholder")){const e=t.val(),a=e.match(/\d+$/);if(a){const n=e.replace(/\d+$/,parseInt(a[0],10)+1);t.val(n)}}t.is("select.exprdawc_conditional_field")&&t.val()&&t.find("option:last").prop("selected",!0),t.removeClass("exprdawc-invalid-field")}),n.removeClass("exprdawc-validation-error"),a.after(n),e(".exprdawc_attribute_type").trigger("change"),this.updateFieldIndices(),this.updateConditionalFieldOptions()}updateConditionalFieldOptions(){const t=this.getAllFieldsOptions();e("select.exprdawc_conditional_field").each(function(){const a=e(this),n=a.val();a.html(t),a.val(n)})}updateFieldIndices(){e("#exprdawc_field_body tr.exprdawc_fields_wrapper").each((t,a)=>{e(a).find(".exprdawc_fields_table").attr("data-index",t),e(a).find("input, select").each(function(){const a=e(this),n=a.attr("name");n&&a.attr("name",n.replace(/\[\d+\]/,`[${t}]`));const d=a.attr("id");d&&a.attr("id",d.replace(/_\d+$/,`_${t}`))})})}bindFormValidation(){e("#post").on("submit",e=>{if(!this.validateFields())return e.preventDefault(),e.stopPropagation(),!1}),e("#publish, #save-post").on("click",e=>{if(!this.validateFields())return e.preventDefault(),e.stopPropagation(),!1})}validateFields(){const t=e("#exprdawc_field_body").find("tr.exprdawc_fields_wrapper");if(0===t.length)return!0;let a=!1;if(t.each((t,n)=>{const d=e(n),i=d.find("input.exprdawc_label");""===i.val().trim()?(a=!0,d.addClass("exprdawc-validation-error"),i.addClass("exprdawc-invalid-field")):(d.removeClass("exprdawc-validation-error"),i.removeClass("exprdawc-invalid-field"))}),a){console.log(exprdawc_admin_meta_boxes.validation_warning);const e=exprdawc_admin_meta_boxes.validation_warning;return alert(e),!1}return!0}}}); -
extra-product-data-for-woocommerce/trunk/extra-product-data-for-woocommerce.php
r3469202 r3474408 3 3 * Plugin Name: Extra Product Data for WooCommerce 4 4 * Description: Adds customizable input fields per product in WooCommerce, allowing users to enter extra details on the frontend . 5 * Version: 2.0. 15 * Version: 2.0.2 6 6 * Author: Triopsi 7 7 * Author URI: https:// triopsi.dev -
extra-product-data-for-woocommerce/trunk/readme.txt
r3469202 r3474408 5 5 Tested up to: 6.7 6 6 Requires PHP: 8.2 7 Stable tag: 2.0. 17 Stable tag: 2.0.2 8 8 License: GPLv2 or later 9 9 License URI: https://www.gnu.org/licenses/gpl-2.0.html … … 185 185 = 2.0.1 (25.02.2026) = 186 186 * Fix and Bump Version to wg.org 187 188 = 2.0.2 (04.03.2026) = 189 * Fix: Radio default on admin product page now also listens to input event -
extra-product-data-for-woocommerce/trunk/src/assets/js/wc-meta-boxes-product.js
r3469202 r3474408 66 66 $(document).on('change', '.exprdawc_conditional_logic_field', this.toggleConditionalTable.bind(this)); 67 67 $(document).on('click', '.exprdawc_adjust_price_field', this.togglePriceAdjustmentTable.bind(this)); 68 $(document).on('change keyup ', '.field_option_table_value_td input', this.syncOptionValueToDefault.bind(this));68 $(document).on('change keyup keydown input', '.field_option_table_value_td input', this.syncOptionValueToDefault.bind(this)); 69 69 $(document).on('click', '.exprdawc_copy_custom_field', this.exprdawc_copy_custom_field.bind(this)); 70 $(document).on('change keyup ', 'input.field_name', this.updateConditionalFieldOptions.bind(this));70 $(document).on('change keyup keydown input', 'input.field_name', this.updateConditionalFieldOptions.bind(this)); 71 71 72 72 // Inits -
extra-product-data-for-woocommerce/trunk/src/constants.php
r3469202 r3474408 30 30 31 31 // Useful global constants. 32 $version = '2.0. 1';32 $version = '2.0.2'; 33 33 define( 'EXPRDAWC_VERSION', $version ); 34 34 define( 'EXPRDAWC_PLUGIN_MAIN_FILE', 'extra-product-data-for-woocommerce.php' ); -
extra-product-data-for-woocommerce/trunk/vendor/autoload.php
r3469202 r3474408 20 20 require_once __DIR__ . '/composer/autoload_real.php'; 21 21 22 return ComposerAutoloaderInit ba855de335642eb08732e8874f52c56f::getLoader();22 return ComposerAutoloaderInit605971a92764ca4946e1fc35fff9aa18::getLoader(); -
extra-product-data-for-woocommerce/trunk/vendor/composer/autoload_real.php
r3469202 r3474408 3 3 // autoload_real.php @generated by Composer 4 4 5 class ComposerAutoloaderInit ba855de335642eb08732e8874f52c56f5 class ComposerAutoloaderInit605971a92764ca4946e1fc35fff9aa18 6 6 { 7 7 private static $loader; … … 25 25 require __DIR__ . '/platform_check.php'; 26 26 27 spl_autoload_register(array('ComposerAutoloaderInit ba855de335642eb08732e8874f52c56f', 'loadClassLoader'), true, true);27 spl_autoload_register(array('ComposerAutoloaderInit605971a92764ca4946e1fc35fff9aa18', 'loadClassLoader'), true, true); 28 28 self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(__DIR__)); 29 spl_autoload_unregister(array('ComposerAutoloaderInit ba855de335642eb08732e8874f52c56f', 'loadClassLoader'));29 spl_autoload_unregister(array('ComposerAutoloaderInit605971a92764ca4946e1fc35fff9aa18', 'loadClassLoader')); 30 30 31 31 require __DIR__ . '/autoload_static.php'; 32 call_user_func(\Composer\Autoload\ComposerStaticInit ba855de335642eb08732e8874f52c56f::getInitializer($loader));32 call_user_func(\Composer\Autoload\ComposerStaticInit605971a92764ca4946e1fc35fff9aa18::getInitializer($loader)); 33 33 34 34 $loader->register(true); -
extra-product-data-for-woocommerce/trunk/vendor/composer/autoload_static.php
r3469202 r3474408 5 5 namespace Composer\Autoload; 6 6 7 class ComposerStaticInit ba855de335642eb08732e8874f52c56f7 class ComposerStaticInit605971a92764ca4946e1fc35fff9aa18 8 8 { 9 9 public static $prefixLengthsPsr4 = array ( … … 39 39 { 40 40 return \Closure::bind(function () use ($loader) { 41 $loader->prefixLengthsPsr4 = ComposerStaticInit ba855de335642eb08732e8874f52c56f::$prefixLengthsPsr4;42 $loader->prefixDirsPsr4 = ComposerStaticInit ba855de335642eb08732e8874f52c56f::$prefixDirsPsr4;43 $loader->classMap = ComposerStaticInit ba855de335642eb08732e8874f52c56f::$classMap;41 $loader->prefixLengthsPsr4 = ComposerStaticInit605971a92764ca4946e1fc35fff9aa18::$prefixLengthsPsr4; 42 $loader->prefixDirsPsr4 = ComposerStaticInit605971a92764ca4946e1fc35fff9aa18::$prefixDirsPsr4; 43 $loader->classMap = ComposerStaticInit605971a92764ca4946e1fc35fff9aa18::$classMap; 44 44 45 45 }, null, ClassLoader::class); -
extra-product-data-for-woocommerce/trunk/vendor/composer/installed.php
r3469202 r3474408 2 2 'root' => array( 3 3 'name' => 'triopsi/extra-product-data-for-woocommerce', 4 'pretty_version' => '2.0. 1',5 'version' => '2.0. 1.0',4 'pretty_version' => '2.0.2', 5 'version' => '2.0.2.0', 6 6 'reference' => null, 7 7 'type' => 'project', … … 12 12 'versions' => array( 13 13 'triopsi/extra-product-data-for-woocommerce' => array( 14 'pretty_version' => '2.0. 1',15 'version' => '2.0. 1.0',14 'pretty_version' => '2.0.2', 15 'version' => '2.0.2.0', 16 16 'reference' => null, 17 17 'type' => 'project',
Note: See TracChangeset
for help on using the changeset viewer.