Merge pull request #560 from Safelite/revert-553-feature/CSR-480
Revert "Feature/csr 480"
This commit is contained in:
commit
22fd237d93
7 changed files with 17 additions and 158 deletions
|
|
@ -24,7 +24,6 @@ module.exports = {
|
||||||
"!src/layouts/address-vehicles/address-vehicles-question/address-vehicles-question.vue",
|
"!src/layouts/address-vehicles/address-vehicles-question/address-vehicles-question.vue",
|
||||||
"!src/ux-components/alert\alert.vue",
|
"!src/ux-components/alert\alert.vue",
|
||||||
"!src/helpers/validation-rules.js",
|
"!src/helpers/validation-rules.js",
|
||||||
"!src/common-components/question-chain/question-chain",
|
|
||||||
// END
|
// END
|
||||||
], // ! means exclude from coverage.
|
], // ! means exclude from coverage.
|
||||||
testMatch: ["**/*.spec.(js|jsx|ts|tsx)|**/__tests__/*.(js|jsx|ts|tsx)"],
|
testMatch: ["**/*.spec.(js|jsx|ts|tsx)|**/__tests__/*.(js|jsx|ts|tsx)"],
|
||||||
|
|
|
||||||
|
|
@ -112,8 +112,7 @@ describe("buttonQuestion.vue", () => {
|
||||||
const wrapper = shallowMount(buttonQuestion, setupMocks({}));
|
const wrapper = shallowMount(buttonQuestion, setupMocks({}));
|
||||||
await wrapper.setProps({
|
await wrapper.setProps({
|
||||||
answers: ["2022", "2021", "2020"],
|
answers: ["2022", "2021", "2020"],
|
||||||
isMultiSelect: false,
|
isMultiSelect: false
|
||||||
modelValue: []
|
|
||||||
});
|
});
|
||||||
const val = { checkValue: true, value: "2021", }
|
const val = { checkValue: true, value: "2021", }
|
||||||
wrapper.vm.handleCheckedChanged(val);
|
wrapper.vm.handleCheckedChanged(val);
|
||||||
|
|
|
||||||
|
|
@ -36,7 +36,6 @@
|
||||||
data-test="button"
|
data-test="button"
|
||||||
:validationRules="validationRules"
|
:validationRules="validationRules"
|
||||||
:class="[suppressError ? 'alertError' : '']"
|
:class="[suppressError ? 'alertError' : '']"
|
||||||
:clearOnUnmount="clearOnUnmount"
|
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
@ -85,10 +84,6 @@ export default {
|
||||||
validationRules: String,
|
validationRules: String,
|
||||||
suppressError: Boolean,
|
suppressError: Boolean,
|
||||||
useTextForValue: Boolean,
|
useTextForValue: Boolean,
|
||||||
clearOnUnmount: {
|
|
||||||
type: Boolean,
|
|
||||||
default: true
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
getFieldSetClasses() {
|
getFieldSetClasses() {
|
||||||
|
|
@ -138,14 +133,17 @@ export default {
|
||||||
return answer.Name ? answer.Name : answer;
|
return answer.Name ? answer.Name : answer;
|
||||||
},
|
},
|
||||||
handleCheckedChanged(val) {
|
handleCheckedChanged(val) {
|
||||||
if(this.selectingInitiatesLoad) {
|
|
||||||
this.selectedValues = [val.value];
|
if(this.isMultiSelect && this.selectedValues) {
|
||||||
} else {
|
// Add or remove item to array of data to emit
|
||||||
|
const newSelectedValues = this.selectedValues;
|
||||||
|
|
||||||
if(Array.isArray(this.selectedValues)) {
|
if(Array.isArray(this.selectedValues)) {
|
||||||
const newSelectedValues = this.selectedValues;
|
|
||||||
val.checkValue ? newSelectedValues.push(val.value) : newSelectedValues.splice(newSelectedValues.indexOf(val.value), 1);
|
val.checkValue ? newSelectedValues.push(val.value) : newSelectedValues.splice(newSelectedValues.indexOf(val.value), 1);
|
||||||
this.selectedValues = newSelectedValues;
|
this.selectedValues = newSelectedValues;
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
this.selectedValues = [val.value];
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -1,119 +0,0 @@
|
||||||
<template>
|
|
||||||
<div v-for="(q, i) in questions" :key="i">
|
|
||||||
<transition appear name="fade" mode="out-in">
|
|
||||||
<buttonQuestion
|
|
||||||
v-if="q.questionSequence === currentQuestion"
|
|
||||||
class="radioQuestion"
|
|
||||||
:questionText="q.questionText"
|
|
||||||
:answers="q.answers"
|
|
||||||
:groupName="`${questionData.glassName}-${questionData.glassLocation}-${i}`"
|
|
||||||
textPosition="text-start"
|
|
||||||
v-model="selectedValue"
|
|
||||||
isRequired=true
|
|
||||||
:validationRules="validationRules"
|
|
||||||
:clearOnUnmount=false
|
|
||||||
/>
|
|
||||||
</transition>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
import buttonQuestion from "@/common-components/button-question/button-question";
|
|
||||||
|
|
||||||
export default {
|
|
||||||
name: "questionChain",
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
models: Array,
|
|
||||||
currentQuestion: 1,
|
|
||||||
answeredQuestions: [],
|
|
||||||
};
|
|
||||||
},
|
|
||||||
props: {
|
|
||||||
questionData: Array,
|
|
||||||
validationRules: String,
|
|
||||||
modelValue: String,
|
|
||||||
},
|
|
||||||
computed: {
|
|
||||||
questions() {
|
|
||||||
const questions = this.questionData.partQuestions.map((q, i) => {
|
|
||||||
return {
|
|
||||||
questionText: q.questionText,
|
|
||||||
questionSequence: q.questionSequence,
|
|
||||||
answers: q.answers.map((a) => {
|
|
||||||
return {
|
|
||||||
Text: a.answerText,
|
|
||||||
// Name will either be nextQuestionSequence or answerResult
|
|
||||||
Name: a.nextQuestionSequence ? a.nextQuestionSequence : "answer-" + a.answerResult,
|
|
||||||
nextQuestionSequence: a.nextQuestionSequence,
|
|
||||||
answerResult: a.answerResult,
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
});
|
|
||||||
// add an empty item to be array[0] since we start with 1
|
|
||||||
questions.unshift({});
|
|
||||||
return questions;
|
|
||||||
},
|
|
||||||
selectedValue: {
|
|
||||||
get: function() {
|
|
||||||
return this.modelValue;
|
|
||||||
},
|
|
||||||
set: function(returnedAnswer) {
|
|
||||||
const isNewModelValueComplete = this.getNewModelValue(returnedAnswer);
|
|
||||||
|
|
||||||
if (isNewModelValueComplete) {
|
|
||||||
this.$emit("update:modelValue", isNewModelValueComplete);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
getNewModelValue(returnedAnswer) {
|
|
||||||
if (!returnedAnswer || !Array.isArray(returnedAnswer)) { return false }
|
|
||||||
const lastAnswer = returnedAnswer[returnedAnswer.length - 1];
|
|
||||||
const currentQuestion = this.questions[this.currentQuestion];
|
|
||||||
|
|
||||||
if (lastAnswer.indexOf("answer-") === 0) {
|
|
||||||
// if it is an answerResult
|
|
||||||
const finalAnswer = lastAnswer.slice(7);
|
|
||||||
|
|
||||||
const currentQuestionSelectedAnswer = currentQuestion.answers.find(
|
|
||||||
({ answerResult }) => answerResult === finalAnswer
|
|
||||||
);
|
|
||||||
|
|
||||||
// add current item to list of answered questions
|
|
||||||
this.answeredQuestions.push(
|
|
||||||
{
|
|
||||||
questionText: currentQuestion.questionText,
|
|
||||||
selectedAnswerText: currentQuestionSelectedAnswer.Text,
|
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
return {
|
|
||||||
answerResult: finalAnswer,
|
|
||||||
answeredQuestions: this.answeredQuestions,
|
|
||||||
};
|
|
||||||
} else {
|
|
||||||
const currentQuestionSelectedAnswer = currentQuestion.answers.find(
|
|
||||||
({ nextQuestionSequence }) => nextQuestionSequence === parseInt(lastAnswer)
|
|
||||||
);
|
|
||||||
|
|
||||||
// add current item to list of answered questions
|
|
||||||
this.answeredQuestions.push(
|
|
||||||
{
|
|
||||||
questionText: currentQuestion.questionText,
|
|
||||||
selectedAnswerText: currentQuestionSelectedAnswer.Text,
|
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
this.currentQuestion = parseInt(lastAnswer); // update count to display next question
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
components: {
|
|
||||||
buttonQuestion,
|
|
||||||
},
|
|
||||||
};
|
|
||||||
</script>
|
|
||||||
|
|
@ -78,10 +78,6 @@ export default {
|
||||||
validationRules: String,
|
validationRules: String,
|
||||||
selectedValues: [Array, String],
|
selectedValues: [Array, String],
|
||||||
hasError: Boolean,
|
hasError: Boolean,
|
||||||
clearOnUnmount: {
|
|
||||||
type: Boolean,
|
|
||||||
default: true
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
|
|
@ -96,11 +92,9 @@ export default {
|
||||||
: this.selectedValues[0];
|
: this.selectedValues[0];
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
unmounted() { // needed to clear this button's selectedValues if it is removed to keep validation in sync
|
unmounted() { // needed to clear this button's selectedValues if it is removed
|
||||||
if (this.clearOnUnmount) {
|
this.checkValue = false;
|
||||||
this.checkValue = false;
|
this.handleCheckChange();
|
||||||
this.handleCheckChange();
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
displayLoader() {
|
displayLoader() {
|
||||||
|
|
|
||||||
|
|
@ -78,10 +78,6 @@ export default {
|
||||||
validationRules: String,
|
validationRules: String,
|
||||||
selectedValues: [Array, String],
|
selectedValues: [Array, String],
|
||||||
hasError: Boolean,
|
hasError: Boolean,
|
||||||
clearOnUnmount: {
|
|
||||||
type: Boolean,
|
|
||||||
default: true
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
|
|
@ -96,11 +92,9 @@ export default {
|
||||||
: this.selectedValues[0];
|
: this.selectedValues[0];
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
unmounted() { // needed to clear this button's selectedValues if it is removed to keep validation in sync
|
unmounted() { // needed to clear this button's selectedValues if it is removed
|
||||||
if (this.clearOnUnmount) {
|
this.checkValue = false;
|
||||||
this.checkValue = false;
|
this.handleCheckChange();
|
||||||
this.handleCheckChange();
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
displayLoader() {
|
displayLoader() {
|
||||||
|
|
|
||||||
|
|
@ -86,10 +86,6 @@ export default {
|
||||||
selectedValues: [Array, String],
|
selectedValues: [Array, String],
|
||||||
modelValue: Object,
|
modelValue: Object,
|
||||||
hasError: Boolean,
|
hasError: Boolean,
|
||||||
clearOnUnmount: {
|
|
||||||
type: Boolean,
|
|
||||||
default: true
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
|
|
@ -103,11 +99,9 @@ export default {
|
||||||
: this.selectedValues[0];
|
: this.selectedValues[0];
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
unmounted() { // needed to clear this button's selectedValues if it is removed to keep validation in sync
|
unmounted() { // needed to clear this button's selectedValues if it is removed
|
||||||
if (this.clearOnUnmount) {
|
this.checkValue = false;
|
||||||
this.checkValue = false;
|
this.handleCheckChange();
|
||||||
this.handleCheckChange();
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
getLabelClasses() {
|
getLabelClasses() {
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue