Changeset 3203398
- Timestamp:
- 12/06/2024 06:44:42 AM (15 months ago)
- Location:
- extra-product-data-for-woocommerce
- Files:
-
- 2 added
- 4 deleted
- 9 edited
- 36 copied
-
tags/1.4.1 (copied) (copied from extra-product-data-for-woocommerce/trunk)
-
tags/1.4.1/CHANGELOG.md (copied) (copied from extra-product-data-for-woocommerce/trunk/CHANGELOG.md) (1 diff)
-
tags/1.4.1/LICENSE (copied) (copied from extra-product-data-for-woocommerce/trunk/LICENSE)
-
tags/1.4.1/assets (copied) (copied from extra-product-data-for-woocommerce/trunk/assets)
-
tags/1.4.1/assets/css/admin-backend.css (copied) (copied from extra-product-data-for-woocommerce/trunk/assets/css/admin-backend.css) (1 diff)
-
tags/1.4.1/assets/css/forms.css (copied) (copied from extra-product-data-for-woocommerce/trunk/assets/css/forms.css) (1 diff)
-
tags/1.4.1/assets/css/user-frontend.css (copied) (copied from extra-product-data-for-woocommerce/trunk/assets/css/user-frontend.css)
-
tags/1.4.1/assets/js/wc-conditional-rules-js.js (copied) (copied from extra-product-data-for-woocommerce/trunk/assets/js/wc-conditional-rules-js.js) (1 diff)
-
tags/1.4.1/assets/js/wc-meta-boxes-order.js (copied) (copied from extra-product-data-for-woocommerce/trunk/assets/js/wc-meta-boxes-order.js) (1 diff)
-
tags/1.4.1/assets/js/wc-meta-boxes-product.js (copied) (copied from extra-product-data-for-woocommerce/trunk/assets/js/wc-meta-boxes-product.js) (1 diff)
-
tags/1.4.1/assets/js/wc-meta-boxes-product.js.LICENSE.txt (added)
-
tags/1.4.1/extra-product-data-for-woocommerce.php (copied) (copied from extra-product-data-for-woocommerce/trunk/extra-product-data-for-woocommerce.php) (1 diff)
-
tags/1.4.1/index.html (copied) (copied from extra-product-data-for-woocommerce/trunk/index.html)
-
tags/1.4.1/readme.txt (copied) (copied from extra-product-data-for-woocommerce/trunk/readme.txt) (3 diffs)
-
tags/1.4.1/src (copied) (copied from extra-product-data-for-woocommerce/trunk/src)
-
tags/1.4.1/src/classes/class-exprdawc-admin-order.php (copied) (copied from extra-product-data-for-woocommerce/trunk/src/classes/class-exprdawc-admin-order.php)
-
tags/1.4.1/src/classes/class-exprdawc-helper.php (copied) (copied from extra-product-data-for-woocommerce/trunk/src/classes/class-exprdawc-helper.php)
-
tags/1.4.1/src/classes/class-exprdawc-main.php (copied) (copied from extra-product-data-for-woocommerce/trunk/src/classes/class-exprdawc-main.php)
-
tags/1.4.1/src/classes/class-exprdawc-overview-cart.php (copied) (copied from extra-product-data-for-woocommerce/trunk/src/classes/class-exprdawc-overview-cart.php)
-
tags/1.4.1/src/classes/class-exprdawc-overview-order.php (copied) (copied from extra-product-data-for-woocommerce/trunk/src/classes/class-exprdawc-overview-order.php)
-
tags/1.4.1/src/classes/class-exprdawc-product-page-backend.php (copied) (copied from extra-product-data-for-woocommerce/trunk/src/classes/class-exprdawc-product-page-backend.php) (3 diffs)
-
tags/1.4.1/src/classes/class-exprdawc-product-page-fronted.php (copied) (copied from extra-product-data-for-woocommerce/trunk/src/classes/class-exprdawc-product-page-fronted.php)
-
tags/1.4.1/src/functions.php (copied) (copied from extra-product-data-for-woocommerce/trunk/src/functions.php)
-
tags/1.4.1/src/lib/core.php (copied) (copied from extra-product-data-for-woocommerce/trunk/src/lib/core.php)
-
tags/1.4.1/src/templates/view/admin (copied) (copied from extra-product-data-for-woocommerce/trunk/src/templates/view/admin)
-
tags/1.4.1/src/templates/view/admin/html-admin-order-edit-form.php (deleted)
-
tags/1.4.1/src/templates/view/admin/html-admin-order-edit-overview-js.php (copied) (copied from extra-product-data-for-woocommerce/trunk/src/templates/view/admin/html-admin-order-edit-overview-js.php)
-
tags/1.4.1/src/templates/view/admin/html-admin-order-edit-overview.php (copied) (copied from extra-product-data-for-woocommerce/trunk/src/templates/view/admin/html-admin-order-edit-overview.php)
-
tags/1.4.1/src/templates/view/fields (copied) (copied from extra-product-data-for-woocommerce/trunk/src/templates/view/fields)
-
tags/1.4.1/src/templates/view/fields/checkbox.php (copied) (copied from extra-product-data-for-woocommerce/trunk/src/templates/view/fields/checkbox.php)
-
tags/1.4.1/src/templates/view/fields/custom-field-end.php (copied) (copied from extra-product-data-for-woocommerce/trunk/src/templates/view/fields/custom-field-end.php)
-
tags/1.4.1/src/templates/view/fields/custom-field-start.php (copied) (copied from extra-product-data-for-woocommerce/trunk/src/templates/view/fields/custom-field-start.php)
-
tags/1.4.1/src/templates/view/fields/date.php (deleted)
-
tags/1.4.1/src/templates/view/fields/email.php (deleted)
-
tags/1.4.1/src/templates/view/fields/number.php (deleted)
-
tags/1.4.1/src/templates/view/fields/radio.php (copied) (copied from extra-product-data-for-woocommerce/trunk/src/templates/view/fields/radio.php)
-
tags/1.4.1/src/templates/view/fields/select.php (copied) (copied from extra-product-data-for-woocommerce/trunk/src/templates/view/fields/select.php)
-
tags/1.4.1/src/templates/view/fields/text.php (copied) (copied from extra-product-data-for-woocommerce/trunk/src/templates/view/fields/text.php)
-
tags/1.4.1/src/templates/view/fields/textarea.php (copied) (copied from extra-product-data-for-woocommerce/trunk/src/templates/view/fields/textarea.php)
-
tags/1.4.1/src/templates/view/html-tab-extra-attributes-fields.php (copied) (copied from extra-product-data-for-woocommerce/trunk/src/templates/view/html-tab-extra-attributes-fields.php)
-
tags/1.4.1/src/templates/view/html-tab-extra-attributes.php (copied) (copied from extra-product-data-for-woocommerce/trunk/src/templates/view/html-tab-extra-attributes.php)
-
trunk/CHANGELOG.md (modified) (1 diff)
-
trunk/assets/css/admin-backend.css (modified) (1 diff)
-
trunk/assets/css/forms.css (modified) (1 diff)
-
trunk/assets/js/wc-conditional-rules-js.js (modified) (1 diff)
-
trunk/assets/js/wc-meta-boxes-order.js (modified) (1 diff)
-
trunk/assets/js/wc-meta-boxes-product.js (modified) (1 diff)
-
trunk/assets/js/wc-meta-boxes-product.js.LICENSE.txt (added)
-
trunk/extra-product-data-for-woocommerce.php (modified) (1 diff)
-
trunk/readme.txt (modified) (3 diffs)
-
trunk/src/classes/class-exprdawc-product-page-backend.php (modified) (3 diffs)
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 1 16 # [1.3.0](https://git.triopsi.dev/triopsi/extra-product-data-for-woocommerce/compare/v1.2.0...v1.3.0) (2024-11-30) 2 17 -
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 3 3 Plugin Name: Extra Product Data for WooCommerce 4 4 Description: Adds customizable input fields per product in WooCommerce, allowing users to enter extra details on the frontend. 5 Version: 1.4. 05 Version: 1.4.1 6 6 Author: Triopsi 7 7 Author URI: https://triopsi.dev -
extra-product-data-for-woocommerce/tags/1.4.1/readme.txt
r3202511 r3203398 5 5 Tested up to: 6.7 6 6 Requires PHP: 8.2 7 Stable tag: 1.4. 07 Stable tag: 1.4.1 8 8 License: GPLv2 or later 9 9 License URI: https://www.gnu.org/licenses/gpl-2.0.html … … 72 72 12. Display summary on thank your email 73 73 13. Display summary on order email 74 14. Set Conditional Logic 74 75 75 76 == Changelog == … … 83 84 = 1.1.3 = 84 85 * 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 195 195 'conditionals' => esc_html__( 'Conditionals', 'extra-product-data-for-woocommerce' ), 196 196 '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' ), 197 198 ) 198 199 ); … … 226 227 $autocomplete = isset( $field['autocomplete'] ) ? sanitize_text_field( $field['autocomplete'] ) : ''; 227 228 $autofocus = isset( $field['autofocus'] ) ? true : false; 228 $index = isset( $field['index'] ) ? absint( $field['index'] ) : 0;229 $index = isset( $field['index'] ) ? absint( $field['index'] ) : 0; 229 230 230 231 // Conditional Logic … … 293 294 'autofocus' => $autofocus, 294 295 'conditional_rules' => $conditional_logic_rules, 295 'index' => $index,296 'index' => $index, 296 297 ); 297 298 }, -
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 1 16 # [1.3.0](https://git.triopsi.dev/triopsi/extra-product-data-for-woocommerce/compare/v1.2.0...v1.3.0) (2024-11-30) 2 17 -
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 3 3 Plugin Name: Extra Product Data for WooCommerce 4 4 Description: Adds customizable input fields per product in WooCommerce, allowing users to enter extra details on the frontend. 5 Version: 1.4. 05 Version: 1.4.1 6 6 Author: Triopsi 7 7 Author URI: https://triopsi.dev -
extra-product-data-for-woocommerce/trunk/readme.txt
r3202511 r3203398 5 5 Tested up to: 6.7 6 6 Requires PHP: 8.2 7 Stable tag: 1.4. 07 Stable tag: 1.4.1 8 8 License: GPLv2 or later 9 9 License URI: https://www.gnu.org/licenses/gpl-2.0.html … … 72 72 12. Display summary on thank your email 73 73 13. Display summary on order email 74 14. Set Conditional Logic 74 75 75 76 == Changelog == … … 83 84 = 1.1.3 = 84 85 * 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 195 195 'conditionals' => esc_html__( 'Conditionals', 'extra-product-data-for-woocommerce' ), 196 196 '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' ), 197 198 ) 198 199 ); … … 226 227 $autocomplete = isset( $field['autocomplete'] ) ? sanitize_text_field( $field['autocomplete'] ) : ''; 227 228 $autofocus = isset( $field['autofocus'] ) ? true : false; 228 $index = isset( $field['index'] ) ? absint( $field['index'] ) : 0;229 $index = isset( $field['index'] ) ? absint( $field['index'] ) : 0; 229 230 230 231 // Conditional Logic … … 293 294 'autofocus' => $autofocus, 294 295 'conditional_rules' => $conditional_logic_rules, 295 'index' => $index,296 'index' => $index, 296 297 ); 297 298 },
Note: See TracChangeset
for help on using the changeset viewer.