CSR-254: updates for recent changes to buttons
This commit is contained in:
parent
30ae4fcd8b
commit
90d4b00c42
6 changed files with 77 additions and 60 deletions
|
|
@ -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>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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'
|
||||||
|
|
|
||||||
|
|
@ -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: {
|
||||||
|
|
|
||||||
|
|
@ -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>
|
||||||
|
|
|
||||||
|
|
@ -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: {
|
||||||
|
|
|
||||||
|
|
@ -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"
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue