From 51e556a7312864a4218d400b3a223f9b00052d2f Mon Sep 17 00:00:00 2001 From: cgfhtw Date: Thu, 1 Feb 2024 08:58:32 +0100 Subject: [PATCH] Remove textarea+ & Form.send() Add $clearValidationForName() --- public/js/components/Form/Form.js | 48 ++++-------------------------- public/js/components/Form/Input.js | 22 +++++++------- 2 files changed, 17 insertions(+), 53 deletions(-) diff --git a/public/js/components/Form/Form.js b/public/js/components/Form/Form.js index 7620f85c8..9a729b88f 100644 --- a/public/js/components/Form/Form.js +++ b/public/js/components/Form/Form.js @@ -9,7 +9,8 @@ export default { $registerToForm: component => { if (this.inputs.indexOf(component) < 0) this.inputs.push(component); - } + }, + $clearValidationForName: this.clearValidationForName }; }, props: { @@ -110,48 +111,9 @@ export default { clearValidation() { this.inputs.forEach(input => input.clearValidation()); }, - send(promise) { - return new Promise((resolve, reject) => { - promise.then(result => { - if (result?.status == 200 && result.data) { - if (typeof result.data !== 'object' || !result.data.hasOwnProperty('retval')) - // TODO(chris): IMPLEMENT! Error in API - return reject(result); - if (result.data.error) - // TODO(chris): IMPLEMENT! Error in API - return reject(result); - const data = result.data.retval; - // TODO(chris): check for something better/add new standardized return value - if (result.data.code == 1) - this.setFeedback(true, data); - return resolve(data); - } - // TODO(chris): IMPLEMENT! Wrong result object - reject(result); - }).catch(result => { - if (result?.response?.status == 400 && result.response.data) { - if (typeof result.response.data !== 'object' || !result.response.data.hasOwnProperty('retval')) - // TODO(chris): IMPLEMENT! Error in API - return reject(result); - this.clearValidation(); - const remaining = this.setFeedback( - false, - result.response.data.retval - ); - if (remaining) { - result.response.data.retval = remaining; - return reject(result); - } - } else if (result?.response?.status == 500) { - if (this.$fhcAlert) - this.$fhcAlert.handleSystemError(result); - else - return reject(result); - } else { - return reject(result); - } - }); - }); + clearValidationForName(name) { + (this.sortedInputs[name.split('.')[0] + name.split('.').slice(1).map(p => `[${p}]`).join("")] || this.sortedInputs['_default'] || []) + .forEach(input => input.clearValidation()); } }, template: ` diff --git a/public/js/components/Form/Input.js b/public/js/components/Form/Input.js index 4fc565dbb..991ffac8a 100644 --- a/public/js/components/Form/Input.js +++ b/public/js/components/Form/Input.js @@ -8,7 +8,8 @@ export default { FhcFragment }, inject: [ - '$registerToForm' + '$registerToForm', + '$clearValidationForName' ], props: { bsFeedback: Boolean, @@ -126,7 +127,6 @@ export default { case 'number': case 'password': case 'textarea': - case 'textarea+': if (!c.includes('form-control')) classes.push('form-control'); break; @@ -180,6 +180,9 @@ export default { this.valid = undefined; this.feedback = []; }, + clearValidationForThisName() { + this.$clearValidationForName(this.name); + }, setFeedback(valid, feedback) { if (!feedback) feedback = []; @@ -213,9 +216,9 @@ export default { template: ` - - - + + @@ -245,7 +248,7 @@ export default { :input-props="{name}" :class="validationClass" :input-class="[...Object.entries({'form-control': !noAutoClass, 'is-valid': valid === true, 'is-invalid': valid === false}).reduce((a,[k,v]) => {if(v) a.push(k);return a}, []), ...($attrs['input-class'] ? $attrs['input-class'].split(' ') : [])].join(' ')" - @update:model-value="clearValidation" + @update:model-value="clearValidationForThisName" > @@ -261,7 +264,7 @@ export default { :class="validationClass" :input-class="validationClass" :no-list="inputGroup" - @update:model-value="clearValidation" + @update:model-value="clearValidationForThisName" > @@ -275,12 +278,11 @@ export default { :id="idCmp" :name="name" :class="validationClass" - @update:model-value="clearValidation" + @update:model-value="clearValidationForThisName" > -
{{ modelValueCmp?.length || 0 }} / {{ $attrs.maxlength }}