first upload all files
This commit is contained in:
80
Modules/Tax/Resources/assets/admin/js/TaxRate.js
Normal file
80
Modules/Tax/Resources/assets/admin/js/TaxRate.js
Normal file
@@ -0,0 +1,80 @@
|
||||
export default class {
|
||||
constructor(rateId, rate = {}) {
|
||||
this.rateId = rateId;
|
||||
this.rate = rate;
|
||||
}
|
||||
|
||||
html() {
|
||||
this.html = this.template({ rateId: this.rateId, rate: this.rate });
|
||||
|
||||
this.eventListeners();
|
||||
|
||||
return this.html;
|
||||
}
|
||||
|
||||
updateState() {
|
||||
this.html.find('.country select').trigger('change');
|
||||
}
|
||||
|
||||
template(data) {
|
||||
let template = _.template($('#tax-rate-template').html());
|
||||
|
||||
return $(template(data));
|
||||
}
|
||||
|
||||
eventListeners(html) {
|
||||
this.html.find('.country select').on('change', (e) => {
|
||||
if (e.currentTarget.value) {
|
||||
this.changeState(e.currentTarget.value);
|
||||
}
|
||||
});
|
||||
|
||||
this.html.on('click', '.delete-row', this.delete);
|
||||
}
|
||||
|
||||
changeState(countryCode) {
|
||||
this.getStateField().prop('disabled', true);
|
||||
|
||||
let oldState = this.getStateField().val();
|
||||
|
||||
$.getJSON(route('countries.states.index', countryCode), (states) => {
|
||||
this.getStateField()
|
||||
.replaceWith(this.getStateTemplate(states))
|
||||
.prop('disabled', false);
|
||||
|
||||
if (oldState) {
|
||||
this.getStateField().val(oldState);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
getStateField() {
|
||||
let id = $.escapeSelector(`rates.${this.rateId}.state`);
|
||||
|
||||
return $(`#${id}`);
|
||||
}
|
||||
|
||||
getStateTemplate(states) {
|
||||
if ($.isEmptyObject(states)) {
|
||||
return this.getInputStateTemplate();
|
||||
}
|
||||
|
||||
return this.getSelectStateTemplate(states);
|
||||
}
|
||||
|
||||
getInputStateTemplate() {
|
||||
let template = _.template($('#state-input-template').html());
|
||||
|
||||
return template({ rateId: this.rateId });
|
||||
}
|
||||
|
||||
getSelectStateTemplate(states) {
|
||||
let template = _.template($('#state-select-template').html());
|
||||
|
||||
return template({ rateId: this.rateId, states });
|
||||
}
|
||||
|
||||
delete(e) {
|
||||
$(e.currentTarget).closest('.tax-rate').remove();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user