CSR-254: updates for recent changes to buttons

This commit is contained in:
Adam Caouette 2022-02-04 15:45:15 -05:00
parent 30ae4fcd8b
commit 90d4b00c42
6 changed files with 77 additions and 60 deletions

View file

@ -33,12 +33,13 @@
:colLength="this.answers.length < 3 ? '' : '-4'" :colLength="this.answers.length < 3 ? '' : '-4'"
v-model="selectedValues" v-model="selectedValues"
data-test="button" data-test="button"
:validationRules="validationRules"
/> />
</div> </div>
</fieldset> </fieldset>
<div v-show="errorMessage" class="row px-3 form-test-error"> </div>
{{ errorMessage }} <div class="row px-3 my-6 form-test-error">
</div> <error-message :name="groupName"></error-message>
</div> </div>
</div> </div>
</template> </template>
@ -47,7 +48,7 @@
import listButton from "@/ux-components/list-button/list-button"; import listButton from "@/ux-components/list-button/list-button";
import listButtonHorizontal from "@/ux-components/list-button-horizontal/list-button-horizontal"; import listButtonHorizontal from "@/ux-components/list-button-horizontal/list-button-horizontal";
import listCard from "@/ux-components/list-card/list-card"; import listCard from "@/ux-components/list-card/list-card";
import { useField } from 'vee-validate'; import { useField, ErrorMessage } from 'vee-validate';
export default { export default {
name: "buttonQuestion", name: "buttonQuestion",
@ -132,6 +133,9 @@ export default {
this.$emit("update:modelValue", answer); this.$emit("update:modelValue", answer);
}, },
handleCheckedChanged(val) { handleCheckedChanged(val) {
console.log('meta is now ', this.meta)
// Add or remove item to array of data to emit // Add or remove item to array of data to emit
val.isChecked ? this.modelValueAnswers.push(val.buttonId) : this.modelValueAnswers.splice(this.modelValueAnswers.indexOf(val.buttonId), 1); val.isChecked ? this.modelValueAnswers.push(val.buttonId) : this.modelValueAnswers.splice(this.modelValueAnswers.indexOf(val.buttonId), 1);
const answersToEmit = this.modelValueAnswers.length ? this.modelValueAnswers : undefined; const answersToEmit = this.modelValueAnswers.length ? this.modelValueAnswers : undefined;
@ -142,50 +146,29 @@ export default {
listButton, listButton,
listButtonHorizontal, listButtonHorizontal,
listCard, listCard,
ErrorMessage,
}, },
setup(props) { // setup(props) {
console.log('button-question running setup'); // console.log('button-question running setup');
const { // const {
value: inputValue, // value: inputValue,
errorMessage, // errorMessage,
handleBlur, // handleBlur,
handleChange, // handleChange,
meta, // meta,
} = useField(props.groupName, value => { // } = useField(props.groupName, undefined, {
if (props.validationRules) { // type: 'checkbox',
// console.log('props.validationRules is: ', props.validationRules); // checkedValue: props.value,
// });
// console.log("value is: ", value) // return {
// console.log("inputValue is: ", inputValue); // // handleChange,
// // handleBlur,
let validationResults = []; // errorMessage,
// // inputValue,
props.validationRules.forEach((rule) => { // meta,
console.log("BQ 2value is: ", value) // };
// console.log("2inputValue is: ", inputValue); // },
if (!rule.test(value)) {
// console.log('uh oh, returning error!', rule.error)
validationResults.push(rule.error);
}
});
return (validationResults.length > 0) ? validationResults[0] : true;
} else {
return true;
}
}, {
type: 'checkbox',
checkedValue: props.value,
});
return {
// handleChange,
// handleBlur,
errorMessage,
// inputValue,
meta,
};
},
}; };
</script> </script>

View file

