Changeset 3469859
- Timestamp:
- 02/26/2026 04:41:48 AM (2 weeks ago)
- Location:
- city-zip-based-shipping-rate-for-woocommerce
- Files:
-
- 16 edited
-
tags/1.0.0/assets/admin.css (modified) (1 diff)
-
tags/1.0.0/assets/admin.js (modified) (4 diffs)
-
tags/1.0.0/assets/admin.min.css (modified) (1 diff)
-
tags/1.0.0/assets/admin.min.js (modified) (1 diff)
-
tags/1.0.0/assets/frontend.js (modified) (1 diff)
-
tags/1.0.0/inc/class-admin.php (modified) (2 diffs)
-
tags/1.0.0/inc/class-main.php (modified) (2 diffs)
-
tags/1.0.0/inc/class-shipping-method.php (modified) (1 diff)
-
trunk/assets/admin.css (modified) (1 diff)
-
trunk/assets/admin.js (modified) (4 diffs)
-
trunk/assets/admin.min.css (modified) (1 diff)
-
trunk/assets/admin.min.js (modified) (1 diff)
-
trunk/assets/frontend.js (modified) (1 diff)
-
trunk/inc/class-admin.php (modified) (2 diffs)
-
trunk/inc/class-main.php (modified) (2 diffs)
-
trunk/inc/class-shipping-method.php (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
city-zip-based-shipping-rate-for-woocommerce/tags/1.0.0/assets/admin.css
r3412305 r3469859 530 530 margin-top: 5px; 531 531 } 532 533 #city-zip-based-shipping-rate .need-to-add-data-warning { 534 color: #b50202; 535 font-weight: 500; 536 margin-bottom: 4px; 537 } -
city-zip-based-shipping-rate-for-woocommerce/tags/1.0.0/assets/admin.js
r3414978 r3469859 44 44 zip_input_value: '', 45 45 city_input_value: '', 46 need_to_add_zips: false, 47 need_to_add_cities: false, 46 48 ...city_zip_based_shipping_rate.line_item_models, 47 49 ...this.rateData … … 54 56 delete line_item_data.zip_input_value; 55 57 delete line_item_data.city_input_value; 58 delete line_item_data.need_to_add_zips; 59 delete line_item_data.need_to_add_cities; 56 60 return line_item_data; 57 61 } … … 83 87 84 88 this.$root.line_items[this.number] = current_rate_data; 89 }, 90 91 city_input_value(value) { 92 this.need_to_add_cities = value?.length > 0; 93 }, 94 95 zip_input_value(value) { 96 this.need_to_add_zips = value?.length > 0; 85 97 } 86 98 }, … … 91 103 if (e.key === 'Enter') { 92 104 e.preventDefault(); // use this if you don't want newline 93 94 105 self.add_cities(); 95 106 } -
city-zip-based-shipping-rate-for-woocommerce/tags/1.0.0/assets/admin.min.css
r3412305 r3469859 1 @-webkit-keyframes city_zip_rotate{from{-webkit-transform:rotate(0)}to{-webkit-transform:rotate(360deg)}}@-moz-keyframes city_zip_rotate{from{-moz-transform:rotate(0)}to{-moz-transform:rotate(360deg)}}@keyframes city_zip_rotate{from{transform:rotate(0)}to{transform:rotate(360deg)}}.city-zip-loading-indicator{--size:30px;position:relative;width:var(--size);margin-left:3px;align-self:center;aspect-ratio:1/1;display:inline-block}.city-zip-loading-indicator:after{content:"";width:100%;top:50%;left:50%;z-index:5;position:absolute;aspect-ratio:1/1;border-radius:100px;box-sizing:border-box;animation-duration:1s;border:2px solid #dbdbdb;margin-top:calc(var(--size)/ -2);margin-left:calc(var(--size)/ -2);border-top-color:#4c2dc1!important;animation-iteration-count:infinite;animation-timing-function:linear;animation-name:city_zip_rotate}#city-zip-based-shipping-rate{--primaryColor:#4c2dc1}#city-zip-based-shipping-rate *{box-sizing:border-box}#city-zip-based-shipping-rate.loading .city-zip-form-wrapper,#city-zip-based-shipping-rate:not(.loading) .root-app-loading{display:none}#city-zip-based-shipping-rate .city-zip-form-wrapper{max-width:750px}#city-zip-based-shipping-rate [type=date],#city-zip-based-shipping-rate [type=datetime-local],#city-zip-based-shipping-rate [type=number],#city-zip-based-shipping-rate [type=text],#city-zip-based-shipping-rate [type=time],#city-zip-based-shipping-rate select,#city-zip-based-shipping-rate textarea{border-color:#b5b5b5}#city-zip-based-shipping-rate [type=date],#city-zip-based-shipping-rate [type=number],#city-zip-based-shipping-rate [type=text],#city-zip-based-shipping-rate button,#city-zip-based-shipping-rate select{height:32px}#city-zip-based-shipping-rate [type=number]{width:80px;text-align:center;padding-inline-end:0}#city-zip-based-shipping-rate .form-input-heading{font-size:14px;font-weight:500;margin-bottom:6px}#city-zip-based-shipping-rate .full-width{width:100%;max-width:none}#city-zip-based-shipping-rate button{position:relative}#city-zip-based-shipping-rate button:has(.dashicons){display:inline-flex;align-items:center;column-gap:3px}#city-zip-based-shipping-rate .button.in-progress{color:transparent!important}#city-zip-based-shipping-rate .button.in-progress:after{content:"";width:20px;top:calc(50% - 10px);left:calc(50% - 10px);position:absolute;aspect-ratio:1/1;border-radius:100px;box-sizing:border-box;animation-duration:1s;border:2px solid #dbdbdb;margin-top:calc(var(--size)/ -2);margin-left:calc(var(--size)/ -2);border-top-color:var(--primaryColor)!important;animation-iteration-count:infinite;animation-timing-function:linear;animation-name:city_zip_rotate}#city-zip-based-shipping-rate .input-with-note{min-height:40px;position:relative;padding-inline-start:25px}#city-zip-based-shipping-rate .input-with-note input{position:absolute;left:0;top:7px}#city-zip-based-shipping-rate .input-with-note .field-note{margin-top:-1px}#city-zip-based-shipping-rate .field-note{color:#787878;margin-block:3px 0;font-style:italic;font-weight:400}#city-zip-based-shipping-rate .field-row,#city-zip-based-shipping-rate .field-row-column{gap:5px;display:flex}#city-zip-based-shipping-rate .field-row{flex-wrap:wrap}#city-zip-based-shipping-rate .field-row-column{flex-direction:column;row-gap:7px}#city-zip-based-shipping-rate .city-zip-form-insert-form{gap:3px;display:flex;flex-wrap:wrap;align-items:center}#city-zip-based-shipping-rate .city-zip-form-insert-form input{flex:1}#city-zip-based-shipping-rate .city-zip-form-insert-form .form-help-note{flex:0 0 100%;font-style:italic;font-size:90%;margin-top:0}#city-zip-based-shipping-rate .city-zip-form-insert-form .button .dashicons{width:16px;height:16px;font-size:16px}#city-zip-based-shipping-rate .cities-zip-tags{display:flex;row-gap:6px;column-gap:3px;margin-bottom:8px;flex-wrap:wrap}#city-zip-based-shipping-rate .cities-zip-tags>div{color:#fff;font-size:13px;padding:3px 12px;position:relative;border-radius:100px;display:inline-flex;align-items:center;background-color:#4c2dc1}#city-zip-based-shipping-rate .cities-zip-tags>div:has(.dashicons:hover){background-color:#b50202}#city-zip-based-shipping-rate .cities-zip-tags .dashicons{cursor:pointer;font-size:16px;line-height:20px;height:18px;width:18px;margin-top:-1px;margin-inline-end:-8px}#city-zip-based-shipping-rate .city-zip-form-row:has(+.city-zip-form-row){margin-bottom:20px}#city-zip-based-shipping-rate .shipping-rate-line-items{margin-bottom:20px}#city-zip-based-shipping-rate table.table-city-zip-settings{width:100%;border-collapse:collapse;border:1px solid #dbd5d5;background-color:#fff}#city-zip-based-shipping-rate table.table-city-zip-settings+table.table-city-zip-settings{margin-top:8px}#city-zip-based-shipping-rate table.table-city-zip-settings th.vmiddle{vertical-align:middle}#city-zip-based-shipping-rate table.table-city-zip-settings>tbody>tr>:is(td,th),#city-zip-based-shipping-rate table.table-city-zip-settings>thead>tr>:is(td,th){padding-block:10px;padding-inline:14px}#city-zip-based-shipping-rate table.table-city-zip-settings>tbody>tr>:is(td,th){border-block:1px solid #eee}#city-zip-based-shipping-rate table.table-city-zip-settings>tbody>tr:first-child>:is(td,th){border-top-color:#dbd5d5}#city-zip-based-shipping-rate table.table-city-zip-settings>tbody>tr:last-child>:is(td,th){padding-bottom:15px;border-bottom-color:#dbd5d5}#city-zip-based-shipping-rate table.table-city-zip-settings th{width:22%;font-size:13px;min-width:150px;text-align:left;font-weight:500;vertical-align:top;background-color:#fbfbfb;border-right:1px solid #e3e3e3}#city-zip-based-shipping-rate table.table-city-zip-settings .group-heading{display:flex;margin:0;align-items:center}#city-zip-based-shipping-rate table.table-city-zip-settings .group-heading-label{font-weight:500;margin-inline-end:5px}#city-zip-based-shipping-rate table.table-city-zip-settings .group-heading .handle-move{flex:1;align-self:stretch;margin-block:-10px;margin-inline-start:-14px;cursor:move}#city-zip-based-shipping-rate table.table-city-zip-settings .group-heading .handle-move.dashicons{height:auto;flex:0 0 40px;display:flex;align-items:center;aspect-ratio:1/1;justify-content:center}#city-zip-based-shipping-rate table.table-city-zip-settings .group-heading .shipping-rate-tools{display:flex;column-gap:5px;align-items:center;margin-inline-start:auto}#city-zip-based-shipping-rate table.table-city-zip-settings .shipping-rate-tools a{color:inherit;box-shadow:none!important}#city-zip-based-shipping-rate table.table-city-zip-settings.sortable-chosen thead tr{background-color:#eaebff}#city-zip-based-shipping-modal{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;opacity:0;pointer-events:none;visibility:hidden;transition:.2s all;z-index:99999999;background-color:rgba(0,0,0,.4);backdrop-filter:blur(3px)}#city-zip-based-shipping-modal.shown{opacity:1;pointer-events:all;visibility:visible}#city-zip-based-shipping-modal .modal-header .btn-modal-close{position:absolute;top:4px;right:4px;cursor:pointer;z-index:9999}#city-zip-based-shipping-modal .modal-content{width:90%;max-width:550px;border-radius:5px;position:relative;background-color:#fff;overflow:hidden;box-shadow:0 0 40px 15px rgba(0,0,0,.3)}#city-zip-based-shipping-modal .modal-footer,#city-zip-based-shipping-modal .modal-header{display:flex;column-gap:5px;align-items:center;padding:15px 20px}#city-zip-based-shipping-modal .modal-header{background-color:#fbfbfb;border-bottom:1px solid #eeeff1}#city-zip-based-shipping-modal .modal-footer{padding-block:5px 25px}#city-zip-based-shipping-modal .modal-header h2{margin:0;font-size:20px}#city-zip-based-shipping-modal .modal-body{padding:20px;font-size:14px;line-height:1.5}#city-zip-based-shipping-modal .modal-body h3{margin-block:0 10px}#city-zip-based-shipping-modal .modal-body p{font-size:inherit;line-height:inherit;margin-top:0}#city-zip-based-shipping-modal .modal-footer .button{font-weight:500;color:#505763;padding-block:3px;position:relative;min-width:120px;text-align:center;border-color:#e3e5e8;background-color:#fff;transition:all 150ms}#city-zip-based-shipping-modal .modal-footer .button.button-primary{color:#fff;border-color:#4c2dc1;background-color:#4c2dc1}#city-zip-based-shipping-modal .modal-footer .button.button-primary:hover{background-color:#643cf1}#city-zip-based-shipping-modal:not([data-modal=bulk-import]) .bulk-import,#city-zip-based-shipping-modal:not([data-modal=max-shipping]) .max-shipping-content,#city-zip-based-shipping-modal:not([data-modal=max-zip-codes]) .max-zip-codes-content{display:none!important}#city-zip-based-shipping-rate .btn-add-line-item{color:#4c2dc1;display:block;width:100%;text-align:center;font-size:18px;line-height:60px;font-weight:500;border-style:dashed;margin-top:20px;box-shadow:none!important;border-color:#4c2dc1}#city-zip-based-shipping-rate .bulk-import-section-guide{font-size:14px;line-height:1.6;text-align:center;margin-bottom:20px}#city-zip-based-shipping-rate .separator-or{position:relative;display:flex;margin-block:15px;align-items:center;justify-content:center}#city-zip-based-shipping-rate .separator-or::after{position:relative;content:attr(data-text);padding-inline:6px;background-color:#f0f0f1;z-index:4}#city-zip-based-shipping-rate .separator-or::before{content:"";height:1px;inset-inline:0;position:absolute;background-color:#ccc}#city-zip-based-shipping-rate .bulk-import-upload-section{margin:5px;color:#000;display:flex;padding:10px 30px;font-weight:500;align-items:center;flex-direction:column;justify-content:center;background-color:#fff;outline-offset:5px;cursor:pointer;outline:1px dashed var(--primaryColor)}#city-zip-based-shipping-rate .bulk-import-upload-section input{display:none}#city-zip-based-shipping-rate .bulk-import-upload-section .icon-upload{font-size:40px;height:40px;width:40px}#city-zip-based-shipping-rate .bulk-import-upload-section:not([data-status=importing]) .bulk-data-importing-count{display:none}#city-zip-based-shipping-rate .bulk-import-error{color:#b50202;text-align:center;margin-top:15px;padding:5px 15px}#city-zip-based-shipping-rate .export-error{color:#b50202;margin-top:5px} 1 @-webkit-keyframes city_zip_rotate{from{-webkit-transform:rotate(0)}to{-webkit-transform:rotate(360deg)}}@-moz-keyframes city_zip_rotate{from{-moz-transform:rotate(0)}to{-moz-transform:rotate(360deg)}}@keyframes city_zip_rotate{from{transform:rotate(0)}to{transform:rotate(360deg)}}.city-zip-loading-indicator{--size:30px;position:relative;width:var(--size);margin-left:3px;align-self:center;aspect-ratio:1/1;display:inline-block}.city-zip-loading-indicator:after{content:"";width:100%;top:50%;left:50%;z-index:5;position:absolute;aspect-ratio:1/1;border-radius:100px;box-sizing:border-box;animation-duration:1s;border:2px solid #dbdbdb;margin-top:calc(var(--size)/ -2);margin-left:calc(var(--size)/ -2);border-top-color:#4c2dc1!important;animation-iteration-count:infinite;animation-timing-function:linear;animation-name:city_zip_rotate}#city-zip-based-shipping-rate{--primaryColor:#4c2dc1}#city-zip-based-shipping-rate *{box-sizing:border-box}#city-zip-based-shipping-rate.loading .city-zip-form-wrapper,#city-zip-based-shipping-rate:not(.loading) .root-app-loading{display:none}#city-zip-based-shipping-rate .city-zip-form-wrapper{max-width:750px}#city-zip-based-shipping-rate [type=date],#city-zip-based-shipping-rate [type=datetime-local],#city-zip-based-shipping-rate [type=number],#city-zip-based-shipping-rate [type=text],#city-zip-based-shipping-rate [type=time],#city-zip-based-shipping-rate select,#city-zip-based-shipping-rate textarea{border-color:#b5b5b5}#city-zip-based-shipping-rate [type=date],#city-zip-based-shipping-rate [type=number],#city-zip-based-shipping-rate [type=text],#city-zip-based-shipping-rate button,#city-zip-based-shipping-rate select{height:32px}#city-zip-based-shipping-rate [type=number]{width:80px;text-align:center;padding-inline-end:0}#city-zip-based-shipping-rate .form-input-heading{font-size:14px;font-weight:500;margin-bottom:6px}#city-zip-based-shipping-rate .full-width{width:100%;max-width:none}#city-zip-based-shipping-rate button{position:relative}#city-zip-based-shipping-rate button:has(.dashicons){display:inline-flex;align-items:center;column-gap:3px}#city-zip-based-shipping-rate .button.in-progress{color:transparent!important}#city-zip-based-shipping-rate .button.in-progress:after{content:"";width:20px;top:calc(50% - 10px);left:calc(50% - 10px);position:absolute;aspect-ratio:1/1;border-radius:100px;box-sizing:border-box;animation-duration:1s;border:2px solid #dbdbdb;margin-top:calc(var(--size)/ -2);margin-left:calc(var(--size)/ -2);border-top-color:var(--primaryColor)!important;animation-iteration-count:infinite;animation-timing-function:linear;animation-name:city_zip_rotate}#city-zip-based-shipping-rate .input-with-note{min-height:40px;position:relative;padding-inline-start:25px}#city-zip-based-shipping-rate .input-with-note input{position:absolute;left:0;top:7px}#city-zip-based-shipping-rate .input-with-note .field-note{margin-top:-1px}#city-zip-based-shipping-rate .field-note{color:#787878;margin-block:3px 0;font-style:italic;font-weight:400}#city-zip-based-shipping-rate .field-row,#city-zip-based-shipping-rate .field-row-column{gap:5px;display:flex}#city-zip-based-shipping-rate .field-row{flex-wrap:wrap}#city-zip-based-shipping-rate .field-row-column{flex-direction:column;row-gap:7px}#city-zip-based-shipping-rate .city-zip-form-insert-form{gap:3px;display:flex;flex-wrap:wrap;align-items:center}#city-zip-based-shipping-rate .city-zip-form-insert-form input{flex:1}#city-zip-based-shipping-rate .city-zip-form-insert-form .form-help-note{flex:0 0 100%;font-style:italic;font-size:90%;margin-top:0}#city-zip-based-shipping-rate .city-zip-form-insert-form .button .dashicons{width:16px;height:16px;font-size:16px}#city-zip-based-shipping-rate .cities-zip-tags{display:flex;row-gap:6px;column-gap:3px;margin-bottom:8px;flex-wrap:wrap}#city-zip-based-shipping-rate .cities-zip-tags>div{color:#fff;font-size:13px;padding:3px 12px;position:relative;border-radius:100px;display:inline-flex;align-items:center;background-color:#4c2dc1}#city-zip-based-shipping-rate .cities-zip-tags>div:has(.dashicons:hover){background-color:#b50202}#city-zip-based-shipping-rate .cities-zip-tags .dashicons{cursor:pointer;font-size:16px;line-height:20px;height:18px;width:18px;margin-top:-1px;margin-inline-end:-8px}#city-zip-based-shipping-rate .city-zip-form-row:has(+.city-zip-form-row){margin-bottom:20px}#city-zip-based-shipping-rate .shipping-rate-line-items{margin-bottom:20px}#city-zip-based-shipping-rate table.table-city-zip-settings{width:100%;border-collapse:collapse;border:1px solid #dbd5d5;background-color:#fff}#city-zip-based-shipping-rate table.table-city-zip-settings+table.table-city-zip-settings{margin-top:8px}#city-zip-based-shipping-rate table.table-city-zip-settings th.vmiddle{vertical-align:middle}#city-zip-based-shipping-rate table.table-city-zip-settings>tbody>tr>:is(td,th),#city-zip-based-shipping-rate table.table-city-zip-settings>thead>tr>:is(td,th){padding-block:10px;padding-inline:14px}#city-zip-based-shipping-rate table.table-city-zip-settings>tbody>tr>:is(td,th){border-block:1px solid #eee}#city-zip-based-shipping-rate table.table-city-zip-settings>tbody>tr:first-child>:is(td,th){border-top-color:#dbd5d5}#city-zip-based-shipping-rate table.table-city-zip-settings>tbody>tr:last-child>:is(td,th){padding-bottom:15px;border-bottom-color:#dbd5d5}#city-zip-based-shipping-rate table.table-city-zip-settings th{width:22%;font-size:13px;min-width:150px;text-align:left;font-weight:500;vertical-align:top;background-color:#fbfbfb;border-right:1px solid #e3e3e3}#city-zip-based-shipping-rate table.table-city-zip-settings .group-heading{display:flex;margin:0;align-items:center}#city-zip-based-shipping-rate table.table-city-zip-settings .group-heading-label{font-weight:500;margin-inline-end:5px}#city-zip-based-shipping-rate table.table-city-zip-settings .group-heading .handle-move{flex:1;align-self:stretch;margin-block:-10px;margin-inline-start:-14px;cursor:move}#city-zip-based-shipping-rate table.table-city-zip-settings .group-heading .handle-move.dashicons{height:auto;flex:0 0 40px;display:flex;align-items:center;aspect-ratio:1/1;justify-content:center}#city-zip-based-shipping-rate table.table-city-zip-settings .group-heading .shipping-rate-tools{display:flex;column-gap:5px;align-items:center;margin-inline-start:auto}#city-zip-based-shipping-rate table.table-city-zip-settings .shipping-rate-tools a{color:inherit;box-shadow:none!important}#city-zip-based-shipping-rate table.table-city-zip-settings.sortable-chosen thead tr{background-color:#eaebff}#city-zip-based-shipping-modal{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;opacity:0;pointer-events:none;visibility:hidden;transition:.2s all;z-index:99999999;background-color:rgba(0,0,0,.4);backdrop-filter:blur(3px)}#city-zip-based-shipping-modal.shown{opacity:1;pointer-events:all;visibility:visible}#city-zip-based-shipping-modal .modal-header .btn-modal-close{position:absolute;top:4px;right:4px;cursor:pointer;z-index:9999}#city-zip-based-shipping-modal .modal-content{width:90%;max-width:550px;border-radius:5px;position:relative;background-color:#fff;overflow:hidden;box-shadow:0 0 40px 15px rgba(0,0,0,.3)}#city-zip-based-shipping-modal .modal-footer,#city-zip-based-shipping-modal .modal-header{display:flex;column-gap:5px;align-items:center;padding:15px 20px}#city-zip-based-shipping-modal .modal-header{background-color:#fbfbfb;border-bottom:1px solid #eeeff1}#city-zip-based-shipping-modal .modal-footer{padding-block:5px 25px}#city-zip-based-shipping-modal .modal-header h2{margin:0;font-size:20px}#city-zip-based-shipping-modal .modal-body{padding:20px;font-size:14px;line-height:1.5}#city-zip-based-shipping-modal .modal-body h3{margin-block:0 10px}#city-zip-based-shipping-modal .modal-body p{font-size:inherit;line-height:inherit;margin-top:0}#city-zip-based-shipping-modal .modal-footer .button{font-weight:500;color:#505763;padding-block:3px;position:relative;min-width:120px;text-align:center;border-color:#e3e5e8;background-color:#fff;transition:all 150ms}#city-zip-based-shipping-modal .modal-footer .button.button-primary{color:#fff;border-color:#4c2dc1;background-color:#4c2dc1}#city-zip-based-shipping-modal .modal-footer .button.button-primary:hover{background-color:#643cf1}#city-zip-based-shipping-modal:not([data-modal=bulk-import]) .bulk-import,#city-zip-based-shipping-modal:not([data-modal=max-shipping]) .max-shipping-content,#city-zip-based-shipping-modal:not([data-modal=max-zip-codes]) .max-zip-codes-content{display:none!important}#city-zip-based-shipping-rate .btn-add-line-item{color:#4c2dc1;display:block;width:100%;text-align:center;font-size:18px;line-height:60px;font-weight:500;border-style:dashed;margin-top:20px;box-shadow:none!important;border-color:#4c2dc1}#city-zip-based-shipping-rate .bulk-import-section-guide{font-size:14px;line-height:1.6;text-align:center;margin-bottom:20px}#city-zip-based-shipping-rate .separator-or{position:relative;display:flex;margin-block:15px;align-items:center;justify-content:center}#city-zip-based-shipping-rate .separator-or::after{position:relative;content:attr(data-text);padding-inline:6px;background-color:#f0f0f1;z-index:4}#city-zip-based-shipping-rate .separator-or::before{content:"";height:1px;inset-inline:0;position:absolute;background-color:#ccc}#city-zip-based-shipping-rate .bulk-import-upload-section{margin:5px;color:#000;display:flex;padding:10px 30px;font-weight:500;align-items:center;flex-direction:column;justify-content:center;background-color:#fff;outline-offset:5px;cursor:pointer;outline:1px dashed var(--primaryColor)}#city-zip-based-shipping-rate .bulk-import-upload-section input{display:none}#city-zip-based-shipping-rate .bulk-import-upload-section .icon-upload{font-size:40px;height:40px;width:40px}#city-zip-based-shipping-rate .bulk-import-upload-section:not([data-status=importing]) .bulk-data-importing-count{display:none}#city-zip-based-shipping-rate .bulk-import-error{color:#b50202;text-align:center;margin-top:15px;padding:5px 15px}#city-zip-based-shipping-rate .export-error{color:#b50202;margin-top:5px}#city-zip-based-shipping-rate .need-to-add-data-warning{color:#b50202;font-weight:500;margin-bottom:4px} -
city-zip-based-shipping-rate-for-woocommerce/tags/1.0.0/assets/admin.min.js
r3414978 r3469859 1 ( t=>{let{__:a,sprintf:p}=wp.i18n,s=wp.hooks.applyFilters("city_zip_based_shipping_rate.has_pro",!1);var i={template:"#city-zip-based-shipping-rate-line-item",props:{rateData:{type:Object,default:{}},number:{type:Number,default:0},rateType:{default:"",type:String}},data(){return{id:(i=66,t=(new Date).getTime()+i,a="undefined"!=typeof performance&&performance.now&&1e3*performance.now()||0,"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(i){var e=16*Math.random();return 0<t?(e=(t+e)%16|0,t=Math.floor(t/16)):(e=(a+e)%16|0,a=Math.floor(a/16)),("x"===i?e:3&e|8).toString(16)})),zip_input_value:"",city_input_value:"",...city_zip_based_shipping_rate.line_item_models,...this.rateData};var i,t,a},computed:{shipping_rate_data(){var i=JSON.parse(JSON.stringify(this.$data));return delete i.zip_input_value,delete i.city_input_value,i}},created(){if("default_cost"==this.rateType)return this.$root.default_shipping_cost=this.shipping_rate_data;this.$root.line_items[this.number]=this.shipping_rate_data},watch:{rateData:{handler(i){for(var e in i)this[e]=i[e]},once:!0},shipping_rate_data(i){if("default_cost"==this.rateType)return this.$root.default_shipping_cost=i;this.$root.line_items[this.number]=i}},mounted(){let e=this;t(this.$refs.city_input).on("keydown",function(i){"Enter"===i.key&&(i.preventDefault(),e.add_cities())}),t(this.$refs.zip_code_input).on("keydown",function(i){"Enter"===i.key&&(i.preventDefault(),e.add_zipcode())})},methods:{delete_item(){confirm(a("Do you want to delete this rate?","city-zip-based-shipping-rate-for-woocommerce"))&&this.$root.line_items.splice(this.number,1)},add_cities(){if(this.city_input_value){var i=this.$root.number_of_city_added,e=this.city_input_value.split(",").map(i=>i.trim());if(10<i+e.length&&!s)return this.$root.modal="max-shipping";e.forEach(i=>{i.length&&!this.cities.includes(i)&&this.cities.push(i)}),this.city_input_value=""}},remove_city(i){var e=p(a('Do you want to delete "%s" city?',"city-zip-based-shipping-rate-for-woocommerce"),this.cities[i]);confirm(e)&&this.cities.splice(i,1)},add_zipcode(){if(this.zip_input_value){var i=this.zip_input_value.split(",").map(i=>i.trim());if(10<this.zip_codes.length+i.length&&!s)return this.$root.modal="max-zip-codes";i.forEach(i=>{i.length&&!this.zip_codes.includes(i)&&this.zip_codes.push(i)}),this.zip_input_value=""}},remove_zip_code(i){var e=p(a('Do you want to delete "%s" zip/postal code?',"city-zip-based-shipping-rate-for-woocommerce"),this.zip_codes[i]);confirm(e)&&this.zip_codes.splice(i,1)}}};let e=wp.hooks.applyFilters("city_zip_based_shipping_rate.models",{}),n=wp.hooks.applyFilters("city_zip_based_shipping_rate.helper_model",{modal:null});if(i={components:{"shipping-rate-line-item":i},data(){return{line_items:[],default_shipping_cost:{},city_zip_no_match:"hide_shipping_rate",...e,...n}},computed:{get_zip_based_settings_data(){var i,e=JSON.parse(JSON.stringify(this.$data));for(i in n)delete e[i];return JSON.stringify(e)},number_of_city_added(){let e=[];return this.line_items.forEach(i=>e=e.concat(i.cities)),e.length}},watch:{modal(i){t("#city-zip-based-shipping-modal").attr("data-modal",i),i?.length?t("#city-zip-based-shipping-modal").addClass("shown"):t("#city-zip-based-shipping-modal").removeClass("shown")}},mounted(){let e=this;t(this.$el.parentElement).removeClass("loading"),t("#mainform .woocommerce-save-button").prop("disabled",!1),t(document).keyup(function(i){"Escape"===i.key&&(e.modal=null)}),wp.hooks.doAction("city_zip_based_shipping_rate.mounted",this)},methods:{...wp.hooks.applyFilters("city_zip_based_shipping_rate.methods",{}),add_line_item(){this.line_items.push({})},on_order_change(i){var e=this.line_items.splice(i.oldIndex,1)[0];this.line_items.splice(i.newIndex,0,e)}}},t("#city-zip-based-shipping-rate").length){window.City_Zip_Based_Shipping_Rate_App=Vue.createApp(i).use(sortablejs).mount("#city-zip-based-shipping-rate");var o=t("#city-zip-based-shipping-rate").data("shipping-rates");if("object"==typeof o)for(var r in o)City_Zip_Based_Shipping_Rate_App[r]=o[r]}t("#city-zip-based-shipping-modal").on("click",".btn-modal-close",function(i){i.preventDefault(),window.City_Zip_Based_Shipping_Rate_App.modal=null})})(jQuery);1 (i=>{let{__:a,sprintf:s}=wp.i18n,p=wp.hooks.applyFilters("city_zip_based_shipping_rate.has_pro",!1);var e={template:"#city-zip-based-shipping-rate-line-item",props:{rateData:{type:Object,default:{}},number:{type:Number,default:0},rateType:{default:"",type:String}},data(){return{id:(e=66,i=(new Date).getTime()+e,a="undefined"!=typeof performance&&performance.now&&1e3*performance.now()||0,"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(e){var t=16*Math.random();return 0<i?(t=(i+t)%16|0,i=Math.floor(i/16)):(t=(a+t)%16|0,a=Math.floor(a/16)),("x"===e?t:3&t|8).toString(16)})),zip_input_value:"",city_input_value:"",need_to_add_zips:!1,need_to_add_cities:!1,...city_zip_based_shipping_rate.line_item_models,...this.rateData};var e,i,a},computed:{shipping_rate_data(){var e=JSON.parse(JSON.stringify(this.$data));return delete e.zip_input_value,delete e.city_input_value,delete e.need_to_add_zips,delete e.need_to_add_cities,e}},created(){if("default_cost"==this.rateType)return this.$root.default_shipping_cost=this.shipping_rate_data;this.$root.line_items[this.number]=this.shipping_rate_data},watch:{rateData:{handler(e){for(var t in e)this[t]=e[t]},once:!0},shipping_rate_data(e){if("default_cost"==this.rateType)return this.$root.default_shipping_cost=e;this.$root.line_items[this.number]=e},city_input_value(e){this.need_to_add_cities=0<e?.length},zip_input_value(e){this.need_to_add_zips=0<e?.length}},mounted(){let t=this;i(this.$refs.city_input).on("keydown",function(e){"Enter"===e.key&&(e.preventDefault(),t.add_cities())}),i(this.$refs.zip_code_input).on("keydown",function(e){"Enter"===e.key&&(e.preventDefault(),t.add_zipcode())})},methods:{delete_item(){confirm(a("Do you want to delete this rate?","city-zip-based-shipping-rate-for-woocommerce"))&&this.$root.line_items.splice(this.number,1)},add_cities(){if(this.city_input_value){var e=this.$root.number_of_city_added,t=this.city_input_value.split(",").map(e=>e.trim());if(10<e+t.length&&!p)return this.$root.modal="max-shipping";t.forEach(e=>{e.length&&!this.cities.includes(e)&&this.cities.push(e)}),this.city_input_value=""}},remove_city(e){var t=s(a('Do you want to delete "%s" city?',"city-zip-based-shipping-rate-for-woocommerce"),this.cities[e]);confirm(t)&&this.cities.splice(e,1)},add_zipcode(){if(this.zip_input_value){var e=this.zip_input_value.split(",").map(e=>e.trim());if(10<this.zip_codes.length+e.length&&!p)return this.$root.modal="max-zip-codes";e.forEach(e=>{e.length&&!this.zip_codes.includes(e)&&this.zip_codes.push(e)}),this.zip_input_value=""}},remove_zip_code(e){var t=s(a('Do you want to delete "%s" zip/postal code?',"city-zip-based-shipping-rate-for-woocommerce"),this.zip_codes[e]);confirm(t)&&this.zip_codes.splice(e,1)}}};let t=wp.hooks.applyFilters("city_zip_based_shipping_rate.models",{}),n=wp.hooks.applyFilters("city_zip_based_shipping_rate.helper_model",{modal:null});if(e={components:{"shipping-rate-line-item":e},data(){return{line_items:[],default_shipping_cost:{},city_zip_no_match:"hide_shipping_rate",...t,...n}},computed:{get_zip_based_settings_data(){var e,t=JSON.parse(JSON.stringify(this.$data));for(e in n)delete t[e];return JSON.stringify(t)},number_of_city_added(){let t=[];return this.line_items.forEach(e=>t=t.concat(e.cities)),t.length}},watch:{modal(e){i("#city-zip-based-shipping-modal").attr("data-modal",e),e?.length?i("#city-zip-based-shipping-modal").addClass("shown"):i("#city-zip-based-shipping-modal").removeClass("shown")}},mounted(){let t=this;i(this.$el.parentElement).removeClass("loading"),i("#mainform .woocommerce-save-button").prop("disabled",!1),i(document).keyup(function(e){"Escape"===e.key&&(t.modal=null)}),wp.hooks.doAction("city_zip_based_shipping_rate.mounted",this)},methods:{...wp.hooks.applyFilters("city_zip_based_shipping_rate.methods",{}),add_line_item(){this.line_items.push({})},on_order_change(e){var t=this.line_items.splice(e.oldIndex,1)[0];this.line_items.splice(e.newIndex,0,t)}}},i("#city-zip-based-shipping-rate").length){window.City_Zip_Based_Shipping_Rate_App=Vue.createApp(e).use(sortablejs).mount("#city-zip-based-shipping-rate");var o=i("#city-zip-based-shipping-rate").data("shipping-rates");if("object"==typeof o)for(var _ in o)City_Zip_Based_Shipping_Rate_App[_]=o[_]}i("#city-zip-based-shipping-modal").on("click",".btn-modal-close",function(e){e.preventDefault(),window.City_Zip_Based_Shipping_Rate_App.modal=null})})(jQuery); -
city-zip-based-shipping-rate-for-woocommerce/tags/1.0.0/assets/frontend.js
r3412819 r3469859 11 11 } 12 12 }); 13 14 // const calculator_field = Array( 15 // '[name="calc_shipping_country"]', 16 // '[name="calc_shipping_state"]', 17 // '[name="calc_shipping_city"]', 18 // '[name="calc_shipping_postcode"]', 19 // ); 20 21 // let calucating_shipping_rate = false; 22 // let shipping_calculator_prev_data = {} 23 24 // const process_checkout_button = $(document.body).find('.wc-proceed-to-checkout .checkout-button') 25 26 // $(document.body).find('.woocommerce-shipping-calculator').on('change', calculator_field.join(','), function () { 27 // if (calucating_shipping_rate) { 28 // return; 29 // } 30 31 // const current_form = $(this).closest('form'); 32 33 // const formData = new FormData(current_form.get(0)); 34 // formData.append('nonce', city_zip_based_shipping_rate.shipping_calculator_nonce); 35 // formData.append('action', 'city_zip_based_shipping_rate/validate_shipping_calculator'); 36 37 // const shipping_calculator_new_data = {} 38 // for (const [key, value] of formData) { 39 // shipping_calculator_new_data[key] = value; 40 // } 41 42 // if (JSON.stringify(shipping_calculator_new_data) == JSON.stringify(shipping_calculator_prev_data)) { 43 // return; 44 // } 45 46 // calucating_shipping_rate = true; 47 // shipping_calculator_prev_data = { ...shipping_calculator_new_data }; 48 49 // process_checkout_button.addClass('disabled').off('click'); 50 // $(document.body).find('.city-zip-based-shipping-rate-error'); 51 // current_form.find('[name="calc_shipping"]').prop('disabled', true); 52 53 // fetch(city_zip_based_shipping_rate.ajax_url, { 54 // method: 'POST', 55 // body: formData 56 // }).then(async (response) => { 57 // const result = await response.json(); 58 // if (typeof result !== 'object' || !response.ok) { 59 // throw new Error('Something went wrong.'); 60 // } 61 62 // if (true !== result.data.missed || result.data?.no_method) { 63 // return process_checkout_button.removeClass('disabled') 64 // } 65 66 // //console.log(result) 67 68 // if (result.data?.city_missed) { 69 // $(`<div class="city-zip-based-shipping-rate-error">${result.data.city_missed}</div>`).insertAfter($('#calc_shipping_city_field')) 70 // $(`<div class="city-zip-based-shipping-rate-error">${result.data.city_missed}</div>`).insertBefore($('form.woocommerce-shipping-calculator')) 71 // } 72 73 // if (result.data?.zip_missed) { 74 // $(`<div class="city-zip-based-shipping-rate-error">${result.data.zip_missed}</div>`).insertAfter($('#calc_shipping_postcode_field')) 75 // $(`<div class="city-zip-based-shipping-rate-error">${result.data.zip_missed}</div>`).insertBefore($('form.woocommerce-shipping-calculator')) 76 // } 77 78 // }).catch((e) => { 79 // //console.log(e.message) 80 // process_checkout_button.removeClass('disabled') 81 // }).finally(() => { 82 // calucating_shipping_rate = false; 83 // current_form.find('[name="calc_shipping"]').prop('disabled', false); 84 // }); 85 86 // process_checkout_button.on('click', function (e) { 87 // if ($(this).has('.disabled')) { 88 // e.preventDefault(); 89 // } 90 // }) 91 92 // }) 93 94 13 95 })(jQuery) -
city-zip-based-shipping-rate-for-woocommerce/tags/1.0.0/inc/class-admin.php
r3412305 r3469859 176 176 <?php echo esc_html_e('Add', 'city-zip-based-shipping-rate-for-woocommerce') ?> 177 177 </button> 178 178 <div class="need-to-add-data-warning" v-if="need_to_add_cities"><?php esc_html_e('Please click the "+ Add" button to add cities to the list above.', 'city-zip-based-shipping-rate-for-woocommerce') ?></div> 179 179 <div class="form-help-note"><?php esc_html_e('Enter a city and press Enter. For multiple cities, separate each one with a comma.', 'city-zip-based-shipping-rate-for-woocommerce') ?></div> 180 180 </div> … … 199 199 </button> 200 200 201 <div class="need-to-add-data-warning" v-if="need_to_add_zips"><?php esc_html_e('Please click the "+ Add" button to add ZIPs to the list above.', 'city-zip-based-shipping-rate-for-woocommerce') ?></div> 201 202 <div class="form-help-note"><?php esc_html_e('Enter a zip/postal code and press Enter. For multiple codes, separate each one with a comma.', 'city-zip-based-shipping-rate-for-woocommerce') ?></div> 202 203 </div> -
city-zip-based-shipping-rate-for-woocommerce/tags/1.0.0/inc/class-main.php
r3414978 r3469859 57 57 add_filter('plugin_action_links', array($this, 'add_plugin_links'), 10, 2); 58 58 add_filter('woocommerce_shipping_methods', array($this, 'add_shipping_method')); 59 60 add_action('wp_ajax_city_zip_based_shipping_rate/validate_shipping_calculator', array($this, 'validate_shipping_calculator')); 61 add_action('wp_ajax_nopriv_city_zip_based_shipping_rate/validate_shipping_calculator', array($this, 'validate_shipping_calculator')); 59 62 } 60 63 … … 107 110 $city_zip_based_shipping_rate = apply_filters('city_zip_based_shipping_rate/frontend_object', array( 108 111 'ajax_url' => admin_url('admin-ajax.php'), 112 'shipping_calculator_nonce' => wp_create_nonce('city_zip_based_shipping_rate/nonce_shipping_calculatore') 109 113 )); 110 114 111 115 wp_localize_script('city-zip-based-shipping-rate', 'city_zip_based_shipping_rate', $city_zip_based_shipping_rate); 112 116 } 117 118 /** 119 * Validate shipping calculator 120 * 121 * @since 1.0.1 122 * @return void 123 */ 124 public function validate_shipping_calculator() { 125 if (!isset($_POST['nonce'])) { 126 return; 127 } 128 129 if (!wp_verify_nonce($_POST['nonce'], 'city_zip_based_shipping_rate/nonce_shipping_calculatore')) { 130 wp_send_json_error(array( 131 'error' => esc_html__('Security missing.', 'city-zip-based-shipping-rate-for-woocommerce') 132 )); 133 } 134 135 $address['country'] = isset($_POST['calc_shipping_country']) ? wc_clean(wp_unslash($_POST['calc_shipping_country'])) : ''; // WPCS: input var ok, CSRF ok, sanitization ok. 136 $address['state'] = isset($_POST['calc_shipping_state']) ? wc_clean(wp_unslash($_POST['calc_shipping_state'])) : ''; // WPCS: input var ok, CSRF ok, sanitization ok. 137 $address['postcode'] = isset($_POST['calc_shipping_postcode']) ? wc_clean(wp_unslash($_POST['calc_shipping_postcode'])) : ''; // WPCS: input var ok, CSRF ok, sanitization ok. 138 $address['city'] = isset($_POST['calc_shipping_city']) ? wc_clean(wp_unslash($_POST['calc_shipping_city'])) : ''; // WPCS: input var ok, CSRF ok, sanitization ok. 139 140 $package = array('destination' => $address); 141 $shipping_methods = \WC_Shipping_Zones::get_zone_matching_package($package)->get_shipping_methods(true); 142 143 $city_zip_based_shipping_intances = array(); 144 145 foreach ($shipping_methods as $shipping_method) { 146 if ('city_zip_based_shipping_method' === $shipping_method->id) { 147 $city_zip_based_shipping_intances[] = $shipping_method->get_instance_id(); 148 } 149 } 150 151 if (count($city_zip_based_shipping_intances) == 0) { 152 wp_send_json_success(array('no_method' => true)); 153 } 154 155 $cities = array(); 156 $matched_rate = false; 157 158 foreach ($city_zip_based_shipping_intances as $instance_id) { 159 $location_shipping = new Location_Shipping($instance_id, $package); 160 $cities = array_merge($cities, $location_shipping->get_cities()); 161 162 $current_rate = $location_shipping->get_applicable_rate(); 163 if (false === $current_rate) { 164 continue; 165 } 166 167 $matched_rate = true; 168 break; 169 } 170 171 $data = array('missed' => false); 172 if ($matched_rate) { 173 wp_send_json_success($data); 174 } 175 176 $data['missed'] = true; 177 178 $cities = array_map('strtolower', $cities); 179 if (!in_array(strtolower($address['city']), $cities)) { 180 $data['city_missed'] = esc_html__("Oops! We currently don't ship to this city. Please enter a supported city.", 'city-zip-based-shipping-rate-for-woocommerce'); 181 } 182 183 if (in_array(strtolower($address['city']), $cities)) { 184 $data['zip_missed'] = esc_html__('The entered postcode is not supported for shipping. Please use a valid postcode.', 'city-zip-based-shipping-rate-for-woocommerce'); 185 } 186 187 wp_send_json_success($data); 188 } 113 189 } 114 190 -
city-zip-based-shipping-rate-for-woocommerce/tags/1.0.0/inc/class-shipping-method.php
r3414978 r3469859 97 97 public function calculate_shipping($package = array()) { 98 98 $location_shipping = new Location_Shipping($this->get_instance_id(), $package); 99 99 100 100 $current_rate = $location_shipping->get_applicable_rate(); 101 101 if (false === $current_rate) { -
city-zip-based-shipping-rate-for-woocommerce/trunk/assets/admin.css
r3412305 r3469859 530 530 margin-top: 5px; 531 531 } 532 533 #city-zip-based-shipping-rate .need-to-add-data-warning { 534 color: #b50202; 535 font-weight: 500; 536 margin-bottom: 4px; 537 } -
city-zip-based-shipping-rate-for-woocommerce/trunk/assets/admin.js
r3414978 r3469859 44 44 zip_input_value: '', 45 45 city_input_value: '', 46 need_to_add_zips: false, 47 need_to_add_cities: false, 46 48 ...city_zip_based_shipping_rate.line_item_models, 47 49 ...this.rateData … … 54 56 delete line_item_data.zip_input_value; 55 57 delete line_item_data.city_input_value; 58 delete line_item_data.need_to_add_zips; 59 delete line_item_data.need_to_add_cities; 56 60 return line_item_data; 57 61 } … … 83 87 84 88 this.$root.line_items[this.number] = current_rate_data; 89 }, 90 91 city_input_value(value) { 92 this.need_to_add_cities = value?.length > 0; 93 }, 94 95 zip_input_value(value) { 96 this.need_to_add_zips = value?.length > 0; 85 97 } 86 98 }, … … 91 103 if (e.key === 'Enter') { 92 104 e.preventDefault(); // use this if you don't want newline 93 94 105 self.add_cities(); 95 106 } -
city-zip-based-shipping-rate-for-woocommerce/trunk/assets/admin.min.css
r3412305 r3469859 1 @-webkit-keyframes city_zip_rotate{from{-webkit-transform:rotate(0)}to{-webkit-transform:rotate(360deg)}}@-moz-keyframes city_zip_rotate{from{-moz-transform:rotate(0)}to{-moz-transform:rotate(360deg)}}@keyframes city_zip_rotate{from{transform:rotate(0)}to{transform:rotate(360deg)}}.city-zip-loading-indicator{--size:30px;position:relative;width:var(--size);margin-left:3px;align-self:center;aspect-ratio:1/1;display:inline-block}.city-zip-loading-indicator:after{content:"";width:100%;top:50%;left:50%;z-index:5;position:absolute;aspect-ratio:1/1;border-radius:100px;box-sizing:border-box;animation-duration:1s;border:2px solid #dbdbdb;margin-top:calc(var(--size)/ -2);margin-left:calc(var(--size)/ -2);border-top-color:#4c2dc1!important;animation-iteration-count:infinite;animation-timing-function:linear;animation-name:city_zip_rotate}#city-zip-based-shipping-rate{--primaryColor:#4c2dc1}#city-zip-based-shipping-rate *{box-sizing:border-box}#city-zip-based-shipping-rate.loading .city-zip-form-wrapper,#city-zip-based-shipping-rate:not(.loading) .root-app-loading{display:none}#city-zip-based-shipping-rate .city-zip-form-wrapper{max-width:750px}#city-zip-based-shipping-rate [type=date],#city-zip-based-shipping-rate [type=datetime-local],#city-zip-based-shipping-rate [type=number],#city-zip-based-shipping-rate [type=text],#city-zip-based-shipping-rate [type=time],#city-zip-based-shipping-rate select,#city-zip-based-shipping-rate textarea{border-color:#b5b5b5}#city-zip-based-shipping-rate [type=date],#city-zip-based-shipping-rate [type=number],#city-zip-based-shipping-rate [type=text],#city-zip-based-shipping-rate button,#city-zip-based-shipping-rate select{height:32px}#city-zip-based-shipping-rate [type=number]{width:80px;text-align:center;padding-inline-end:0}#city-zip-based-shipping-rate .form-input-heading{font-size:14px;font-weight:500;margin-bottom:6px}#city-zip-based-shipping-rate .full-width{width:100%;max-width:none}#city-zip-based-shipping-rate button{position:relative}#city-zip-based-shipping-rate button:has(.dashicons){display:inline-flex;align-items:center;column-gap:3px}#city-zip-based-shipping-rate .button.in-progress{color:transparent!important}#city-zip-based-shipping-rate .button.in-progress:after{content:"";width:20px;top:calc(50% - 10px);left:calc(50% - 10px);position:absolute;aspect-ratio:1/1;border-radius:100px;box-sizing:border-box;animation-duration:1s;border:2px solid #dbdbdb;margin-top:calc(var(--size)/ -2);margin-left:calc(var(--size)/ -2);border-top-color:var(--primaryColor)!important;animation-iteration-count:infinite;animation-timing-function:linear;animation-name:city_zip_rotate}#city-zip-based-shipping-rate .input-with-note{min-height:40px;position:relative;padding-inline-start:25px}#city-zip-based-shipping-rate .input-with-note input{position:absolute;left:0;top:7px}#city-zip-based-shipping-rate .input-with-note .field-note{margin-top:-1px}#city-zip-based-shipping-rate .field-note{color:#787878;margin-block:3px 0;font-style:italic;font-weight:400}#city-zip-based-shipping-rate .field-row,#city-zip-based-shipping-rate .field-row-column{gap:5px;display:flex}#city-zip-based-shipping-rate .field-row{flex-wrap:wrap}#city-zip-based-shipping-rate .field-row-column{flex-direction:column;row-gap:7px}#city-zip-based-shipping-rate .city-zip-form-insert-form{gap:3px;display:flex;flex-wrap:wrap;align-items:center}#city-zip-based-shipping-rate .city-zip-form-insert-form input{flex:1}#city-zip-based-shipping-rate .city-zip-form-insert-form .form-help-note{flex:0 0 100%;font-style:italic;font-size:90%;margin-top:0}#city-zip-based-shipping-rate .city-zip-form-insert-form .button .dashicons{width:16px;height:16px;font-size:16px}#city-zip-based-shipping-rate .cities-zip-tags{display:flex;row-gap:6px;column-gap:3px;margin-bottom:8px;flex-wrap:wrap}#city-zip-based-shipping-rate .cities-zip-tags>div{color:#fff;font-size:13px;padding:3px 12px;position:relative;border-radius:100px;display:inline-flex;align-items:center;background-color:#4c2dc1}#city-zip-based-shipping-rate .cities-zip-tags>div:has(.dashicons:hover){background-color:#b50202}#city-zip-based-shipping-rate .cities-zip-tags .dashicons{cursor:pointer;font-size:16px;line-height:20px;height:18px;width:18px;margin-top:-1px;margin-inline-end:-8px}#city-zip-based-shipping-rate .city-zip-form-row:has(+.city-zip-form-row){margin-bottom:20px}#city-zip-based-shipping-rate .shipping-rate-line-items{margin-bottom:20px}#city-zip-based-shipping-rate table.table-city-zip-settings{width:100%;border-collapse:collapse;border:1px solid #dbd5d5;background-color:#fff}#city-zip-based-shipping-rate table.table-city-zip-settings+table.table-city-zip-settings{margin-top:8px}#city-zip-based-shipping-rate table.table-city-zip-settings th.vmiddle{vertical-align:middle}#city-zip-based-shipping-rate table.table-city-zip-settings>tbody>tr>:is(td,th),#city-zip-based-shipping-rate table.table-city-zip-settings>thead>tr>:is(td,th){padding-block:10px;padding-inline:14px}#city-zip-based-shipping-rate table.table-city-zip-settings>tbody>tr>:is(td,th){border-block:1px solid #eee}#city-zip-based-shipping-rate table.table-city-zip-settings>tbody>tr:first-child>:is(td,th){border-top-color:#dbd5d5}#city-zip-based-shipping-rate table.table-city-zip-settings>tbody>tr:last-child>:is(td,th){padding-bottom:15px;border-bottom-color:#dbd5d5}#city-zip-based-shipping-rate table.table-city-zip-settings th{width:22%;font-size:13px;min-width:150px;text-align:left;font-weight:500;vertical-align:top;background-color:#fbfbfb;border-right:1px solid #e3e3e3}#city-zip-based-shipping-rate table.table-city-zip-settings .group-heading{display:flex;margin:0;align-items:center}#city-zip-based-shipping-rate table.table-city-zip-settings .group-heading-label{font-weight:500;margin-inline-end:5px}#city-zip-based-shipping-rate table.table-city-zip-settings .group-heading .handle-move{flex:1;align-self:stretch;margin-block:-10px;margin-inline-start:-14px;cursor:move}#city-zip-based-shipping-rate table.table-city-zip-settings .group-heading .handle-move.dashicons{height:auto;flex:0 0 40px;display:flex;align-items:center;aspect-ratio:1/1;justify-content:center}#city-zip-based-shipping-rate table.table-city-zip-settings .group-heading .shipping-rate-tools{display:flex;column-gap:5px;align-items:center;margin-inline-start:auto}#city-zip-based-shipping-rate table.table-city-zip-settings .shipping-rate-tools a{color:inherit;box-shadow:none!important}#city-zip-based-shipping-rate table.table-city-zip-settings.sortable-chosen thead tr{background-color:#eaebff}#city-zip-based-shipping-modal{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;opacity:0;pointer-events:none;visibility:hidden;transition:.2s all;z-index:99999999;background-color:rgba(0,0,0,.4);backdrop-filter:blur(3px)}#city-zip-based-shipping-modal.shown{opacity:1;pointer-events:all;visibility:visible}#city-zip-based-shipping-modal .modal-header .btn-modal-close{position:absolute;top:4px;right:4px;cursor:pointer;z-index:9999}#city-zip-based-shipping-modal .modal-content{width:90%;max-width:550px;border-radius:5px;position:relative;background-color:#fff;overflow:hidden;box-shadow:0 0 40px 15px rgba(0,0,0,.3)}#city-zip-based-shipping-modal .modal-footer,#city-zip-based-shipping-modal .modal-header{display:flex;column-gap:5px;align-items:center;padding:15px 20px}#city-zip-based-shipping-modal .modal-header{background-color:#fbfbfb;border-bottom:1px solid #eeeff1}#city-zip-based-shipping-modal .modal-footer{padding-block:5px 25px}#city-zip-based-shipping-modal .modal-header h2{margin:0;font-size:20px}#city-zip-based-shipping-modal .modal-body{padding:20px;font-size:14px;line-height:1.5}#city-zip-based-shipping-modal .modal-body h3{margin-block:0 10px}#city-zip-based-shipping-modal .modal-body p{font-size:inherit;line-height:inherit;margin-top:0}#city-zip-based-shipping-modal .modal-footer .button{font-weight:500;color:#505763;padding-block:3px;position:relative;min-width:120px;text-align:center;border-color:#e3e5e8;background-color:#fff;transition:all 150ms}#city-zip-based-shipping-modal .modal-footer .button.button-primary{color:#fff;border-color:#4c2dc1;background-color:#4c2dc1}#city-zip-based-shipping-modal .modal-footer .button.button-primary:hover{background-color:#643cf1}#city-zip-based-shipping-modal:not([data-modal=bulk-import]) .bulk-import,#city-zip-based-shipping-modal:not([data-modal=max-shipping]) .max-shipping-content,#city-zip-based-shipping-modal:not([data-modal=max-zip-codes]) .max-zip-codes-content{display:none!important}#city-zip-based-shipping-rate .btn-add-line-item{color:#4c2dc1;display:block;width:100%;text-align:center;font-size:18px;line-height:60px;font-weight:500;border-style:dashed;margin-top:20px;box-shadow:none!important;border-color:#4c2dc1}#city-zip-based-shipping-rate .bulk-import-section-guide{font-size:14px;line-height:1.6;text-align:center;margin-bottom:20px}#city-zip-based-shipping-rate .separator-or{position:relative;display:flex;margin-block:15px;align-items:center;justify-content:center}#city-zip-based-shipping-rate .separator-or::after{position:relative;content:attr(data-text);padding-inline:6px;background-color:#f0f0f1;z-index:4}#city-zip-based-shipping-rate .separator-or::before{content:"";height:1px;inset-inline:0;position:absolute;background-color:#ccc}#city-zip-based-shipping-rate .bulk-import-upload-section{margin:5px;color:#000;display:flex;padding:10px 30px;font-weight:500;align-items:center;flex-direction:column;justify-content:center;background-color:#fff;outline-offset:5px;cursor:pointer;outline:1px dashed var(--primaryColor)}#city-zip-based-shipping-rate .bulk-import-upload-section input{display:none}#city-zip-based-shipping-rate .bulk-import-upload-section .icon-upload{font-size:40px;height:40px;width:40px}#city-zip-based-shipping-rate .bulk-import-upload-section:not([data-status=importing]) .bulk-data-importing-count{display:none}#city-zip-based-shipping-rate .bulk-import-error{color:#b50202;text-align:center;margin-top:15px;padding:5px 15px}#city-zip-based-shipping-rate .export-error{color:#b50202;margin-top:5px} 1 @-webkit-keyframes city_zip_rotate{from{-webkit-transform:rotate(0)}to{-webkit-transform:rotate(360deg)}}@-moz-keyframes city_zip_rotate{from{-moz-transform:rotate(0)}to{-moz-transform:rotate(360deg)}}@keyframes city_zip_rotate{from{transform:rotate(0)}to{transform:rotate(360deg)}}.city-zip-loading-indicator{--size:30px;position:relative;width:var(--size);margin-left:3px;align-self:center;aspect-ratio:1/1;display:inline-block}.city-zip-loading-indicator:after{content:"";width:100%;top:50%;left:50%;z-index:5;position:absolute;aspect-ratio:1/1;border-radius:100px;box-sizing:border-box;animation-duration:1s;border:2px solid #dbdbdb;margin-top:calc(var(--size)/ -2);margin-left:calc(var(--size)/ -2);border-top-color:#4c2dc1!important;animation-iteration-count:infinite;animation-timing-function:linear;animation-name:city_zip_rotate}#city-zip-based-shipping-rate{--primaryColor:#4c2dc1}#city-zip-based-shipping-rate *{box-sizing:border-box}#city-zip-based-shipping-rate.loading .city-zip-form-wrapper,#city-zip-based-shipping-rate:not(.loading) .root-app-loading{display:none}#city-zip-based-shipping-rate .city-zip-form-wrapper{max-width:750px}#city-zip-based-shipping-rate [type=date],#city-zip-based-shipping-rate [type=datetime-local],#city-zip-based-shipping-rate [type=number],#city-zip-based-shipping-rate [type=text],#city-zip-based-shipping-rate [type=time],#city-zip-based-shipping-rate select,#city-zip-based-shipping-rate textarea{border-color:#b5b5b5}#city-zip-based-shipping-rate [type=date],#city-zip-based-shipping-rate [type=number],#city-zip-based-shipping-rate [type=text],#city-zip-based-shipping-rate button,#city-zip-based-shipping-rate select{height:32px}#city-zip-based-shipping-rate [type=number]{width:80px;text-align:center;padding-inline-end:0}#city-zip-based-shipping-rate .form-input-heading{font-size:14px;font-weight:500;margin-bottom:6px}#city-zip-based-shipping-rate .full-width{width:100%;max-width:none}#city-zip-based-shipping-rate button{position:relative}#city-zip-based-shipping-rate button:has(.dashicons){display:inline-flex;align-items:center;column-gap:3px}#city-zip-based-shipping-rate .button.in-progress{color:transparent!important}#city-zip-based-shipping-rate .button.in-progress:after{content:"";width:20px;top:calc(50% - 10px);left:calc(50% - 10px);position:absolute;aspect-ratio:1/1;border-radius:100px;box-sizing:border-box;animation-duration:1s;border:2px solid #dbdbdb;margin-top:calc(var(--size)/ -2);margin-left:calc(var(--size)/ -2);border-top-color:var(--primaryColor)!important;animation-iteration-count:infinite;animation-timing-function:linear;animation-name:city_zip_rotate}#city-zip-based-shipping-rate .input-with-note{min-height:40px;position:relative;padding-inline-start:25px}#city-zip-based-shipping-rate .input-with-note input{position:absolute;left:0;top:7px}#city-zip-based-shipping-rate .input-with-note .field-note{margin-top:-1px}#city-zip-based-shipping-rate .field-note{color:#787878;margin-block:3px 0;font-style:italic;font-weight:400}#city-zip-based-shipping-rate .field-row,#city-zip-based-shipping-rate .field-row-column{gap:5px;display:flex}#city-zip-based-shipping-rate .field-row{flex-wrap:wrap}#city-zip-based-shipping-rate .field-row-column{flex-direction:column;row-gap:7px}#city-zip-based-shipping-rate .city-zip-form-insert-form{gap:3px;display:flex;flex-wrap:wrap;align-items:center}#city-zip-based-shipping-rate .city-zip-form-insert-form input{flex:1}#city-zip-based-shipping-rate .city-zip-form-insert-form .form-help-note{flex:0 0 100%;font-style:italic;font-size:90%;margin-top:0}#city-zip-based-shipping-rate .city-zip-form-insert-form .button .dashicons{width:16px;height:16px;font-size:16px}#city-zip-based-shipping-rate .cities-zip-tags{display:flex;row-gap:6px;column-gap:3px;margin-bottom:8px;flex-wrap:wrap}#city-zip-based-shipping-rate .cities-zip-tags>div{color:#fff;font-size:13px;padding:3px 12px;position:relative;border-radius:100px;display:inline-flex;align-items:center;background-color:#4c2dc1}#city-zip-based-shipping-rate .cities-zip-tags>div:has(.dashicons:hover){background-color:#b50202}#city-zip-based-shipping-rate .cities-zip-tags .dashicons{cursor:pointer;font-size:16px;line-height:20px;height:18px;width:18px;margin-top:-1px;margin-inline-end:-8px}#city-zip-based-shipping-rate .city-zip-form-row:has(+.city-zip-form-row){margin-bottom:20px}#city-zip-based-shipping-rate .shipping-rate-line-items{margin-bottom:20px}#city-zip-based-shipping-rate table.table-city-zip-settings{width:100%;border-collapse:collapse;border:1px solid #dbd5d5;background-color:#fff}#city-zip-based-shipping-rate table.table-city-zip-settings+table.table-city-zip-settings{margin-top:8px}#city-zip-based-shipping-rate table.table-city-zip-settings th.vmiddle{vertical-align:middle}#city-zip-based-shipping-rate table.table-city-zip-settings>tbody>tr>:is(td,th),#city-zip-based-shipping-rate table.table-city-zip-settings>thead>tr>:is(td,th){padding-block:10px;padding-inline:14px}#city-zip-based-shipping-rate table.table-city-zip-settings>tbody>tr>:is(td,th){border-block:1px solid #eee}#city-zip-based-shipping-rate table.table-city-zip-settings>tbody>tr:first-child>:is(td,th){border-top-color:#dbd5d5}#city-zip-based-shipping-rate table.table-city-zip-settings>tbody>tr:last-child>:is(td,th){padding-bottom:15px;border-bottom-color:#dbd5d5}#city-zip-based-shipping-rate table.table-city-zip-settings th{width:22%;font-size:13px;min-width:150px;text-align:left;font-weight:500;vertical-align:top;background-color:#fbfbfb;border-right:1px solid #e3e3e3}#city-zip-based-shipping-rate table.table-city-zip-settings .group-heading{display:flex;margin:0;align-items:center}#city-zip-based-shipping-rate table.table-city-zip-settings .group-heading-label{font-weight:500;margin-inline-end:5px}#city-zip-based-shipping-rate table.table-city-zip-settings .group-heading .handle-move{flex:1;align-self:stretch;margin-block:-10px;margin-inline-start:-14px;cursor:move}#city-zip-based-shipping-rate table.table-city-zip-settings .group-heading .handle-move.dashicons{height:auto;flex:0 0 40px;display:flex;align-items:center;aspect-ratio:1/1;justify-content:center}#city-zip-based-shipping-rate table.table-city-zip-settings .group-heading .shipping-rate-tools{display:flex;column-gap:5px;align-items:center;margin-inline-start:auto}#city-zip-based-shipping-rate table.table-city-zip-settings .shipping-rate-tools a{color:inherit;box-shadow:none!important}#city-zip-based-shipping-rate table.table-city-zip-settings.sortable-chosen thead tr{background-color:#eaebff}#city-zip-based-shipping-modal{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;opacity:0;pointer-events:none;visibility:hidden;transition:.2s all;z-index:99999999;background-color:rgba(0,0,0,.4);backdrop-filter:blur(3px)}#city-zip-based-shipping-modal.shown{opacity:1;pointer-events:all;visibility:visible}#city-zip-based-shipping-modal .modal-header .btn-modal-close{position:absolute;top:4px;right:4px;cursor:pointer;z-index:9999}#city-zip-based-shipping-modal .modal-content{width:90%;max-width:550px;border-radius:5px;position:relative;background-color:#fff;overflow:hidden;box-shadow:0 0 40px 15px rgba(0,0,0,.3)}#city-zip-based-shipping-modal .modal-footer,#city-zip-based-shipping-modal .modal-header{display:flex;column-gap:5px;align-items:center;padding:15px 20px}#city-zip-based-shipping-modal .modal-header{background-color:#fbfbfb;border-bottom:1px solid #eeeff1}#city-zip-based-shipping-modal .modal-footer{padding-block:5px 25px}#city-zip-based-shipping-modal .modal-header h2{margin:0;font-size:20px}#city-zip-based-shipping-modal .modal-body{padding:20px;font-size:14px;line-height:1.5}#city-zip-based-shipping-modal .modal-body h3{margin-block:0 10px}#city-zip-based-shipping-modal .modal-body p{font-size:inherit;line-height:inherit;margin-top:0}#city-zip-based-shipping-modal .modal-footer .button{font-weight:500;color:#505763;padding-block:3px;position:relative;min-width:120px;text-align:center;border-color:#e3e5e8;background-color:#fff;transition:all 150ms}#city-zip-based-shipping-modal .modal-footer .button.button-primary{color:#fff;border-color:#4c2dc1;background-color:#4c2dc1}#city-zip-based-shipping-modal .modal-footer .button.button-primary:hover{background-color:#643cf1}#city-zip-based-shipping-modal:not([data-modal=bulk-import]) .bulk-import,#city-zip-based-shipping-modal:not([data-modal=max-shipping]) .max-shipping-content,#city-zip-based-shipping-modal:not([data-modal=max-zip-codes]) .max-zip-codes-content{display:none!important}#city-zip-based-shipping-rate .btn-add-line-item{color:#4c2dc1;display:block;width:100%;text-align:center;font-size:18px;line-height:60px;font-weight:500;border-style:dashed;margin-top:20px;box-shadow:none!important;border-color:#4c2dc1}#city-zip-based-shipping-rate .bulk-import-section-guide{font-size:14px;line-height:1.6;text-align:center;margin-bottom:20px}#city-zip-based-shipping-rate .separator-or{position:relative;display:flex;margin-block:15px;align-items:center;justify-content:center}#city-zip-based-shipping-rate .separator-or::after{position:relative;content:attr(data-text);padding-inline:6px;background-color:#f0f0f1;z-index:4}#city-zip-based-shipping-rate .separator-or::before{content:"";height:1px;inset-inline:0;position:absolute;background-color:#ccc}#city-zip-based-shipping-rate .bulk-import-upload-section{margin:5px;color:#000;display:flex;padding:10px 30px;font-weight:500;align-items:center;flex-direction:column;justify-content:center;background-color:#fff;outline-offset:5px;cursor:pointer;outline:1px dashed var(--primaryColor)}#city-zip-based-shipping-rate .bulk-import-upload-section input{display:none}#city-zip-based-shipping-rate .bulk-import-upload-section .icon-upload{font-size:40px;height:40px;width:40px}#city-zip-based-shipping-rate .bulk-import-upload-section:not([data-status=importing]) .bulk-data-importing-count{display:none}#city-zip-based-shipping-rate .bulk-import-error{color:#b50202;text-align:center;margin-top:15px;padding:5px 15px}#city-zip-based-shipping-rate .export-error{color:#b50202;margin-top:5px}#city-zip-based-shipping-rate .need-to-add-data-warning{color:#b50202;font-weight:500;margin-bottom:4px} -
city-zip-based-shipping-rate-for-woocommerce/trunk/assets/admin.min.js
r3414978 r3469859 1 ( t=>{let{__:a,sprintf:p}=wp.i18n,s=wp.hooks.applyFilters("city_zip_based_shipping_rate.has_pro",!1);var i={template:"#city-zip-based-shipping-rate-line-item",props:{rateData:{type:Object,default:{}},number:{type:Number,default:0},rateType:{default:"",type:String}},data(){return{id:(i=66,t=(new Date).getTime()+i,a="undefined"!=typeof performance&&performance.now&&1e3*performance.now()||0,"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(i){var e=16*Math.random();return 0<t?(e=(t+e)%16|0,t=Math.floor(t/16)):(e=(a+e)%16|0,a=Math.floor(a/16)),("x"===i?e:3&e|8).toString(16)})),zip_input_value:"",city_input_value:"",...city_zip_based_shipping_rate.line_item_models,...this.rateData};var i,t,a},computed:{shipping_rate_data(){var i=JSON.parse(JSON.stringify(this.$data));return delete i.zip_input_value,delete i.city_input_value,i}},created(){if("default_cost"==this.rateType)return this.$root.default_shipping_cost=this.shipping_rate_data;this.$root.line_items[this.number]=this.shipping_rate_data},watch:{rateData:{handler(i){for(var e in i)this[e]=i[e]},once:!0},shipping_rate_data(i){if("default_cost"==this.rateType)return this.$root.default_shipping_cost=i;this.$root.line_items[this.number]=i}},mounted(){let e=this;t(this.$refs.city_input).on("keydown",function(i){"Enter"===i.key&&(i.preventDefault(),e.add_cities())}),t(this.$refs.zip_code_input).on("keydown",function(i){"Enter"===i.key&&(i.preventDefault(),e.add_zipcode())})},methods:{delete_item(){confirm(a("Do you want to delete this rate?","city-zip-based-shipping-rate-for-woocommerce"))&&this.$root.line_items.splice(this.number,1)},add_cities(){if(this.city_input_value){var i=this.$root.number_of_city_added,e=this.city_input_value.split(",").map(i=>i.trim());if(10<i+e.length&&!s)return this.$root.modal="max-shipping";e.forEach(i=>{i.length&&!this.cities.includes(i)&&this.cities.push(i)}),this.city_input_value=""}},remove_city(i){var e=p(a('Do you want to delete "%s" city?',"city-zip-based-shipping-rate-for-woocommerce"),this.cities[i]);confirm(e)&&this.cities.splice(i,1)},add_zipcode(){if(this.zip_input_value){var i=this.zip_input_value.split(",").map(i=>i.trim());if(10<this.zip_codes.length+i.length&&!s)return this.$root.modal="max-zip-codes";i.forEach(i=>{i.length&&!this.zip_codes.includes(i)&&this.zip_codes.push(i)}),this.zip_input_value=""}},remove_zip_code(i){var e=p(a('Do you want to delete "%s" zip/postal code?',"city-zip-based-shipping-rate-for-woocommerce"),this.zip_codes[i]);confirm(e)&&this.zip_codes.splice(i,1)}}};let e=wp.hooks.applyFilters("city_zip_based_shipping_rate.models",{}),n=wp.hooks.applyFilters("city_zip_based_shipping_rate.helper_model",{modal:null});if(i={components:{"shipping-rate-line-item":i},data(){return{line_items:[],default_shipping_cost:{},city_zip_no_match:"hide_shipping_rate",...e,...n}},computed:{get_zip_based_settings_data(){var i,e=JSON.parse(JSON.stringify(this.$data));for(i in n)delete e[i];return JSON.stringify(e)},number_of_city_added(){let e=[];return this.line_items.forEach(i=>e=e.concat(i.cities)),e.length}},watch:{modal(i){t("#city-zip-based-shipping-modal").attr("data-modal",i),i?.length?t("#city-zip-based-shipping-modal").addClass("shown"):t("#city-zip-based-shipping-modal").removeClass("shown")}},mounted(){let e=this;t(this.$el.parentElement).removeClass("loading"),t("#mainform .woocommerce-save-button").prop("disabled",!1),t(document).keyup(function(i){"Escape"===i.key&&(e.modal=null)}),wp.hooks.doAction("city_zip_based_shipping_rate.mounted",this)},methods:{...wp.hooks.applyFilters("city_zip_based_shipping_rate.methods",{}),add_line_item(){this.line_items.push({})},on_order_change(i){var e=this.line_items.splice(i.oldIndex,1)[0];this.line_items.splice(i.newIndex,0,e)}}},t("#city-zip-based-shipping-rate").length){window.City_Zip_Based_Shipping_Rate_App=Vue.createApp(i).use(sortablejs).mount("#city-zip-based-shipping-rate");var o=t("#city-zip-based-shipping-rate").data("shipping-rates");if("object"==typeof o)for(var r in o)City_Zip_Based_Shipping_Rate_App[r]=o[r]}t("#city-zip-based-shipping-modal").on("click",".btn-modal-close",function(i){i.preventDefault(),window.City_Zip_Based_Shipping_Rate_App.modal=null})})(jQuery);1 (i=>{let{__:a,sprintf:s}=wp.i18n,p=wp.hooks.applyFilters("city_zip_based_shipping_rate.has_pro",!1);var e={template:"#city-zip-based-shipping-rate-line-item",props:{rateData:{type:Object,default:{}},number:{type:Number,default:0},rateType:{default:"",type:String}},data(){return{id:(e=66,i=(new Date).getTime()+e,a="undefined"!=typeof performance&&performance.now&&1e3*performance.now()||0,"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(e){var t=16*Math.random();return 0<i?(t=(i+t)%16|0,i=Math.floor(i/16)):(t=(a+t)%16|0,a=Math.floor(a/16)),("x"===e?t:3&t|8).toString(16)})),zip_input_value:"",city_input_value:"",need_to_add_zips:!1,need_to_add_cities:!1,...city_zip_based_shipping_rate.line_item_models,...this.rateData};var e,i,a},computed:{shipping_rate_data(){var e=JSON.parse(JSON.stringify(this.$data));return delete e.zip_input_value,delete e.city_input_value,delete e.need_to_add_zips,delete e.need_to_add_cities,e}},created(){if("default_cost"==this.rateType)return this.$root.default_shipping_cost=this.shipping_rate_data;this.$root.line_items[this.number]=this.shipping_rate_data},watch:{rateData:{handler(e){for(var t in e)this[t]=e[t]},once:!0},shipping_rate_data(e){if("default_cost"==this.rateType)return this.$root.default_shipping_cost=e;this.$root.line_items[this.number]=e},city_input_value(e){this.need_to_add_cities=0<e?.length},zip_input_value(e){this.need_to_add_zips=0<e?.length}},mounted(){let t=this;i(this.$refs.city_input).on("keydown",function(e){"Enter"===e.key&&(e.preventDefault(),t.add_cities())}),i(this.$refs.zip_code_input).on("keydown",function(e){"Enter"===e.key&&(e.preventDefault(),t.add_zipcode())})},methods:{delete_item(){confirm(a("Do you want to delete this rate?","city-zip-based-shipping-rate-for-woocommerce"))&&this.$root.line_items.splice(this.number,1)},add_cities(){if(this.city_input_value){var e=this.$root.number_of_city_added,t=this.city_input_value.split(",").map(e=>e.trim());if(10<e+t.length&&!p)return this.$root.modal="max-shipping";t.forEach(e=>{e.length&&!this.cities.includes(e)&&this.cities.push(e)}),this.city_input_value=""}},remove_city(e){var t=s(a('Do you want to delete "%s" city?',"city-zip-based-shipping-rate-for-woocommerce"),this.cities[e]);confirm(t)&&this.cities.splice(e,1)},add_zipcode(){if(this.zip_input_value){var e=this.zip_input_value.split(",").map(e=>e.trim());if(10<this.zip_codes.length+e.length&&!p)return this.$root.modal="max-zip-codes";e.forEach(e=>{e.length&&!this.zip_codes.includes(e)&&this.zip_codes.push(e)}),this.zip_input_value=""}},remove_zip_code(e){var t=s(a('Do you want to delete "%s" zip/postal code?',"city-zip-based-shipping-rate-for-woocommerce"),this.zip_codes[e]);confirm(t)&&this.zip_codes.splice(e,1)}}};let t=wp.hooks.applyFilters("city_zip_based_shipping_rate.models",{}),n=wp.hooks.applyFilters("city_zip_based_shipping_rate.helper_model",{modal:null});if(e={components:{"shipping-rate-line-item":e},data(){return{line_items:[],default_shipping_cost:{},city_zip_no_match:"hide_shipping_rate",...t,...n}},computed:{get_zip_based_settings_data(){var e,t=JSON.parse(JSON.stringify(this.$data));for(e in n)delete t[e];return JSON.stringify(t)},number_of_city_added(){let t=[];return this.line_items.forEach(e=>t=t.concat(e.cities)),t.length}},watch:{modal(e){i("#city-zip-based-shipping-modal").attr("data-modal",e),e?.length?i("#city-zip-based-shipping-modal").addClass("shown"):i("#city-zip-based-shipping-modal").removeClass("shown")}},mounted(){let t=this;i(this.$el.parentElement).removeClass("loading"),i("#mainform .woocommerce-save-button").prop("disabled",!1),i(document).keyup(function(e){"Escape"===e.key&&(t.modal=null)}),wp.hooks.doAction("city_zip_based_shipping_rate.mounted",this)},methods:{...wp.hooks.applyFilters("city_zip_based_shipping_rate.methods",{}),add_line_item(){this.line_items.push({})},on_order_change(e){var t=this.line_items.splice(e.oldIndex,1)[0];this.line_items.splice(e.newIndex,0,t)}}},i("#city-zip-based-shipping-rate").length){window.City_Zip_Based_Shipping_Rate_App=Vue.createApp(e).use(sortablejs).mount("#city-zip-based-shipping-rate");var o=i("#city-zip-based-shipping-rate").data("shipping-rates");if("object"==typeof o)for(var _ in o)City_Zip_Based_Shipping_Rate_App[_]=o[_]}i("#city-zip-based-shipping-modal").on("click",".btn-modal-close",function(e){e.preventDefault(),window.City_Zip_Based_Shipping_Rate_App.modal=null})})(jQuery); -
city-zip-based-shipping-rate-for-woocommerce/trunk/assets/frontend.js
r3412819 r3469859 11 11 } 12 12 }); 13 14 // const calculator_field = Array( 15 // '[name="calc_shipping_country"]', 16 // '[name="calc_shipping_state"]', 17 // '[name="calc_shipping_city"]', 18 // '[name="calc_shipping_postcode"]', 19 // ); 20 21 // let calucating_shipping_rate = false; 22 // let shipping_calculator_prev_data = {} 23 24 // const process_checkout_button = $(document.body).find('.wc-proceed-to-checkout .checkout-button') 25 26 // $(document.body).find('.woocommerce-shipping-calculator').on('change', calculator_field.join(','), function () { 27 // if (calucating_shipping_rate) { 28 // return; 29 // } 30 31 // const current_form = $(this).closest('form'); 32 33 // const formData = new FormData(current_form.get(0)); 34 // formData.append('nonce', city_zip_based_shipping_rate.shipping_calculator_nonce); 35 // formData.append('action', 'city_zip_based_shipping_rate/validate_shipping_calculator'); 36 37 // const shipping_calculator_new_data = {} 38 // for (const [key, value] of formData) { 39 // shipping_calculator_new_data[key] = value; 40 // } 41 42 // if (JSON.stringify(shipping_calculator_new_data) == JSON.stringify(shipping_calculator_prev_data)) { 43 // return; 44 // } 45 46 // calucating_shipping_rate = true; 47 // shipping_calculator_prev_data = { ...shipping_calculator_new_data }; 48 49 // process_checkout_button.addClass('disabled').off('click'); 50 // $(document.body).find('.city-zip-based-shipping-rate-error'); 51 // current_form.find('[name="calc_shipping"]').prop('disabled', true); 52 53 // fetch(city_zip_based_shipping_rate.ajax_url, { 54 // method: 'POST', 55 // body: formData 56 // }).then(async (response) => { 57 // const result = await response.json(); 58 // if (typeof result !== 'object' || !response.ok) { 59 // throw new Error('Something went wrong.'); 60 // } 61 62 // if (true !== result.data.missed || result.data?.no_method) { 63 // return process_checkout_button.removeClass('disabled') 64 // } 65 66 // //console.log(result) 67 68 // if (result.data?.city_missed) { 69 // $(`<div class="city-zip-based-shipping-rate-error">${result.data.city_missed}</div>`).insertAfter($('#calc_shipping_city_field')) 70 // $(`<div class="city-zip-based-shipping-rate-error">${result.data.city_missed}</div>`).insertBefore($('form.woocommerce-shipping-calculator')) 71 // } 72 73 // if (result.data?.zip_missed) { 74 // $(`<div class="city-zip-based-shipping-rate-error">${result.data.zip_missed}</div>`).insertAfter($('#calc_shipping_postcode_field')) 75 // $(`<div class="city-zip-based-shipping-rate-error">${result.data.zip_missed}</div>`).insertBefore($('form.woocommerce-shipping-calculator')) 76 // } 77 78 // }).catch((e) => { 79 // //console.log(e.message) 80 // process_checkout_button.removeClass('disabled') 81 // }).finally(() => { 82 // calucating_shipping_rate = false; 83 // current_form.find('[name="calc_shipping"]').prop('disabled', false); 84 // }); 85 86 // process_checkout_button.on('click', function (e) { 87 // if ($(this).has('.disabled')) { 88 // e.preventDefault(); 89 // } 90 // }) 91 92 // }) 93 94 13 95 })(jQuery) -
city-zip-based-shipping-rate-for-woocommerce/trunk/inc/class-admin.php
r3412305 r3469859 176 176 <?php echo esc_html_e('Add', 'city-zip-based-shipping-rate-for-woocommerce') ?> 177 177 </button> 178 178 <div class="need-to-add-data-warning" v-if="need_to_add_cities"><?php esc_html_e('Please click the "+ Add" button to add cities to the list above.', 'city-zip-based-shipping-rate-for-woocommerce') ?></div> 179 179 <div class="form-help-note"><?php esc_html_e('Enter a city and press Enter. For multiple cities, separate each one with a comma.', 'city-zip-based-shipping-rate-for-woocommerce') ?></div> 180 180 </div> … … 199 199 </button> 200 200 201 <div class="need-to-add-data-warning" v-if="need_to_add_zips"><?php esc_html_e('Please click the "+ Add" button to add ZIPs to the list above.', 'city-zip-based-shipping-rate-for-woocommerce') ?></div> 201 202 <div class="form-help-note"><?php esc_html_e('Enter a zip/postal code and press Enter. For multiple codes, separate each one with a comma.', 'city-zip-based-shipping-rate-for-woocommerce') ?></div> 202 203 </div> -
city-zip-based-shipping-rate-for-woocommerce/trunk/inc/class-main.php
r3414978 r3469859 57 57 add_filter('plugin_action_links', array($this, 'add_plugin_links'), 10, 2); 58 58 add_filter('woocommerce_shipping_methods', array($this, 'add_shipping_method')); 59 60 add_action('wp_ajax_city_zip_based_shipping_rate/validate_shipping_calculator', array($this, 'validate_shipping_calculator')); 61 add_action('wp_ajax_nopriv_city_zip_based_shipping_rate/validate_shipping_calculator', array($this, 'validate_shipping_calculator')); 59 62 } 60 63 … … 107 110 $city_zip_based_shipping_rate = apply_filters('city_zip_based_shipping_rate/frontend_object', array( 108 111 'ajax_url' => admin_url('admin-ajax.php'), 112 'shipping_calculator_nonce' => wp_create_nonce('city_zip_based_shipping_rate/nonce_shipping_calculatore') 109 113 )); 110 114 111 115 wp_localize_script('city-zip-based-shipping-rate', 'city_zip_based_shipping_rate', $city_zip_based_shipping_rate); 112 116 } 117 118 /** 119 * Validate shipping calculator 120 * 121 * @since 1.0.1 122 * @return void 123 */ 124 public function validate_shipping_calculator() { 125 if (!isset($_POST['nonce'])) { 126 return; 127 } 128 129 if (!wp_verify_nonce($_POST['nonce'], 'city_zip_based_shipping_rate/nonce_shipping_calculatore')) { 130 wp_send_json_error(array( 131 'error' => esc_html__('Security missing.', 'city-zip-based-shipping-rate-for-woocommerce') 132 )); 133 } 134 135 $address['country'] = isset($_POST['calc_shipping_country']) ? wc_clean(wp_unslash($_POST['calc_shipping_country'])) : ''; // WPCS: input var ok, CSRF ok, sanitization ok. 136 $address['state'] = isset($_POST['calc_shipping_state']) ? wc_clean(wp_unslash($_POST['calc_shipping_state'])) : ''; // WPCS: input var ok, CSRF ok, sanitization ok. 137 $address['postcode'] = isset($_POST['calc_shipping_postcode']) ? wc_clean(wp_unslash($_POST['calc_shipping_postcode'])) : ''; // WPCS: input var ok, CSRF ok, sanitization ok. 138 $address['city'] = isset($_POST['calc_shipping_city']) ? wc_clean(wp_unslash($_POST['calc_shipping_city'])) : ''; // WPCS: input var ok, CSRF ok, sanitization ok. 139 140 $package = array('destination' => $address); 141 $shipping_methods = \WC_Shipping_Zones::get_zone_matching_package($package)->get_shipping_methods(true); 142 143 $city_zip_based_shipping_intances = array(); 144 145 foreach ($shipping_methods as $shipping_method) { 146 if ('city_zip_based_shipping_method' === $shipping_method->id) { 147 $city_zip_based_shipping_intances[] = $shipping_method->get_instance_id(); 148 } 149 } 150 151 if (count($city_zip_based_shipping_intances) == 0) { 152 wp_send_json_success(array('no_method' => true)); 153 } 154 155 $cities = array(); 156 $matched_rate = false; 157 158 foreach ($city_zip_based_shipping_intances as $instance_id) { 159 $location_shipping = new Location_Shipping($instance_id, $package); 160 $cities = array_merge($cities, $location_shipping->get_cities()); 161 162 $current_rate = $location_shipping->get_applicable_rate(); 163 if (false === $current_rate) { 164 continue; 165 } 166 167 $matched_rate = true; 168 break; 169 } 170 171 $data = array('missed' => false); 172 if ($matched_rate) { 173 wp_send_json_success($data); 174 } 175 176 $data['missed'] = true; 177 178 $cities = array_map('strtolower', $cities); 179 if (!in_array(strtolower($address['city']), $cities)) { 180 $data['city_missed'] = esc_html__("Oops! We currently don't ship to this city. Please enter a supported city.", 'city-zip-based-shipping-rate-for-woocommerce'); 181 } 182 183 if (in_array(strtolower($address['city']), $cities)) { 184 $data['zip_missed'] = esc_html__('The entered postcode is not supported for shipping. Please use a valid postcode.', 'city-zip-based-shipping-rate-for-woocommerce'); 185 } 186 187 wp_send_json_success($data); 188 } 113 189 } 114 190 -
city-zip-based-shipping-rate-for-woocommerce/trunk/inc/class-shipping-method.php
r3414978 r3469859 97 97 public function calculate_shipping($package = array()) { 98 98 $location_shipping = new Location_Shipping($this->get_instance_id(), $package); 99 99 100 100 $current_rate = $location_shipping->get_applicable_rate(); 101 101 if (false === $current_rate) {
Note: See TracChangeset
for help on using the changeset viewer.