diff --git a/resources/assets/js/Wizard.vue b/resources/assets/js/Wizard.vue index 84370d7fb..f0317c2ba 100644 --- a/resources/assets/js/Wizard.vue +++ b/resources/assets/js/Wizard.vue @@ -78,7 +78,28 @@ export default { flex-flow: row wrap; } +.form-container .invalid-feedback { + position: absolute; + bottom: -18px; +} + +.form-container .has-error { + position: relative; + margin-bottom:unset !important; +} + +.form-container .has-error .form-control { + border-top-right-radius: 5px; + border-bottom-right-radius: 5px; + border-right:1px solid; +} + @media screen and (max-width: 991px) { + .form-container .has-error { + position: relative; + margin-bottom:1.5rem !important; + } + .current-tab-btn { padding: 0 15px; } diff --git a/resources/assets/js/components/Inputs/BaseInput.vue b/resources/assets/js/components/Inputs/BaseInput.vue index a8fda25d2..70c9e6694 100644 --- a/resources/assets/js/components/Inputs/BaseInput.vue +++ b/resources/assets/js/components/Inputs/BaseInput.vue @@ -86,7 +86,7 @@ description: "Input label (text before input)" }, error: { - type: String, + type: [String, Object, Array], description: "Input error (below input)" }, footerError: { diff --git a/resources/assets/js/mixins/spa-global.js b/resources/assets/js/mixins/spa-global.js index 0a9cbae15..2752fef35 100644 --- a/resources/assets/js/mixins/spa-global.js +++ b/resources/assets/js/mixins/spa-global.js @@ -9,6 +9,8 @@ export default { select: "", enabled: 1 }, + error_field: false, + error_field_name: '' } }, @@ -16,6 +18,9 @@ export default { addItem() { this.newDatas = true; this.currentTab = undefined; + this.error_field = true; + this.error_field_name = ''; + if (this.model) { this.model.name = ''; this.model.rate = ''; @@ -26,6 +31,9 @@ export default { handeClickEdit(item, index) { this.newDatas = false; this.currentTab = index; + this.error_field = true; + this.error_field_name = ''; + if (this.model) { this.model.name = item.name ? item.name : ''; this.model.rate = item.rate ? item.rate : ''; @@ -43,7 +51,7 @@ export default { onSuccessEvent(response) { let type = response.data.success ? 'success' : 'error'; let timeout = 1000; - + if (response.data.important) { timeout = 0; } @@ -56,12 +64,12 @@ export default { }); this.dataHandleEvent(); - + }, onSuccessDelete(event) { let type = event.success ? 'success' : 'error'; let timeout = 1000; - + if (event.important) { timeout = 0; } @@ -77,9 +85,10 @@ export default { }, onEditEvent(form_method, form_url, plus_data, form_list, form_id) { let self = this; + const formData = new FormData(this.$refs["form"]); const data = {}; - + for (let [key, val] of formData.entries()) { Object.assign(data, { [key]: val, @@ -90,29 +99,35 @@ export default { if (!plus_data || plus_data == undefined) { delete data.type; } - + window.axios({ method: form_method, url: form_url, data: data, }) .then(response => { - form_list.forEach(item => { - if (item.id == form_id) { - item.name = response.data.data.name; - item.code = response.data.data.code; - item.rate = response.data.data.rate; - item.type = plus_data == undefined ? 'normal' : '' - } - }); + if (form_list.length) { + form_list.forEach(item => { + if (item.id == form_id) { + item.name = response.data.data.name; + item.code = response.data.data.code; + item.rate = response.data.data.rate; + item.type = plus_data == undefined ? 'normal' : '' + } + }); + } this.onSuccessEvent(response); + this.error_field = false; }, this) .catch(error => { + self.onFailError(error) this.success = false; }); }, onSubmitEvent(form_method, form_url, plus_data, form_list) { + let self = this; + const formData = new FormData(this.$refs["form"]); const data = {}; @@ -142,10 +157,16 @@ export default { }); this.onSuccessEvent(response); + this.error_field = false; }, this) .catch(error => { + self.onFailError(error) this.success = false; }); }, + onFailError(error) { + this.error_field_name = error.response.data.errors; + this.error_field = true; + } }, } diff --git a/resources/assets/js/views/wizard/Currencies.vue b/resources/assets/js/views/wizard/Currencies.vue index c6ca90858..edf5563c9 100644 --- a/resources/assets/js/views/wizard/Currencies.vue +++ b/resources/assets/js/views/wizard/Currencies.vue @@ -119,16 +119,17 @@ :placeholder="translations.currencies.name" prepend-icon="fas fa-font" form-classes="col-md-3" + :error="error_field_name.name" v-model="model.name" /> @@ -156,7 +157,7 @@ :placeholder="translations.currencies.rate" prepend-icon="fas fa-percentage" form-classes="col-md-3" - required="required" + :error="error_field_name.rate" v-model="model.rate" />
@@ -185,8 +186,9 @@ :placeholder="translations.currencies.name" prepend-icon="fas fa-font" v-model="model.name" + :error="error_field_name.name" /> - +
@@ -305,7 +307,6 @@ export default { type: [Object, Array], }, }, - data() { return { active: 1, diff --git a/resources/assets/js/views/wizard/Taxes.vue b/resources/assets/js/views/wizard/Taxes.vue index 46bfbecdf..4c9a9ee88 100644 --- a/resources/assets/js/views/wizard/Taxes.vue +++ b/resources/assets/js/views/wizard/Taxes.vue @@ -110,6 +110,7 @@ :placeholder="translations.taxes.name" prepend-icon="fas fa-font" form-classes="col-md-4" + :error="error_field_name.name" v-model="model.name" />