@ -1,5 +1,5 @@
<template> <template>
<div class="replace-options-question"> <div class="damage-location-question">
I AM DAMAGE LOCATION QUESTION I AM DAMAGE LOCATION QUESTION
groupName is: {{groupName}} groupName is: {{groupName}}
<buttonQuestion <buttonQuestion
@ -12,6 +12,7 @@
v-model="selectedValues" v-model="selectedValues"
:validationRules="setValidationRules()" :validationRules="setValidationRules()"
/> />
</div> </div>
</template> </template>
@ -55,10 +56,10 @@ export default ({
test: (value) => { test: (value) => {
// console.log('required value is... ', value); // console.log('required value is... ', value);
if (!value || value.length < 1) { if (!value || value.length < 1) {
// console.log('return false') console.log('DLQ should return false')
return false; return false;
} }
// console.log('no if, return true') console.log('DLQ should return true')
return true; return true;
}, },
error: 'Please select damage location' error: 'Please select damage location'

View file

@ -1,6 +1,8 @@
<template> <template>
<transition name="fade"> <transition name="fade">
<div class="replace-options-question"> <div class="replace-options-question">
I AM REPLACE OPTIONS QUESTION
groupName is: {{groupName}}
<buttonQuestion <buttonQuestion
v-if="isAvailable && answersToDisplay.length > 1" v-if="isAvailable && answersToDisplay.length > 1"
:questionText="questionText" :questionText="questionText"
@ -9,6 +11,7 @@
:groupName="groupName" :groupName="groupName"
buttonType="listCard" buttonType="listCard"
v-model="selectedValues" v-model="selectedValues"
:validationRules="setValidationRules()"
/> />
</div> </div>
</transition> </transition>
@ -40,7 +43,26 @@ export default ({
this.questionText = cmsContent.QuestionText; this.questionText = cmsContent.QuestionText;
this.answersFromCms = cmsContent.Answers; this.answersFromCms = cmsContent.Answers;
this.replaceOptions = replaceOptions; this.replaceOptions = replaceOptions;
} },
setValidationRules() {
const rulesArray = [
{
name: "required",
test: (value) => {
// console.log('ROQ required value is... ', value);
if (!value || value.length < 1) {
console.log('ROQ should return false')
return false;
}
console.log('ROQ should return true')
return true;
},
error: 'Please select damage location'
}
]
return rulesArray;
},
}, },
computed: { computed: {
selectedValues: { selectedValues: {

View file

@ -18,13 +18,18 @@
isMultiSelect isMultiSelect
v-model="damageLocationQuestionData" v-model="damageLocationQuestionData"
/> />
<replaceOptionsQuestion ref="driverSideOptions" isAvailable isMultiSelect v-model="driverSideOptionsData" /> <replaceOptionsQuestion
ref="driverSideOptions"
isAvailable
isMultiSelect
v-model="driverSideOptionsData"
/>
<funnel-footer <funnel-footer
:isDisabled="!meta.valid" :isDisabled="!meta.valid"
/> />
<div class="g-2 mt-6 mx-4 w-25 position-fixed fixed-top"> <div class="g-2 mt-6 mx-4 w-25 position-fixed fixed-top">
<p>Current Form Values:</p> <p>Current Form, values:</p>
<pre>{{ values }}</pre> <pre>{{ values }}</pre>
<p>Is Form Valid? (Meta.valid):</p> <p>Is Form Valid? (Meta.valid):</p>
<pre>{{ meta.valid }}</pre> <pre>{{ meta.valid }}</pre>

View file

@ -1,5 +1,11 @@
<template> <template>
<button :disabled="isDisabled" :aria-disabled="isDisabled" class="btn d-flex align-items-center py-3 px-4" :class="[isPrimary ? 'btn-primary' : 'btn-secondary',isFloat ? 'float-end' : '']" @click="clicked()"> <button
:disabled="isDisabled"
:aria-disabled="isDisabled"
class="btn d-flex align-items-center py-3 px-4"
:class="[isPrimary ? 'btn-primary' : 'btn-secondary',isFloat ? 'float-end' : '']"
@click="clicked()"
>
<span class="m-0">{{ this.buttonText }}</span> <span class="m-0">{{ this.buttonText }}</span>
<loader <loader
class="ms-2" class="ms-2"
@ -30,8 +36,8 @@ export default {
}, },
methods: { methods: {
clicked() { clicked() {
this.isLoaderDisplayed = true; // this.isLoaderDisplayed = true;
this.$emit("click-event"); // this.$emit("click-event");
}, },
}, },
components: { components: {

View file

@ -1,11 +1,11 @@
<template> <template>
<div :class="'col' + colLength"> <div :class="'col' + colLength">
I AM LIST CARD, I AM LIST CARD,
buttonID is: {{buttonID}} isMultiSelect is: {{isMultiSelect}}
<div class="list-card w-100 rounded-3 d-flex align-items-center h-100" <div
:class="isWide ? 'horizontal' : ''" class="list-card w-100 rounded-3 d-flex align-items-center h-100"
@mouseup="handleChange(value)" :class="isWide ? 'horizontal' : ''"
@keyup.space="handleChange(value)"> >
<input <input
:type="isMultiSelect ? 'checkbox' : 'radio'" :type="isMultiSelect ? 'checkbox' : 'radio'"
:id="buttonID" :id="buttonID"