Plugin Directory

Changeset 3203398


Ignore:
Timestamp:
12/06/2024 06:44:42 AM (15 months ago)
Author:
triopsi
Message:

New Release v1.4.1

Location:
extra-product-data-for-woocommerce
Files:
2 added
4 deleted
9 edited
36 copied

Legend:

Unmodified
Added
Removed
  • extra-product-data-for-woocommerce/tags/1.4.1/CHANGELOG.md

    r3202511 r3203398  
     1# [1.4.0](https://git.triopsi.dev/triopsi/extra-product-data-for-woocommerce/compare/v1.3.0...v1.4.0) (2024-12-04)
     2
     3
     4### Bug Fixes
     5
     6* radio and checboxes dont have input-text css classes ([6566f69](https://git.triopsi.dev/triopsi/extra-product-data-for-woocommerce/commit/6566f69c97f21c0639918a67f1a734c540710383))
     7* select overflow ([2cfa1b6](https://git.triopsi.dev/triopsi/extra-product-data-for-woocommerce/commit/2cfa1b6eb56f9af1fb6c434723c1319d18df7abd))
     8
     9
     10### Features
     11
     12* add autocomplete function ([9b19df2](https://git.triopsi.dev/triopsi/extra-product-data-for-woocommerce/commit/9b19df29e969b96c4e94529b29ac195fad2e20a9))
     13* add Conditional Logic for fields ([24aad76](https://git.triopsi.dev/triopsi/extra-product-data-for-woocommerce/commit/24aad765d4c1d40ca85ef0e764350d88eb131b98))
     14* add Conditional rules in backend ([7238ec4](https://git.triopsi.dev/triopsi/extra-product-data-for-woocommerce/commit/7238ec4da2b2a11fa26b93bca2358dc53afbbeeb))
     15
    116# [1.3.0](https://git.triopsi.dev/triopsi/extra-product-data-for-woocommerce/compare/v1.2.0...v1.3.0) (2024-11-30)
    217
  • extra-product-data-for-woocommerce/tags/1.4.1/assets/css/admin-backend.css

    r3202511 r3203398  
    1 /*
    2 * Admin Backend Styles
    3 * Plugin: Extra Product Data for WooCommerce
    4 * Author: Triopsi
    5 */
    6 #extra-product-data {
    7   padding: 10px 10px;
    8 }
    9 
    10 table.exprdawc_attribute_table td {
    11   vertical-align: middle !important;
    12 }
    13 table.exprdawc_attribute_table td.exprdawc_attribute_require_checkbox label {
    14   padding-top: 15px;
    15 }
    16 
    17 /*
    18 Out Table Styles
    19 */
    20 table.exprdawc_field_table {
    21   width: 100%;
    22   border-collapse: collapse;
    23 }
    24 table.exprdawc_field_table tr:nth-child(even) {
    25   background-color: #f9f9f9;
    26 }
    27 table.exprdawc_field_table tr.exprdawc_fields_wrapper {
    28   border-bottom: 1px solid #ddd;
    29 }
    30 table.exprdawc_field_table tr.exprdawc_fields_wrapper:hover {
    31   background-color: #f1f1f1;
    32 }
    33 table.exprdawc_field_table tr.exprdawc_fields_wrapper:last-child {
    34   border-bottom: none;
    35 }
    36 table.exprdawc_field_table td {
    37   padding: 0px;
    38 }
    39 table.exprdawc_field_table tfoot tr {
    40   background-color: #f5f5f5;
    41   border: 1px solid #ccc;
    42 }
    43 table.exprdawc_field_table tfoot td {
    44   padding: 10px;
    45   text-align: center;
    46   vertical-align: middle;
    47 }
    48 table.exprdawc_field_table tfoot .button {
    49   padding: 5px;
    50   line-height: 13px;
    51 }
    52 
    53 /*
    54 In Table Styles
    55 */
    56 table.exprdawc_fields_table {
    57   width: 100%;
    58   border-collapse: collapse;
    59 }
    60 table.exprdawc_fields_table tr {
    61   border: 0px;
    62 }
    63 table.exprdawc_fields_table tbody td {
    64   vertical-align: middle;
    65   padding: 10px;
    66 }
    67 table.exprdawc_fields_table tbody td input[type=text],
    68 table.exprdawc_fields_table tbody td input[type=number],
    69 table.exprdawc_fields_table tbody td textarea {
    70   width: 100%;
    71   padding: 5px;
    72   border: 1px solid #ccc;
    73   border-radius: 4px;
    74   box-sizing: border-box;
    75 }
    76 table.exprdawc_fields_table tbody td select {
    77   width: 100%;
    78   padding: 5px;
    79   border: 1px solid #ccc;
    80   border-radius: 4px;
    81   box-sizing: border-box;
    82   text-overflow: ellipsis;
    83 }
    84 table.exprdawc_fields_table tbody td button.add_rule,
    85 table.exprdawc_fields_table tbody td button.exprdawc_remove_custom_field,
    86 table.exprdawc_fields_table tbody td button.remove_rule {
    87   padding: 5px;
    88   line-height: 13px;
    89 }
    90 table.exprdawc_fields_table tbody td.move i {
    91   cursor: move;
    92 }
    93 table.exprdawc_fields_table tbody td.cl-arr i {
    94   cursor: pointer;
    95 }
    96 
    97 table.exprdawc_settings_table {
    98   width: 100%;
    99 }
    100 table.exprdawc_settings_table label.exprdawc_label {
    101   float: none;
    102   padding: 0px;
    103   margin: 5px 0px;
    104   text-align: left;
    105   display: flex;
    106   width: auto;
    107   align-items: center;
    108 }
    109 table.exprdawc_settings_table label.exprdawc_label .checkbox {
    110   margin-right: 5px !important;
    111 }
    112 table.exprdawc_settings_table td {
    113   vertical-align: middle;
    114   padding: 10px;
    115 }
    116 
    117 table.exprdawc_options_table {
    118   width: 100%;
    119   border-collapse: collapse;
    120   margin-top: 10px;
    121   border: 1px solid #ccc;
    122 }
    123 table.exprdawc_options_table th,
    124 table.exprdawc_options_table td {
    125   padding: 10px;
    126   text-align: left;
    127   border-bottom: 1px solid #ddd;
    128 }
    129 table.exprdawc_options_table th {
    130   background-color: #f1f1f1;
    131 }
    132 table.exprdawc_options_table tr:hover {
    133   background-color: #f9f9f9;
    134 }
    135 table.exprdawc_options_table .button {
    136   padding: 5px 10px;
    137   border: none;
    138   border-radius: 4px;
    139   background-color: #0073aa;
    140   color: #fff;
    141   cursor: pointer;
    142 }
    143 table.exprdawc_options_table .button:hover {
    144   background-color: #005a87;
    145   color: #fff;
    146 }
    147 
    148 .exprdawc_attribute h3 .sort {
    149   width: 17px;
    150   height: 26px;
    151   cursor: move;
    152   float: right;
    153   font-size: 15px;
    154   font-weight: 400;
    155   margin-right: 0.5em;
    156   text-align: center;
    157   vertical-align: middle;
    158 }
    159 .exprdawc_attribute h3 .sort::before {
    160   content: "\f333";
    161   font-family: "Dashicons";
    162   text-align: center;
    163   line-height: 28px;
    164   color: #999;
    165   display: block;
    166   width: 17px;
    167   float: left;
    168   height: 100%;
    169 }
    170 .exprdawc_attribute h3 .sort:hover::before {
    171   color: #777;
    172 }
    173 .exprdawc_attribute h3:hover .sort, .exprdawc_attribute.ui-sortable-helper .sort {
    174   visibility: visible;
    175 }
    176 .exprdawc_attribute.wc-metabox.postbox {
    177   border-top: 0px;
    178   border-left: 0px;
    179   border-right: 0px;
    180 }
    181 
    182 .exprdawc_panel {
    183   display: block;
    184 }
    185 .exprdawc_panel h2 {
    186   font-size: 1.2em !important;
    187   padding: 0px 0px 10px 0px !important;
    188 }
    189 .exprdawc_panel .wc-metabox {
    190   background: #fff;
    191   border-bottom: 1px solid #eee;
    192   margin: 0 !important;
    193 }
    194 .exprdawc_panel .wc-metabox.exprdawc_attribute h3 {
    195   cursor: pointer;
    196   padding: 0.5em 0.75em 0.5em 1em !important;
    197 }
    198 .exprdawc_panel .wc-metabox.exprdawc_attribute h3 a.delete,
    199 .exprdawc_panel .wc-metabox.exprdawc_attribute h3 a.edit,
    200 .exprdawc_panel .wc-metabox.exprdawc_attribute h3 .sort {
    201   margin-top: 0.25em;
    202 }
    203 
    204 #woocommerce-product-data ul.wc-tabs li.custom_fields_options a::before,
    205 #woocommerce-coupon-data ul.wc-tabs li.custom_fields_options a::before,
    206 .woocommerce ul.wc-tabs li.custom_fields_options a::before {
    207   font-family: "Dashicons";
    208   content: "\f163";
    209 }
    210 
    211 .exprdawc_conditional_logic_table {
    212   width: 100%;
    213   border-collapse: collapse;
    214   margin-bottom: 20px;
    215 }
    216 .exprdawc_conditional_logic_table th,
    217 .exprdawc_conditional_logic_table td {
    218   padding: 10px;
    219   border: 1px solid #ddd;
    220   text-align: left;
    221 }
    222 .exprdawc_conditional_logic_table th {
    223   background-color: #f9f9f9;
    224   font-weight: bold;
    225 }
    226 .exprdawc_conditional_logic_table .exprdawc_label {
    227   display: block;
    228   margin-bottom: 5px;
    229   font-weight: bold;
    230 }
    231 .exprdawc_conditional_logic_table .exprdawc_input {
    232   width: 100%;
    233   padding: 5px;
    234   border: 1px solid #ccc;
    235   border-radius: 4px;
    236   box-sizing: border-box;
    237 }
    238 .exprdawc_conditional_logic_table .exprdawc_checkbox {
    239   width: auto;
    240 }
    241 .exprdawc_conditional_logic_table .exprdawc_textarea {
    242   width: 100%;
    243   padding: 8px;
    244   border: 1px solid #ccc;
    245   border-radius: 4px;
    246 }
    247 .exprdawc_conditional_logic_table .exprdawc_no_entry_message {
    248   color: #a00;
    249   font-weight: bold;
    250 }
    251 .exprdawc_conditional_logic_table h2 {
    252   text-align: left;
    253   text-transform: uppercase;
    254 }
    255 .exprdawc_conditional_logic_table .exprdawc_rule_group {
    256   margin-bottom: 10px;
    257   padding: 10px;
    258   border: 1px solid #ddd;
    259   background-color: #f9f9f9;
    260   border-radius: 4px;
    261 }
    262 .exprdawc_conditional_logic_table .exprdawc_rule_group .exprdawc_rule {
    263   display: flex;
    264   align-items: center;
    265   margin-bottom: 10px;
    266 }
    267 .exprdawc_conditional_logic_table .exprdawc_rule_group .exprdawc_rule .exprdawc_input {
    268   margin-right: 10px;
    269 }
    270 .exprdawc_conditional_logic_table .exprdawc_rule_group .exprdawc_rule .button {
    271   margin-left: 10px;
    272 }
    273 .exprdawc_conditional_logic_table .exprdawc_rule_group .add_rule_group {
    274   margin-top: 10px;
    275 }
    276 
    277 .exprdawc_no_entry_message {
    278   padding-top: 75px;
    279   margin: 10px 0 0;
    280   position: relative;
    281   text-align: center;
    282   display: block;
    283   padding-bottom: 1em;
    284 }
    285 .exprdawc_no_entry_message::before {
    286   font-family: "Dashicons";
    287   content: "\f163";
    288   font-size: 70px;
    289   color: #eee;
    290   position: absolute;
    291   top: 0px;
    292   left: 50%;
    293   transform: translateX(-50%);
    294 }
    295 
    296 p.exprdawc_toolbar {
    297   background-color: #f5f5f5;
    298   border: 1px solid #ccc;
    299   text-align: center;
    300   display: flex;
    301   align-items: center;
    302   justify-content: center;
    303 }
    304 
    305 a.exprdawc-export,
    306 a.exprdawc-import {
    307   -webkit-text-decoration: underline dotted;
    308           text-decoration: underline dotted;
    309   font-size: small;
    310   color: #0073aa;
    311   margin: 0 5px;
    312 }
    313 a.exprdawc-export::before,
    314 a.exprdawc-import::before {
    315   font-family: "Dashicons";
    316   margin-right: 5px;
    317   position: relative;
    318 }
    319 a.exprdawc-export:hover,
    320 a.exprdawc-import:hover {
    321   color: #005a87;
    322   -webkit-text-decoration: underline dotted;
    323           text-decoration: underline dotted;
    324 }
    325 
    326 a.exprdawc-export::before {
    327   content: "\f346";
    328 }
    329 
    330 a.exprdawc-import::before {
    331   content: "\f342";
    332 }
     1#extra-product-data{padding:10px}table.exprdawc_attribute_table td{vertical-align:middle!important}table.exprdawc_attribute_table td.exprdawc_attribute_require_checkbox label{padding-top:15px}table.exprdawc_field_table{border-collapse:collapse;width:100%}table.exprdawc_field_table tr:nth-child(2n){background-color:#f9f9f9}table.exprdawc_field_table tr.exprdawc_fields_wrapper{border-bottom:1px solid #ddd}table.exprdawc_field_table tr.exprdawc_fields_wrapper:hover{background-color:#f1f1f1}table.exprdawc_field_table tr.exprdawc_fields_wrapper:last-child{border-bottom:none}table.exprdawc_field_table td{padding:0}table.exprdawc_field_table tfoot tr{background-color:#f5f5f5;border:1px solid #ccc}table.exprdawc_field_table tfoot td{padding:10px;text-align:center;vertical-align:middle}table.exprdawc_field_table tfoot .button{line-height:13px;padding:5px}table.exprdawc_fields_table{border-collapse:collapse;width:100%}table.exprdawc_fields_table tr{border:0}table.exprdawc_fields_table tbody td{padding:10px;vertical-align:middle}table.exprdawc_fields_table tbody td input[type=number],table.exprdawc_fields_table tbody td input[type=text],table.exprdawc_fields_table tbody td select,table.exprdawc_fields_table tbody td textarea{border:1px solid #ccc;border-radius:4px;box-sizing:border-box;padding:5px;width:100%}table.exprdawc_fields_table tbody td select{text-overflow:ellipsis}table.exprdawc_fields_table tbody td button.add_rule,table.exprdawc_fields_table tbody td button.exprdawc_remove_custom_field,table.exprdawc_fields_table tbody td button.remove_rule{line-height:13px;padding:5px}table.exprdawc_fields_table tbody td.move i{cursor:move}table.exprdawc_fields_table tbody td.cl-arr i{cursor:pointer}table.exprdawc_settings_table{width:100%}table.exprdawc_settings_table label.exprdawc_label{align-items:center;display:flex;float:none;margin:5px 0;padding:0;text-align:left;width:auto}table.exprdawc_settings_table label.exprdawc_label .checkbox{margin-right:5px!important}table.exprdawc_settings_table td{padding:10px;vertical-align:middle}table.exprdawc_options_table{border:1px solid #ccc;border-collapse:collapse;margin-top:10px;width:100%}table.exprdawc_options_table td,table.exprdawc_options_table th{border-bottom:1px solid #ddd;padding:10px;text-align:left}table.exprdawc_options_table th{background-color:#f1f1f1}table.exprdawc_options_table tr:hover{background-color:#f9f9f9}table.exprdawc_options_table .button{background-color:#0073aa;border:none;border-radius:4px;color:#fff;cursor:pointer;padding:5px 10px}table.exprdawc_options_table .button:hover{background-color:#005a87;color:#fff}.exprdawc_attribute h3 .sort{cursor:move;float:right;font-size:15px;font-weight:400;height:26px;margin-right:.5em;text-align:center;vertical-align:middle;width:17px}.exprdawc_attribute h3 .sort:before{color:#999;content:"\f333";display:block;float:left;font-family:Dashicons;height:100%;line-height:28px;text-align:center;width:17px}.exprdawc_attribute h3 .sort:hover:before{color:#777}.exprdawc_attribute h3:hover .sort,.exprdawc_attribute.ui-sortable-helper .sort{visibility:visible}.exprdawc_attribute.wc-metabox.postbox{border-left:0;border-right:0;border-top:0}.exprdawc_panel{display:block}.exprdawc_panel h2{font-size:1.2em!important;padding:0 0 10px!important}.exprdawc_panel .wc-metabox{background:#fff;border-bottom:1px solid #eee;margin:0!important}.exprdawc_panel .wc-metabox.exprdawc_attribute h3{cursor:pointer;padding:.5em .75em .5em 1em!important}.exprdawc_panel .wc-metabox.exprdawc_attribute h3 .sort,.exprdawc_panel .wc-metabox.exprdawc_attribute h3 a.delete,.exprdawc_panel .wc-metabox.exprdawc_attribute h3 a.edit{margin-top:.25em}#woocommerce-coupon-data ul.wc-tabs li.custom_fields_options a:before,#woocommerce-product-data ul.wc-tabs li.custom_fields_options a:before,.woocommerce ul.wc-tabs li.custom_fields_options a:before{content:"\f163";font-family:Dashicons}.exprdawc_conditional_logic_table{border-collapse:collapse;margin-bottom:20px;width:100%}.exprdawc_conditional_logic_table td,.exprdawc_conditional_logic_table th{border:1px solid #ddd;padding:10px;text-align:left}.exprdawc_conditional_logic_table th{background-color:#f9f9f9;font-weight:700}.exprdawc_conditional_logic_table .exprdawc_label{display:block;font-weight:700;margin-bottom:5px}.exprdawc_conditional_logic_table .exprdawc_input{border:1px solid #ccc;border-radius:4px;box-sizing:border-box;padding:5px;width:100%}.exprdawc_conditional_logic_table .exprdawc_checkbox{width:auto}.exprdawc_conditional_logic_table .exprdawc_textarea{border:1px solid #ccc;border-radius:4px;padding:8px;width:100%}.exprdawc_conditional_logic_table .exprdawc_no_entry_message{color:#a00;font-weight:700}.exprdawc_conditional_logic_table h2{text-align:left;text-transform:uppercase}.exprdawc_conditional_logic_table .exprdawc_rule_group{background-color:#f9f9f9;border:1px solid #ddd;border-radius:4px;margin-bottom:10px;padding:10px}.exprdawc_conditional_logic_table .exprdawc_rule_group .exprdawc_rule{align-items:center;display:flex;margin-bottom:10px}.exprdawc_conditional_logic_table .exprdawc_rule_group .exprdawc_rule .exprdawc_input{margin-right:10px}.exprdawc_conditional_logic_table .exprdawc_rule_group .exprdawc_rule .button{margin-left:10px}.exprdawc_conditional_logic_table .exprdawc_rule_group .add_rule_group{margin-top:10px}.exprdawc_no_entry_message{display:block;margin:10px 0 0;padding-bottom:1em;padding-top:75px;position:relative;text-align:center}.exprdawc_no_entry_message:before{color:#eee;content:"\f163";font-family:Dashicons;font-size:70px;left:50%;position:absolute;top:0;transform:translateX(-50%)}p.exprdawc_toolbar{align-items:center;background-color:#f5f5f5;border:1px solid #ccc;display:flex;justify-content:center;text-align:center}a.exprdawc-export,a.exprdawc-import{color:#0073aa;font-size:small;margin:0 5px;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}a.exprdawc-export:before,a.exprdawc-import:before{font-family:Dashicons;margin-right:5px;position:relative}a.exprdawc-export:hover,a.exprdawc-import:hover{color:#005a87;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}a.exprdawc-export:before{content:"\f346"}a.exprdawc-import:before{content:"\f342"}
  • extra-product-data-for-woocommerce/tags/1.4.1/assets/css/forms.css

    r3202511 r3203398  
    1 /*
    2 * Form styles
    3 * Plugin: Extra Product Data for WooCommerce
    4 * Author: Triopsi
    5 */
    6 .exprdawc-label {
    7   font-weight: bold;
    8   display: block;
    9 }
    10 
    11 .exprdawc-input-wrapper .input-text {
    12   width: 100%;
    13   max-width: none;
    14   padding: 5px;
    15   vertical-align: middle;
    16   margin: 2px 0 0;
    17 }
    18 
    19 .woocommerce-input-wrapper .exprdawc-label-radio {
    20   display: inline-block;
    21   margin-left: 10px;
    22   font-weight: normal;
    23 }
    24 
    25 .exprdawc-field-yes-no .exprdawc-label,
    26 .exprdawc-field-select .exprdawc-label {
    27   display: block;
    28 }
    29 
    30 .exprdawc-field-yes-no select,
    31 .exprdawc-field-select select {
    32   width: 100%;
    33   max-width: none;
    34   padding: 5px;
    35   vertical-align: middle;
    36   margin: 2px 0 0;
    37   text-overflow: ellipsis;
    38 }
    39 
    40 .exprdawc-description {
    41   font-style: italic;
    42   font-size: smaller;
    43 }
     1.exprdawc-label{display:block;font-weight:700}.exprdawc-input-wrapper .input-text{margin:2px 0 0;max-width:none;padding:5px;vertical-align:middle;width:100%}.woocommerce-input-wrapper .exprdawc-label-radio{display:inline-block;font-weight:400;margin-left:10px}.exprdawc-field-select .exprdawc-label,.exprdawc-field-yes-no .exprdawc-label{display:block}.exprdawc-field-select select,.exprdawc-field-yes-no select{margin:2px 0 0;max-width:none;padding:5px;text-overflow:ellipsis;vertical-align:middle;width:100%}.exprdawc-description{font-size:smaller;font-style:italic}
  • extra-product-data-for-woocommerce/tags/1.4.1/assets/js/wc-conditional-rules-js.js

    r3202511 r3203398  
    1 /******/ (() => { // webpackBootstrap
    2 /*!**************************************************!*\
    3   !*** ./src/assets/js/wc-conditional-rules-js.js ***!
    4   \**************************************************/
    5 function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
    6 function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); }
    7 function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }
    8 function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; }
    9 function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
    10 function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
    11 jQuery(document).ready(function ($) {
    12   /**
    13    * Extra Product Data for WooCommerce Conditional Logic
    14    * @class ExprdawcConditionalLogic
    15    * @description Handles the functionality for the conditional logic in the WooCommerce product data metabox
    16    * @since 1.0.0
    17    * @version 1.0.0
    18    * @package ExtraProductDataForWooCommerce/JS
    19    * @license GPL-2.0+
    20    * @link https://www.triopsi.dev
    21    */
    22   var ExprdawcConditionalLogic = /*#__PURE__*/function () {
    23     // Initialize the class
    24     function ExprdawcConditionalLogic() {
    25       _classCallCheck(this, ExprdawcConditionalLogic);
    26       this.init();
    27     }
    28 
    29     // Initialize the class
    30     return _createClass(ExprdawcConditionalLogic, [{
    31       key: "init",
    32       value: function init() {
    33         var _this = this;
    34         this.applyConditionalLogic();
    35 
    36         // Reapply conditional logic on any change of exprdawc-input fields
    37         $(document).on('change keyup', '.exprdawc-input', function () {
    38           _this.applyConditionalLogic();
    39         });
    40       }
    41 
    42       // Apply the conditional logic to the fields
    43     }, {
    44       key: "applyConditionalLogic",
    45       value: function applyConditionalLogic() {
    46         var _this2 = this;
    47         $('.exprdawc-input').each(function (index, element) {
    48           var $field = $(element);
    49           _this2.checkConditions($field);
    50         });
    51       }
    52 
    53       // Check the conditions for the field
    54     }, {
    55       key: "checkConditions",
    56       value: function checkConditions($field) {
    57         console.log('Check Conditions.... for field: ', $field);
    58         var conditionalLogic = $field.data('conditional-rules');
    59         if (conditionalLogic) {
    60           var logic = conditionalLogic;
    61           var groupConditionMet = false;
    62           logic.forEach(function (group) {
    63             var groupMet = true;
    64 
    65             // if group not an array, return
    66             if (!Array.isArray(group)) {
    67               console.log('Group is not an array');
    68               return;
    69             }
    70             group.forEach(function (rule) {
    71               // if rule have empty field, return
    72               if (!rule.field) {
    73                 return;
    74               }
    75 
    76               // if rule have empty operator, return
    77               if (!rule.operator) {
    78                 return;
    79               }
    80 
    81               // Generate the targetField from esc_html( $field_array['label'] ) to use in the frontend. Whitespaces are replaced by hyphens and the string is lowercased.
    82               // This is the same as the targetField in the backend.
    83               var targetField = 'exprdawc-field-' + rule.field.replace(/\s+/g, '-').toLowerCase();
    84               var $targetField = $(".".concat(targetField));
    85               var operator = rule.operator;
    86               var value = rule.value;
    87               var targetValue = $targetField.val();
    88               var conditionMet = false;
    89               switch (operator) {
    90                 case 'equals':
    91                   conditionMet = targetValue === value;
    92                   break;
    93                 case 'not_equals':
    94                   conditionMet = targetValue !== value;
    95                   break;
    96                 case 'greater_than':
    97                   conditionMet = parseFloat(targetValue) > parseFloat(value);
    98                   break;
    99                 case 'less_than':
    100                   conditionMet = parseFloat(targetValue) < parseFloat(value);
    101                   break;
    102                 case 'field_is_empty':
    103                   conditionMet = targetValue === '';
    104                   break;
    105                 case 'field_is_not_empty':
    106                   conditionMet = targetValue !== '';
    107                   break;
    108               }
    109               if (!conditionMet) {
    110                 groupMet = false;
    111               }
    112             });
    113             if (groupMet) {
    114               groupConditionMet = true;
    115             }
    116           });
    117           if (groupConditionMet) {
    118             $field.closest('.form-row-wide').show();
    119           } else {
    120             $field.closest('.form-row-wide').hide();
    121           }
    122         }
    123       }
    124     }]);
    125   }(); // Initialize the class
    126   new ExprdawcConditionalLogic();
    127 });
    128 /******/ })()
    129 ;
     1(()=>{function e(o){return e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},e(o)}function o(e,o){for(var r=0;r<o.length;r++){var n=o[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,t(n.key),n)}}function t(o){var t=function(o,t){if("object"!=e(o)||!o)return o;var r=o[Symbol.toPrimitive];if(void 0!==r){var n=r.call(o,t||"default");if("object"!=e(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(o)}(o,"string");return"symbol"==e(t)?t:t+""}jQuery(document).ready((function(e){new(function(){return t=function e(){!function(e,o){if(!(e instanceof o))throw new TypeError("Cannot call a class as a function")}(this,e),this.init()},(r=[{key:"init",value:function(){var o=this;this.applyConditionalLogic(),e(document).on("change keyup",".exprdawc-input",(function(){o.applyConditionalLogic()}))}},{key:"applyConditionalLogic",value:function(){var o=this;e(".exprdawc-input").each((function(t,r){var n=e(r);o.checkConditions(n)}))}},{key:"checkConditions",value:function(o){console.log("Check Conditions.... for field: ",o);var t=o.data("conditional-rules");if(t){var r=!1;t.forEach((function(o){var t=!0;Array.isArray(o)?(o.forEach((function(o){if(o.field&&o.operator){var r="exprdawc-field-"+o.field.replace(/\s+/g,"-").toLowerCase(),n=e(".".concat(r)),i=o.operator,a=o.value,c=n.val(),l=!1;switch(i){case"equals":l=c===a;break;case"not_equals":l=c!==a;break;case"greater_than":l=parseFloat(c)>parseFloat(a);break;case"less_than":l=parseFloat(c)<parseFloat(a);break;case"field_is_empty":l=""===c;break;case"field_is_not_empty":l=""!==c}l||(t=!1)}})),t&&(r=!0)):console.log("Group is not an array")})),r?o.closest(".form-row-wide").show():o.closest(".form-row-wide").hide()}}}])&&o(t.prototype,r),n&&o(t,n),Object.defineProperty(t,"prototype",{writable:!1}),t;var t,r,n}())}))})();
  • extra-product-data-for-woocommerce/tags/1.4.1/assets/js/wc-meta-boxes-order.js

    r3202511 r3203398  
    1 /******/ (() => { // webpackBootstrap
    2 /*!**********************************************!*\
    3   !*** ./src/assets/js/wc-meta-boxes-order.js ***!
    4   \**********************************************/
    5 function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
    6 function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); }
    7 function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }
    8 function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; }
    9 function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
    10 function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
    11 /* global wc_exprdawc_admin_order_params, woocommerce_admin_meta_boxes, wcBackboneModal */
    12 jQuery(function ($) {
    13   /**
    14    * Extra Product Data for WooCommerce Admin Order
    15    * @class ExtraProductDataAdminOrder
    16    * @description Handles the functionality for the extra product data in the WooCommerce admin order page
    17    * @since 1.0.0
    18    * @version 1.0.0
    19    * @package ExtraProductDataForWooCommerce/JS
    20    * @license GPL-2.0+
    21    * @link https://www.triopsi.dev
    22    */
    23   var ExtraProductDataAdminOrder = /*#__PURE__*/function () {
    24     function ExtraProductDataAdminOrder() {
    25       _classCallCheck(this, ExtraProductDataAdminOrder);
    26       this.$orderItemsContainer = $('#woocommerce-order-items');
    27       this.modalView = null;
    28       this.initialize();
    29     }
    30 
    31     // Initialize event handlers
    32     return _createClass(ExtraProductDataAdminOrder, [{
    33       key: "initialize",
    34       value: function initialize() {
    35         this.setupEventHandlers();
    36       }
    37 
    38       // Setup event handlers for the order items container
    39     }, {
    40       key: "setupEventHandlers",
    41       value: function setupEventHandlers() {
    42         this.$orderItemsContainer.on('click', 'button.exprdawc_edit_addons', {
    43           action: 'edit'
    44         }, this.handleEditButtonClick.bind(this));
    45       }
    46 
    47       // Handle the click event for the edit button
    48     }, {
    49       key: "handleEditButtonClick",
    50       value: function handleEditButtonClick(event) {
    51         event.preventDefault();
    52 
    53         // Extend wcBackboneModal to create a custom modal view
    54         var CustomBackboneModal = $.WCBackboneModal.View.extend({
    55           addButton: this.handleDoneButtonClick.bind(this)
    56         });
    57 
    58         // Get the closest table row and retrieve the order item ID
    59         var $itemRow = $(event.currentTarget).closest('tr.item');
    60         var orderItemId = $itemRow.attr('data-order_item_id');
    61 
    62         // Create a new instance of the custom modal view
    63         this.modalView = new CustomBackboneModal({
    64           target: 'wc-modal-edit-exprdawc',
    65           string: {
    66             action: wc_exprdawc_admin_order_params.i18n_edit,
    67             item_id: orderItemId
    68           }
    69         });
    70 
    71         // Populate the form inside the modal
    72         this.populateModalForm();
    73         return false;
    74       }
    75 
    76       // Populate the form inside the modal with data
    77     }, {
    78       key: "populateModalForm",
    79       value: function populateModalForm() {
    80         var _this = this;
    81         this.blockUI(this.modalView.$el.find('.wc-backbone-modal-content'));
    82         var requestData = {
    83           action: 'woocommerce_configure_exprdawc_order_item',
    84           item_id: this.modalView._string.item_id,
    85           dataType: 'json',
    86           order_id: woocommerce_admin_meta_boxes.post_id,
    87           security: wc_exprdawc_admin_order_params.edit_exprdawc_nonce
    88         };
    89         $.post(woocommerce_admin_meta_boxes.ajax_url, requestData, function (response) {
    90           if (response.data && response.success) {
    91             _this.modalView.$el.find('form').html(response.data.html);
    92             _this.unblockUI(_this.modalView.$el.find('.wc-backbone-modal-content'));
    93           } else {
    94             window.alert(wc_exprdawc_admin_order_params.i18n_form_error);
    95             _this.unblockUI(_this.modalView.$el.find('.wc-backbone-modal-content'));
    96             _this.modalView.$el.find('.modal-close').trigger('click');
    97           }
    98         });
    99       }
    100 
    101       // Handle the click event for the done button
    102     }, {
    103       key: "handleDoneButtonClick",
    104       value: function handleDoneButtonClick(event) {
    105         var _this2 = this;
    106         var requestData = $.extend({}, {
    107           action: 'woocommerce_edit_exprdawc_order_item',
    108           item_id: this.modalView._string.item_id,
    109           dataType: 'json',
    110           order_id: woocommerce_admin_meta_boxes.post_id,
    111           security: wc_exprdawc_admin_order_params.edit_exprdawc_nonce
    112         });
    113         var formElement = this.modalView.$el.find('form')[0];
    114         if (formElement.reportValidity() !== true) {
    115           return;
    116         }
    117         var formData = new FormData(formElement);
    118         for (var property in requestData) {
    119           formData.append(property, requestData[property]);
    120         }
    121         this.blockUI(this.modalView.$el.find('.wc-backbone-modal-content'));
    122         $.post({
    123           url: woocommerce_admin_meta_boxes.ajax_url,
    124           type: "POST",
    125           data: formData,
    126           processData: false,
    127           contentType: false,
    128           cache: false,
    129           success: function success(response) {
    130             if (response.data && response.success) {
    131               _this2.$orderItemsContainer.find('.inside').empty();
    132               _this2.$orderItemsContainer.find('.inside').append(response.data.html);
    133               _this2.$orderItemsContainer.trigger('wc_order_items_reloaded');
    134 
    135               // Update notes.
    136               if (response.data.notes_html) {
    137                 $('ul.order_notes').empty();
    138                 $('ul.order_notes').append($(response.data.notes_html).find('li'));
    139               }
    140               _this2.unblockUI(_this2.modalView.$el.find('.wc-backbone-modal-content'));
    141 
    142               // Make it look like something changed.
    143               _this2.blockUI(_this2.$orderItemsContainer, {
    144                 fadeIn: 0
    145               });
    146               setTimeout(function () {
    147                 _this2.unblockUI(_this2.$orderItemsContainer);
    148               }, 250);
    149               _this2.modalView.closeButton(event);
    150             } else {
    151               window.alert(response.data.message);
    152               _this2.unblockUI(_this2.modalView.$el.find('.wc-backbone-modal-content'));
    153             }
    154           },
    155           error: function error() {
    156             window.alert(wc_exprdawc_admin_order_params.i18n_validation_error);
    157             _this2.unblockUI(_this2.modalView.$el.find('.wc-backbone-modal-content'));
    158           }
    159         });
    160       }
    161 
    162       // Block UI element
    163     }, {
    164       key: "blockUI",
    165       value: function blockUI($target, params) {
    166         var defaults = {
    167           message: null,
    168           overlayCSS: {
    169             background: '#fff',
    170             opacity: 0.6
    171           }
    172         };
    173         var options = $.extend({}, defaults, params || {});
    174         $target.block(options);
    175       }
    176 
    177       // Unblock UI element
    178     }, {
    179       key: "unblockUI",
    180       value: function unblockUI($target) {
    181         $target.unblock();
    182       }
    183     }]);
    184   }(); // Initialize the class
    185   new ExtraProductDataAdminOrder();
    186 });
    187 /******/ })()
    188 ;
     1(()=>{function e(t){return e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},e(t)}function t(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,o(i.key),i)}}function o(t){var o=function(t,o){if("object"!=e(t)||!t)return t;var n=t[Symbol.toPrimitive];if(void 0!==n){var i=n.call(t,o||"default");if("object"!=e(i))return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===o?String:Number)(t)}(t,"string");return"symbol"==e(o)?o:o+""}jQuery((function(e){new(function(){return o=function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),this.$orderItemsContainer=e("#woocommerce-order-items"),this.modalView=null,this.initialize()},(n=[{key:"initialize",value:function(){this.setupEventHandlers()}},{key:"setupEventHandlers",value:function(){this.$orderItemsContainer.on("click","button.exprdawc_edit_addons",{action:"edit"},this.handleEditButtonClick.bind(this))}},{key:"handleEditButtonClick",value:function(t){t.preventDefault();var o=e.WCBackboneModal.View.extend({addButton:this.handleDoneButtonClick.bind(this)}),n=e(t.currentTarget).closest("tr.item").attr("data-order_item_id");return this.modalView=new o({target:"wc-modal-edit-exprdawc",string:{action:wc_exprdawc_admin_order_params.i18n_edit,item_id:n}}),this.populateModalForm(),!1}},{key:"populateModalForm",value:function(){var t=this;this.blockUI(this.modalView.$el.find(".wc-backbone-modal-content"));var o={action:"woocommerce_configure_exprdawc_order_item",item_id:this.modalView._string.item_id,dataType:"json",order_id:woocommerce_admin_meta_boxes.post_id,security:wc_exprdawc_admin_order_params.edit_exprdawc_nonce};e.post(woocommerce_admin_meta_boxes.ajax_url,o,(function(e){e.data&&e.success?(t.modalView.$el.find("form").html(e.data.html),t.unblockUI(t.modalView.$el.find(".wc-backbone-modal-content"))):(window.alert(wc_exprdawc_admin_order_params.i18n_form_error),t.unblockUI(t.modalView.$el.find(".wc-backbone-modal-content")),t.modalView.$el.find(".modal-close").trigger("click"))}))}},{key:"handleDoneButtonClick",value:function(t){var o=this,n=e.extend({},{action:"woocommerce_edit_exprdawc_order_item",item_id:this.modalView._string.item_id,dataType:"json",order_id:woocommerce_admin_meta_boxes.post_id,security:wc_exprdawc_admin_order_params.edit_exprdawc_nonce}),i=this.modalView.$el.find("form")[0];if(!0===i.reportValidity()){var r=new FormData(i);for(var a in n)r.append(a,n[a]);this.blockUI(this.modalView.$el.find(".wc-backbone-modal-content")),e.post({url:woocommerce_admin_meta_boxes.ajax_url,type:"POST",data:r,processData:!1,contentType:!1,cache:!1,success:function(n){n.data&&n.success?(o.$orderItemsContainer.find(".inside").empty(),o.$orderItemsContainer.find(".inside").append(n.data.html),o.$orderItemsContainer.trigger("wc_order_items_reloaded"),n.data.notes_html&&(e("ul.order_notes").empty(),e("ul.order_notes").append(e(n.data.notes_html).find("li"))),o.unblockUI(o.modalView.$el.find(".wc-backbone-modal-content")),o.blockUI(o.$orderItemsContainer,{fadeIn:0}),setTimeout((function(){o.unblockUI(o.$orderItemsContainer)}),250),o.modalView.closeButton(t)):(window.alert(n.data.message),o.unblockUI(o.modalView.$el.find(".wc-backbone-modal-content")))},error:function(){window.alert(wc_exprdawc_admin_order_params.i18n_validation_error),o.unblockUI(o.modalView.$el.find(".wc-backbone-modal-content"))}})}}},{key:"blockUI",value:function(t,o){var n=e.extend({},{message:null,overlayCSS:{background:"#fff",opacity:.6}},o||{});t.block(n)}},{key:"unblockUI",value:function(e){e.unblock()}}])&&t(o.prototype,n),i&&t(o,i),Object.defineProperty(o,"prototype",{writable:!1}),o;var o,n,i}())}))})();
  • extra-product-data-for-woocommerce/tags/1.4.1/assets/js/wc-meta-boxes-product.js

    r3202511 r3203398  
    1 /******/ (() => { // webpackBootstrap
    2 /******/    var __webpack_modules__ = ({
    3 
    4 /***/ "./src/assets/js/wc-meta-boxes-product.js":
    5 /*!************************************************!*\
    6   !*** ./src/assets/js/wc-meta-boxes-product.js ***!
    7   \************************************************/
    8 /***/ (() => {
    9 
    10 function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
    11 function _readOnlyError(r) { throw new TypeError('"' + r + '" is read-only'); }
    12 function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); }
    13 function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }
    14 function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; }
    15 function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
    16 function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
    17 /**
    18  * Add custom fields to the product data meta box.
    19  */
    20 jQuery(function ($) {
    21   /**
    22    * Class to handle the product meta box.
    23    * @class ExprdawcMetaBoxesProduct
    24    * @description Handles the functionality for the extra product data in the WooCommerce product data meta box
    25    * @since 1.0.0
    26    * @version 1.0.0
    27    * @package ExtraProductDataForWooCommerce/JS
    28    * @license GPL-2.0+
    29    * @link https://www.triopsi.dev
    30   */
    31   var ExprdawcMetaBoxesProduct = /*#__PURE__*/function () {
    32     function ExprdawcMetaBoxesProduct() {
    33       _classCallCheck(this, ExprdawcMetaBoxesProduct);
    34       this.fieldIndex = $('#exprdawc_field_body tr.exprdawc_attribute').length;
    35       this.isDirty = false;
    36       this.init();
    37     }
    38 
    39     /**
    40      * Initialize the class.
    41      */
    42     return _createClass(ExprdawcMetaBoxesProduct, [{
    43       key: "init",
    44       value: function init() {
    45         this.bindEvents();
    46         this.noEntryContent();
    47       }
    48 
    49       /**
    50        * Bind events.
    51        */
    52     }, {
    53       key: "bindEvents",
    54       value: function bindEvents() {
    55         $('#exprdawc_add_custom_field').on('click', this.addCustomField.bind(this));
    56         $(document).on('click', '.exprdawc_remove_custom_field', this.removeCustomField.bind(this));
    57         $(document).on('change', '.exprdawc_attribute_type', this.toggleOptions.bind(this));
    58         $(document).on('click', '.toggle-options', this.toggleOptionsTable.bind(this));
    59         $(document).on('click', '.add_option', this.addOption.bind(this));
    60         $(document).on('click', '.remove_option', this.removeOption.bind(this));
    61         $(document).on('click', 'a.exprdawc-export', this.exportContent.bind(this));
    62         $(document).on('click', 'a.exprdawc-import', this.importContent.bind(this));
    63         $(document).on('change', '.exprdawc_input', this.setDirty.bind(this));
    64         $(document).on('change', '.exprdawc_autocomplete_field', this.checkAutocompleteField.bind(this));
    65         $(document).on('click', '.add_rule_group', this.addRuleGroup.bind(this));
    66         $(document).on('click', '.add_rule', this.addRule.bind(this));
    67         $(document).on('click', '.remove_rule', this.removeRule.bind(this));
    68         $(document).on('change', '.exprdawc_conditional_operator', this.toggleConditionalValueField.bind(this));
    69         $(document).on('change', '.exprdawc_conditional_logic_field', this.toggleConditionalTable.bind(this));
    70         this.toggleConditionalValueFieldAll();
    71 
    72         // Attribute ordering.
    73         $('.exprdawc_field_table tbody').sortable({
    74           items: 'tr.exprdawc_fields_wrapper',
    75           cursor: 'move',
    76           axis: 'y',
    77           handle: '.move',
    78           scrollSensitivity: 40,
    79           forcePlaceholderSize: true,
    80           helper: 'clone',
    81           opacity: 0.65,
    82           placeholder: 'wc-metabox-sortable-placeholder',
    83           start: function start(event, ui) {
    84             ui.item.css('background-color', '#f6f6f6');
    85           },
    86           stop: function stop(event, ui) {
    87             ui.item.removeAttr('style');
    88           }
    89         });
    90 
    91         // Option ordering.
    92         $(document).on('mouseenter', '.exprdawc_options_table tbody', function () {
    93           $(this).sortable({
    94             items: 'tr',
    95             cursor: 'move',
    96             axis: 'y',
    97             handle: '.move',
    98             scrollSensitivity: 40,
    99             forcePlaceholderSize: true,
    100             helper: 'clone',
    101             opacity: 0.65,
    102             placeholder: 'wc-metabox-sortable-placeholder',
    103             start: function start(event, ui) {
    104               ui.item.css('background-color', '#f6f6f6');
    105             },
    106             stop: function stop(event, ui) {
    107               ui.item.removeAttr('style');
    108             }
    109           });
    110         });
    111 
    112         // Get the name of the input and set the header.
    113         $('#exprdawc_attribute_container').on('input', '.exprdawc_attribute .exprdawc_attribute_input_name input', function () {
    114           var text = $(this).val(),
    115             target = $(this).closest('.exprdawc_attribute').find('.attribute_name');
    116           if (text) {
    117             target.text(text);
    118           }
    119         });
    120       }
    121 
    122       /**
    123        * Add a custom field.
    124        */
    125     }, {
    126       key: "addCustomField",
    127       value: function addCustomField() {
    128         this.fieldIndex++;
    129         this.setDirty();
    130         $('#exprdawc_field_body').append("\n                <tr class=\"exprdawc_fields_wrapper\">\n                <td colspan=\"5\">\n                <table class=\"exprdawc_fields_table\" data-index=\"".concat(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\" name=\"extra_product_fields[").concat(this.fieldIndex, "][label]\" placeholder=\"").concat(exprdawc_admin_meta_boxes.label_placeholder, "\" />\n                            </td>\n                            <td>\n                                <select id=\"exprdawc_attribute_type_").concat(this.fieldIndex, "\" name=\"extra_product_fields[").concat(this.fieldIndex, "][type]\" class=\"exprdawc_attribute_type\">\n                                    <option value=\"text\">").concat(exprdawc_admin_meta_boxes.short_text, "</option>\n                                    <option value=\"long_text\">").concat(exprdawc_admin_meta_boxes.long_text, "</option>\n                                    <option value=\"email\">").concat(exprdawc_admin_meta_boxes.email, "</option>\n                                    <option value=\"number\">").concat(exprdawc_admin_meta_boxes.number, "</option>\n                                    <option value=\"date\">").concat(exprdawc_admin_meta_boxes.date, "</option>\n                                    <option value=\"yes-no\">").concat(exprdawc_admin_meta_boxes.yes_no, "</option>\n                                    <option value=\"radio\">").concat(exprdawc_admin_meta_boxes.radio, "</option>\n                                    <option value=\"checkbox\">").concat(exprdawc_admin_meta_boxes.checkbox, "</option>\n                                    <option value=\"select\">").concat(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                                <input type=\"hidden\" class=\"exprdawc_attribute_index\" name=\"extra_product_fields[").concat(this.fieldIndex, "][index]\" value=\"").concat(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                                        <!-- Text Area Option/Settings -->\n                                        <tr>\n                                            <td class=\"exprdawc_attribute_require_checkbox\">\n                                                <label class=\"exprdawc_label\" for=\"exprdawc_text_required_").concat(this.fieldIndex, "\">\n                                                    <input type=\"checkbox\" id=\"exprdawc_text_required_").concat(this.fieldIndex, "\" class=\"exprdawc_input exprdawc_checkbox checkbox\" name=\"extra_product_fields[").concat(this.fieldIndex, "][required]\" value=\"1\" />\n                                                    ").concat(exprdawc_admin_meta_boxes.require_input, "\n                                                </label>                                       \n                                                <label class=\"exprdawc_label\" for=\"exprdawc_text_autofocus_").concat(this.fieldIndex, "\">\n                                                    <input type=\"checkbox\" id=\"exprdawc_text_autofocus_").concat(this.fieldIndex, "\" class=\"exprdawc_input exprdawc_checkbox checkbox\" name=\"extra_product_fields[").concat(this.fieldIndex, "][autofocus]\" value=\"1\" />\n                                                    ").concat(exprdawc_admin_meta_boxes.enable_autofocus, "\n                                                </label>\n\n                                                <!-- Enable Conditional Logic and show table -->\n                                                <label class=\"exprdawc_label\" for=\"exprdawc_text_conditional_logic_").concat(this.fieldIndex, "\">\n                                                    <input type=\"checkbox\" id=\"exprdawc_text_conditional_logic_").concat(this.fieldIndex, "\" class=\"exprdawc_input exprdawc_checkbox exprdawc_conditional_logic_field checkbox\" name=\"extra_product_fields[").concat(this.fieldIndex, "][conditional_logic]\" value=\"1\" />\n                                                    ").concat(exprdawc_admin_meta_boxes.enable_conditional_logic, "\n                                                </label>\n                                            </td>\n                                            <td class=\"exprdawc_attribute_placeholder_text\">\n                                                <label class=\"exprdawc_label\" for=\"exprdawc_text_placeholder_text_").concat(this.fieldIndex, "\">").concat(exprdawc_admin_meta_boxes.placeholder_text, "</label>\n                                                <input type=\"text\" id=\"exprdawc_text_placeholder_text_").concat(this.fieldIndex, "\" class=\"exprdawc_input exprdawc_textinput exprdawc_placeholder\" name=\"extra_product_fields[").concat(this.fieldIndex, "][placeholder_text]\" placeholder=\"").concat(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_").concat(this.fieldIndex, "\">").concat(exprdawc_admin_meta_boxes.help_text, "</label>\n                                                <input type=\"text\" id=\"exprdawc_text_help_text_").concat(this.fieldIndex, "\" class=\"exprdawc_input exprdawc_textinput exprdawc_helptext\" name=\"extra_product_fields[").concat(this.fieldIndex, "][help_text]\" placeholder=\"").concat(exprdawc_admin_meta_boxes.help_text, "\" />\n                                            </td>\n                                            <td>\n                                                <label class=\"exprdawc_label\" for=\"exprdawc_autocomplete_function_").concat(this.fieldIndex, "\">").concat(exprdawc_admin_meta_boxes.autocomplete_function, "</label>\n                                                <select id=\"exprdawc_autocomplete_function_").concat(this.fieldIndex, "\" name=\"extra_product_fields[").concat(this.fieldIndex, "][autocomplete]\" class=\"exprdawc_input exprdawc_attribute_type\">\n                                                    <option value=\"on\">").concat(exprdawc_admin_meta_boxes.autocomplete_on, "</option>\n                                                    <option value=\"off\">").concat(exprdawc_admin_meta_boxes.autocomplete_off, "</option>\n                                                    <option value=\"address-level1\">").concat(exprdawc_admin_meta_boxes.address_level1, "</option>\n                                                    <option value=\"address-level2\">").concat(exprdawc_admin_meta_boxes.address_level2, "</option>\n                                                    <option value=\"address-level3\">").concat(exprdawc_admin_meta_boxes.address_level3, "</option>\n                                                    <option value=\"address-level4\">").concat(exprdawc_admin_meta_boxes.address_level4, "</option>\n                                                    <option value=\"address-line1\">").concat(exprdawc_admin_meta_boxes.address_line1, "</option>\n                                                    <option value=\"address-line2\">").concat(exprdawc_admin_meta_boxes.address_line2, "</option>\n                                                    <option value=\"address-line3\">").concat(exprdawc_admin_meta_boxes.address_line3, "</option>\n                                                    <option value=\"bday\">").concat(exprdawc_admin_meta_boxes.bday, "</option>\n                                                    <option value=\"bday-day\">").concat(exprdawc_admin_meta_boxes.bday_day, "</option>\n                                                    <option value=\"bday-month\">").concat(exprdawc_admin_meta_boxes.bday_month, "</option>\n                                                    <option value=\"bday-year\">").concat(exprdawc_admin_meta_boxes.bday_year, "</option>\n                                                    <option value=\"cc-additional-name\">").concat(exprdawc_admin_meta_boxes.cc_additional_name, "</option>\n                                                    <option value=\"cc-csc\">").concat(exprdawc_admin_meta_boxes.cc_csc, "</option>\n                                                    <option value=\"cc-exp\">").concat(exprdawc_admin_meta_boxes.cc_exp, "</option>\n                                                    <option value=\"cc-exp-month\">").concat(exprdawc_admin_meta_boxes.cc_exp_month, "</option>\n                                                    <option value=\"cc-exp-year\">").concat(exprdawc_admin_meta_boxes.cc_exp_year, "</option>\n                                                    <option value=\"cc-family-name\">").concat(exprdawc_admin_meta_boxes.cc_family_name, "</option>\n                                                    <option value=\"cc-given-name\">").concat(exprdawc_admin_meta_boxes.cc_given_name, "</option>\n                                                    <option value=\"cc-name\">").concat(exprdawc_admin_meta_boxes.cc_name, "</option>\n                                                    <option value=\"cc-number\">").concat(exprdawc_admin_meta_boxes.cc_number, "</option>\n                                                    <option value=\"cc-type\">").concat(exprdawc_admin_meta_boxes.cc_type, "</option>\n                                                    <option value=\"country\">").concat(exprdawc_admin_meta_boxes.country, "</option>\n                                                    <option value=\"country-name\">").concat(exprdawc_admin_meta_boxes.country_name, "</option>\n                                                    <option value=\"email\">").concat(exprdawc_admin_meta_boxes.email, "</option>\n                                                    <option value=\"language\">").concat(exprdawc_admin_meta_boxes.language, "</option>\n                                                    <option value=\"photo\">").concat(exprdawc_admin_meta_boxes.photo, "</option>\n                                                    <option value=\"postal-code\">").concat(exprdawc_admin_meta_boxes.postal_code, "</option>\n                                                    <option value=\"sex\">").concat(exprdawc_admin_meta_boxes.sex, "</option>\n                                                    <option value=\"street-address\">").concat(exprdawc_admin_meta_boxes.street_address, "</option>\n                                                    <option value=\"tel\">").concat(exprdawc_admin_meta_boxes.tel, "</option>\n                                                    <option value=\"tel-area-code\">").concat(exprdawc_admin_meta_boxes.tel_area_code, "</option>\n                                                    <option value=\"tel-country-code\">").concat(exprdawc_admin_meta_boxes.tel_country_code, "</option>\n                                                    <option value=\"tel-extension\">").concat(exprdawc_admin_meta_boxes.tel_extension, "</option>\n                                                    <option value=\"tel-local\">").concat(exprdawc_admin_meta_boxes.tel_local, "</option>\n                                                    <option value=\"tel-local-prefix\">").concat(exprdawc_admin_meta_boxes.tel_local_prefix, "</option>\n                                                    <option value=\"tel-local-suffix\">").concat(exprdawc_admin_meta_boxes.tel_local_suffix, "</option>\n                                                    <option value=\"tel-national\">").concat(exprdawc_admin_meta_boxes.tel_national, "</option>\n                                                    <option value=\"transaction-amount\">").concat(exprdawc_admin_meta_boxes.transaction_amount, "</option>\n                                                    <option value=\"transaction-currency\">").concat(exprdawc_admin_meta_boxes.transaction_currency, "</option>\n                                                    <option value=\"url\">").concat(exprdawc_admin_meta_boxes.url, "</option>\n                                                </select>\n                                            </td>\n                                        </tr>\n                                    </tbody>\n                                </table>\n                                <hr>\n\n                                <!-- Conditional Logic -->\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\">").concat(exprdawc_admin_meta_boxes.conditionals, "</label>\n\t\t\t\t\t\t\t\t                <p>").concat(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[").concat(this.fieldIndex, "][conditional_rules][0][0][field]\" class=\"exprdawc_input exprdawc_conditional_field\">\n                                                                <option value=\"\">").concat(exprdawc_admin_meta_boxes.selectFieldNone, "</option>\n                                                                ").concat(this.getAllFieldsOptions(), "\n                                                                </select>\n                                                                <select name=\"extra_product_fields[").concat(this.fieldIndex, "][conditional_rules][0][0][operator]\" class=\"exprdawc_input exprdawc_conditional_operator\">\n                                                                    <option value=\"field_is_empty\">").concat(exprdawc_admin_meta_boxes.field_is_empty, "</option>\n                                                                    <option value=\"field_is_not_empty\">").concat(exprdawc_admin_meta_boxes.field_is_not_empty, "</option>\n                                                                    <option value=\"equals\">").concat(exprdawc_admin_meta_boxes.equals, "</option>\n                                                                    <option value=\"not_equals\">").concat(exprdawc_admin_meta_boxes.notEquals, "</option>\n                                                                    <option value=\"greater_than\">").concat(exprdawc_admin_meta_boxes.greaterThan, "</option>\n                                                                    <option value=\"less_than\">").concat(exprdawc_admin_meta_boxes.lessThan, "</option>\n                                                                </select>\n                                                                <input type=\"text\" name=\"extra_product_fields[").concat(this.fieldIndex, "][conditional_rules][0][0][value]\" class=\"exprdawc_input exprdawc_conditional_value\" placeholder=\"").concat(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\">").concat(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                                <!-- Text Area Option/Settings -->\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_").concat(this.fieldIndex, "\">").concat(exprdawc_admin_meta_boxes.rows, "</label>\n                                                <input type=\"number\" id=\"exprdawc_long_text_rows_").concat(this.fieldIndex, "\" class=\"exprdawc_input exprdawc_long_text_rows\" name=\"extra_product_fields[").concat(this.fieldIndex, "][rows]\" value=\"2\" />\n                                            </td>\n                                            <td>\n                                                <label class=\"exprdawc_label\" for=\"exprdawc_long_text_cols_").concat(this.fieldIndex, "\">").concat(exprdawc_admin_meta_boxes.columns, "</label>\n                                                <input type=\"number\" id=\"exprdawc_long_text_cols_").concat(this.fieldIndex, "\" class=\"exprdawc_input exprdawc_long_text_cols\" name=\"extra_product_fields[").concat(this.fieldIndex, "][cols]\" value=\"5\" />\n                                            </td>\n                                            <td>\n                                                <label class=\"exprdawc_label\" for=\"exprdawc_long_text_default_").concat(this.fieldIndex, "\">").concat(exprdawc_admin_meta_boxes.default_value, "</label>\n                                                <textarea id=\"exprdawc_long_text_default_").concat(this.fieldIndex, "\" class=\"exprdawc_textarea\" rows=\"3\" cols=\"30\" placeholder=\"").concat(exprdawc_admin_meta_boxes.enter_default_text, "\" name=\"extra_product_fields[").concat(this.fieldIndex, "][default]\"></textarea>\n                                            </td>\n                                        </tr>\n                                    </tbody>\n                                </table>\n\n                                <!-- Text Option/Settings -->\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_").concat(this.fieldIndex, "\">").concat(exprdawc_admin_meta_boxes.min_length, "</label>\n                                                <input type=\"number\" id=\"exprdawc_text_min_length_").concat(this.fieldIndex, "\" class=\"exprdawc_input exprdawc_text_min_length\" name=\"extra_product_fields[").concat(this.fieldIndex, "][minlength]\" value=\"0\" />\n                                            </td>\n                                            <td>\n                                                <label class=\"exprdawc_label\" for=\"exprdawc_text_max_length_").concat(this.fieldIndex, "\">").concat(exprdawc_admin_meta_boxes.max_length, "</label>\n                                                <input type=\"number\" id=\"exprdawc_text_max_length_").concat(this.fieldIndex, "\" class=\"exprdawc_input exprdawc_text_max_length\" name=\"extra_product_fields[").concat(this.fieldIndex, "][maxlength]\" value=\"255\" />\n                                            </td>\n                                            <td>\n                                                <label class=\"exprdawc_label\" for=\"exprdawc_text_default_").concat(this.fieldIndex, "\">").concat(exprdawc_admin_meta_boxes.default_value, "</label>\n                                                <input type=\"text\" id=\"exprdawc_text_default_").concat(this.fieldIndex, "\" class=\"exprdawc_input exprdawc_text_default\" placeholder=\"").concat(exprdawc_admin_meta_boxes.enter_default_text, "\" name=\"extra_product_fields[").concat(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>").concat(exprdawc_admin_meta_boxes.option_label, "</th>\n                                            <th>").concat(exprdawc_admin_meta_boxes.option_value, "</th>\n                                            <th>").concat(exprdawc_admin_meta_boxes["default"], "</th>\n                                            <th>").concat(exprdawc_admin_meta_boxes.action, "</th>\n                                        </tr>\n                                    </thead>\n                                    <tbody>\n                                        <!-- Options will be dynamically added here -->\n                                    </tbody>\n                                    <tfoot>\n                                        <tr>\n                                            <td colspan=\"4\">\n                                                <button type=\"button\" class=\"button add_option\">").concat(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;\">").concat(exprdawc_admin_meta_boxes.no_options, "</p>\n                            </td>\n                        </tr>\n                    </tbody>\n                </table>\n                </td>\n                </tr>\n                "));
    131         this.noEntryContent();
    132 
    133         // Trigger change event to show the options.
    134         $('#exprdawc_attribute_type_' + this.fieldIndex).trigger('change');
    135       }
    136 
    137       /**
    138        * Remove a custom field.
    139        * @param {*} e
    140        * @returns
    141        */
    142     }, {
    143       key: "removeCustomField",
    144       value: function removeCustomField(e) {
    145         if (confirm(exprdawc_admin_meta_boxes.confirm_delete)) {
    146           this.setDirty();
    147           $(e.currentTarget).closest('tr').next('.exprdawc_options').remove();
    148           $(e.currentTarget).closest('tr').remove();
    149           this.noEntryContent();
    150         }
    151         return false;
    152       }
    153 
    154       /**
    155        * Toggle options.
    156        * @param {*} e
    157        */
    158     }, {
    159       key: "toggleOptions",
    160       value: function toggleOptions(e) {
    161         this.setDirty();
    162         var $row = $(e.currentTarget).closest('tr');
    163         var $optionsRow = $row.next('.exprdawc_options');
    164         var $optionsTable = $optionsRow.find('.exprdawc_options_table');
    165         var $placeholderText = $row.find('.exprdawc_placeholder');
    166         if ($(e.currentTarget).val() === 'radio' || $(e.currentTarget).val() === 'checkbox' || $(e.currentTarget).val() === 'select') {
    167           $placeholderText.prop('disabled', true);
    168           $optionsTable.show();
    169         } else {
    170           $placeholderText.prop('disabled', false);
    171           $optionsTable.hide();
    172         }
    173         if ($(e.currentTarget).val() === 'long_text') {
    174           $optionsRow.find('.exprdawc_long_text_table').show();
    175         } else {
    176           $optionsRow.find('.exprdawc_long_text_table').hide();
    177         }
    178         if ($(e.currentTarget).val() === 'text' || $(e.currentTarget).val() === 'email' || $(e.currentTarget).val() === 'number' || $(e.currentTarget).val() === 'date') {
    179           $optionsRow.find('.exprdawc_text_table').show();
    180         } else {
    181           $optionsRow.find('.exprdawc_text_table').hide();
    182         }
    183       }
    184 
    185       /**
    186        * Toggle options table.
    187        * @param {*} e
    188        */
    189     }, {
    190       key: "toggleOptionsTable",
    191       value: function toggleOptionsTable(e) {
    192         var $icon = $(e.currentTarget);
    193         var $optionsRow = $icon.closest('tr').next('.exprdawc_options');
    194         $optionsRow.toggle();
    195         $icon.toggleClass('dashicons-arrow-down dashicons-arrow-up');
    196       }
    197 
    198       /**
    199        * Add an option.
    200        * @param {*} e
    201        */
    202     }, {
    203       key: "addOption",
    204       value: function addOption(e) {
    205         this.setDirty();
    206         var $optionsTable = $(e.currentTarget).closest('.exprdawc_options_table');
    207         var optionIndex = $optionsTable.find('tbody tr').length;
    208         $optionsTable.find('tbody').append("\n                <tr>\n                    <td class=\"move\"><i class=\"dashicons dashicons-move\"></i></td>\n                    <td>\n                        <input type=\"text\" name=\"extra_product_fields[".concat(this.fieldIndex, "][options][").concat(optionIndex, "][label]\" placeholder=\"").concat(exprdawc_admin_meta_boxes.option_label_placeholder, "\" />\n                    </td>\n                    <td>\n                        <input type=\"text\" name=\"extra_product_fields[").concat(this.fieldIndex, "][options][").concat(optionIndex, "][value]\" placeholder=\"").concat(exprdawc_admin_meta_boxes.option_value_placeholder, "\" />\n                    </td>\n                    <td>\n                        <input type=\"radio\" name=\"extra_product_fields[").concat(this.fieldIndex, "][default]\" value=\"").concat(optionIndex, "\" />\n                    </td>\n                    <td>\n                        <button type=\"button\" class=\"button remove_option\">").concat(exprdawc_admin_meta_boxes.remove, "</button>\n                    </td>\n                </tr>\n                "));
    209         this.checkOptions($optionsTable.closest('.exprdawc_options'));
    210       }
    211 
    212       /**
    213        * Remove an option.
    214        * @param {*} e
    215        * @returns
    216        */
    217     }, {
    218       key: "removeOption",
    219       value: function removeOption(e) {
    220         if (confirm(exprdawc_admin_meta_boxes.confirm_delete)) {
    221           this.setDirty();
    222           $(e.currentTarget).closest('tr').remove();
    223           this.checkOptions($(e.currentTarget).closest('.exprdawc_options'));
    224         }
    225         return false;
    226       }
    227 
    228       /**
    229        * Check options.
    230        * @param {*} $optionsRow
    231        */
    232     }, {
    233       key: "checkOptions",
    234       value: function checkOptions($optionsRow) {
    235         var $optionsTable = $optionsRow.find('.exprdawc_options_table tbody');
    236         var $noEntryMessage = $optionsRow.find('.exprdawc_no_entry_message');
    237         if ($optionsTable.find('tr').length === 0) {
    238           $noEntryMessage.show();
    239         } else {
    240           $noEntryMessage.hide();
    241         }
    242       }
    243 
    244       /**
    245        * Export content.
    246        * @param {*} e
    247        * @returns
    248        */
    249     }, {
    250       key: "exportContent",
    251       value: function exportContent(e) {
    252         e.preventDefault();
    253         if (this.isDirty) {
    254           alert('Please save your changes before exporting.');
    255           return;
    256         }
    257         var $exportString = $('#exprdawc_export_string');
    258         var exportContent = $exportString.val();
    259         if (!exportContent) {
    260           alert("".concat(exprdawc_admin_meta_boxes.emptyExportMsg));
    261           return;
    262         }
    263         navigator.clipboard.writeText(exportContent).then(function () {
    264           alert("".concat(exprdawc_admin_meta_boxes.copySuccessMsg));
    265         }, function (err) {
    266           console.error('Could not copy text: ', err);
    267           alert("".concat(exprdawc_admin_meta_boxes.copyErrorMsg));
    268         });
    269       }
    270 
    271       /**
    272        * Import content.
    273        * @param {*} e
    274        * @returns
    275        */
    276     }, {
    277       key: "importContent",
    278       value: function importContent(e) {
    279         e.preventDefault();
    280         var exportString = prompt(exprdawc_admin_meta_boxes.enterExportString);
    281         if (exportString) {
    282           var sureImportQuestion = confirm(exprdawc_admin_meta_boxes.sureImportQuestion);
    283           if (!sureImportQuestion) {
    284             return;
    285           }
    286           var productId = $('#post_ID').val();
    287           $.ajax({
    288             url: ajaxurl,
    289             method: 'POST',
    290             data: {
    291               action: 'exprdawc_import_custom_fields',
    292               product_id: productId,
    293               export_string: exportString,
    294               security: exprdawc_admin_meta_boxes.edit_exprdawc_nonce
    295             },
    296             success: function success(response) {
    297               if (response.success) {
    298                 alert(exprdawc_admin_meta_boxes.importSuccessMsg);
    299                 location.reload();
    300               } else {
    301                 alert(exprdawc_admin_meta_boxes.importErrorMsg);
    302               }
    303             },
    304             error: function error() {
    305               alert(exprdawc_admin_meta_boxes.importErrorMsg);
    306             }
    307           });
    308         }
    309       }
    310 
    311       /**
    312        * Set dirty.
    313        */
    314     }, {
    315       key: "setDirty",
    316       value: function setDirty() {
    317         this.isDirty = true;
    318         this.disableExportLink();
    319       }
    320 
    321       /**
    322        * Disable export link.
    323        * @returns
    324        */
    325     }, {
    326       key: "disableExportLink",
    327       value: function disableExportLink() {
    328         if (this.isDirty) {
    329           $('.exprdawc-export').hide();
    330           return;
    331         }
    332       }
    333 
    334       /**
    335        * No entry content.
    336        */
    337     }, {
    338       key: "noEntryContent",
    339       value: function noEntryContent() {
    340         var index = $('#exprdawc_field_body .exprdawc_attribute').length,
    341           $container = $('.exprdawc_no_entry_message'),
    342           $table_header = $('#exprdatawc_table_header'),
    343           $export_link = $('.exprdawc-export');
    344         if (index > 0) {
    345           $container.hide();
    346           $table_header.show();
    347           $export_link.show();
    348         } else {
    349           $container.show();
    350           $table_header.hide();
    351           $export_link.hide();
    352         }
    353       }
    354 
    355       /**
    356        * Check autocomplete field.
    357        * @param {*} e
    358        */
    359     }, {
    360       key: "checkAutocompleteField",
    361       value: function checkAutocompleteField(e) {
    362         var $currentCheckbox = $(e.currentTarget);
    363         var isChecked = $currentCheckbox.is(':checked');
    364         if (isChecked) {
    365           var $otherChecked = $('.exprdawc_autocomplete_field').not($currentCheckbox).filter(':checked');
    366           if ($otherChecked.length > 0) {
    367             var confirmOverwrite = confirm(exprdawc_admin_meta_boxes.sureAnotherAutocompleCheckedQuestion);
    368             if (!confirmOverwrite) {
    369               $currentCheckbox.prop('checked', false);
    370               return;
    371             }
    372             $otherChecked.prop('checked', false);
    373           }
    374         }
    375       }
    376 
    377       /**
    378        * Add a rule group.
    379        * @param {*} e
    380        */
    381     }, {
    382       key: "addRuleGroup",
    383       value: function addRuleGroup(e) {
    384         var $container = $(e.currentTarget).closest('.exprdawc_conditional_logic_table').find('.exprdawc_conditional_rules');
    385         var ruleGroupIndex = $container.find('.exprdawc_rule_group').length;
    386         var actualIndex = $(e.currentTarget).closest('.exprdawc_fields_table').data('index');
    387         var ruleGroupHtml = this.getRuleGroupHtml(actualIndex, ruleGroupIndex);
    388         $container.append(ruleGroupHtml);
    389       }
    390 
    391       /**
    392        * Add a rule.
    393        * @param {*} e
    394        */
    395     }, {
    396       key: "addRule",
    397       value: function addRule(e) {
    398         var $ruleGroup = $(e.currentTarget).closest('.exprdawc_rule_group');
    399         var ruleGroupIndex = $ruleGroup.index();
    400         var actualIndex = $(e.currentTarget).closest('.exprdawc_fields_table').data('index');
    401         var ruleIndex = $ruleGroup.find('.exprdawc_rule').length;
    402         var ruleHtml = this.getRuleHtml(actualIndex, ruleGroupIndex, ruleIndex);
    403         $ruleGroup.append(ruleHtml);
    404       }
    405 
    406       /**
    407        * Get rule group HTML.
    408        * @param {number} ruleGroupIndex
    409        * @returns {string}
    410        */
    411     }, {
    412       key: "getRuleGroupHtml",
    413       value: function getRuleGroupHtml(actualIndex, ruleGroupIndex) {
    414         return "\n            <div class=\"exprdawc_rule_group_container\">\n                <h2>".concat(exprdawc_admin_meta_boxes.or, "</h2>\n                <div class=\"exprdawc_rule_group\">\n                    ").concat(this.getRuleHtml(actualIndex, ruleGroupIndex, 0), "\n                </div>\n            </div>\n            ");
    415       }
    416 
    417       /**
    418        * Get rule HTML.
    419        * @param {number} actualIndex
    420        * @param {number} ruleGroupIndex
    421        * @param {number} ruleIndex
    422        * @returns {string}
    423        */
    424     }, {
    425       key: "getRuleHtml",
    426       value: function getRuleHtml(actualIndex, ruleGroupIndex, ruleIndex) {
    427         return "\n            <div class=\"exprdawc_rule\">\n                <select name=\"extra_product_fields[".concat(actualIndex, "][conditional_rules][").concat(ruleGroupIndex, "][").concat(ruleIndex, "][field]\" class=\"exprdawc_input exprdawc_conditional_field\">\n                <option value=\"\">").concat(exprdawc_admin_meta_boxes.selectFieldNone, "</option>\n                ").concat(this.getAllFieldsOptions(), "\n                </select>\n                <select name=\"extra_product_fields[").concat(actualIndex, "][conditional_rules][").concat(ruleGroupIndex, "][").concat(ruleIndex, "][operator]\" class=\"exprdawc_input exprdawc_conditional_operator\">\n                    <option value=\"field_is_empty\">").concat(exprdawc_admin_meta_boxes.field_is_empty, "</option>\n                    <option value=\"field_is_not_empty\">").concat(exprdawc_admin_meta_boxes.field_is_not_empty, "</option>\n                    <option value=\"equals\">").concat(exprdawc_admin_meta_boxes.equals, "</option>\n                    <option value=\"not_equals\">").concat(exprdawc_admin_meta_boxes.notEquals, "</option>\n                    <option value=\"greater_than\">").concat(exprdawc_admin_meta_boxes.greaterThan, "</option>\n                    <option value=\"less_than\">").concat(exprdawc_admin_meta_boxes.lessThan, "</option>\n                </select>\n                <input type=\"text\" name=\"extra_product_fields[").concat(actualIndex, "][conditional_rules][").concat(ruleGroupIndex, "][").concat(ruleIndex, "][value]\" class=\"exprdawc_input exprdawc_conditional_value\" placeholder=\"").concat(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\">+ ").concat(exprdawc_admin_meta_boxes.and, "</button>\n            </div>\n            ");
    428       }
    429 
    430       /**
    431        * Toggle conditional value field visibility.
    432        * @param {*} e
    433        */
    434     }, {
    435       key: "toggleConditionalValueField",
    436       value: function toggleConditionalValueField(e) {
    437         var $operator = $(e.currentTarget);
    438         var $valueField = $operator.closest('.exprdawc_rule').find('.exprdawc_conditional_value');
    439         if ($operator.val() === 'field_changed' || $operator.val() === 'field_is_empty' || $operator.val() === 'field_is_not_empty') {
    440           $valueField.hide();
    441         } else {
    442           $valueField.show();
    443         }
    444       }
    445 
    446       // Init all Rules toggleConditionalValueField
    447     }, {
    448       key: "toggleConditionalValueFieldAll",
    449       value: function toggleConditionalValueFieldAll() {
    450         $('.exprdawc_conditional_operator').each(function () {
    451           $(this).trigger('change');
    452         });
    453       }
    454 
    455       /**
    456        * Remove a rule.
    457        * @param {*} e
    458        * @returns
    459        */
    460     }, {
    461       key: "removeRule",
    462       value: function removeRule(e) {
    463         if (confirm(exprdawc_admin_meta_boxes.confirm_delete_rule)) {
    464           var $ruleGroup = $(e.currentTarget).closest('.exprdawc_rule_group_container');
    465           $(e.currentTarget).closest('.exprdawc_rule').remove();
    466           if ($ruleGroup.find('.exprdawc_rule').length === 0) {
    467             $ruleGroup.remove();
    468           }
    469         }
    470         return false;
    471       }
    472 
    473       /**
    474        * Get all fields options.
    475        * @returns
    476        */
    477     }, {
    478       key: "getAllFieldsOptions",
    479       value: function getAllFieldsOptions() {
    480         var options = '';
    481         $('#exprdawc_field_body tr.exprdawc_attribute').each(function () {
    482           var label = $(this).find('.exprdawc_attribute_input_name input').val();
    483           options += "<option value=\"".concat(label, "\">").concat(label, "</option>");
    484         });
    485         return options;
    486       }
    487 
    488       /**
    489       * Enable or disable checkboxes based on a condition.
    490       */
    491     }, {
    492       key: "toggleConditionalTable",
    493       value: function toggleConditionalTable(e) {
    494         var checkbox = $(e.currentTarget);
    495         var $table_setting = $(e.currentTarget).closest('.exprdawc_options').find('.exprdawc_conditional_logic_table');
    496         if (checkbox.is(':checked')) {
    497           $table_setting.show();
    498         } else {
    499           $table_setting.hide();
    500         }
    501       }
    502     }]);
    503   }(); // Initialize the class.
    504   new ExprdawcMetaBoxesProduct();
    505 });
    506 
    507 /***/ }),
    508 
    509 /***/ "./src/assets/scss/admin-backend.scss":
    510 /*!********************************************!*\
    511   !*** ./src/assets/scss/admin-backend.scss ***!
    512   \********************************************/
    513 /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
    514 
    515 "use strict";
    516 __webpack_require__.r(__webpack_exports__);
    517 // extracted by mini-css-extract-plugin
    518 
    519 
    520 /***/ }),
    521 
    522 /***/ "./src/assets/scss/forms.scss":
    523 /*!************************************!*\
    524   !*** ./src/assets/scss/forms.scss ***!
    525   \************************************/
    526 /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
    527 
    528 "use strict";
    529 __webpack_require__.r(__webpack_exports__);
    530 // extracted by mini-css-extract-plugin
    531 
    532 
    533 /***/ })
    534 
    535 /******/    });
    536 /************************************************************************/
    537 /******/    // The module cache
    538 /******/    var __webpack_module_cache__ = {};
    539 /******/   
    540 /******/    // The require function
    541 /******/    function __webpack_require__(moduleId) {
    542 /******/        // Check if module is in cache
    543 /******/        var cachedModule = __webpack_module_cache__[moduleId];
    544 /******/        if (cachedModule !== undefined) {
    545 /******/            return cachedModule.exports;
    546 /******/        }
    547 /******/        // Create a new module (and put it into the cache)
    548 /******/        var module = __webpack_module_cache__[moduleId] = {
    549 /******/            // no module.id needed
    550 /******/            // no module.loaded needed
    551 /******/            exports: {}
    552 /******/        };
    553 /******/   
    554 /******/        // Execute the module function
    555 /******/        __webpack_modules__[moduleId](module, module.exports, __webpack_require__);
    556 /******/   
    557 /******/        // Return the exports of the module
    558 /******/        return module.exports;
    559 /******/    }
    560 /******/   
    561 /******/    // expose the modules object (__webpack_modules__)
    562 /******/    __webpack_require__.m = __webpack_modules__;
    563 /******/   
    564 /************************************************************************/
    565 /******/    /* webpack/runtime/chunk loaded */
    566 /******/    (() => {
    567 /******/        var deferred = [];
    568 /******/        __webpack_require__.O = (result, chunkIds, fn, priority) => {
    569 /******/            if(chunkIds) {
    570 /******/                priority = priority || 0;
    571 /******/                for(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];
    572 /******/                deferred[i] = [chunkIds, fn, priority];
    573 /******/                return;
    574 /******/            }
    575 /******/            var notFulfilled = Infinity;
    576 /******/            for (var i = 0; i < deferred.length; i++) {
    577 /******/                var [chunkIds, fn, priority] = deferred[i];
    578 /******/                var fulfilled = true;
    579 /******/                for (var j = 0; j < chunkIds.length; j++) {
    580 /******/                    if ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {
    581 /******/                        chunkIds.splice(j--, 1);
    582 /******/                    } else {
    583 /******/                        fulfilled = false;
    584 /******/                        if(priority < notFulfilled) notFulfilled = priority;
    585 /******/                    }
    586 /******/                }
    587 /******/                if(fulfilled) {
    588 /******/                    deferred.splice(i--, 1)
    589 /******/                    var r = fn();
    590 /******/                    if (r !== undefined) result = r;
    591 /******/                }
    592 /******/            }
    593 /******/            return result;
    594 /******/        };
    595 /******/    })();
    596 /******/   
    597 /******/    /* webpack/runtime/hasOwnProperty shorthand */
    598 /******/    (() => {
    599 /******/        __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
    600 /******/    })();
    601 /******/   
    602 /******/    /* webpack/runtime/make namespace object */
    603 /******/    (() => {
    604 /******/        // define __esModule on exports
    605 /******/        __webpack_require__.r = (exports) => {
    606 /******/            if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
    607 /******/                Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
    608 /******/            }
    609 /******/            Object.defineProperty(exports, '__esModule', { value: true });
    610 /******/        };
    611 /******/    })();
    612 /******/   
    613 /******/    /* webpack/runtime/jsonp chunk loading */
    614 /******/    (() => {
    615 /******/        // no baseURI
    616 /******/       
    617 /******/        // object to store loaded and loading chunks
    618 /******/        // undefined = chunk not loaded, null = chunk preloaded/prefetched
    619 /******/        // [resolve, reject, Promise] = chunk loading, 0 = chunk loaded
    620 /******/        var installedChunks = {
    621 /******/            "/assets/js/wc-meta-boxes-product": 0,
    622 /******/            "assets/css/forms": 0,
    623 /******/            "assets/css/admin-backend": 0
    624 /******/        };
    625 /******/       
    626 /******/        // no chunk on demand loading
    627 /******/       
    628 /******/        // no prefetching
    629 /******/       
    630 /******/        // no preloaded
    631 /******/       
    632 /******/        // no HMR
    633 /******/       
    634 /******/        // no HMR manifest
    635 /******/       
    636 /******/        __webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);
    637 /******/       
    638 /******/        // install a JSONP callback for chunk loading
    639 /******/        var webpackJsonpCallback = (parentChunkLoadingFunction, data) => {
    640 /******/            var [chunkIds, moreModules, runtime] = data;
    641 /******/            // add "moreModules" to the modules object,
    642 /******/            // then flag all "chunkIds" as loaded and fire callback
    643 /******/            var moduleId, chunkId, i = 0;
    644 /******/            if(chunkIds.some((id) => (installedChunks[id] !== 0))) {
    645 /******/                for(moduleId in moreModules) {
    646 /******/                    if(__webpack_require__.o(moreModules, moduleId)) {
    647 /******/                        __webpack_require__.m[moduleId] = moreModules[moduleId];
    648 /******/                    }
    649 /******/                }
    650 /******/                if(runtime) var result = runtime(__webpack_require__);
    651 /******/            }
    652 /******/            if(parentChunkLoadingFunction) parentChunkLoadingFunction(data);
    653 /******/            for(;i < chunkIds.length; i++) {
    654 /******/                chunkId = chunkIds[i];
    655 /******/                if(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {
    656 /******/                    installedChunks[chunkId][0]();
    657 /******/                }
    658 /******/                installedChunks[chunkId] = 0;
    659 /******/            }
    660 /******/            return __webpack_require__.O(result);
    661 /******/        }
    662 /******/       
    663 /******/        var chunkLoadingGlobal = self["webpackChunkextra_product_data_for_woocommerce"] = self["webpackChunkextra_product_data_for_woocommerce"] || [];
    664 /******/        chunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));
    665 /******/        chunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));
    666 /******/    })();
    667 /******/   
    668 /************************************************************************/
    669 /******/   
    670 /******/    // startup
    671 /******/    // Load entry module and return exports
    672 /******/    // This entry module depends on other loaded chunks and execution need to be delayed
    673 /******/    __webpack_require__.O(undefined, ["assets/css/forms","assets/css/admin-backend"], () => (__webpack_require__("./src/assets/js/wc-meta-boxes-product.js")))
    674 /******/    __webpack_require__.O(undefined, ["assets/css/forms","assets/css/admin-backend"], () => (__webpack_require__("./src/assets/scss/admin-backend.scss")))
    675 /******/    var __webpack_exports__ = __webpack_require__.O(undefined, ["assets/css/forms","assets/css/admin-backend"], () => (__webpack_require__("./src/assets/scss/forms.scss")))
    676 /******/    __webpack_exports__ = __webpack_require__.O(__webpack_exports__);
    677 /******/   
    678 /******/ })()
    679 ;
     1/*! For license information please see wc-meta-boxes-product.js.LICENSE.txt */
     2(()=>{var e,t={976:()=>{function e(t){return e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},e(t)}function t(e,t){for(var a=0;a<t.length;a++){var o=t[a];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,n(o.key),o)}}function n(t){var n=function(t,n){if("object"!=e(t)||!t)return t;var a=t[Symbol.toPrimitive];if(void 0!==a){var o=a.call(t,n||"default");if("object"!=e(o))return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===n?String:Number)(t)}(t,"string");return"symbol"==e(n)?n:n+""}jQuery((function(e){new(function(){return n=function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),this.fieldIndex=e("#exprdawc_field_body tr.exprdawc_attribute").length,this.isDirty=!1,this.init()},a=[{key:"init",value:function(){this.bindEvents(),this.noEntryContent()}},{key:"bindEvents",value:function(){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",".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("click","a.exprdawc-export",this.exportContent.bind(this)),e(document).on("click","a.exprdawc-import",this.importContent.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)),this.toggleConditionalValueFieldAll(),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")}}),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(),n=e(this).closest(".exprdawc_attribute").find(".attribute_name");t&&n.text(t)}))}},{key:"addCustomField",value:function(){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="'.concat(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" name="extra_product_fields[').concat(this.fieldIndex,'][label]" placeholder="').concat(exprdawc_admin_meta_boxes.label_placeholder,'" />\n                            </td>\n                            <td>\n                                <select id="exprdawc_attribute_type_').concat(this.fieldIndex,'" name="extra_product_fields[').concat(this.fieldIndex,'][type]" class="exprdawc_attribute_type">\n                                    <option value="text">').concat(exprdawc_admin_meta_boxes.short_text,'</option>\n                                    <option value="long_text">').concat(exprdawc_admin_meta_boxes.long_text,'</option>\n                                    <option value="email">').concat(exprdawc_admin_meta_boxes.email,'</option>\n                                    <option value="number">').concat(exprdawc_admin_meta_boxes.number,'</option>\n                                    <option value="date">').concat(exprdawc_admin_meta_boxes.date,'</option>\n                                    <option value="yes-no">').concat(exprdawc_admin_meta_boxes.yes_no,'</option>\n                                    <option value="radio">').concat(exprdawc_admin_meta_boxes.radio,'</option>\n                                    <option value="checkbox">').concat(exprdawc_admin_meta_boxes.checkbox,'</option>\n                                    <option value="select">').concat(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                                <input type="hidden" class="exprdawc_attribute_index" name="extra_product_fields[').concat(this.fieldIndex,'][index]" value="').concat(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_').concat(this.fieldIndex,'">\n                                                    <input type="checkbox" id="exprdawc_text_required_').concat(this.fieldIndex,'" class="exprdawc_input exprdawc_checkbox checkbox" name="extra_product_fields[').concat(this.fieldIndex,'][required]" value="1" />\n                                                    ').concat(exprdawc_admin_meta_boxes.require_input,'\n                                                </label>                                       \n                                                <label class="exprdawc_label" for="exprdawc_text_autofocus_').concat(this.fieldIndex,'">\n                                                    <input type="checkbox" id="exprdawc_text_autofocus_').concat(this.fieldIndex,'" class="exprdawc_input exprdawc_checkbox checkbox" name="extra_product_fields[').concat(this.fieldIndex,'][autofocus]" value="1" />\n                                                    ').concat(exprdawc_admin_meta_boxes.enable_autofocus,'\n                                                </label>\n\n                                                \x3c!-- Enable Conditional Logic and show table --\x3e\n                                                <label class="exprdawc_label" for="exprdawc_text_conditional_logic_').concat(this.fieldIndex,'">\n                                                    <input type="checkbox" id="exprdawc_text_conditional_logic_').concat(this.fieldIndex,'" class="exprdawc_input exprdawc_checkbox exprdawc_conditional_logic_field checkbox" name="extra_product_fields[').concat(this.fieldIndex,'][conditional_logic]" value="1" />\n                                                    ').concat(exprdawc_admin_meta_boxes.enable_conditional_logic,'\n                                                </label>\n                                            </td>\n                                            <td class="exprdawc_attribute_placeholder_text">\n                                                <label class="exprdawc_label" for="exprdawc_text_placeholder_text_').concat(this.fieldIndex,'">').concat(exprdawc_admin_meta_boxes.placeholder_text,'</label>\n                                                <input type="text" id="exprdawc_text_placeholder_text_').concat(this.fieldIndex,'" class="exprdawc_input exprdawc_textinput exprdawc_placeholder" name="extra_product_fields[').concat(this.fieldIndex,'][placeholder_text]" placeholder="').concat(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_').concat(this.fieldIndex,'">').concat(exprdawc_admin_meta_boxes.help_text,'</label>\n                                                <input type="text" id="exprdawc_text_help_text_').concat(this.fieldIndex,'" class="exprdawc_input exprdawc_textinput exprdawc_helptext" name="extra_product_fields[').concat(this.fieldIndex,'][help_text]" placeholder="').concat(exprdawc_admin_meta_boxes.help_text,'" />\n                                            </td>\n                                            <td>\n                                                <label class="exprdawc_label" for="exprdawc_autocomplete_function_').concat(this.fieldIndex,'">').concat(exprdawc_admin_meta_boxes.autocomplete_function,'</label>\n                                                <select id="exprdawc_autocomplete_function_').concat(this.fieldIndex,'" name="extra_product_fields[').concat(this.fieldIndex,'][autocomplete]" class="exprdawc_input exprdawc_attribute_type">\n                                                    <option value="on">').concat(exprdawc_admin_meta_boxes.autocomplete_on,'</option>\n                                                    <option value="off">').concat(exprdawc_admin_meta_boxes.autocomplete_off,'</option>\n                                                    <option value="address-level1">').concat(exprdawc_admin_meta_boxes.address_level1,'</option>\n                                                    <option value="address-level2">').concat(exprdawc_admin_meta_boxes.address_level2,'</option>\n                                                    <option value="address-level3">').concat(exprdawc_admin_meta_boxes.address_level3,'</option>\n                                                    <option value="address-level4">').concat(exprdawc_admin_meta_boxes.address_level4,'</option>\n                                                    <option value="address-line1">').concat(exprdawc_admin_meta_boxes.address_line1,'</option>\n                                                    <option value="address-line2">').concat(exprdawc_admin_meta_boxes.address_line2,'</option>\n                                                    <option value="address-line3">').concat(exprdawc_admin_meta_boxes.address_line3,'</option>\n                                                    <option value="bday">').concat(exprdawc_admin_meta_boxes.bday,'</option>\n                                                    <option value="bday-day">').concat(exprdawc_admin_meta_boxes.bday_day,'</option>\n                                                    <option value="bday-month">').concat(exprdawc_admin_meta_boxes.bday_month,'</option>\n                                                    <option value="bday-year">').concat(exprdawc_admin_meta_boxes.bday_year,'</option>\n                                                    <option value="cc-additional-name">').concat(exprdawc_admin_meta_boxes.cc_additional_name,'</option>\n                                                    <option value="cc-csc">').concat(exprdawc_admin_meta_boxes.cc_csc,'</option>\n                                                    <option value="cc-exp">').concat(exprdawc_admin_meta_boxes.cc_exp,'</option>\n                                                    <option value="cc-exp-month">').concat(exprdawc_admin_meta_boxes.cc_exp_month,'</option>\n                                                    <option value="cc-exp-year">').concat(exprdawc_admin_meta_boxes.cc_exp_year,'</option>\n                                                    <option value="cc-family-name">').concat(exprdawc_admin_meta_boxes.cc_family_name,'</option>\n                                                    <option value="cc-given-name">').concat(exprdawc_admin_meta_boxes.cc_given_name,'</option>\n                                                    <option value="cc-name">').concat(exprdawc_admin_meta_boxes.cc_name,'</option>\n                                                    <option value="cc-number">').concat(exprdawc_admin_meta_boxes.cc_number,'</option>\n                                                    <option value="cc-type">').concat(exprdawc_admin_meta_boxes.cc_type,'</option>\n                                                    <option value="country">').concat(exprdawc_admin_meta_boxes.country,'</option>\n                                                    <option value="country-name">').concat(exprdawc_admin_meta_boxes.country_name,'</option>\n                                                    <option value="email">').concat(exprdawc_admin_meta_boxes.email,'</option>\n                                                    <option value="language">').concat(exprdawc_admin_meta_boxes.language,'</option>\n                                                    <option value="photo">').concat(exprdawc_admin_meta_boxes.photo,'</option>\n                                                    <option value="postal-code">').concat(exprdawc_admin_meta_boxes.postal_code,'</option>\n                                                    <option value="sex">').concat(exprdawc_admin_meta_boxes.sex,'</option>\n                                                    <option value="street-address">').concat(exprdawc_admin_meta_boxes.street_address,'</option>\n                                                    <option value="tel">').concat(exprdawc_admin_meta_boxes.tel,'</option>\n                                                    <option value="tel-area-code">').concat(exprdawc_admin_meta_boxes.tel_area_code,'</option>\n                                                    <option value="tel-country-code">').concat(exprdawc_admin_meta_boxes.tel_country_code,'</option>\n                                                    <option value="tel-extension">').concat(exprdawc_admin_meta_boxes.tel_extension,'</option>\n                                                    <option value="tel-local">').concat(exprdawc_admin_meta_boxes.tel_local,'</option>\n                                                    <option value="tel-local-prefix">').concat(exprdawc_admin_meta_boxes.tel_local_prefix,'</option>\n                                                    <option value="tel-local-suffix">').concat(exprdawc_admin_meta_boxes.tel_local_suffix,'</option>\n                                                    <option value="tel-national">').concat(exprdawc_admin_meta_boxes.tel_national,'</option>\n                                                    <option value="transaction-amount">').concat(exprdawc_admin_meta_boxes.transaction_amount,'</option>\n                                                    <option value="transaction-currency">').concat(exprdawc_admin_meta_boxes.transaction_currency,'</option>\n                                                    <option value="url">').concat(exprdawc_admin_meta_boxes.url,'</option>\n                                                </select>\n                                            </td>\n                                        </tr>\n                                    </tbody>\n                                </table>\n                                <hr>\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">').concat(exprdawc_admin_meta_boxes.conditionals,"</label>\n\t\t\t\t\t\t\t\t                <p>").concat(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[').concat(this.fieldIndex,'][conditional_rules][0][0][field]" class="exprdawc_input exprdawc_conditional_field">\n                                                                <option value="">').concat(exprdawc_admin_meta_boxes.selectFieldNone,"</option>\n                                                                ").concat(this.getAllFieldsOptions(),'\n                                                                </select>\n                                                                <select name="extra_product_fields[').concat(this.fieldIndex,'][conditional_rules][0][0][operator]" class="exprdawc_input exprdawc_conditional_operator">\n                                                                    <option value="field_is_empty">').concat(exprdawc_admin_meta_boxes.field_is_empty,'</option>\n                                                                    <option value="field_is_not_empty">').concat(exprdawc_admin_meta_boxes.field_is_not_empty,'</option>\n                                                                    <option value="equals">').concat(exprdawc_admin_meta_boxes.equals,'</option>\n                                                                    <option value="not_equals">').concat(exprdawc_admin_meta_boxes.notEquals,'</option>\n                                                                    <option value="greater_than">').concat(exprdawc_admin_meta_boxes.greaterThan,'</option>\n                                                                    <option value="less_than">').concat(exprdawc_admin_meta_boxes.lessThan,'</option>\n                                                                </select>\n                                                                <input type="text" name="extra_product_fields[').concat(this.fieldIndex,'][conditional_rules][0][0][value]" class="exprdawc_input exprdawc_conditional_value" placeholder="').concat(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">').concat(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_').concat(this.fieldIndex,'">').concat(exprdawc_admin_meta_boxes.rows,'</label>\n                                                <input type="number" id="exprdawc_long_text_rows_').concat(this.fieldIndex,'" class="exprdawc_input exprdawc_long_text_rows" name="extra_product_fields[').concat(this.fieldIndex,'][rows]" value="2" />\n                                            </td>\n                                            <td>\n                                                <label class="exprdawc_label" for="exprdawc_long_text_cols_').concat(this.fieldIndex,'">').concat(exprdawc_admin_meta_boxes.columns,'</label>\n                                                <input type="number" id="exprdawc_long_text_cols_').concat(this.fieldIndex,'" class="exprdawc_input exprdawc_long_text_cols" name="extra_product_fields[').concat(this.fieldIndex,'][cols]" value="5" />\n                                            </td>\n                                            <td>\n                                                <label class="exprdawc_label" for="exprdawc_long_text_default_').concat(this.fieldIndex,'">').concat(exprdawc_admin_meta_boxes.default_value,'</label>\n                                                <textarea id="exprdawc_long_text_default_').concat(this.fieldIndex,'" class="exprdawc_textarea" rows="3" cols="30" placeholder="').concat(exprdawc_admin_meta_boxes.enter_default_text,'" name="extra_product_fields[').concat(this.fieldIndex,'][default]"></textarea>\n                                            </td>\n                                        </tr>\n                                    </tbody>\n                                </table>\n\n                                \x3c!-- Text Option/Settings --\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_').concat(this.fieldIndex,'">').concat(exprdawc_admin_meta_boxes.min_length,'</label>\n                                                <input type="number" id="exprdawc_text_min_length_').concat(this.fieldIndex,'" class="exprdawc_input exprdawc_text_min_length" name="extra_product_fields[').concat(this.fieldIndex,'][minlength]" value="0" />\n                                            </td>\n                                            <td>\n                                                <label class="exprdawc_label" for="exprdawc_text_max_length_').concat(this.fieldIndex,'">').concat(exprdawc_admin_meta_boxes.max_length,'</label>\n                                                <input type="number" id="exprdawc_text_max_length_').concat(this.fieldIndex,'" class="exprdawc_input exprdawc_text_max_length" name="extra_product_fields[').concat(this.fieldIndex,'][maxlength]" value="255" />\n                                            </td>\n                                            <td>\n                                                <label class="exprdawc_label" for="exprdawc_text_default_').concat(this.fieldIndex,'">').concat(exprdawc_admin_meta_boxes.default_value,'</label>\n                                                <input type="text" id="exprdawc_text_default_').concat(this.fieldIndex,'" class="exprdawc_input exprdawc_text_default" placeholder="').concat(exprdawc_admin_meta_boxes.enter_default_text,'" name="extra_product_fields[').concat(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>').concat(exprdawc_admin_meta_boxes.option_label,"</th>\n                                            <th>").concat(exprdawc_admin_meta_boxes.option_value,"</th>\n                                            <th>").concat(exprdawc_admin_meta_boxes.default,"</th>\n                                            <th>").concat(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="4">\n                                                <button type="button" class="button add_option">').concat(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;">').concat(exprdawc_admin_meta_boxes.no_options,"</p>\n                            </td>\n                        </tr>\n                    </tbody>\n                </table>\n                </td>\n                </tr>\n                ")),this.noEntryContent(),e("#exprdawc_attribute_type_"+this.fieldIndex).trigger("change")}},{key:"removeCustomField",value:function(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.noEntryContent()),!1}},{key:"toggleOptions",value:function(t){this.setDirty();var n=e(t.currentTarget).closest("tr"),a=n.next(".exprdawc_options"),o=a.find(".exprdawc_options_table"),c=n.find(".exprdawc_placeholder");"radio"===e(t.currentTarget).val()||"checkbox"===e(t.currentTarget).val()||"select"===e(t.currentTarget).val()?(c.prop("disabled",!0),o.show()):(c.prop("disabled",!1),o.hide()),"long_text"===e(t.currentTarget).val()?a.find(".exprdawc_long_text_table").show():a.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()?a.find(".exprdawc_text_table").show():a.find(".exprdawc_text_table").hide()}},{key:"toggleOptionsTable",value:function(t){var n=e(t.currentTarget);n.closest("tr").next(".exprdawc_options").toggle(),n.toggleClass("dashicons-arrow-down dashicons-arrow-up")}},{key:"addOption",value:function(t){this.setDirty();var n=e(t.currentTarget).closest(".exprdawc_options_table"),a=n.find("tbody tr").length;n.find("tbody").append('\n                <tr>\n                    <td class="move"><i class="dashicons dashicons-move"></i></td>\n                    <td>\n                        <input type="text" name="extra_product_fields['.concat(this.fieldIndex,"][options][").concat(a,'][label]" placeholder="').concat(exprdawc_admin_meta_boxes.option_label_placeholder,'" />\n                    </td>\n                    <td>\n                        <input type="text" name="extra_product_fields[').concat(this.fieldIndex,"][options][").concat(a,'][value]" placeholder="').concat(exprdawc_admin_meta_boxes.option_value_placeholder,'" />\n                    </td>\n                    <td>\n                        <input type="radio" name="extra_product_fields[').concat(this.fieldIndex,'][default]" value="').concat(a,'" />\n                    </td>\n                    <td>\n                        <button type="button" class="button remove_option">').concat(exprdawc_admin_meta_boxes.remove,"</button>\n                    </td>\n                </tr>\n                ")),this.checkOptions(n.closest(".exprdawc_options"))}},{key:"removeOption",value:function(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}},{key:"checkOptions",value:function(e){var t=e.find(".exprdawc_options_table tbody"),n=e.find(".exprdawc_no_entry_message");0===t.find("tr").length?n.show():n.hide()}},{key:"exportContent",value:function(t){if(t.preventDefault(),console.log("exportContent"),console.log(this.isDirty),this.isDirty)alert("".concat(exprdawc_admin_meta_boxes.pleaseSaveBeforeExportMsg));else{var n=e("#exprdawc_export_string").val();n?navigator.clipboard.writeText(n).then((function(){alert("".concat(exprdawc_admin_meta_boxes.copySuccessMsg))}),(function(e){console.error("Could not copy text: ",e),alert("".concat(exprdawc_admin_meta_boxes.copyErrorMsg))})):alert("".concat(exprdawc_admin_meta_boxes.emptyExportMsg))}}},{key:"importContent",value:function(t){t.preventDefault();var n=prompt(exprdawc_admin_meta_boxes.enterExportString);if(n){if(!confirm(exprdawc_admin_meta_boxes.sureImportQuestion))return;var a=e("#post_ID").val();e.ajax({url:ajaxurl,method:"POST",data:{action:"exprdawc_import_custom_fields",product_id:a,export_string:n,security:exprdawc_admin_meta_boxes.edit_exprdawc_nonce},success:function(e){e.success?(alert(exprdawc_admin_meta_boxes.importSuccessMsg),location.reload()):alert(exprdawc_admin_meta_boxes.importErrorMsg)},error:function(){alert(exprdawc_admin_meta_boxes.importErrorMsg)}})}}},{key:"setDirty",value:function(){this.isDirty=!0,this.disableExportLink()}},{key:"disableExportLink",value:function(){this.isDirty&&e(".exprdawc-export").hide()}},{key:"noEntryContent",value:function(){var t=e("#exprdawc_field_body .exprdawc_attribute").length,n=e(".exprdawc_no_entry_message"),a=e("#exprdatawc_table_header"),o=e(".exprdawc-export");t>0?(n.hide(),a.show(),o.show()):(n.show(),a.hide(),o.hide())}},{key:"checkAutocompleteField",value:function(t){var n=e(t.currentTarget);if(n.is(":checked")){var a=e(".exprdawc_autocomplete_field").not(n).filter(":checked");if(a.length>0){if(!confirm(exprdawc_admin_meta_boxes.sureAnotherAutocompleCheckedQuestion))return void n.prop("checked",!1);a.prop("checked",!1)}}}},{key:"addRuleGroup",value:function(t){var n=e(t.currentTarget).closest(".exprdawc_conditional_logic_table").find(".exprdawc_conditional_rules"),a=n.find(".exprdawc_rule_group").length,o=e(t.currentTarget).closest(".exprdawc_fields_table").data("index"),c=this.getRuleGroupHtml(o,a);n.append(c)}},{key:"addRule",value:function(t){var n=e(t.currentTarget).closest(".exprdawc_rule_group"),a=n.index(),o=e(t.currentTarget).closest(".exprdawc_fields_table").data("index"),c=n.find(".exprdawc_rule").length,i=this.getRuleHtml(o,a,c);n.append(i)}},{key:"getRuleGroupHtml",value:function(e,t){return'\n            <div class="exprdawc_rule_group_container">\n                <h2>'.concat(exprdawc_admin_meta_boxes.or,'</h2>\n                <div class="exprdawc_rule_group">\n                    ').concat(this.getRuleHtml(e,t,0),"\n                </div>\n            </div>\n            ")}},{key:"getRuleHtml",value:function(e,t,n){return'\n            <div class="exprdawc_rule">\n                <select name="extra_product_fields['.concat(e,"][conditional_rules][").concat(t,"][").concat(n,'][field]" class="exprdawc_input exprdawc_conditional_field">\n                <option value="">').concat(exprdawc_admin_meta_boxes.selectFieldNone,"</option>\n                ").concat(this.getAllFieldsOptions(),'\n                </select>\n                <select name="extra_product_fields[').concat(e,"][conditional_rules][").concat(t,"][").concat(n,'][operator]" class="exprdawc_input exprdawc_conditional_operator">\n                    <option value="field_is_empty">').concat(exprdawc_admin_meta_boxes.field_is_empty,'</option>\n                    <option value="field_is_not_empty">').concat(exprdawc_admin_meta_boxes.field_is_not_empty,'</option>\n                    <option value="equals">').concat(exprdawc_admin_meta_boxes.equals,'</option>\n                    <option value="not_equals">').concat(exprdawc_admin_meta_boxes.notEquals,'</option>\n                    <option value="greater_than">').concat(exprdawc_admin_meta_boxes.greaterThan,'</option>\n                    <option value="less_than">').concat(exprdawc_admin_meta_boxes.lessThan,'</option>\n                </select>\n                <input type="text" name="extra_product_fields[').concat(e,"][conditional_rules][").concat(t,"][").concat(n,'][value]" class="exprdawc_input exprdawc_conditional_value" placeholder="').concat(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">+ ').concat(exprdawc_admin_meta_boxes.and,"</button>\n            </div>\n            ")}},{key:"toggleConditionalValueField",value:function(t){var n=e(t.currentTarget),a=n.closest(".exprdawc_rule").find(".exprdawc_conditional_value");"field_changed"===n.val()||"field_is_empty"===n.val()||"field_is_not_empty"===n.val()?a.hide():a.show()}},{key:"toggleConditionalValueFieldAll",value:function(){var t=this;e(".exprdawc_conditional_operator").each((function(e,n){t.toggleConditionalValueField({currentTarget:n})}))}},{key:"removeRule",value:function(t){if(confirm(exprdawc_admin_meta_boxes.confirm_delete_rule)){var n=e(t.currentTarget).closest(".exprdawc_rule_group_container");e(t.currentTarget).closest(".exprdawc_rule").remove(),0===n.find(".exprdawc_rule").length&&n.remove()}return!1}},{key:"getAllFieldsOptions",value:function(){var t="";return e("#exprdawc_field_body tr.exprdawc_attribute").each((function(){var n=e(this).find(".exprdawc_attribute_input_name input").val();t+='<option value="'.concat(n,'">').concat(n,"</option>")})),t}},{key:"toggleConditionalTable",value:function(t){var n=e(t.currentTarget),a=e(t.currentTarget).closest(".exprdawc_options").find(".exprdawc_conditional_logic_table");n.is(":checked")?a.show():a.hide()}}],a&&t(n.prototype,a),o&&t(n,o),Object.defineProperty(n,"prototype",{writable:!1}),n;var n,a,o}())}))},989:()=>{},99:()=>{}},n={};function a(e){var o=n[e];if(void 0!==o)return o.exports;var c=n[e]={exports:{}};return t[e](c,c.exports,a),c.exports}a.m=t,e=[],a.O=(t,n,o,c)=>{if(!n){var i=1/0;for(_=0;_<e.length;_++){for(var[n,o,c]=e[_],d=!0,r=0;r<n.length;r++)(!1&c||i>=c)&&Object.keys(a.O).every((e=>a.O[e](n[r])))?n.splice(r--,1):(d=!1,c<i&&(i=c));if(d){e.splice(_--,1);var l=o();void 0!==l&&(t=l)}}return t}c=c||0;for(var _=e.length;_>0&&e[_-1][2]>c;_--)e[_]=e[_-1];e[_]=[n,o,c]},a.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{var e={890:0,956:0,107:0};a.O.j=t=>0===e[t];var t=(t,n)=>{var o,c,[i,d,r]=n,l=0;if(i.some((t=>0!==e[t]))){for(o in d)a.o(d,o)&&(a.m[o]=d[o]);if(r)var _=r(a)}for(t&&t(n);l<i.length;l++)c=i[l],a.o(e,c)&&e[c]&&e[c][0](),e[c]=0;return a.O(_)},n=self.webpackChunkextra_product_data_for_woocommerce=self.webpackChunkextra_product_data_for_woocommerce||[];n.forEach(t.bind(null,0)),n.push=t.bind(null,n.push.bind(n))})(),a.O(void 0,[956,107],(()=>a(976))),a.O(void 0,[956,107],(()=>a(989)));var o=a.O(void 0,[956,107],(()=>a(99)));o=a.O(o)})();
  • extra-product-data-for-woocommerce/tags/1.4.1/extra-product-data-for-woocommerce.php

    r3202511 r3203398  
    33Plugin Name: Extra Product Data for WooCommerce
    44Description: Adds customizable input fields per product in WooCommerce, allowing users to enter extra details on the frontend.
    5 Version: 1.4.0
     5Version: 1.4.1
    66Author: Triopsi
    77Author URI: https://triopsi.dev
  • extra-product-data-for-woocommerce/tags/1.4.1/readme.txt

    r3202511 r3203398  
    55Tested up to: 6.7
    66Requires PHP: 8.2
    7 Stable tag: 1.4.0
     7Stable tag: 1.4.1
    88License: GPLv2 or later
    99License URI: https://www.gnu.org/licenses/gpl-2.0.html
     
    727212. Display summary on thank your email
    737313. Display summary on order email
     7414. Set Conditional Logic
    7475
    7576== Changelog ==
     
    8384= 1.1.3 =
    8485* Update for the WordPress Library
     86
     87= 1.2.0 =
     88* Add Edit Button in the order overview.
     89
     90= 1.3.0 =
     91* Add more field types checkboxes, radio and selects
     92* Edit option for admins in order overview
     93
     94= 1.4.0 =
     95* Radio and checkboxes don't have input-text CSS classes
     96* Select overflow
     97* Add autocomplete function
     98* Add Conditional Logic for fields
     99* Add Conditional rules in backend
  • extra-product-data-for-woocommerce/tags/1.4.1/src/classes/class-exprdawc-product-page-backend.php

    r3202511 r3203398  
    195195                'conditionals'                         => esc_html__( 'Conditionals', 'extra-product-data-for-woocommerce' ),
    196196                'conditionals_description'             => esc_html__( 'Only show this field when conditional rules are true.', 'extra-product-data-for-woocommerce' ),
     197                'pleaseSaveBeforeExportMsg'            => esc_html__( 'Please save your changes before exporting.', 'extra-product-data-for-woocommerce' ),
    197198            )
    198199        );
     
    226227                    $autocomplete      = isset( $field['autocomplete'] ) ? sanitize_text_field( $field['autocomplete'] ) : '';
    227228                    $autofocus         = isset( $field['autofocus'] ) ? true : false;
    228                     $index          = isset( $field['index'] ) ? absint( $field['index'] ) : 0;
     229                    $index            = isset( $field['index'] ) ? absint( $field['index'] ) : 0;
    229230
    230231                    // Conditional Logic
     
    293294                        'autofocus'         => $autofocus,
    294295                        'conditional_rules' => $conditional_logic_rules,
    295                         'index'             => $index,
     296                        'index'             => $index,
    296297                    );
    297298                },
  • extra-product-data-for-woocommerce/trunk/CHANGELOG.md

    r3202511 r3203398  
     1# [1.4.0](https://git.triopsi.dev/triopsi/extra-product-data-for-woocommerce/compare/v1.3.0...v1.4.0) (2024-12-04)
     2
     3
     4### Bug Fixes
     5
     6* radio and checboxes dont have input-text css classes ([6566f69](https://git.triopsi.dev/triopsi/extra-product-data-for-woocommerce/commit/6566f69c97f21c0639918a67f1a734c540710383))
     7* select overflow ([2cfa1b6](https://git.triopsi.dev/triopsi/extra-product-data-for-woocommerce/commit/2cfa1b6eb56f9af1fb6c434723c1319d18df7abd))
     8
     9
     10### Features
     11
     12* add autocomplete function ([9b19df2](https://git.triopsi.dev/triopsi/extra-product-data-for-woocommerce/commit/9b19df29e969b96c4e94529b29ac195fad2e20a9))
     13* add Conditional Logic for fields ([24aad76](https://git.triopsi.dev/triopsi/extra-product-data-for-woocommerce/commit/24aad765d4c1d40ca85ef0e764350d88eb131b98))
     14* add Conditional rules in backend ([7238ec4](https://git.triopsi.dev/triopsi/extra-product-data-for-woocommerce/commit/7238ec4da2b2a11fa26b93bca2358dc53afbbeeb))
     15
    116# [1.3.0](https://git.triopsi.dev/triopsi/extra-product-data-for-woocommerce/compare/v1.2.0...v1.3.0) (2024-11-30)
    217
  • extra-product-data-for-woocommerce/trunk/assets/css/admin-backend.css

    r3202511 r3203398  
    1 /*
    2 * Admin Backend Styles
    3 * Plugin: Extra Product Data for WooCommerce
    4 * Author: Triopsi
    5 */
    6 #extra-product-data {
    7   padding: 10px 10px;
    8 }
    9 
    10 table.exprdawc_attribute_table td {
    11   vertical-align: middle !important;
    12 }
    13 table.exprdawc_attribute_table td.exprdawc_attribute_require_checkbox label {
    14   padding-top: 15px;
    15 }
    16 
    17 /*
    18 Out Table Styles
    19 */
    20 table.exprdawc_field_table {
    21   width: 100%;
    22   border-collapse: collapse;
    23 }
    24 table.exprdawc_field_table tr:nth-child(even) {
    25   background-color: #f9f9f9;
    26 }
    27 table.exprdawc_field_table tr.exprdawc_fields_wrapper {
    28   border-bottom: 1px solid #ddd;
    29 }
    30 table.exprdawc_field_table tr.exprdawc_fields_wrapper:hover {
    31   background-color: #f1f1f1;
    32 }
    33 table.exprdawc_field_table tr.exprdawc_fields_wrapper:last-child {
    34   border-bottom: none;
    35 }
    36 table.exprdawc_field_table td {
    37   padding: 0px;
    38 }
    39 table.exprdawc_field_table tfoot tr {
    40   background-color: #f5f5f5;
    41   border: 1px solid #ccc;
    42 }
    43 table.exprdawc_field_table tfoot td {
    44   padding: 10px;
    45   text-align: center;
    46   vertical-align: middle;
    47 }
    48 table.exprdawc_field_table tfoot .button {
    49   padding: 5px;
    50   line-height: 13px;
    51 }
    52 
    53 /*
    54 In Table Styles
    55 */
    56 table.exprdawc_fields_table {
    57   width: 100%;
    58   border-collapse: collapse;
    59 }
    60 table.exprdawc_fields_table tr {
    61   border: 0px;
    62 }
    63 table.exprdawc_fields_table tbody td {
    64   vertical-align: middle;
    65   padding: 10px;
    66 }
    67 table.exprdawc_fields_table tbody td input[type=text],
    68 table.exprdawc_fields_table tbody td input[type=number],
    69 table.exprdawc_fields_table tbody td textarea {
    70   width: 100%;
    71   padding: 5px;
    72   border: 1px solid #ccc;
    73   border-radius: 4px;
    74   box-sizing: border-box;
    75 }
    76 table.exprdawc_fields_table tbody td select {
    77   width: 100%;
    78   padding: 5px;
    79   border: 1px solid #ccc;
    80   border-radius: 4px;
    81   box-sizing: border-box;
    82   text-overflow: ellipsis;
    83 }
    84 table.exprdawc_fields_table tbody td button.add_rule,
    85 table.exprdawc_fields_table tbody td button.exprdawc_remove_custom_field,
    86 table.exprdawc_fields_table tbody td button.remove_rule {
    87   padding: 5px;
    88   line-height: 13px;
    89 }
    90 table.exprdawc_fields_table tbody td.move i {
    91   cursor: move;
    92 }
    93 table.exprdawc_fields_table tbody td.cl-arr i {
    94   cursor: pointer;
    95 }
    96 
    97 table.exprdawc_settings_table {
    98   width: 100%;
    99 }
    100 table.exprdawc_settings_table label.exprdawc_label {
    101   float: none;
    102   padding: 0px;
    103   margin: 5px 0px;
    104   text-align: left;
    105   display: flex;
    106   width: auto;
    107   align-items: center;
    108 }
    109 table.exprdawc_settings_table label.exprdawc_label .checkbox {
    110   margin-right: 5px !important;
    111 }
    112 table.exprdawc_settings_table td {
    113   vertical-align: middle;
    114   padding: 10px;
    115 }
    116 
    117 table.exprdawc_options_table {
    118   width: 100%;
    119   border-collapse: collapse;
    120   margin-top: 10px;
    121   border: 1px solid #ccc;
    122 }
    123 table.exprdawc_options_table th,
    124 table.exprdawc_options_table td {
    125   padding: 10px;
    126   text-align: left;
    127   border-bottom: 1px solid #ddd;
    128 }
    129 table.exprdawc_options_table th {
    130   background-color: #f1f1f1;
    131 }
    132 table.exprdawc_options_table tr:hover {
    133   background-color: #f9f9f9;
    134 }
    135 table.exprdawc_options_table .button {
    136   padding: 5px 10px;
    137   border: none;
    138   border-radius: 4px;
    139   background-color: #0073aa;
    140   color: #fff;
    141   cursor: pointer;
    142 }
    143 table.exprdawc_options_table .button:hover {
    144   background-color: #005a87;
    145   color: #fff;
    146 }
    147 
    148 .exprdawc_attribute h3 .sort {
    149   width: 17px;
    150   height: 26px;
    151   cursor: move;
    152   float: right;
    153   font-size: 15px;
    154   font-weight: 400;
    155   margin-right: 0.5em;
    156   text-align: center;
    157   vertical-align: middle;
    158 }
    159 .exprdawc_attribute h3 .sort::before {
    160   content: "\f333";
    161   font-family: "Dashicons";
    162   text-align: center;
    163   line-height: 28px;
    164   color: #999;
    165   display: block;
    166   width: 17px;
    167   float: left;
    168   height: 100%;
    169 }
    170 .exprdawc_attribute h3 .sort:hover::before {
    171   color: #777;
    172 }
    173 .exprdawc_attribute h3:hover .sort, .exprdawc_attribute.ui-sortable-helper .sort {
    174   visibility: visible;
    175 }
    176 .exprdawc_attribute.wc-metabox.postbox {
    177   border-top: 0px;
    178   border-left: 0px;
    179   border-right: 0px;
    180 }
    181 
    182 .exprdawc_panel {
    183   display: block;
    184 }
    185 .exprdawc_panel h2 {
    186   font-size: 1.2em !important;
    187   padding: 0px 0px 10px 0px !important;
    188 }
    189 .exprdawc_panel .wc-metabox {
    190   background: #fff;
    191   border-bottom: 1px solid #eee;
    192   margin: 0 !important;
    193 }
    194 .exprdawc_panel .wc-metabox.exprdawc_attribute h3 {
    195   cursor: pointer;
    196   padding: 0.5em 0.75em 0.5em 1em !important;
    197 }
    198 .exprdawc_panel .wc-metabox.exprdawc_attribute h3 a.delete,
    199 .exprdawc_panel .wc-metabox.exprdawc_attribute h3 a.edit,
    200 .exprdawc_panel .wc-metabox.exprdawc_attribute h3 .sort {
    201   margin-top: 0.25em;
    202 }
    203 
    204 #woocommerce-product-data ul.wc-tabs li.custom_fields_options a::before,
    205 #woocommerce-coupon-data ul.wc-tabs li.custom_fields_options a::before,
    206 .woocommerce ul.wc-tabs li.custom_fields_options a::before {
    207   font-family: "Dashicons";
    208   content: "\f163";
    209 }
    210 
    211 .exprdawc_conditional_logic_table {
    212   width: 100%;
    213   border-collapse: collapse;
    214   margin-bottom: 20px;
    215 }
    216 .exprdawc_conditional_logic_table th,
    217 .exprdawc_conditional_logic_table td {
    218   padding: 10px;
    219   border: 1px solid #ddd;
    220   text-align: left;
    221 }
    222 .exprdawc_conditional_logic_table th {
    223   background-color: #f9f9f9;
    224   font-weight: bold;
    225 }
    226 .exprdawc_conditional_logic_table .exprdawc_label {
    227   display: block;
    228   margin-bottom: 5px;
    229   font-weight: bold;
    230 }
    231 .exprdawc_conditional_logic_table .exprdawc_input {
    232   width: 100%;
    233   padding: 5px;
    234   border: 1px solid #ccc;
    235   border-radius: 4px;
    236   box-sizing: border-box;
    237 }
    238 .exprdawc_conditional_logic_table .exprdawc_checkbox {
    239   width: auto;
    240 }
    241 .exprdawc_conditional_logic_table .exprdawc_textarea {
    242   width: 100%;
    243   padding: 8px;
    244   border: 1px solid #ccc;
    245   border-radius: 4px;
    246 }
    247 .exprdawc_conditional_logic_table .exprdawc_no_entry_message {
    248   color: #a00;
    249   font-weight: bold;
    250 }
    251 .exprdawc_conditional_logic_table h2 {
    252   text-align: left;
    253   text-transform: uppercase;
    254 }
    255 .exprdawc_conditional_logic_table .exprdawc_rule_group {
    256   margin-bottom: 10px;
    257   padding: 10px;
    258   border: 1px solid #ddd;
    259   background-color: #f9f9f9;
    260   border-radius: 4px;
    261 }
    262 .exprdawc_conditional_logic_table .exprdawc_rule_group .exprdawc_rule {
    263   display: flex;
    264   align-items: center;
    265   margin-bottom: 10px;
    266 }
    267 .exprdawc_conditional_logic_table .exprdawc_rule_group .exprdawc_rule .exprdawc_input {
    268   margin-right: 10px;
    269 }
    270 .exprdawc_conditional_logic_table .exprdawc_rule_group .exprdawc_rule .button {
    271   margin-left: 10px;
    272 }
    273 .exprdawc_conditional_logic_table .exprdawc_rule_group .add_rule_group {
    274   margin-top: 10px;
    275 }
    276 
    277 .exprdawc_no_entry_message {
    278   padding-top: 75px;
    279   margin: 10px 0 0;
    280   position: relative;
    281   text-align: center;
    282   display: block;
    283   padding-bottom: 1em;
    284 }
    285 .exprdawc_no_entry_message::before {
    286   font-family: "Dashicons";
    287   content: "\f163";
    288   font-size: 70px;
    289   color: #eee;
    290   position: absolute;
    291   top: 0px;
    292   left: 50%;
    293   transform: translateX(-50%);
    294 }
    295 
    296 p.exprdawc_toolbar {
    297   background-color: #f5f5f5;
    298   border: 1px solid #ccc;
    299   text-align: center;
    300   display: flex;
    301   align-items: center;
    302   justify-content: center;
    303 }
    304 
    305 a.exprdawc-export,
    306 a.exprdawc-import {
    307   -webkit-text-decoration: underline dotted;
    308           text-decoration: underline dotted;
    309   font-size: small;
    310   color: #0073aa;
    311   margin: 0 5px;
    312 }
    313 a.exprdawc-export::before,
    314 a.exprdawc-import::before {
    315   font-family: "Dashicons";
    316   margin-right: 5px;
    317   position: relative;
    318 }
    319 a.exprdawc-export:hover,
    320 a.exprdawc-import:hover {
    321   color: #005a87;
    322   -webkit-text-decoration: underline dotted;
    323           text-decoration: underline dotted;
    324 }
    325 
    326 a.exprdawc-export::before {
    327   content: "\f346";
    328 }
    329 
    330 a.exprdawc-import::before {
    331   content: "\f342";
    332 }
     1#extra-product-data{padding:10px}table.exprdawc_attribute_table td{vertical-align:middle!important}table.exprdawc_attribute_table td.exprdawc_attribute_require_checkbox label{padding-top:15px}table.exprdawc_field_table{border-collapse:collapse;width:100%}table.exprdawc_field_table tr:nth-child(2n){background-color:#f9f9f9}table.exprdawc_field_table tr.exprdawc_fields_wrapper{border-bottom:1px solid #ddd}table.exprdawc_field_table tr.exprdawc_fields_wrapper:hover{background-color:#f1f1f1}table.exprdawc_field_table tr.exprdawc_fields_wrapper:last-child{border-bottom:none}table.exprdawc_field_table td{padding:0}table.exprdawc_field_table tfoot tr{background-color:#f5f5f5;border:1px solid #ccc}table.exprdawc_field_table tfoot td{padding:10px;text-align:center;vertical-align:middle}table.exprdawc_field_table tfoot .button{line-height:13px;padding:5px}table.exprdawc_fields_table{border-collapse:collapse;width:100%}table.exprdawc_fields_table tr{border:0}table.exprdawc_fields_table tbody td{padding:10px;vertical-align:middle}table.exprdawc_fields_table tbody td input[type=number],table.exprdawc_fields_table tbody td input[type=text],table.exprdawc_fields_table tbody td select,table.exprdawc_fields_table tbody td textarea{border:1px solid #ccc;border-radius:4px;box-sizing:border-box;padding:5px;width:100%}table.exprdawc_fields_table tbody td select{text-overflow:ellipsis}table.exprdawc_fields_table tbody td button.add_rule,table.exprdawc_fields_table tbody td button.exprdawc_remove_custom_field,table.exprdawc_fields_table tbody td button.remove_rule{line-height:13px;padding:5px}table.exprdawc_fields_table tbody td.move i{cursor:move}table.exprdawc_fields_table tbody td.cl-arr i{cursor:pointer}table.exprdawc_settings_table{width:100%}table.exprdawc_settings_table label.exprdawc_label{align-items:center;display:flex;float:none;margin:5px 0;padding:0;text-align:left;width:auto}table.exprdawc_settings_table label.exprdawc_label .checkbox{margin-right:5px!important}table.exprdawc_settings_table td{padding:10px;vertical-align:middle}table.exprdawc_options_table{border:1px solid #ccc;border-collapse:collapse;margin-top:10px;width:100%}table.exprdawc_options_table td,table.exprdawc_options_table th{border-bottom:1px solid #ddd;padding:10px;text-align:left}table.exprdawc_options_table th{background-color:#f1f1f1}table.exprdawc_options_table tr:hover{background-color:#f9f9f9}table.exprdawc_options_table .button{background-color:#0073aa;border:none;border-radius:4px;color:#fff;cursor:pointer;padding:5px 10px}table.exprdawc_options_table .button:hover{background-color:#005a87;color:#fff}.exprdawc_attribute h3 .sort{cursor:move;float:right;font-size:15px;font-weight:400;height:26px;margin-right:.5em;text-align:center;vertical-align:middle;width:17px}.exprdawc_attribute h3 .sort:before{color:#999;content:"\f333";display:block;float:left;font-family:Dashicons;height:100%;line-height:28px;text-align:center;width:17px}.exprdawc_attribute h3 .sort:hover:before{color:#777}.exprdawc_attribute h3:hover .sort,.exprdawc_attribute.ui-sortable-helper .sort{visibility:visible}.exprdawc_attribute.wc-metabox.postbox{border-left:0;border-right:0;border-top:0}.exprdawc_panel{display:block}.exprdawc_panel h2{font-size:1.2em!important;padding:0 0 10px!important}.exprdawc_panel .wc-metabox{background:#fff;border-bottom:1px solid #eee;margin:0!important}.exprdawc_panel .wc-metabox.exprdawc_attribute h3{cursor:pointer;padding:.5em .75em .5em 1em!important}.exprdawc_panel .wc-metabox.exprdawc_attribute h3 .sort,.exprdawc_panel .wc-metabox.exprdawc_attribute h3 a.delete,.exprdawc_panel .wc-metabox.exprdawc_attribute h3 a.edit{margin-top:.25em}#woocommerce-coupon-data ul.wc-tabs li.custom_fields_options a:before,#woocommerce-product-data ul.wc-tabs li.custom_fields_options a:before,.woocommerce ul.wc-tabs li.custom_fields_options a:before{content:"\f163";font-family:Dashicons}.exprdawc_conditional_logic_table{border-collapse:collapse;margin-bottom:20px;width:100%}.exprdawc_conditional_logic_table td,.exprdawc_conditional_logic_table th{border:1px solid #ddd;padding:10px;text-align:left}.exprdawc_conditional_logic_table th{background-color:#f9f9f9;font-weight:700}.exprdawc_conditional_logic_table .exprdawc_label{display:block;font-weight:700;margin-bottom:5px}.exprdawc_conditional_logic_table .exprdawc_input{border:1px solid #ccc;border-radius:4px;box-sizing:border-box;padding:5px;width:100%}.exprdawc_conditional_logic_table .exprdawc_checkbox{width:auto}.exprdawc_conditional_logic_table .exprdawc_textarea{border:1px solid #ccc;border-radius:4px;padding:8px;width:100%}.exprdawc_conditional_logic_table .exprdawc_no_entry_message{color:#a00;font-weight:700}.exprdawc_conditional_logic_table h2{text-align:left;text-transform:uppercase}.exprdawc_conditional_logic_table .exprdawc_rule_group{background-color:#f9f9f9;border:1px solid #ddd;border-radius:4px;margin-bottom:10px;padding:10px}.exprdawc_conditional_logic_table .exprdawc_rule_group .exprdawc_rule{align-items:center;display:flex;margin-bottom:10px}.exprdawc_conditional_logic_table .exprdawc_rule_group .exprdawc_rule .exprdawc_input{margin-right:10px}.exprdawc_conditional_logic_table .exprdawc_rule_group .exprdawc_rule .button{margin-left:10px}.exprdawc_conditional_logic_table .exprdawc_rule_group .add_rule_group{margin-top:10px}.exprdawc_no_entry_message{display:block;margin:10px 0 0;padding-bottom:1em;padding-top:75px;position:relative;text-align:center}.exprdawc_no_entry_message:before{color:#eee;content:"\f163";font-family:Dashicons;font-size:70px;left:50%;position:absolute;top:0;transform:translateX(-50%)}p.exprdawc_toolbar{align-items:center;background-color:#f5f5f5;border:1px solid #ccc;display:flex;justify-content:center;text-align:center}a.exprdawc-export,a.exprdawc-import{color:#0073aa;font-size:small;margin:0 5px;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}a.exprdawc-export:before,a.exprdawc-import:before{font-family:Dashicons;margin-right:5px;position:relative}a.exprdawc-export:hover,a.exprdawc-import:hover{color:#005a87;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}a.exprdawc-export:before{content:"\f346"}a.exprdawc-import:before{content:"\f342"}
  • extra-product-data-for-woocommerce/trunk/assets/css/forms.css

    r3202511 r3203398  
    1 /*
    2 * Form styles
    3 * Plugin: Extra Product Data for WooCommerce
    4 * Author: Triopsi
    5 */
    6 .exprdawc-label {
    7   font-weight: bold;
    8   display: block;
    9 }
    10 
    11 .exprdawc-input-wrapper .input-text {
    12   width: 100%;
    13   max-width: none;
    14   padding: 5px;
    15   vertical-align: middle;
    16   margin: 2px 0 0;
    17 }
    18 
    19 .woocommerce-input-wrapper .exprdawc-label-radio {
    20   display: inline-block;
    21   margin-left: 10px;
    22   font-weight: normal;
    23 }
    24 
    25 .exprdawc-field-yes-no .exprdawc-label,
    26 .exprdawc-field-select .exprdawc-label {
    27   display: block;
    28 }
    29 
    30 .exprdawc-field-yes-no select,
    31 .exprdawc-field-select select {
    32   width: 100%;
    33   max-width: none;
    34   padding: 5px;
    35   vertical-align: middle;
    36   margin: 2px 0 0;
    37   text-overflow: ellipsis;
    38 }
    39 
    40 .exprdawc-description {
    41   font-style: italic;
    42   font-size: smaller;
    43 }
     1.exprdawc-label{display:block;font-weight:700}.exprdawc-input-wrapper .input-text{margin:2px 0 0;max-width:none;padding:5px;vertical-align:middle;width:100%}.woocommerce-input-wrapper .exprdawc-label-radio{display:inline-block;font-weight:400;margin-left:10px}.exprdawc-field-select .exprdawc-label,.exprdawc-field-yes-no .exprdawc-label{display:block}.exprdawc-field-select select,.exprdawc-field-yes-no select{margin:2px 0 0;max-width:none;padding:5px;text-overflow:ellipsis;vertical-align:middle;width:100%}.exprdawc-description{font-size:smaller;font-style:italic}
  • extra-product-data-for-woocommerce/trunk/assets/js/wc-conditional-rules-js.js

    r3202511 r3203398  
    1 /******/ (() => { // webpackBootstrap
    2 /*!**************************************************!*\
    3   !*** ./src/assets/js/wc-conditional-rules-js.js ***!
    4   \**************************************************/
    5 function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
    6 function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); }
    7 function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }
    8 function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; }
    9 function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
    10 function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
    11 jQuery(document).ready(function ($) {
    12   /**
    13    * Extra Product Data for WooCommerce Conditional Logic
    14    * @class ExprdawcConditionalLogic
    15    * @description Handles the functionality for the conditional logic in the WooCommerce product data metabox
    16    * @since 1.0.0
    17    * @version 1.0.0
    18    * @package ExtraProductDataForWooCommerce/JS
    19    * @license GPL-2.0+
    20    * @link https://www.triopsi.dev
    21    */
    22   var ExprdawcConditionalLogic = /*#__PURE__*/function () {
    23     // Initialize the class
    24     function ExprdawcConditionalLogic() {
    25       _classCallCheck(this, ExprdawcConditionalLogic);
    26       this.init();
    27     }
    28 
    29     // Initialize the class
    30     return _createClass(ExprdawcConditionalLogic, [{
    31       key: "init",
    32       value: function init() {
    33         var _this = this;
    34         this.applyConditionalLogic();
    35 
    36         // Reapply conditional logic on any change of exprdawc-input fields
    37         $(document).on('change keyup', '.exprdawc-input', function () {
    38           _this.applyConditionalLogic();
    39         });
    40       }
    41 
    42       // Apply the conditional logic to the fields
    43     }, {
    44       key: "applyConditionalLogic",
    45       value: function applyConditionalLogic() {
    46         var _this2 = this;
    47         $('.exprdawc-input').each(function (index, element) {
    48           var $field = $(element);
    49           _this2.checkConditions($field);
    50         });
    51       }
    52 
    53       // Check the conditions for the field
    54     }, {
    55       key: "checkConditions",
    56       value: function checkConditions($field) {
    57         console.log('Check Conditions.... for field: ', $field);
    58         var conditionalLogic = $field.data('conditional-rules');
    59         if (conditionalLogic) {
    60           var logic = conditionalLogic;
    61           var groupConditionMet = false;
    62           logic.forEach(function (group) {
    63             var groupMet = true;
    64 
    65             // if group not an array, return
    66             if (!Array.isArray(group)) {
    67               console.log('Group is not an array');
    68               return;
    69             }
    70             group.forEach(function (rule) {
    71               // if rule have empty field, return
    72               if (!rule.field) {
    73                 return;
    74               }
    75 
    76               // if rule have empty operator, return
    77               if (!rule.operator) {
    78                 return;
    79               }
    80 
    81               // Generate the targetField from esc_html( $field_array['label'] ) to use in the frontend. Whitespaces are replaced by hyphens and the string is lowercased.
    82               // This is the same as the targetField in the backend.
    83               var targetField = 'exprdawc-field-' + rule.field.replace(/\s+/g, '-').toLowerCase();
    84               var $targetField = $(".".concat(targetField));
    85               var operator = rule.operator;
    86               var value = rule.value;
    87               var targetValue = $targetField.val();
    88               var conditionMet = false;
    89               switch (operator) {
    90                 case 'equals':
    91                   conditionMet = targetValue === value;
    92                   break;
    93                 case 'not_equals':
    94                   conditionMet = targetValue !== value;
    95                   break;
    96                 case 'greater_than':
    97                   conditionMet = parseFloat(targetValue) > parseFloat(value);
    98                   break;
    99                 case 'less_than':
    100                   conditionMet = parseFloat(targetValue) < parseFloat(value);
    101                   break;
    102                 case 'field_is_empty':
    103                   conditionMet = targetValue === '';
    104                   break;
    105                 case 'field_is_not_empty':
    106                   conditionMet = targetValue !== '';
    107                   break;
    108               }
    109               if (!conditionMet) {
    110                 groupMet = false;
    111               }
    112             });
    113             if (groupMet) {
    114               groupConditionMet = true;
    115             }
    116           });
    117           if (groupConditionMet) {
    118             $field.closest('.form-row-wide').show();
    119           } else {
    120             $field.closest('.form-row-wide').hide();
    121           }
    122         }
    123       }
    124     }]);
    125   }(); // Initialize the class
    126   new ExprdawcConditionalLogic();
    127 });
    128 /******/ })()
    129 ;
     1(()=>{function e(o){return e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},e(o)}function o(e,o){for(var r=0;r<o.length;r++){var n=o[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,t(n.key),n)}}function t(o){var t=function(o,t){if("object"!=e(o)||!o)return o;var r=o[Symbol.toPrimitive];if(void 0!==r){var n=r.call(o,t||"default");if("object"!=e(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(o)}(o,"string");return"symbol"==e(t)?t:t+""}jQuery(document).ready((function(e){new(function(){return t=function e(){!function(e,o){if(!(e instanceof o))throw new TypeError("Cannot call a class as a function")}(this,e),this.init()},(r=[{key:"init",value:function(){var o=this;this.applyConditionalLogic(),e(document).on("change keyup",".exprdawc-input",(function(){o.applyConditionalLogic()}))}},{key:"applyConditionalLogic",value:function(){var o=this;e(".exprdawc-input").each((function(t,r){var n=e(r);o.checkConditions(n)}))}},{key:"checkConditions",value:function(o){console.log("Check Conditions.... for field: ",o);var t=o.data("conditional-rules");if(t){var r=!1;t.forEach((function(o){var t=!0;Array.isArray(o)?(o.forEach((function(o){if(o.field&&o.operator){var r="exprdawc-field-"+o.field.replace(/\s+/g,"-").toLowerCase(),n=e(".".concat(r)),i=o.operator,a=o.value,c=n.val(),l=!1;switch(i){case"equals":l=c===a;break;case"not_equals":l=c!==a;break;case"greater_than":l=parseFloat(c)>parseFloat(a);break;case"less_than":l=parseFloat(c)<parseFloat(a);break;case"field_is_empty":l=""===c;break;case"field_is_not_empty":l=""!==c}l||(t=!1)}})),t&&(r=!0)):console.log("Group is not an array")})),r?o.closest(".form-row-wide").show():o.closest(".form-row-wide").hide()}}}])&&o(t.prototype,r),n&&o(t,n),Object.defineProperty(t,"prototype",{writable:!1}),t;var t,r,n}())}))})();
  • extra-product-data-for-woocommerce/trunk/assets/js/wc-meta-boxes-order.js

    r3202511 r3203398  
    1 /******/ (() => { // webpackBootstrap
    2 /*!**********************************************!*\
    3   !*** ./src/assets/js/wc-meta-boxes-order.js ***!
    4   \**********************************************/
    5 function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
    6 function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); }
    7 function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }
    8 function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; }
    9 function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
    10 function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
    11 /* global wc_exprdawc_admin_order_params, woocommerce_admin_meta_boxes, wcBackboneModal */
    12 jQuery(function ($) {
    13   /**
    14    * Extra Product Data for WooCommerce Admin Order
    15    * @class ExtraProductDataAdminOrder
    16    * @description Handles the functionality for the extra product data in the WooCommerce admin order page
    17    * @since 1.0.0
    18    * @version 1.0.0
    19    * @package ExtraProductDataForWooCommerce/JS
    20    * @license GPL-2.0+
    21    * @link https://www.triopsi.dev
    22    */
    23   var ExtraProductDataAdminOrder = /*#__PURE__*/function () {
    24     function ExtraProductDataAdminOrder() {
    25       _classCallCheck(this, ExtraProductDataAdminOrder);
    26       this.$orderItemsContainer = $('#woocommerce-order-items');
    27       this.modalView = null;
    28       this.initialize();
    29     }
    30 
    31     // Initialize event handlers
    32     return _createClass(ExtraProductDataAdminOrder, [{
    33       key: "initialize",
    34       value: function initialize() {
    35         this.setupEventHandlers();
    36       }
    37 
    38       // Setup event handlers for the order items container
    39     }, {
    40       key: "setupEventHandlers",
    41       value: function setupEventHandlers() {
    42         this.$orderItemsContainer.on('click', 'button.exprdawc_edit_addons', {
    43           action: 'edit'
    44         }, this.handleEditButtonClick.bind(this));
    45       }
    46 
    47       // Handle the click event for the edit button
    48     }, {
    49       key: "handleEditButtonClick",
    50       value: function handleEditButtonClick(event) {
    51         event.preventDefault();
    52 
    53         // Extend wcBackboneModal to create a custom modal view
    54         var CustomBackboneModal = $.WCBackboneModal.View.extend({
    55           addButton: this.handleDoneButtonClick.bind(this)
    56         });
    57 
    58         // Get the closest table row and retrieve the order item ID
    59         var $itemRow = $(event.currentTarget).closest('tr.item');
    60         var orderItemId = $itemRow.attr('data-order_item_id');
    61 
    62         // Create a new instance of the custom modal view
    63         this.modalView = new CustomBackboneModal({
    64           target: 'wc-modal-edit-exprdawc',
    65           string: {
    66             action: wc_exprdawc_admin_order_params.i18n_edit,
    67             item_id: orderItemId
    68           }
    69         });
    70 
    71         // Populate the form inside the modal
    72         this.populateModalForm();
    73         return false;
    74       }
    75 
    76       // Populate the form inside the modal with data
    77     }, {
    78       key: "populateModalForm",
    79       value: function populateModalForm() {
    80         var _this = this;
    81         this.blockUI(this.modalView.$el.find('.wc-backbone-modal-content'));
    82         var requestData = {
    83           action: 'woocommerce_configure_exprdawc_order_item',
    84           item_id: this.modalView._string.item_id,
    85           dataType: 'json',
    86           order_id: woocommerce_admin_meta_boxes.post_id,
    87           security: wc_exprdawc_admin_order_params.edit_exprdawc_nonce
    88         };
    89         $.post(woocommerce_admin_meta_boxes.ajax_url, requestData, function (response) {
    90           if (response.data && response.success) {
    91             _this.modalView.$el.find('form').html(response.data.html);
    92             _this.unblockUI(_this.modalView.$el.find('.wc-backbone-modal-content'));
    93           } else {
    94             window.alert(wc_exprdawc_admin_order_params.i18n_form_error);
    95             _this.unblockUI(_this.modalView.$el.find('.wc-backbone-modal-content'));
    96             _this.modalView.$el.find('.modal-close').trigger('click');
    97           }
    98         });
    99       }
    100 
    101       // Handle the click event for the done button
    102     }, {
    103       key: "handleDoneButtonClick",
    104       value: function handleDoneButtonClick(event) {
    105         var _this2 = this;
    106         var requestData = $.extend({}, {
    107           action: 'woocommerce_edit_exprdawc_order_item',
    108           item_id: this.modalView._string.item_id,
    109           dataType: 'json',
    110           order_id: woocommerce_admin_meta_boxes.post_id,
    111           security: wc_exprdawc_admin_order_params.edit_exprdawc_nonce
    112         });
    113         var formElement = this.modalView.$el.find('form')[0];
    114         if (formElement.reportValidity() !== true) {
    115           return;
    116         }
    117         var formData = new FormData(formElement);
    118         for (var property in requestData) {
    119           formData.append(property, requestData[property]);
    120         }
    121         this.blockUI(this.modalView.$el.find('.wc-backbone-modal-content'));
    122         $.post({
    123           url: woocommerce_admin_meta_boxes.ajax_url,
    124           type: "POST",
    125           data: formData,
    126           processData: false,
    127           contentType: false,
    128           cache: false,
    129           success: function success(response) {
    130             if (response.data && response.success) {
    131               _this2.$orderItemsContainer.find('.inside').empty();
    132               _this2.$orderItemsContainer.find('.inside').append(response.data.html);
    133               _this2.$orderItemsContainer.trigger('wc_order_items_reloaded');
    134 
    135               // Update notes.
    136               if (response.data.notes_html) {
    137                 $('ul.order_notes').empty();
    138                 $('ul.order_notes').append($(response.data.notes_html).find('li'));
    139               }
    140               _this2.unblockUI(_this2.modalView.$el.find('.wc-backbone-modal-content'));
    141 
    142               // Make it look like something changed.
    143               _this2.blockUI(_this2.$orderItemsContainer, {
    144                 fadeIn: 0
    145               });
    146               setTimeout(function () {
    147                 _this2.unblockUI(_this2.$orderItemsContainer);
    148               }, 250);
    149               _this2.modalView.closeButton(event);
    150             } else {
    151               window.alert(response.data.message);
    152               _this2.unblockUI(_this2.modalView.$el.find('.wc-backbone-modal-content'));
    153             }
    154           },
    155           error: function error() {
    156             window.alert(wc_exprdawc_admin_order_params.i18n_validation_error);
    157             _this2.unblockUI(_this2.modalView.$el.find('.wc-backbone-modal-content'));
    158           }
    159         });
    160       }
    161 
    162       // Block UI element
    163     }, {
    164       key: "blockUI",
    165       value: function blockUI($target, params) {
    166         var defaults = {
    167           message: null,
    168           overlayCSS: {
    169             background: '#fff',
    170             opacity: 0.6
    171           }
    172         };
    173         var options = $.extend({}, defaults, params || {});
    174         $target.block(options);
    175       }
    176 
    177       // Unblock UI element
    178     }, {
    179       key: "unblockUI",
    180       value: function unblockUI($target) {
    181         $target.unblock();
    182       }
    183     }]);
    184   }(); // Initialize the class
    185   new ExtraProductDataAdminOrder();
    186 });
    187 /******/ })()
    188 ;
     1(()=>{function e(t){return e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},e(t)}function t(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,o(i.key),i)}}function o(t){var o=function(t,o){if("object"!=e(t)||!t)return t;var n=t[Symbol.toPrimitive];if(void 0!==n){var i=n.call(t,o||"default");if("object"!=e(i))return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===o?String:Number)(t)}(t,"string");return"symbol"==e(o)?o:o+""}jQuery((function(e){new(function(){return o=function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),this.$orderItemsContainer=e("#woocommerce-order-items"),this.modalView=null,this.initialize()},(n=[{key:"initialize",value:function(){this.setupEventHandlers()}},{key:"setupEventHandlers",value:function(){this.$orderItemsContainer.on("click","button.exprdawc_edit_addons",{action:"edit"},this.handleEditButtonClick.bind(this))}},{key:"handleEditButtonClick",value:function(t){t.preventDefault();var o=e.WCBackboneModal.View.extend({addButton:this.handleDoneButtonClick.bind(this)}),n=e(t.currentTarget).closest("tr.item").attr("data-order_item_id");return this.modalView=new o({target:"wc-modal-edit-exprdawc",string:{action:wc_exprdawc_admin_order_params.i18n_edit,item_id:n}}),this.populateModalForm(),!1}},{key:"populateModalForm",value:function(){var t=this;this.blockUI(this.modalView.$el.find(".wc-backbone-modal-content"));var o={action:"woocommerce_configure_exprdawc_order_item",item_id:this.modalView._string.item_id,dataType:"json",order_id:woocommerce_admin_meta_boxes.post_id,security:wc_exprdawc_admin_order_params.edit_exprdawc_nonce};e.post(woocommerce_admin_meta_boxes.ajax_url,o,(function(e){e.data&&e.success?(t.modalView.$el.find("form").html(e.data.html),t.unblockUI(t.modalView.$el.find(".wc-backbone-modal-content"))):(window.alert(wc_exprdawc_admin_order_params.i18n_form_error),t.unblockUI(t.modalView.$el.find(".wc-backbone-modal-content")),t.modalView.$el.find(".modal-close").trigger("click"))}))}},{key:"handleDoneButtonClick",value:function(t){var o=this,n=e.extend({},{action:"woocommerce_edit_exprdawc_order_item",item_id:this.modalView._string.item_id,dataType:"json",order_id:woocommerce_admin_meta_boxes.post_id,security:wc_exprdawc_admin_order_params.edit_exprdawc_nonce}),i=this.modalView.$el.find("form")[0];if(!0===i.reportValidity()){var r=new FormData(i);for(var a in n)r.append(a,n[a]);this.blockUI(this.modalView.$el.find(".wc-backbone-modal-content")),e.post({url:woocommerce_admin_meta_boxes.ajax_url,type:"POST",data:r,processData:!1,contentType:!1,cache:!1,success:function(n){n.data&&n.success?(o.$orderItemsContainer.find(".inside").empty(),o.$orderItemsContainer.find(".inside").append(n.data.html),o.$orderItemsContainer.trigger("wc_order_items_reloaded"),n.data.notes_html&&(e("ul.order_notes").empty(),e("ul.order_notes").append(e(n.data.notes_html).find("li"))),o.unblockUI(o.modalView.$el.find(".wc-backbone-modal-content")),o.blockUI(o.$orderItemsContainer,{fadeIn:0}),setTimeout((function(){o.unblockUI(o.$orderItemsContainer)}),250),o.modalView.closeButton(t)):(window.alert(n.data.message),o.unblockUI(o.modalView.$el.find(".wc-backbone-modal-content")))},error:function(){window.alert(wc_exprdawc_admin_order_params.i18n_validation_error),o.unblockUI(o.modalView.$el.find(".wc-backbone-modal-content"))}})}}},{key:"blockUI",value:function(t,o){var n=e.extend({},{message:null,overlayCSS:{background:"#fff",opacity:.6}},o||{});t.block(n)}},{key:"unblockUI",value:function(e){e.unblock()}}])&&t(o.prototype,n),i&&t(o,i),Object.defineProperty(o,"prototype",{writable:!1}),o;var o,n,i}())}))})();
  • extra-product-data-for-woocommerce/trunk/assets/js/wc-meta-boxes-product.js

    r3202511 r3203398  
    1 /******/ (() => { // webpackBootstrap
    2 /******/    var __webpack_modules__ = ({
    3 
    4 /***/ "./src/assets/js/wc-meta-boxes-product.js":
    5 /*!************************************************!*\
    6   !*** ./src/assets/js/wc-meta-boxes-product.js ***!
    7   \************************************************/
    8 /***/ (() => {
    9 
    10 function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
    11 function _readOnlyError(r) { throw new TypeError('"' + r + '" is read-only'); }
    12 function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); }
    13 function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }
    14 function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; }
    15 function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
    16 function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
    17 /**
    18  * Add custom fields to the product data meta box.
    19  */
    20 jQuery(function ($) {
    21   /**
    22    * Class to handle the product meta box.
    23    * @class ExprdawcMetaBoxesProduct
    24    * @description Handles the functionality for the extra product data in the WooCommerce product data meta box
    25    * @since 1.0.0
    26    * @version 1.0.0
    27    * @package ExtraProductDataForWooCommerce/JS
    28    * @license GPL-2.0+
    29    * @link https://www.triopsi.dev
    30   */
    31   var ExprdawcMetaBoxesProduct = /*#__PURE__*/function () {
    32     function ExprdawcMetaBoxesProduct() {
    33       _classCallCheck(this, ExprdawcMetaBoxesProduct);
    34       this.fieldIndex = $('#exprdawc_field_body tr.exprdawc_attribute').length;
    35       this.isDirty = false;
    36       this.init();
    37     }
    38 
    39     /**
    40      * Initialize the class.
    41      */
    42     return _createClass(ExprdawcMetaBoxesProduct, [{
    43       key: "init",
    44       value: function init() {
    45         this.bindEvents();
    46         this.noEntryContent();
    47       }
    48 
    49       /**
    50        * Bind events.
    51        */
    52     }, {
    53       key: "bindEvents",
    54       value: function bindEvents() {
    55         $('#exprdawc_add_custom_field').on('click', this.addCustomField.bind(this));
    56         $(document).on('click', '.exprdawc_remove_custom_field', this.removeCustomField.bind(this));
    57         $(document).on('change', '.exprdawc_attribute_type', this.toggleOptions.bind(this));
    58         $(document).on('click', '.toggle-options', this.toggleOptionsTable.bind(this));
    59         $(document).on('click', '.add_option', this.addOption.bind(this));
    60         $(document).on('click', '.remove_option', this.removeOption.bind(this));
    61         $(document).on('click', 'a.exprdawc-export', this.exportContent.bind(this));
    62         $(document).on('click', 'a.exprdawc-import', this.importContent.bind(this));
    63         $(document).on('change', '.exprdawc_input', this.setDirty.bind(this));
    64         $(document).on('change', '.exprdawc_autocomplete_field', this.checkAutocompleteField.bind(this));
    65         $(document).on('click', '.add_rule_group', this.addRuleGroup.bind(this));
    66         $(document).on('click', '.add_rule', this.addRule.bind(this));
    67         $(document).on('click', '.remove_rule', this.removeRule.bind(this));
    68         $(document).on('change', '.exprdawc_conditional_operator', this.toggleConditionalValueField.bind(this));
    69         $(document).on('change', '.exprdawc_conditional_logic_field', this.toggleConditionalTable.bind(this));
    70         this.toggleConditionalValueFieldAll();
    71 
    72         // Attribute ordering.
    73         $('.exprdawc_field_table tbody').sortable({
    74           items: 'tr.exprdawc_fields_wrapper',
    75           cursor: 'move',
    76           axis: 'y',
    77           handle: '.move',
    78           scrollSensitivity: 40,
    79           forcePlaceholderSize: true,
    80           helper: 'clone',
    81           opacity: 0.65,
    82           placeholder: 'wc-metabox-sortable-placeholder',
    83           start: function start(event, ui) {
    84             ui.item.css('background-color', '#f6f6f6');
    85           },
    86           stop: function stop(event, ui) {
    87             ui.item.removeAttr('style');
    88           }
    89         });
    90 
    91         // Option ordering.
    92         $(document).on('mouseenter', '.exprdawc_options_table tbody', function () {
    93           $(this).sortable({
    94             items: 'tr',
    95             cursor: 'move',
    96             axis: 'y',
    97             handle: '.move',
    98             scrollSensitivity: 40,
    99             forcePlaceholderSize: true,
    100             helper: 'clone',
    101             opacity: 0.65,
    102             placeholder: 'wc-metabox-sortable-placeholder',
    103             start: function start(event, ui) {
    104               ui.item.css('background-color', '#f6f6f6');
    105             },
    106             stop: function stop(event, ui) {
    107               ui.item.removeAttr('style');
    108             }
    109           });
    110         });
    111 
    112         // Get the name of the input and set the header.
    113         $('#exprdawc_attribute_container').on('input', '.exprdawc_attribute .exprdawc_attribute_input_name input', function () {
    114           var text = $(this).val(),
    115             target = $(this).closest('.exprdawc_attribute').find('.attribute_name');
    116           if (text) {
    117             target.text(text);
    118           }
    119         });
    120       }
    121 
    122       /**
    123        * Add a custom field.
    124        */
    125     }, {
    126       key: "addCustomField",
    127       value: function addCustomField() {
    128         this.fieldIndex++;
    129         this.setDirty();
    130         $('#exprdawc_field_body').append("\n                <tr class=\"exprdawc_fields_wrapper\">\n                <td colspan=\"5\">\n                <table class=\"exprdawc_fields_table\" data-index=\"".concat(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\" name=\"extra_product_fields[").concat(this.fieldIndex, "][label]\" placeholder=\"").concat(exprdawc_admin_meta_boxes.label_placeholder, "\" />\n                            </td>\n                            <td>\n                                <select id=\"exprdawc_attribute_type_").concat(this.fieldIndex, "\" name=\"extra_product_fields[").concat(this.fieldIndex, "][type]\" class=\"exprdawc_attribute_type\">\n                                    <option value=\"text\">").concat(exprdawc_admin_meta_boxes.short_text, "</option>\n                                    <option value=\"long_text\">").concat(exprdawc_admin_meta_boxes.long_text, "</option>\n                                    <option value=\"email\">").concat(exprdawc_admin_meta_boxes.email, "</option>\n                                    <option value=\"number\">").concat(exprdawc_admin_meta_boxes.number, "</option>\n                                    <option value=\"date\">").concat(exprdawc_admin_meta_boxes.date, "</option>\n                                    <option value=\"yes-no\">").concat(exprdawc_admin_meta_boxes.yes_no, "</option>\n                                    <option value=\"radio\">").concat(exprdawc_admin_meta_boxes.radio, "</option>\n                                    <option value=\"checkbox\">").concat(exprdawc_admin_meta_boxes.checkbox, "</option>\n                                    <option value=\"select\">").concat(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                                <input type=\"hidden\" class=\"exprdawc_attribute_index\" name=\"extra_product_fields[").concat(this.fieldIndex, "][index]\" value=\"").concat(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                                        <!-- Text Area Option/Settings -->\n                                        <tr>\n                                            <td class=\"exprdawc_attribute_require_checkbox\">\n                                                <label class=\"exprdawc_label\" for=\"exprdawc_text_required_").concat(this.fieldIndex, "\">\n                                                    <input type=\"checkbox\" id=\"exprdawc_text_required_").concat(this.fieldIndex, "\" class=\"exprdawc_input exprdawc_checkbox checkbox\" name=\"extra_product_fields[").concat(this.fieldIndex, "][required]\" value=\"1\" />\n                                                    ").concat(exprdawc_admin_meta_boxes.require_input, "\n                                                </label>                                       \n                                                <label class=\"exprdawc_label\" for=\"exprdawc_text_autofocus_").concat(this.fieldIndex, "\">\n                                                    <input type=\"checkbox\" id=\"exprdawc_text_autofocus_").concat(this.fieldIndex, "\" class=\"exprdawc_input exprdawc_checkbox checkbox\" name=\"extra_product_fields[").concat(this.fieldIndex, "][autofocus]\" value=\"1\" />\n                                                    ").concat(exprdawc_admin_meta_boxes.enable_autofocus, "\n                                                </label>\n\n                                                <!-- Enable Conditional Logic and show table -->\n                                                <label class=\"exprdawc_label\" for=\"exprdawc_text_conditional_logic_").concat(this.fieldIndex, "\">\n                                                    <input type=\"checkbox\" id=\"exprdawc_text_conditional_logic_").concat(this.fieldIndex, "\" class=\"exprdawc_input exprdawc_checkbox exprdawc_conditional_logic_field checkbox\" name=\"extra_product_fields[").concat(this.fieldIndex, "][conditional_logic]\" value=\"1\" />\n                                                    ").concat(exprdawc_admin_meta_boxes.enable_conditional_logic, "\n                                                </label>\n                                            </td>\n                                            <td class=\"exprdawc_attribute_placeholder_text\">\n                                                <label class=\"exprdawc_label\" for=\"exprdawc_text_placeholder_text_").concat(this.fieldIndex, "\">").concat(exprdawc_admin_meta_boxes.placeholder_text, "</label>\n                                                <input type=\"text\" id=\"exprdawc_text_placeholder_text_").concat(this.fieldIndex, "\" class=\"exprdawc_input exprdawc_textinput exprdawc_placeholder\" name=\"extra_product_fields[").concat(this.fieldIndex, "][placeholder_text]\" placeholder=\"").concat(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_").concat(this.fieldIndex, "\">").concat(exprdawc_admin_meta_boxes.help_text, "</label>\n                                                <input type=\"text\" id=\"exprdawc_text_help_text_").concat(this.fieldIndex, "\" class=\"exprdawc_input exprdawc_textinput exprdawc_helptext\" name=\"extra_product_fields[").concat(this.fieldIndex, "][help_text]\" placeholder=\"").concat(exprdawc_admin_meta_boxes.help_text, "\" />\n                                            </td>\n                                            <td>\n                                                <label class=\"exprdawc_label\" for=\"exprdawc_autocomplete_function_").concat(this.fieldIndex, "\">").concat(exprdawc_admin_meta_boxes.autocomplete_function, "</label>\n                                                <select id=\"exprdawc_autocomplete_function_").concat(this.fieldIndex, "\" name=\"extra_product_fields[").concat(this.fieldIndex, "][autocomplete]\" class=\"exprdawc_input exprdawc_attribute_type\">\n                                                    <option value=\"on\">").concat(exprdawc_admin_meta_boxes.autocomplete_on, "</option>\n                                                    <option value=\"off\">").concat(exprdawc_admin_meta_boxes.autocomplete_off, "</option>\n                                                    <option value=\"address-level1\">").concat(exprdawc_admin_meta_boxes.address_level1, "</option>\n                                                    <option value=\"address-level2\">").concat(exprdawc_admin_meta_boxes.address_level2, "</option>\n                                                    <option value=\"address-level3\">").concat(exprdawc_admin_meta_boxes.address_level3, "</option>\n                                                    <option value=\"address-level4\">").concat(exprdawc_admin_meta_boxes.address_level4, "</option>\n                                                    <option value=\"address-line1\">").concat(exprdawc_admin_meta_boxes.address_line1, "</option>\n                                                    <option value=\"address-line2\">").concat(exprdawc_admin_meta_boxes.address_line2, "</option>\n                                                    <option value=\"address-line3\">").concat(exprdawc_admin_meta_boxes.address_line3, "</option>\n                                                    <option value=\"bday\">").concat(exprdawc_admin_meta_boxes.bday, "</option>\n                                                    <option value=\"bday-day\">").concat(exprdawc_admin_meta_boxes.bday_day, "</option>\n                                                    <option value=\"bday-month\">").concat(exprdawc_admin_meta_boxes.bday_month, "</option>\n                                                    <option value=\"bday-year\">").concat(exprdawc_admin_meta_boxes.bday_year, "</option>\n                                                    <option value=\"cc-additional-name\">").concat(exprdawc_admin_meta_boxes.cc_additional_name, "</option>\n                                                    <option value=\"cc-csc\">").concat(exprdawc_admin_meta_boxes.cc_csc, "</option>\n                                                    <option value=\"cc-exp\">").concat(exprdawc_admin_meta_boxes.cc_exp, "</option>\n                                                    <option value=\"cc-exp-month\">").concat(exprdawc_admin_meta_boxes.cc_exp_month, "</option>\n                                                    <option value=\"cc-exp-year\">").concat(exprdawc_admin_meta_boxes.cc_exp_year, "</option>\n                                                    <option value=\"cc-family-name\">").concat(exprdawc_admin_meta_boxes.cc_family_name, "</option>\n                                                    <option value=\"cc-given-name\">").concat(exprdawc_admin_meta_boxes.cc_given_name, "</option>\n                                                    <option value=\"cc-name\">").concat(exprdawc_admin_meta_boxes.cc_name, "</option>\n                                                    <option value=\"cc-number\">").concat(exprdawc_admin_meta_boxes.cc_number, "</option>\n                                                    <option value=\"cc-type\">").concat(exprdawc_admin_meta_boxes.cc_type, "</option>\n                                                    <option value=\"country\">").concat(exprdawc_admin_meta_boxes.country, "</option>\n                                                    <option value=\"country-name\">").concat(exprdawc_admin_meta_boxes.country_name, "</option>\n                                                    <option value=\"email\">").concat(exprdawc_admin_meta_boxes.email, "</option>\n                                                    <option value=\"language\">").concat(exprdawc_admin_meta_boxes.language, "</option>\n                                                    <option value=\"photo\">").concat(exprdawc_admin_meta_boxes.photo, "</option>\n                                                    <option value=\"postal-code\">").concat(exprdawc_admin_meta_boxes.postal_code, "</option>\n                                                    <option value=\"sex\">").concat(exprdawc_admin_meta_boxes.sex, "</option>\n                                                    <option value=\"street-address\">").concat(exprdawc_admin_meta_boxes.street_address, "</option>\n                                                    <option value=\"tel\">").concat(exprdawc_admin_meta_boxes.tel, "</option>\n                                                    <option value=\"tel-area-code\">").concat(exprdawc_admin_meta_boxes.tel_area_code, "</option>\n                                                    <option value=\"tel-country-code\">").concat(exprdawc_admin_meta_boxes.tel_country_code, "</option>\n                                                    <option value=\"tel-extension\">").concat(exprdawc_admin_meta_boxes.tel_extension, "</option>\n                                                    <option value=\"tel-local\">").concat(exprdawc_admin_meta_boxes.tel_local, "</option>\n                                                    <option value=\"tel-local-prefix\">").concat(exprdawc_admin_meta_boxes.tel_local_prefix, "</option>\n                                                    <option value=\"tel-local-suffix\">").concat(exprdawc_admin_meta_boxes.tel_local_suffix, "</option>\n                                                    <option value=\"tel-national\">").concat(exprdawc_admin_meta_boxes.tel_national, "</option>\n                                                    <option value=\"transaction-amount\">").concat(exprdawc_admin_meta_boxes.transaction_amount, "</option>\n                                                    <option value=\"transaction-currency\">").concat(exprdawc_admin_meta_boxes.transaction_currency, "</option>\n                                                    <option value=\"url\">").concat(exprdawc_admin_meta_boxes.url, "</option>\n                                                </select>\n                                            </td>\n                                        </tr>\n                                    </tbody>\n                                </table>\n                                <hr>\n\n                                <!-- Conditional Logic -->\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\">").concat(exprdawc_admin_meta_boxes.conditionals, "</label>\n\t\t\t\t\t\t\t\t                <p>").concat(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[").concat(this.fieldIndex, "][conditional_rules][0][0][field]\" class=\"exprdawc_input exprdawc_conditional_field\">\n                                                                <option value=\"\">").concat(exprdawc_admin_meta_boxes.selectFieldNone, "</option>\n                                                                ").concat(this.getAllFieldsOptions(), "\n                                                                </select>\n                                                                <select name=\"extra_product_fields[").concat(this.fieldIndex, "][conditional_rules][0][0][operator]\" class=\"exprdawc_input exprdawc_conditional_operator\">\n                                                                    <option value=\"field_is_empty\">").concat(exprdawc_admin_meta_boxes.field_is_empty, "</option>\n                                                                    <option value=\"field_is_not_empty\">").concat(exprdawc_admin_meta_boxes.field_is_not_empty, "</option>\n                                                                    <option value=\"equals\">").concat(exprdawc_admin_meta_boxes.equals, "</option>\n                                                                    <option value=\"not_equals\">").concat(exprdawc_admin_meta_boxes.notEquals, "</option>\n                                                                    <option value=\"greater_than\">").concat(exprdawc_admin_meta_boxes.greaterThan, "</option>\n                                                                    <option value=\"less_than\">").concat(exprdawc_admin_meta_boxes.lessThan, "</option>\n                                                                </select>\n                                                                <input type=\"text\" name=\"extra_product_fields[").concat(this.fieldIndex, "][conditional_rules][0][0][value]\" class=\"exprdawc_input exprdawc_conditional_value\" placeholder=\"").concat(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\">").concat(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                                <!-- Text Area Option/Settings -->\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_").concat(this.fieldIndex, "\">").concat(exprdawc_admin_meta_boxes.rows, "</label>\n                                                <input type=\"number\" id=\"exprdawc_long_text_rows_").concat(this.fieldIndex, "\" class=\"exprdawc_input exprdawc_long_text_rows\" name=\"extra_product_fields[").concat(this.fieldIndex, "][rows]\" value=\"2\" />\n                                            </td>\n                                            <td>\n                                                <label class=\"exprdawc_label\" for=\"exprdawc_long_text_cols_").concat(this.fieldIndex, "\">").concat(exprdawc_admin_meta_boxes.columns, "</label>\n                                                <input type=\"number\" id=\"exprdawc_long_text_cols_").concat(this.fieldIndex, "\" class=\"exprdawc_input exprdawc_long_text_cols\" name=\"extra_product_fields[").concat(this.fieldIndex, "][cols]\" value=\"5\" />\n                                            </td>\n                                            <td>\n                                                <label class=\"exprdawc_label\" for=\"exprdawc_long_text_default_").concat(this.fieldIndex, "\">").concat(exprdawc_admin_meta_boxes.default_value, "</label>\n                                                <textarea id=\"exprdawc_long_text_default_").concat(this.fieldIndex, "\" class=\"exprdawc_textarea\" rows=\"3\" cols=\"30\" placeholder=\"").concat(exprdawc_admin_meta_boxes.enter_default_text, "\" name=\"extra_product_fields[").concat(this.fieldIndex, "][default]\"></textarea>\n                                            </td>\n                                        </tr>\n                                    </tbody>\n                                </table>\n\n                                <!-- Text Option/Settings -->\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_").concat(this.fieldIndex, "\">").concat(exprdawc_admin_meta_boxes.min_length, "</label>\n                                                <input type=\"number\" id=\"exprdawc_text_min_length_").concat(this.fieldIndex, "\" class=\"exprdawc_input exprdawc_text_min_length\" name=\"extra_product_fields[").concat(this.fieldIndex, "][minlength]\" value=\"0\" />\n                                            </td>\n                                            <td>\n                                                <label class=\"exprdawc_label\" for=\"exprdawc_text_max_length_").concat(this.fieldIndex, "\">").concat(exprdawc_admin_meta_boxes.max_length, "</label>\n                                                <input type=\"number\" id=\"exprdawc_text_max_length_").concat(this.fieldIndex, "\" class=\"exprdawc_input exprdawc_text_max_length\" name=\"extra_product_fields[").concat(this.fieldIndex, "][maxlength]\" value=\"255\" />\n                                            </td>\n                                            <td>\n                                                <label class=\"exprdawc_label\" for=\"exprdawc_text_default_").concat(this.fieldIndex, "\">").concat(exprdawc_admin_meta_boxes.default_value, "</label>\n                                                <input type=\"text\" id=\"exprdawc_text_default_").concat(this.fieldIndex, "\" class=\"exprdawc_input exprdawc_text_default\" placeholder=\"").concat(exprdawc_admin_meta_boxes.enter_default_text, "\" name=\"extra_product_fields[").concat(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>").concat(exprdawc_admin_meta_boxes.option_label, "</th>\n                                            <th>").concat(exprdawc_admin_meta_boxes.option_value, "</th>\n                                            <th>").concat(exprdawc_admin_meta_boxes["default"], "</th>\n                                            <th>").concat(exprdawc_admin_meta_boxes.action, "</th>\n                                        </tr>\n                                    </thead>\n                                    <tbody>\n                                        <!-- Options will be dynamically added here -->\n                                    </tbody>\n                                    <tfoot>\n                                        <tr>\n                                            <td colspan=\"4\">\n                                                <button type=\"button\" class=\"button add_option\">").concat(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;\">").concat(exprdawc_admin_meta_boxes.no_options, "</p>\n                            </td>\n                        </tr>\n                    </tbody>\n                </table>\n                </td>\n                </tr>\n                "));
    131         this.noEntryContent();
    132 
    133         // Trigger change event to show the options.
    134         $('#exprdawc_attribute_type_' + this.fieldIndex).trigger('change');
    135       }
    136 
    137       /**
    138        * Remove a custom field.
    139        * @param {*} e
    140        * @returns
    141        */
    142     }, {
    143       key: "removeCustomField",
    144       value: function removeCustomField(e) {
    145         if (confirm(exprdawc_admin_meta_boxes.confirm_delete)) {
    146           this.setDirty();
    147           $(e.currentTarget).closest('tr').next('.exprdawc_options').remove();
    148           $(e.currentTarget).closest('tr').remove();
    149           this.noEntryContent();
    150         }
    151         return false;
    152       }
    153 
    154       /**
    155        * Toggle options.
    156        * @param {*} e
    157        */
    158     }, {
    159       key: "toggleOptions",
    160       value: function toggleOptions(e) {
    161         this.setDirty();
    162         var $row = $(e.currentTarget).closest('tr');
    163         var $optionsRow = $row.next('.exprdawc_options');
    164         var $optionsTable = $optionsRow.find('.exprdawc_options_table');
    165         var $placeholderText = $row.find('.exprdawc_placeholder');
    166         if ($(e.currentTarget).val() === 'radio' || $(e.currentTarget).val() === 'checkbox' || $(e.currentTarget).val() === 'select') {
    167           $placeholderText.prop('disabled', true);
    168           $optionsTable.show();
    169         } else {
    170           $placeholderText.prop('disabled', false);
    171           $optionsTable.hide();
    172         }
    173         if ($(e.currentTarget).val() === 'long_text') {
    174           $optionsRow.find('.exprdawc_long_text_table').show();
    175         } else {
    176           $optionsRow.find('.exprdawc_long_text_table').hide();
    177         }
    178         if ($(e.currentTarget).val() === 'text' || $(e.currentTarget).val() === 'email' || $(e.currentTarget).val() === 'number' || $(e.currentTarget).val() === 'date') {
    179           $optionsRow.find('.exprdawc_text_table').show();
    180         } else {
    181           $optionsRow.find('.exprdawc_text_table').hide();
    182         }
    183       }
    184 
    185       /**
    186        * Toggle options table.
    187        * @param {*} e
    188        */
    189     }, {
    190       key: "toggleOptionsTable",
    191       value: function toggleOptionsTable(e) {
    192         var $icon = $(e.currentTarget);
    193         var $optionsRow = $icon.closest('tr').next('.exprdawc_options');
    194         $optionsRow.toggle();
    195         $icon.toggleClass('dashicons-arrow-down dashicons-arrow-up');
    196       }
    197 
    198       /**
    199        * Add an option.
    200        * @param {*} e
    201        */
    202     }, {
    203       key: "addOption",
    204       value: function addOption(e) {
    205         this.setDirty();
    206         var $optionsTable = $(e.currentTarget).closest('.exprdawc_options_table');
    207         var optionIndex = $optionsTable.find('tbody tr').length;
    208         $optionsTable.find('tbody').append("\n                <tr>\n                    <td class=\"move\"><i class=\"dashicons dashicons-move\"></i></td>\n                    <td>\n                        <input type=\"text\" name=\"extra_product_fields[".concat(this.fieldIndex, "][options][").concat(optionIndex, "][label]\" placeholder=\"").concat(exprdawc_admin_meta_boxes.option_label_placeholder, "\" />\n                    </td>\n                    <td>\n                        <input type=\"text\" name=\"extra_product_fields[").concat(this.fieldIndex, "][options][").concat(optionIndex, "][value]\" placeholder=\"").concat(exprdawc_admin_meta_boxes.option_value_placeholder, "\" />\n                    </td>\n                    <td>\n                        <input type=\"radio\" name=\"extra_product_fields[").concat(this.fieldIndex, "][default]\" value=\"").concat(optionIndex, "\" />\n                    </td>\n                    <td>\n                        <button type=\"button\" class=\"button remove_option\">").concat(exprdawc_admin_meta_boxes.remove, "</button>\n                    </td>\n                </tr>\n                "));
    209         this.checkOptions($optionsTable.closest('.exprdawc_options'));
    210       }
    211 
    212       /**
    213        * Remove an option.
    214        * @param {*} e
    215        * @returns
    216        */
    217     }, {
    218       key: "removeOption",
    219       value: function removeOption(e) {
    220         if (confirm(exprdawc_admin_meta_boxes.confirm_delete)) {
    221           this.setDirty();
    222           $(e.currentTarget).closest('tr').remove();
    223           this.checkOptions($(e.currentTarget).closest('.exprdawc_options'));
    224         }
    225         return false;
    226       }
    227 
    228       /**
    229        * Check options.
    230        * @param {*} $optionsRow
    231        */
    232     }, {
    233       key: "checkOptions",
    234       value: function checkOptions($optionsRow) {
    235         var $optionsTable = $optionsRow.find('.exprdawc_options_table tbody');
    236         var $noEntryMessage = $optionsRow.find('.exprdawc_no_entry_message');
    237         if ($optionsTable.find('tr').length === 0) {
    238           $noEntryMessage.show();
    239         } else {
    240           $noEntryMessage.hide();
    241         }
    242       }
    243 
    244       /**
    245        * Export content.
    246        * @param {*} e
    247        * @returns
    248        */
    249     }, {
    250       key: "exportContent",
    251       value: function exportContent(e) {
    252         e.preventDefault();
    253         if (this.isDirty) {
    254           alert('Please save your changes before exporting.');
    255           return;
    256         }
    257         var $exportString = $('#exprdawc_export_string');
    258         var exportContent = $exportString.val();
    259         if (!exportContent) {
    260           alert("".concat(exprdawc_admin_meta_boxes.emptyExportMsg));
    261           return;
    262         }
    263         navigator.clipboard.writeText(exportContent).then(function () {
    264           alert("".concat(exprdawc_admin_meta_boxes.copySuccessMsg));
    265         }, function (err) {
    266           console.error('Could not copy text: ', err);
    267           alert("".concat(exprdawc_admin_meta_boxes.copyErrorMsg));
    268         });
    269       }
    270 
    271       /**
    272        * Import content.
    273        * @param {*} e
    274        * @returns
    275        */
    276     }, {
    277       key: "importContent",
    278       value: function importContent(e) {
    279         e.preventDefault();
    280         var exportString = prompt(exprdawc_admin_meta_boxes.enterExportString);
    281         if (exportString) {
    282           var sureImportQuestion = confirm(exprdawc_admin_meta_boxes.sureImportQuestion);
    283           if (!sureImportQuestion) {
    284             return;
    285           }
    286           var productId = $('#post_ID').val();
    287           $.ajax({
    288             url: ajaxurl,
    289             method: 'POST',
    290             data: {
    291               action: 'exprdawc_import_custom_fields',
    292               product_id: productId,
    293               export_string: exportString,
    294               security: exprdawc_admin_meta_boxes.edit_exprdawc_nonce
    295             },
    296             success: function success(response) {
    297               if (response.success) {
    298                 alert(exprdawc_admin_meta_boxes.importSuccessMsg);
    299                 location.reload();
    300               } else {
    301                 alert(exprdawc_admin_meta_boxes.importErrorMsg);
    302               }
    303             },
    304             error: function error() {
    305               alert(exprdawc_admin_meta_boxes.importErrorMsg);
    306             }
    307           });
    308         }
    309       }
    310 
    311       /**
    312        * Set dirty.
    313        */
    314     }, {
    315       key: "setDirty",
    316       value: function setDirty() {
    317         this.isDirty = true;
    318         this.disableExportLink();
    319       }
    320 
    321       /**
    322        * Disable export link.
    323        * @returns
    324        */
    325     }, {
    326       key: "disableExportLink",
    327       value: function disableExportLink() {
    328         if (this.isDirty) {
    329           $('.exprdawc-export').hide();
    330           return;
    331         }
    332       }
    333 
    334       /**
    335        * No entry content.
    336        */
    337     }, {
    338       key: "noEntryContent",
    339       value: function noEntryContent() {
    340         var index = $('#exprdawc_field_body .exprdawc_attribute').length,
    341           $container = $('.exprdawc_no_entry_message'),
    342           $table_header = $('#exprdatawc_table_header'),
    343           $export_link = $('.exprdawc-export');
    344         if (index > 0) {
    345           $container.hide();
    346           $table_header.show();
    347           $export_link.show();
    348         } else {
    349           $container.show();
    350           $table_header.hide();
    351           $export_link.hide();
    352         }
    353       }
    354 
    355       /**
    356        * Check autocomplete field.
    357        * @param {*} e
    358        */
    359     }, {
    360       key: "checkAutocompleteField",
    361       value: function checkAutocompleteField(e) {
    362         var $currentCheckbox = $(e.currentTarget);
    363         var isChecked = $currentCheckbox.is(':checked');
    364         if (isChecked) {
    365           var $otherChecked = $('.exprdawc_autocomplete_field').not($currentCheckbox).filter(':checked');
    366           if ($otherChecked.length > 0) {
    367             var confirmOverwrite = confirm(exprdawc_admin_meta_boxes.sureAnotherAutocompleCheckedQuestion);
    368             if (!confirmOverwrite) {
    369               $currentCheckbox.prop('checked', false);
    370               return;
    371             }
    372             $otherChecked.prop('checked', false);
    373           }
    374         }
    375       }
    376 
    377       /**
    378        * Add a rule group.
    379        * @param {*} e
    380        */
    381     }, {
    382       key: "addRuleGroup",
    383       value: function addRuleGroup(e) {
    384         var $container = $(e.currentTarget).closest('.exprdawc_conditional_logic_table').find('.exprdawc_conditional_rules');
    385         var ruleGroupIndex = $container.find('.exprdawc_rule_group').length;
    386         var actualIndex = $(e.currentTarget).closest('.exprdawc_fields_table').data('index');
    387         var ruleGroupHtml = this.getRuleGroupHtml(actualIndex, ruleGroupIndex);
    388         $container.append(ruleGroupHtml);
    389       }
    390 
    391       /**
    392        * Add a rule.
    393        * @param {*} e
    394        */
    395     }, {
    396       key: "addRule",
    397       value: function addRule(e) {
    398         var $ruleGroup = $(e.currentTarget).closest('.exprdawc_rule_group');
    399         var ruleGroupIndex = $ruleGroup.index();
    400         var actualIndex = $(e.currentTarget).closest('.exprdawc_fields_table').data('index');
    401         var ruleIndex = $ruleGroup.find('.exprdawc_rule').length;
    402         var ruleHtml = this.getRuleHtml(actualIndex, ruleGroupIndex, ruleIndex);
    403         $ruleGroup.append(ruleHtml);
    404       }
    405 
    406       /**
    407        * Get rule group HTML.
    408        * @param {number} ruleGroupIndex
    409        * @returns {string}
    410        */
    411     }, {
    412       key: "getRuleGroupHtml",
    413       value: function getRuleGroupHtml(actualIndex, ruleGroupIndex) {
    414         return "\n            <div class=\"exprdawc_rule_group_container\">\n                <h2>".concat(exprdawc_admin_meta_boxes.or, "</h2>\n                <div class=\"exprdawc_rule_group\">\n                    ").concat(this.getRuleHtml(actualIndex, ruleGroupIndex, 0), "\n                </div>\n            </div>\n            ");
    415       }
    416 
    417       /**
    418        * Get rule HTML.
    419        * @param {number} actualIndex
    420        * @param {number} ruleGroupIndex
    421        * @param {number} ruleIndex
    422        * @returns {string}
    423        */
    424     }, {
    425       key: "getRuleHtml",
    426       value: function getRuleHtml(actualIndex, ruleGroupIndex, ruleIndex) {
    427         return "\n            <div class=\"exprdawc_rule\">\n                <select name=\"extra_product_fields[".concat(actualIndex, "][conditional_rules][").concat(ruleGroupIndex, "][").concat(ruleIndex, "][field]\" class=\"exprdawc_input exprdawc_conditional_field\">\n                <option value=\"\">").concat(exprdawc_admin_meta_boxes.selectFieldNone, "</option>\n                ").concat(this.getAllFieldsOptions(), "\n                </select>\n                <select name=\"extra_product_fields[").concat(actualIndex, "][conditional_rules][").concat(ruleGroupIndex, "][").concat(ruleIndex, "][operator]\" class=\"exprdawc_input exprdawc_conditional_operator\">\n                    <option value=\"field_is_empty\">").concat(exprdawc_admin_meta_boxes.field_is_empty, "</option>\n                    <option value=\"field_is_not_empty\">").concat(exprdawc_admin_meta_boxes.field_is_not_empty, "</option>\n                    <option value=\"equals\">").concat(exprdawc_admin_meta_boxes.equals, "</option>\n                    <option value=\"not_equals\">").concat(exprdawc_admin_meta_boxes.notEquals, "</option>\n                    <option value=\"greater_than\">").concat(exprdawc_admin_meta_boxes.greaterThan, "</option>\n                    <option value=\"less_than\">").concat(exprdawc_admin_meta_boxes.lessThan, "</option>\n                </select>\n                <input type=\"text\" name=\"extra_product_fields[").concat(actualIndex, "][conditional_rules][").concat(ruleGroupIndex, "][").concat(ruleIndex, "][value]\" class=\"exprdawc_input exprdawc_conditional_value\" placeholder=\"").concat(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\">+ ").concat(exprdawc_admin_meta_boxes.and, "</button>\n            </div>\n            ");
    428       }
    429 
    430       /**
    431        * Toggle conditional value field visibility.
    432        * @param {*} e
    433        */
    434     }, {
    435       key: "toggleConditionalValueField",
    436       value: function toggleConditionalValueField(e) {
    437         var $operator = $(e.currentTarget);
    438         var $valueField = $operator.closest('.exprdawc_rule').find('.exprdawc_conditional_value');
    439         if ($operator.val() === 'field_changed' || $operator.val() === 'field_is_empty' || $operator.val() === 'field_is_not_empty') {
    440           $valueField.hide();
    441         } else {
    442           $valueField.show();
    443         }
    444       }
    445 
    446       // Init all Rules toggleConditionalValueField
    447     }, {
    448       key: "toggleConditionalValueFieldAll",
    449       value: function toggleConditionalValueFieldAll() {
    450         $('.exprdawc_conditional_operator').each(function () {
    451           $(this).trigger('change');
    452         });
    453       }
    454 
    455       /**
    456        * Remove a rule.
    457        * @param {*} e
    458        * @returns
    459        */
    460     }, {
    461       key: "removeRule",
    462       value: function removeRule(e) {
    463         if (confirm(exprdawc_admin_meta_boxes.confirm_delete_rule)) {
    464           var $ruleGroup = $(e.currentTarget).closest('.exprdawc_rule_group_container');
    465           $(e.currentTarget).closest('.exprdawc_rule').remove();
    466           if ($ruleGroup.find('.exprdawc_rule').length === 0) {
    467             $ruleGroup.remove();
    468           }
    469         }
    470         return false;
    471       }
    472 
    473       /**
    474        * Get all fields options.
    475        * @returns
    476        */
    477     }, {
    478       key: "getAllFieldsOptions",
    479       value: function getAllFieldsOptions() {
    480         var options = '';
    481         $('#exprdawc_field_body tr.exprdawc_attribute').each(function () {
    482           var label = $(this).find('.exprdawc_attribute_input_name input').val();
    483           options += "<option value=\"".concat(label, "\">").concat(label, "</option>");
    484         });
    485         return options;
    486       }
    487 
    488       /**
    489       * Enable or disable checkboxes based on a condition.
    490       */
    491     }, {
    492       key: "toggleConditionalTable",
    493       value: function toggleConditionalTable(e) {
    494         var checkbox = $(e.currentTarget);
    495         var $table_setting = $(e.currentTarget).closest('.exprdawc_options').find('.exprdawc_conditional_logic_table');
    496         if (checkbox.is(':checked')) {
    497           $table_setting.show();
    498         } else {
    499           $table_setting.hide();
    500         }
    501       }
    502     }]);
    503   }(); // Initialize the class.
    504   new ExprdawcMetaBoxesProduct();
    505 });
    506 
    507 /***/ }),
    508 
    509 /***/ "./src/assets/scss/admin-backend.scss":
    510 /*!********************************************!*\
    511   !*** ./src/assets/scss/admin-backend.scss ***!
    512   \********************************************/
    513 /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
    514 
    515 "use strict";
    516 __webpack_require__.r(__webpack_exports__);
    517 // extracted by mini-css-extract-plugin
    518 
    519 
    520 /***/ }),
    521 
    522 /***/ "./src/assets/scss/forms.scss":
    523 /*!************************************!*\
    524   !*** ./src/assets/scss/forms.scss ***!
    525   \************************************/
    526 /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
    527 
    528 "use strict";
    529 __webpack_require__.r(__webpack_exports__);
    530 // extracted by mini-css-extract-plugin
    531 
    532 
    533 /***/ })
    534 
    535 /******/    });
    536 /************************************************************************/
    537 /******/    // The module cache
    538 /******/    var __webpack_module_cache__ = {};
    539 /******/   
    540 /******/    // The require function
    541 /******/    function __webpack_require__(moduleId) {
    542 /******/        // Check if module is in cache
    543 /******/        var cachedModule = __webpack_module_cache__[moduleId];
    544 /******/        if (cachedModule !== undefined) {
    545 /******/            return cachedModule.exports;
    546 /******/        }
    547 /******/        // Create a new module (and put it into the cache)
    548 /******/        var module = __webpack_module_cache__[moduleId] = {
    549 /******/            // no module.id needed
    550 /******/            // no module.loaded needed
    551 /******/            exports: {}
    552 /******/        };
    553 /******/   
    554 /******/        // Execute the module function
    555 /******/        __webpack_modules__[moduleId](module, module.exports, __webpack_require__);
    556 /******/   
    557 /******/        // Return the exports of the module
    558 /******/        return module.exports;
    559 /******/    }
    560 /******/   
    561 /******/    // expose the modules object (__webpack_modules__)
    562 /******/    __webpack_require__.m = __webpack_modules__;
    563 /******/   
    564 /************************************************************************/
    565 /******/    /* webpack/runtime/chunk loaded */
    566 /******/    (() => {
    567 /******/        var deferred = [];
    568 /******/        __webpack_require__.O = (result, chunkIds, fn, priority) => {
    569 /******/            if(chunkIds) {
    570 /******/                priority = priority || 0;
    571 /******/                for(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];
    572 /******/                deferred[i] = [chunkIds, fn, priority];
    573 /******/                return;
    574 /******/            }
    575 /******/            var notFulfilled = Infinity;
    576 /******/            for (var i = 0; i < deferred.length; i++) {
    577 /******/                var [chunkIds, fn, priority] = deferred[i];
    578 /******/                var fulfilled = true;
    579 /******/                for (var j = 0; j < chunkIds.length; j++) {
    580 /******/                    if ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {
    581 /******/                        chunkIds.splice(j--, 1);
    582 /******/                    } else {
    583 /******/                        fulfilled = false;
    584 /******/                        if(priority < notFulfilled) notFulfilled = priority;
    585 /******/                    }
    586 /******/                }
    587 /******/                if(fulfilled) {
    588 /******/                    deferred.splice(i--, 1)
    589 /******/                    var r = fn();
    590 /******/                    if (r !== undefined) result = r;
    591 /******/                }
    592 /******/            }
    593 /******/            return result;
    594 /******/        };
    595 /******/    })();
    596 /******/   
    597 /******/    /* webpack/runtime/hasOwnProperty shorthand */
    598 /******/    (() => {
    599 /******/        __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
    600 /******/    })();
    601 /******/   
    602 /******/    /* webpack/runtime/make namespace object */
    603 /******/    (() => {
    604 /******/        // define __esModule on exports
    605 /******/        __webpack_require__.r = (exports) => {
    606 /******/            if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
    607 /******/                Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
    608 /******/            }
    609 /******/            Object.defineProperty(exports, '__esModule', { value: true });
    610 /******/        };
    611 /******/    })();
    612 /******/   
    613 /******/    /* webpack/runtime/jsonp chunk loading */
    614 /******/    (() => {
    615 /******/        // no baseURI
    616 /******/       
    617 /******/        // object to store loaded and loading chunks
    618 /******/        // undefined = chunk not loaded, null = chunk preloaded/prefetched
    619 /******/        // [resolve, reject, Promise] = chunk loading, 0 = chunk loaded
    620 /******/        var installedChunks = {
    621 /******/            "/assets/js/wc-meta-boxes-product": 0,
    622 /******/            "assets/css/forms": 0,
    623 /******/            "assets/css/admin-backend": 0
    624 /******/        };
    625 /******/       
    626 /******/        // no chunk on demand loading
    627 /******/       
    628 /******/        // no prefetching
    629 /******/       
    630 /******/        // no preloaded
    631 /******/       
    632 /******/        // no HMR
    633 /******/       
    634 /******/        // no HMR manifest
    635 /******/       
    636 /******/        __webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);
    637 /******/       
    638 /******/        // install a JSONP callback for chunk loading
    639 /******/        var webpackJsonpCallback = (parentChunkLoadingFunction, data) => {
    640 /******/            var [chunkIds, moreModules, runtime] = data;
    641 /******/            // add "moreModules" to the modules object,
    642 /******/            // then flag all "chunkIds" as loaded and fire callback
    643 /******/            var moduleId, chunkId, i = 0;
    644 /******/            if(chunkIds.some((id) => (installedChunks[id] !== 0))) {
    645 /******/                for(moduleId in moreModules) {
    646 /******/                    if(__webpack_require__.o(moreModules, moduleId)) {
    647 /******/                        __webpack_require__.m[moduleId] = moreModules[moduleId];
    648 /******/                    }
    649 /******/                }
    650 /******/                if(runtime) var result = runtime(__webpack_require__);
    651 /******/            }
    652 /******/            if(parentChunkLoadingFunction) parentChunkLoadingFunction(data);
    653 /******/            for(;i < chunkIds.length; i++) {
    654 /******/                chunkId = chunkIds[i];
    655 /******/                if(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {
    656 /******/                    installedChunks[chunkId][0]();
    657 /******/                }
    658 /******/                installedChunks[chunkId] = 0;
    659 /******/            }
    660 /******/            return __webpack_require__.O(result);
    661 /******/        }
    662 /******/       
    663 /******/        var chunkLoadingGlobal = self["webpackChunkextra_product_data_for_woocommerce"] = self["webpackChunkextra_product_data_for_woocommerce"] || [];
    664 /******/        chunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));
    665 /******/        chunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));
    666 /******/    })();
    667 /******/   
    668 /************************************************************************/
    669 /******/   
    670 /******/    // startup
    671 /******/    // Load entry module and return exports
    672 /******/    // This entry module depends on other loaded chunks and execution need to be delayed
    673 /******/    __webpack_require__.O(undefined, ["assets/css/forms","assets/css/admin-backend"], () => (__webpack_require__("./src/assets/js/wc-meta-boxes-product.js")))
    674 /******/    __webpack_require__.O(undefined, ["assets/css/forms","assets/css/admin-backend"], () => (__webpack_require__("./src/assets/scss/admin-backend.scss")))
    675 /******/    var __webpack_exports__ = __webpack_require__.O(undefined, ["assets/css/forms","assets/css/admin-backend"], () => (__webpack_require__("./src/assets/scss/forms.scss")))
    676 /******/    __webpack_exports__ = __webpack_require__.O(__webpack_exports__);
    677 /******/   
    678 /******/ })()
    679 ;
     1/*! For license information please see wc-meta-boxes-product.js.LICENSE.txt */
     2(()=>{var e,t={976:()=>{function e(t){return e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},e(t)}function t(e,t){for(var a=0;a<t.length;a++){var o=t[a];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,n(o.key),o)}}function n(t){var n=function(t,n){if("object"!=e(t)||!t)return t;var a=t[Symbol.toPrimitive];if(void 0!==a){var o=a.call(t,n||"default");if("object"!=e(o))return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===n?String:Number)(t)}(t,"string");return"symbol"==e(n)?n:n+""}jQuery((function(e){new(function(){return n=function t(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),this.fieldIndex=e("#exprdawc_field_body tr.exprdawc_attribute").length,this.isDirty=!1,this.init()},a=[{key:"init",value:function(){this.bindEvents(),this.noEntryContent()}},{key:"bindEvents",value:function(){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",".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("click","a.exprdawc-export",this.exportContent.bind(this)),e(document).on("click","a.exprdawc-import",this.importContent.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)),this.toggleConditionalValueFieldAll(),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")}}),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(),n=e(this).closest(".exprdawc_attribute").find(".attribute_name");t&&n.text(t)}))}},{key:"addCustomField",value:function(){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="'.concat(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" name="extra_product_fields[').concat(this.fieldIndex,'][label]" placeholder="').concat(exprdawc_admin_meta_boxes.label_placeholder,'" />\n                            </td>\n                            <td>\n                                <select id="exprdawc_attribute_type_').concat(this.fieldIndex,'" name="extra_product_fields[').concat(this.fieldIndex,'][type]" class="exprdawc_attribute_type">\n                                    <option value="text">').concat(exprdawc_admin_meta_boxes.short_text,'</option>\n                                    <option value="long_text">').concat(exprdawc_admin_meta_boxes.long_text,'</option>\n                                    <option value="email">').concat(exprdawc_admin_meta_boxes.email,'</option>\n                                    <option value="number">').concat(exprdawc_admin_meta_boxes.number,'</option>\n                                    <option value="date">').concat(exprdawc_admin_meta_boxes.date,'</option>\n                                    <option value="yes-no">').concat(exprdawc_admin_meta_boxes.yes_no,'</option>\n                                    <option value="radio">').concat(exprdawc_admin_meta_boxes.radio,'</option>\n                                    <option value="checkbox">').concat(exprdawc_admin_meta_boxes.checkbox,'</option>\n                                    <option value="select">').concat(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                                <input type="hidden" class="exprdawc_attribute_index" name="extra_product_fields[').concat(this.fieldIndex,'][index]" value="').concat(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_').concat(this.fieldIndex,'">\n                                                    <input type="checkbox" id="exprdawc_text_required_').concat(this.fieldIndex,'" class="exprdawc_input exprdawc_checkbox checkbox" name="extra_product_fields[').concat(this.fieldIndex,'][required]" value="1" />\n                                                    ').concat(exprdawc_admin_meta_boxes.require_input,'\n                                                </label>                                       \n                                                <label class="exprdawc_label" for="exprdawc_text_autofocus_').concat(this.fieldIndex,'">\n                                                    <input type="checkbox" id="exprdawc_text_autofocus_').concat(this.fieldIndex,'" class="exprdawc_input exprdawc_checkbox checkbox" name="extra_product_fields[').concat(this.fieldIndex,'][autofocus]" value="1" />\n                                                    ').concat(exprdawc_admin_meta_boxes.enable_autofocus,'\n                                                </label>\n\n                                                \x3c!-- Enable Conditional Logic and show table --\x3e\n                                                <label class="exprdawc_label" for="exprdawc_text_conditional_logic_').concat(this.fieldIndex,'">\n                                                    <input type="checkbox" id="exprdawc_text_conditional_logic_').concat(this.fieldIndex,'" class="exprdawc_input exprdawc_checkbox exprdawc_conditional_logic_field checkbox" name="extra_product_fields[').concat(this.fieldIndex,'][conditional_logic]" value="1" />\n                                                    ').concat(exprdawc_admin_meta_boxes.enable_conditional_logic,'\n                                                </label>\n                                            </td>\n                                            <td class="exprdawc_attribute_placeholder_text">\n                                                <label class="exprdawc_label" for="exprdawc_text_placeholder_text_').concat(this.fieldIndex,'">').concat(exprdawc_admin_meta_boxes.placeholder_text,'</label>\n                                                <input type="text" id="exprdawc_text_placeholder_text_').concat(this.fieldIndex,'" class="exprdawc_input exprdawc_textinput exprdawc_placeholder" name="extra_product_fields[').concat(this.fieldIndex,'][placeholder_text]" placeholder="').concat(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_').concat(this.fieldIndex,'">').concat(exprdawc_admin_meta_boxes.help_text,'</label>\n                                                <input type="text" id="exprdawc_text_help_text_').concat(this.fieldIndex,'" class="exprdawc_input exprdawc_textinput exprdawc_helptext" name="extra_product_fields[').concat(this.fieldIndex,'][help_text]" placeholder="').concat(exprdawc_admin_meta_boxes.help_text,'" />\n                                            </td>\n                                            <td>\n                                                <label class="exprdawc_label" for="exprdawc_autocomplete_function_').concat(this.fieldIndex,'">').concat(exprdawc_admin_meta_boxes.autocomplete_function,'</label>\n                                                <select id="exprdawc_autocomplete_function_').concat(this.fieldIndex,'" name="extra_product_fields[').concat(this.fieldIndex,'][autocomplete]" class="exprdawc_input exprdawc_attribute_type">\n                                                    <option value="on">').concat(exprdawc_admin_meta_boxes.autocomplete_on,'</option>\n                                                    <option value="off">').concat(exprdawc_admin_meta_boxes.autocomplete_off,'</option>\n                                                    <option value="address-level1">').concat(exprdawc_admin_meta_boxes.address_level1,'</option>\n                                                    <option value="address-level2">').concat(exprdawc_admin_meta_boxes.address_level2,'</option>\n                                                    <option value="address-level3">').concat(exprdawc_admin_meta_boxes.address_level3,'</option>\n                                                    <option value="address-level4">').concat(exprdawc_admin_meta_boxes.address_level4,'</option>\n                                                    <option value="address-line1">').concat(exprdawc_admin_meta_boxes.address_line1,'</option>\n                                                    <option value="address-line2">').concat(exprdawc_admin_meta_boxes.address_line2,'</option>\n                                                    <option value="address-line3">').concat(exprdawc_admin_meta_boxes.address_line3,'</option>\n                                                    <option value="bday">').concat(exprdawc_admin_meta_boxes.bday,'</option>\n                                                    <option value="bday-day">').concat(exprdawc_admin_meta_boxes.bday_day,'</option>\n                                                    <option value="bday-month">').concat(exprdawc_admin_meta_boxes.bday_month,'</option>\n                                                    <option value="bday-year">').concat(exprdawc_admin_meta_boxes.bday_year,'</option>\n                                                    <option value="cc-additional-name">').concat(exprdawc_admin_meta_boxes.cc_additional_name,'</option>\n                                                    <option value="cc-csc">').concat(exprdawc_admin_meta_boxes.cc_csc,'</option>\n                                                    <option value="cc-exp">').concat(exprdawc_admin_meta_boxes.cc_exp,'</option>\n                                                    <option value="cc-exp-month">').concat(exprdawc_admin_meta_boxes.cc_exp_month,'</option>\n                                                    <option value="cc-exp-year">').concat(exprdawc_admin_meta_boxes.cc_exp_year,'</option>\n                                                    <option value="cc-family-name">').concat(exprdawc_admin_meta_boxes.cc_family_name,'</option>\n                                                    <option value="cc-given-name">').concat(exprdawc_admin_meta_boxes.cc_given_name,'</option>\n                                                    <option value="cc-name">').concat(exprdawc_admin_meta_boxes.cc_name,'</option>\n                                                    <option value="cc-number">').concat(exprdawc_admin_meta_boxes.cc_number,'</option>\n                                                    <option value="cc-type">').concat(exprdawc_admin_meta_boxes.cc_type,'</option>\n                                                    <option value="country">').concat(exprdawc_admin_meta_boxes.country,'</option>\n                                                    <option value="country-name">').concat(exprdawc_admin_meta_boxes.country_name,'</option>\n                                                    <option value="email">').concat(exprdawc_admin_meta_boxes.email,'</option>\n                                                    <option value="language">').concat(exprdawc_admin_meta_boxes.language,'</option>\n                                                    <option value="photo">').concat(exprdawc_admin_meta_boxes.photo,'</option>\n                                                    <option value="postal-code">').concat(exprdawc_admin_meta_boxes.postal_code,'</option>\n                                                    <option value="sex">').concat(exprdawc_admin_meta_boxes.sex,'</option>\n                                                    <option value="street-address">').concat(exprdawc_admin_meta_boxes.street_address,'</option>\n                                                    <option value="tel">').concat(exprdawc_admin_meta_boxes.tel,'</option>\n                                                    <option value="tel-area-code">').concat(exprdawc_admin_meta_boxes.tel_area_code,'</option>\n                                                    <option value="tel-country-code">').concat(exprdawc_admin_meta_boxes.tel_country_code,'</option>\n                                                    <option value="tel-extension">').concat(exprdawc_admin_meta_boxes.tel_extension,'</option>\n                                                    <option value="tel-local">').concat(exprdawc_admin_meta_boxes.tel_local,'</option>\n                                                    <option value="tel-local-prefix">').concat(exprdawc_admin_meta_boxes.tel_local_prefix,'</option>\n                                                    <option value="tel-local-suffix">').concat(exprdawc_admin_meta_boxes.tel_local_suffix,'</option>\n                                                    <option value="tel-national">').concat(exprdawc_admin_meta_boxes.tel_national,'</option>\n                                                    <option value="transaction-amount">').concat(exprdawc_admin_meta_boxes.transaction_amount,'</option>\n                                                    <option value="transaction-currency">').concat(exprdawc_admin_meta_boxes.transaction_currency,'</option>\n                                                    <option value="url">').concat(exprdawc_admin_meta_boxes.url,'</option>\n                                                </select>\n                                            </td>\n                                        </tr>\n                                    </tbody>\n                                </table>\n                                <hr>\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">').concat(exprdawc_admin_meta_boxes.conditionals,"</label>\n\t\t\t\t\t\t\t\t                <p>").concat(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[').concat(this.fieldIndex,'][conditional_rules][0][0][field]" class="exprdawc_input exprdawc_conditional_field">\n                                                                <option value="">').concat(exprdawc_admin_meta_boxes.selectFieldNone,"</option>\n                                                                ").concat(this.getAllFieldsOptions(),'\n                                                                </select>\n                                                                <select name="extra_product_fields[').concat(this.fieldIndex,'][conditional_rules][0][0][operator]" class="exprdawc_input exprdawc_conditional_operator">\n                                                                    <option value="field_is_empty">').concat(exprdawc_admin_meta_boxes.field_is_empty,'</option>\n                                                                    <option value="field_is_not_empty">').concat(exprdawc_admin_meta_boxes.field_is_not_empty,'</option>\n                                                                    <option value="equals">').concat(exprdawc_admin_meta_boxes.equals,'</option>\n                                                                    <option value="not_equals">').concat(exprdawc_admin_meta_boxes.notEquals,'</option>\n                                                                    <option value="greater_than">').concat(exprdawc_admin_meta_boxes.greaterThan,'</option>\n                                                                    <option value="less_than">').concat(exprdawc_admin_meta_boxes.lessThan,'</option>\n                                                                </select>\n                                                                <input type="text" name="extra_product_fields[').concat(this.fieldIndex,'][conditional_rules][0][0][value]" class="exprdawc_input exprdawc_conditional_value" placeholder="').concat(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">').concat(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_').concat(this.fieldIndex,'">').concat(exprdawc_admin_meta_boxes.rows,'</label>\n                                                <input type="number" id="exprdawc_long_text_rows_').concat(this.fieldIndex,'" class="exprdawc_input exprdawc_long_text_rows" name="extra_product_fields[').concat(this.fieldIndex,'][rows]" value="2" />\n                                            </td>\n                                            <td>\n                                                <label class="exprdawc_label" for="exprdawc_long_text_cols_').concat(this.fieldIndex,'">').concat(exprdawc_admin_meta_boxes.columns,'</label>\n                                                <input type="number" id="exprdawc_long_text_cols_').concat(this.fieldIndex,'" class="exprdawc_input exprdawc_long_text_cols" name="extra_product_fields[').concat(this.fieldIndex,'][cols]" value="5" />\n                                            </td>\n                                            <td>\n                                                <label class="exprdawc_label" for="exprdawc_long_text_default_').concat(this.fieldIndex,'">').concat(exprdawc_admin_meta_boxes.default_value,'</label>\n                                                <textarea id="exprdawc_long_text_default_').concat(this.fieldIndex,'" class="exprdawc_textarea" rows="3" cols="30" placeholder="').concat(exprdawc_admin_meta_boxes.enter_default_text,'" name="extra_product_fields[').concat(this.fieldIndex,'][default]"></textarea>\n                                            </td>\n                                        </tr>\n                                    </tbody>\n                                </table>\n\n                                \x3c!-- Text Option/Settings --\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_').concat(this.fieldIndex,'">').concat(exprdawc_admin_meta_boxes.min_length,'</label>\n                                                <input type="number" id="exprdawc_text_min_length_').concat(this.fieldIndex,'" class="exprdawc_input exprdawc_text_min_length" name="extra_product_fields[').concat(this.fieldIndex,'][minlength]" value="0" />\n                                            </td>\n                                            <td>\n                                                <label class="exprdawc_label" for="exprdawc_text_max_length_').concat(this.fieldIndex,'">').concat(exprdawc_admin_meta_boxes.max_length,'</label>\n                                                <input type="number" id="exprdawc_text_max_length_').concat(this.fieldIndex,'" class="exprdawc_input exprdawc_text_max_length" name="extra_product_fields[').concat(this.fieldIndex,'][maxlength]" value="255" />\n                                            </td>\n                                            <td>\n                                                <label class="exprdawc_label" for="exprdawc_text_default_').concat(this.fieldIndex,'">').concat(exprdawc_admin_meta_boxes.default_value,'</label>\n                                                <input type="text" id="exprdawc_text_default_').concat(this.fieldIndex,'" class="exprdawc_input exprdawc_text_default" placeholder="').concat(exprdawc_admin_meta_boxes.enter_default_text,'" name="extra_product_fields[').concat(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>').concat(exprdawc_admin_meta_boxes.option_label,"</th>\n                                            <th>").concat(exprdawc_admin_meta_boxes.option_value,"</th>\n                                            <th>").concat(exprdawc_admin_meta_boxes.default,"</th>\n                                            <th>").concat(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="4">\n                                                <button type="button" class="button add_option">').concat(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;">').concat(exprdawc_admin_meta_boxes.no_options,"</p>\n                            </td>\n                        </tr>\n                    </tbody>\n                </table>\n                </td>\n                </tr>\n                ")),this.noEntryContent(),e("#exprdawc_attribute_type_"+this.fieldIndex).trigger("change")}},{key:"removeCustomField",value:function(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.noEntryContent()),!1}},{key:"toggleOptions",value:function(t){this.setDirty();var n=e(t.currentTarget).closest("tr"),a=n.next(".exprdawc_options"),o=a.find(".exprdawc_options_table"),c=n.find(".exprdawc_placeholder");"radio"===e(t.currentTarget).val()||"checkbox"===e(t.currentTarget).val()||"select"===e(t.currentTarget).val()?(c.prop("disabled",!0),o.show()):(c.prop("disabled",!1),o.hide()),"long_text"===e(t.currentTarget).val()?a.find(".exprdawc_long_text_table").show():a.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()?a.find(".exprdawc_text_table").show():a.find(".exprdawc_text_table").hide()}},{key:"toggleOptionsTable",value:function(t){var n=e(t.currentTarget);n.closest("tr").next(".exprdawc_options").toggle(),n.toggleClass("dashicons-arrow-down dashicons-arrow-up")}},{key:"addOption",value:function(t){this.setDirty();var n=e(t.currentTarget).closest(".exprdawc_options_table"),a=n.find("tbody tr").length;n.find("tbody").append('\n                <tr>\n                    <td class="move"><i class="dashicons dashicons-move"></i></td>\n                    <td>\n                        <input type="text" name="extra_product_fields['.concat(this.fieldIndex,"][options][").concat(a,'][label]" placeholder="').concat(exprdawc_admin_meta_boxes.option_label_placeholder,'" />\n                    </td>\n                    <td>\n                        <input type="text" name="extra_product_fields[').concat(this.fieldIndex,"][options][").concat(a,'][value]" placeholder="').concat(exprdawc_admin_meta_boxes.option_value_placeholder,'" />\n                    </td>\n                    <td>\n                        <input type="radio" name="extra_product_fields[').concat(this.fieldIndex,'][default]" value="').concat(a,'" />\n                    </td>\n                    <td>\n                        <button type="button" class="button remove_option">').concat(exprdawc_admin_meta_boxes.remove,"</button>\n                    </td>\n                </tr>\n                ")),this.checkOptions(n.closest(".exprdawc_options"))}},{key:"removeOption",value:function(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}},{key:"checkOptions",value:function(e){var t=e.find(".exprdawc_options_table tbody"),n=e.find(".exprdawc_no_entry_message");0===t.find("tr").length?n.show():n.hide()}},{key:"exportContent",value:function(t){if(t.preventDefault(),console.log("exportContent"),console.log(this.isDirty),this.isDirty)alert("".concat(exprdawc_admin_meta_boxes.pleaseSaveBeforeExportMsg));else{var n=e("#exprdawc_export_string").val();n?navigator.clipboard.writeText(n).then((function(){alert("".concat(exprdawc_admin_meta_boxes.copySuccessMsg))}),(function(e){console.error("Could not copy text: ",e),alert("".concat(exprdawc_admin_meta_boxes.copyErrorMsg))})):alert("".concat(exprdawc_admin_meta_boxes.emptyExportMsg))}}},{key:"importContent",value:function(t){t.preventDefault();var n=prompt(exprdawc_admin_meta_boxes.enterExportString);if(n){if(!confirm(exprdawc_admin_meta_boxes.sureImportQuestion))return;var a=e("#post_ID").val();e.ajax({url:ajaxurl,method:"POST",data:{action:"exprdawc_import_custom_fields",product_id:a,export_string:n,security:exprdawc_admin_meta_boxes.edit_exprdawc_nonce},success:function(e){e.success?(alert(exprdawc_admin_meta_boxes.importSuccessMsg),location.reload()):alert(exprdawc_admin_meta_boxes.importErrorMsg)},error:function(){alert(exprdawc_admin_meta_boxes.importErrorMsg)}})}}},{key:"setDirty",value:function(){this.isDirty=!0,this.disableExportLink()}},{key:"disableExportLink",value:function(){this.isDirty&&e(".exprdawc-export").hide()}},{key:"noEntryContent",value:function(){var t=e("#exprdawc_field_body .exprdawc_attribute").length,n=e(".exprdawc_no_entry_message"),a=e("#exprdatawc_table_header"),o=e(".exprdawc-export");t>0?(n.hide(),a.show(),o.show()):(n.show(),a.hide(),o.hide())}},{key:"checkAutocompleteField",value:function(t){var n=e(t.currentTarget);if(n.is(":checked")){var a=e(".exprdawc_autocomplete_field").not(n).filter(":checked");if(a.length>0){if(!confirm(exprdawc_admin_meta_boxes.sureAnotherAutocompleCheckedQuestion))return void n.prop("checked",!1);a.prop("checked",!1)}}}},{key:"addRuleGroup",value:function(t){var n=e(t.currentTarget).closest(".exprdawc_conditional_logic_table").find(".exprdawc_conditional_rules"),a=n.find(".exprdawc_rule_group").length,o=e(t.currentTarget).closest(".exprdawc_fields_table").data("index"),c=this.getRuleGroupHtml(o,a);n.append(c)}},{key:"addRule",value:function(t){var n=e(t.currentTarget).closest(".exprdawc_rule_group"),a=n.index(),o=e(t.currentTarget).closest(".exprdawc_fields_table").data("index"),c=n.find(".exprdawc_rule").length,i=this.getRuleHtml(o,a,c);n.append(i)}},{key:"getRuleGroupHtml",value:function(e,t){return'\n            <div class="exprdawc_rule_group_container">\n                <h2>'.concat(exprdawc_admin_meta_boxes.or,'</h2>\n                <div class="exprdawc_rule_group">\n                    ').concat(this.getRuleHtml(e,t,0),"\n                </div>\n            </div>\n            ")}},{key:"getRuleHtml",value:function(e,t,n){return'\n            <div class="exprdawc_rule">\n                <select name="extra_product_fields['.concat(e,"][conditional_rules][").concat(t,"][").concat(n,'][field]" class="exprdawc_input exprdawc_conditional_field">\n                <option value="">').concat(exprdawc_admin_meta_boxes.selectFieldNone,"</option>\n                ").concat(this.getAllFieldsOptions(),'\n                </select>\n                <select name="extra_product_fields[').concat(e,"][conditional_rules][").concat(t,"][").concat(n,'][operator]" class="exprdawc_input exprdawc_conditional_operator">\n                    <option value="field_is_empty">').concat(exprdawc_admin_meta_boxes.field_is_empty,'</option>\n                    <option value="field_is_not_empty">').concat(exprdawc_admin_meta_boxes.field_is_not_empty,'</option>\n                    <option value="equals">').concat(exprdawc_admin_meta_boxes.equals,'</option>\n                    <option value="not_equals">').concat(exprdawc_admin_meta_boxes.notEquals,'</option>\n                    <option value="greater_than">').concat(exprdawc_admin_meta_boxes.greaterThan,'</option>\n                    <option value="less_than">').concat(exprdawc_admin_meta_boxes.lessThan,'</option>\n                </select>\n                <input type="text" name="extra_product_fields[').concat(e,"][conditional_rules][").concat(t,"][").concat(n,'][value]" class="exprdawc_input exprdawc_conditional_value" placeholder="').concat(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">+ ').concat(exprdawc_admin_meta_boxes.and,"</button>\n            </div>\n            ")}},{key:"toggleConditionalValueField",value:function(t){var n=e(t.currentTarget),a=n.closest(".exprdawc_rule").find(".exprdawc_conditional_value");"field_changed"===n.val()||"field_is_empty"===n.val()||"field_is_not_empty"===n.val()?a.hide():a.show()}},{key:"toggleConditionalValueFieldAll",value:function(){var t=this;e(".exprdawc_conditional_operator").each((function(e,n){t.toggleConditionalValueField({currentTarget:n})}))}},{key:"removeRule",value:function(t){if(confirm(exprdawc_admin_meta_boxes.confirm_delete_rule)){var n=e(t.currentTarget).closest(".exprdawc_rule_group_container");e(t.currentTarget).closest(".exprdawc_rule").remove(),0===n.find(".exprdawc_rule").length&&n.remove()}return!1}},{key:"getAllFieldsOptions",value:function(){var t="";return e("#exprdawc_field_body tr.exprdawc_attribute").each((function(){var n=e(this).find(".exprdawc_attribute_input_name input").val();t+='<option value="'.concat(n,'">').concat(n,"</option>")})),t}},{key:"toggleConditionalTable",value:function(t){var n=e(t.currentTarget),a=e(t.currentTarget).closest(".exprdawc_options").find(".exprdawc_conditional_logic_table");n.is(":checked")?a.show():a.hide()}}],a&&t(n.prototype,a),o&&t(n,o),Object.defineProperty(n,"prototype",{writable:!1}),n;var n,a,o}())}))},989:()=>{},99:()=>{}},n={};function a(e){var o=n[e];if(void 0!==o)return o.exports;var c=n[e]={exports:{}};return t[e](c,c.exports,a),c.exports}a.m=t,e=[],a.O=(t,n,o,c)=>{if(!n){var i=1/0;for(_=0;_<e.length;_++){for(var[n,o,c]=e[_],d=!0,r=0;r<n.length;r++)(!1&c||i>=c)&&Object.keys(a.O).every((e=>a.O[e](n[r])))?n.splice(r--,1):(d=!1,c<i&&(i=c));if(d){e.splice(_--,1);var l=o();void 0!==l&&(t=l)}}return t}c=c||0;for(var _=e.length;_>0&&e[_-1][2]>c;_--)e[_]=e[_-1];e[_]=[n,o,c]},a.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{var e={890:0,956:0,107:0};a.O.j=t=>0===e[t];var t=(t,n)=>{var o,c,[i,d,r]=n,l=0;if(i.some((t=>0!==e[t]))){for(o in d)a.o(d,o)&&(a.m[o]=d[o]);if(r)var _=r(a)}for(t&&t(n);l<i.length;l++)c=i[l],a.o(e,c)&&e[c]&&e[c][0](),e[c]=0;return a.O(_)},n=self.webpackChunkextra_product_data_for_woocommerce=self.webpackChunkextra_product_data_for_woocommerce||[];n.forEach(t.bind(null,0)),n.push=t.bind(null,n.push.bind(n))})(),a.O(void 0,[956,107],(()=>a(976))),a.O(void 0,[956,107],(()=>a(989)));var o=a.O(void 0,[956,107],(()=>a(99)));o=a.O(o)})();
  • extra-product-data-for-woocommerce/trunk/extra-product-data-for-woocommerce.php

    r3202511 r3203398  
    33Plugin Name: Extra Product Data for WooCommerce
    44Description: Adds customizable input fields per product in WooCommerce, allowing users to enter extra details on the frontend.
    5 Version: 1.4.0
     5Version: 1.4.1
    66Author: Triopsi
    77Author URI: https://triopsi.dev
  • extra-product-data-for-woocommerce/trunk/readme.txt

    r3202511 r3203398  
    55Tested up to: 6.7
    66Requires PHP: 8.2
    7 Stable tag: 1.4.0
     7Stable tag: 1.4.1
    88License: GPLv2 or later
    99License URI: https://www.gnu.org/licenses/gpl-2.0.html
     
    727212. Display summary on thank your email
    737313. Display summary on order email
     7414. Set Conditional Logic
    7475
    7576== Changelog ==
     
    8384= 1.1.3 =
    8485* Update for the WordPress Library
     86
     87= 1.2.0 =
     88* Add Edit Button in the order overview.
     89
     90= 1.3.0 =
     91* Add more field types checkboxes, radio and selects
     92* Edit option for admins in order overview
     93
     94= 1.4.0 =
     95* Radio and checkboxes don't have input-text CSS classes
     96* Select overflow
     97* Add autocomplete function
     98* Add Conditional Logic for fields
     99* Add Conditional rules in backend
  • extra-product-data-for-woocommerce/trunk/src/classes/class-exprdawc-product-page-backend.php

    r3202511 r3203398  
    195195                'conditionals'                         => esc_html__( 'Conditionals', 'extra-product-data-for-woocommerce' ),
    196196                'conditionals_description'             => esc_html__( 'Only show this field when conditional rules are true.', 'extra-product-data-for-woocommerce' ),
     197                'pleaseSaveBeforeExportMsg'            => esc_html__( 'Please save your changes before exporting.', 'extra-product-data-for-woocommerce' ),
    197198            )
    198199        );
     
    226227                    $autocomplete      = isset( $field['autocomplete'] ) ? sanitize_text_field( $field['autocomplete'] ) : '';
    227228                    $autofocus         = isset( $field['autofocus'] ) ? true : false;
    228                     $index          = isset( $field['index'] ) ? absint( $field['index'] ) : 0;
     229                    $index            = isset( $field['index'] ) ? absint( $field['index'] ) : 0;
    229230
    230231                    // Conditional Logic
     
    293294                        'autofocus'         => $autofocus,
    294295                        'conditional_rules' => $conditional_logic_rules,
    295                         'index'             => $index,
     296                        'index'             => $index,
    296297                    );
    297298                },
Note: See TracChangeset for help on using the changeset viewer.