Plugin Directory

Changeset 3469859


Ignore:
Timestamp:
02/26/2026 04:41:48 AM (2 weeks ago)
Author:
repon.wp
Message:

city-zip-based-shipping-rate-for-woocommerce-1.0.0

Location:
city-zip-based-shipping-rate-for-woocommerce
Files:
16 edited

Legend:

Unmodified
Added
Removed
  • city-zip-based-shipping-rate-for-woocommerce/tags/1.0.0/assets/admin.css

    r3412305 r3469859  
    530530    margin-top: 5px;
    531531}
     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  
    4444                zip_input_value: '',
    4545                city_input_value: '',
     46                need_to_add_zips: false,
     47                need_to_add_cities: false,
    4648                ...city_zip_based_shipping_rate.line_item_models,
    4749                ...this.rateData
     
    5456                delete line_item_data.zip_input_value;
    5557                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;
    5660                return line_item_data;
    5761            }
     
    8387
    8488                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;
    8597            }
    8698        },
     
    91103                if (e.key === 'Enter') {
    92104                    e.preventDefault(); // use this if you don't want newline
    93 
    94105                    self.add_cities();
    95106                }
  • 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  
    1111        }
    1212    });
     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
    1395})(jQuery)
  • city-zip-based-shipping-rate-for-woocommerce/tags/1.0.0/inc/class-admin.php

    r3412305 r3469859  
    176176                                        <?php echo esc_html_e('Add', 'city-zip-based-shipping-rate-for-woocommerce') ?>
    177177                                    </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>
    179179                                    <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>
    180180                                </div>
     
    199199                                    </button>
    200200
     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>
    201202                                    <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>
    202203                                </div>
  • city-zip-based-shipping-rate-for-woocommerce/tags/1.0.0/inc/class-main.php

    r3414978 r3469859  
    5757        add_filter('plugin_action_links', array($this, 'add_plugin_links'), 10, 2);
    5858        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'));
    5962    }
    6063
     
    107110        $city_zip_based_shipping_rate = apply_filters('city_zip_based_shipping_rate/frontend_object', array(
    108111            'ajax_url' => admin_url('admin-ajax.php'),
     112            'shipping_calculator_nonce' => wp_create_nonce('city_zip_based_shipping_rate/nonce_shipping_calculatore')
    109113        ));
    110114
    111115        wp_localize_script('city-zip-based-shipping-rate', 'city_zip_based_shipping_rate', $city_zip_based_shipping_rate);
    112116    }
     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    }
    113189}
    114190
  • city-zip-based-shipping-rate-for-woocommerce/tags/1.0.0/inc/class-shipping-method.php

    r3414978 r3469859  
    9797    public function calculate_shipping($package = array()) {
    9898        $location_shipping = new Location_Shipping($this->get_instance_id(), $package);
    99 
     99       
    100100        $current_rate = $location_shipping->get_applicable_rate();
    101101        if (false === $current_rate) {
  • city-zip-based-shipping-rate-for-woocommerce/trunk/assets/admin.css

    r3412305 r3469859  
    530530    margin-top: 5px;
    531531}
     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  
    4444                zip_input_value: '',
    4545                city_input_value: '',
     46                need_to_add_zips: false,
     47                need_to_add_cities: false,
    4648                ...city_zip_based_shipping_rate.line_item_models,
    4749                ...this.rateData
     
    5456                delete line_item_data.zip_input_value;
    5557                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;
    5660                return line_item_data;
    5761            }
     
    8387
    8488                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;
    8597            }
    8698        },
     
    91103                if (e.key === 'Enter') {
    92104                    e.preventDefault(); // use this if you don't want newline
    93 
    94105                    self.add_cities();
    95106                }
  • 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  
    1111        }
    1212    });
     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
    1395})(jQuery)
  • city-zip-based-shipping-rate-for-woocommerce/trunk/inc/class-admin.php

    r3412305 r3469859  
    176176                                        <?php echo esc_html_e('Add', 'city-zip-based-shipping-rate-for-woocommerce') ?>
    177177                                    </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>
    179179                                    <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>
    180180                                </div>
     
    199199                                    </button>
    200200
     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>
    201202                                    <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>
    202203                                </div>
  • city-zip-based-shipping-rate-for-woocommerce/trunk/inc/class-main.php

    r3414978 r3469859  
    5757        add_filter('plugin_action_links', array($this, 'add_plugin_links'), 10, 2);
    5858        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'));
    5962    }
    6063
     
    107110        $city_zip_based_shipping_rate = apply_filters('city_zip_based_shipping_rate/frontend_object', array(
    108111            'ajax_url' => admin_url('admin-ajax.php'),
     112            'shipping_calculator_nonce' => wp_create_nonce('city_zip_based_shipping_rate/nonce_shipping_calculatore')
    109113        ));
    110114
    111115        wp_localize_script('city-zip-based-shipping-rate', 'city_zip_based_shipping_rate', $city_zip_based_shipping_rate);
    112116    }
     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    }
    113189}
    114190
  • city-zip-based-shipping-rate-for-woocommerce/trunk/inc/class-shipping-method.php

    r3414978 r3469859  
    9797    public function calculate_shipping($package = array()) {
    9898        $location_shipping = new Location_Shipping($this->get_instance_id(), $package);
    99 
     99       
    100100        $current_rate = $location_shipping->get_applicable_rate();
    101101        if (false === $current_rate) {
Note: See TracChangeset for help on using the changeset viewer.