From f9462dcc099daa06545c39f18d29067171e8cc5f Mon Sep 17 00:00:00 2001 From: Bryan Mauger Date: Fri, 16 Feb 2024 12:44:10 -0500 Subject: [PATCH 01/20] WIP Insurance search page w/ jQuery and jQuery UI. --- jest.config.js | 1 + package-lock.json | 28 ++ package.json | 2 + .../insurance-lookup/insurance-lookup-spec.js | 0 .../insurance-lookup/insurance-lookup.vue | 161 +++++++++ src/layouts/insurance/insurance.vue | 326 ------------------ src/main.js | 4 + src/router/router-constants/fmgPage-values.js | 2 +- src/router/router-constants/routing-table.js | 2 +- 9 files changed, 198 insertions(+), 328 deletions(-) create mode 100644 src/layouts/insurance-lookup/insurance-lookup-spec.js create mode 100644 src/layouts/insurance-lookup/insurance-lookup.vue delete mode 100644 src/layouts/insurance/insurance.vue diff --git a/jest.config.js b/jest.config.js index 8f0550488..897b43535 100644 --- a/jest.config.js +++ b/jest.config.js @@ -25,6 +25,7 @@ module.exports = { "!src/layouts/payment/*.vue", // Temp test exclusion while in development "!src/layouts/payment-pia-return/*.vue", // Temp test exclusion while in development "!src/layouts/insurance/*.vue", // Temp test exclusion while in development + "!src/layouts/insurance-lookup/*.vue", // Temp test exclusion while in development // END ], // ! means exclude from coverage. testMatch: ["**/*.spec.(js|jsx|ts|tsx)|**/__tests__/*.(js|jsx|ts|tsx)"], diff --git a/package-lock.json b/package-lock.json index 91e44113b..eef1c9479 100644 --- a/package-lock.json +++ b/package-lock.json @@ -16,6 +16,8 @@ "http-status-codes": "^2.1.4", "iframe-resizer": "^4.3.7", "jest-junit": "^13.0.0", + "jquery": "^3.7.1", + "jquery-ui": "^1.13.2", "maska": "^1.5.0", "vee-validate": "^4.5.7", "vue": "^3.0.0", @@ -16173,6 +16175,19 @@ "node": ">=6" } }, + "node_modules/jquery": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.7.1.tgz", + "integrity": "sha512-m4avr8yL8kmFN8psrbFFFmB/If14iN5o9nw/NgnnM+kybDJpRsAynV2BsfpTYrTRysYUdADVD7CkUUizgkpLfg==" + }, + "node_modules/jquery-ui": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/jquery-ui/-/jquery-ui-1.13.2.tgz", + "integrity": "sha512-wBZPnqWs5GaYJmo1Jj0k/mrSkzdQzKDwhXNtHKcBdAcKVxMM3KNYFq+iJ2i1rwiG53Z8M4mTn3Qxrm17uH1D4Q==", + "dependencies": { + "jquery": ">=1.8.0 <4.0.0" + } + }, "node_modules/js-beautify": { "version": "1.14.0", "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.14.0.tgz", @@ -37364,6 +37379,19 @@ } } }, + "jquery": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.7.1.tgz", + "integrity": "sha512-m4avr8yL8kmFN8psrbFFFmB/If14iN5o9nw/NgnnM+kybDJpRsAynV2BsfpTYrTRysYUdADVD7CkUUizgkpLfg==" + }, + "jquery-ui": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/jquery-ui/-/jquery-ui-1.13.2.tgz", + "integrity": "sha512-wBZPnqWs5GaYJmo1Jj0k/mrSkzdQzKDwhXNtHKcBdAcKVxMM3KNYFq+iJ2i1rwiG53Z8M4mTn3Qxrm17uH1D4Q==", + "requires": { + "jquery": ">=1.8.0 <4.0.0" + } + }, "js-beautify": { "version": "1.14.0", "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.14.0.tgz", diff --git a/package.json b/package.json index d99b971c2..3c9cc10fa 100644 --- a/package.json +++ b/package.json @@ -19,6 +19,8 @@ "http-status-codes": "^2.1.4", "iframe-resizer": "^4.3.7", "jest-junit": "^13.0.0", + "jquery": "^3.7.1", + "jquery-ui": "^1.13.2", "maska": "^1.5.0", "vee-validate": "^4.5.7", "vue": "^3.0.0", diff --git a/src/layouts/insurance-lookup/insurance-lookup-spec.js b/src/layouts/insurance-lookup/insurance-lookup-spec.js new file mode 100644 index 000000000..e69de29bb diff --git a/src/layouts/insurance-lookup/insurance-lookup.vue b/src/layouts/insurance-lookup/insurance-lookup.vue new file mode 100644 index 000000000..f06dafcf4 --- /dev/null +++ b/src/layouts/insurance-lookup/insurance-lookup.vue @@ -0,0 +1,161 @@ + + + + diff --git a/src/layouts/insurance/insurance.vue b/src/layouts/insurance/insurance.vue deleted file mode 100644 index 88441fd9a..000000000 --- a/src/layouts/insurance/insurance.vue +++ /dev/null @@ -1,326 +0,0 @@ - - - diff --git a/src/main.js b/src/main.js index 01aa5406d..b387ffdae 100644 --- a/src/main.js +++ b/src/main.js @@ -8,6 +8,10 @@ import baseMixin from "@/mixins/base-mixin.js"; import analyticsMixin from "@/mixins/analytics-mixin.js"; import experimentMixin from "@/mixins/experiment-mixin.js"; import "../node_modules/bootstrap/dist/js/bootstrap.js"; +import "../node_modules/jquery-ui/dist/jquery-ui.min.js"; + +// Make jQuery avaialble globally +window.$ = window.jQuery = require("jquery"); // Vue App Setup const vueApp = createApp(App); diff --git a/src/router/router-constants/fmgPage-values.js b/src/router/router-constants/fmgPage-values.js index b70d9ec9f..880555ae8 100644 --- a/src/router/router-constants/fmgPage-values.js +++ b/src/router/router-constants/fmgPage-values.js @@ -11,7 +11,7 @@ const fmgPageValues = { ESTIMATE: "estimate", ADDRESS_VEHICLES: "address-vehicles", QUOTE: "quote", - INSURANCE: "insurance", + INSURANCE_LOOKUP: "insurance-lookup", SERVICE_LOCATION: "service-location", HERITAGE: "heritage", SCHEDULE: "schedule", diff --git a/src/router/router-constants/routing-table.js b/src/router/router-constants/routing-table.js index a7d993d62..4638644fb 100644 --- a/src/router/router-constants/routing-table.js +++ b/src/router/router-constants/routing-table.js @@ -391,7 +391,7 @@ const routingTable = function (store) { }, { scenario: navigationScenarios.CLICKED_FORWARD_WITH_INSURANCE, - destinationFmgPageValue: fmgPageValues.INSURANCE, + destinationFmgPageValue: fmgPageValues.INSURANCE_LOOKUP, }, ], }, From 3578401a9597aa42760d184a25d9537e6e184dfb Mon Sep 17 00:00:00 2001 From: Bryan Mauger Date: Fri, 16 Feb 2024 15:28:30 -0500 Subject: [PATCH 02/20] WIP rename value, add temp forward/back functionality. --- src/layouts/insurance-lookup/insurance-lookup.vue | 8 +++++++- src/router/router-constants/routing-table.js | 2 +- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/layouts/insurance-lookup/insurance-lookup.vue b/src/layouts/insurance-lookup/insurance-lookup.vue index f06dafcf4..0b5e94a7d 100644 --- a/src/layouts/insurance-lookup/insurance-lookup.vue +++ b/src/layouts/insurance-lookup/insurance-lookup.vue @@ -105,7 +105,13 @@ export default { }, handleAutocompleteSelect(value) { this.selectedQuery = value; - } + }, + backButtonAction() { + this.$router.navigateWithoutSaving(this.navigationScenarios.CLICKED_BACK, this.$route); + }, + forwardButtonAction() { + alert("Still needs to be wired up"); + }, }, mounted() { const select = this.handleAutocompleteSelect; diff --git a/src/router/router-constants/routing-table.js b/src/router/router-constants/routing-table.js index 4638644fb..161196eb4 100644 --- a/src/router/router-constants/routing-table.js +++ b/src/router/router-constants/routing-table.js @@ -396,7 +396,7 @@ const routingTable = function (store) { ], }, { - fmgPageValue: fmgPageValues.INSURANCE, + fmgPageValue: fmgPageValues.INSURANCE_LOOKUP, maps: [ { scenario: navigationScenarios.CLICKED_BACK, From e8f4f7bfd435b3f38a29aed582a21813d7665554 Mon Sep 17 00:00:00 2001 From: Bryan Mauger Date: Mon, 19 Feb 2024 17:13:24 -0500 Subject: [PATCH 03/20] WIP insurance search autocomplete. Add backspace show list feature Add bold matched letters --- .../insurance-lookup/insurance-lookup.vue | 55 ++++++++++++++----- 1 file changed, 41 insertions(+), 14 deletions(-) diff --git a/src/layouts/insurance-lookup/insurance-lookup.vue b/src/layouts/insurance-lookup/insurance-lookup.vue index 0b5e94a7d..72eb8fe12 100644 --- a/src/layouts/insurance-lookup/insurance-lookup.vue +++ b/src/layouts/insurance-lookup/insurance-lookup.vue @@ -93,12 +93,6 @@ export default { vm.setCmsContent(resultMap.cmsContent); }); }, - data() { - return { - availableTags: ["Allstate", "Liberty Mutual", "State Farm", "Farmers", "Progressive"], - selectedQuery: "", - }; - }, methods: { arePagePrerequisitesValid() { return store.getters.vehicle.carId !== null; @@ -112,19 +106,52 @@ export default { forwardButtonAction() { alert("Still needs to be wired up"); }, - }, + }, mounted() { const select = this.handleAutocompleteSelect; + // Temporary list of insurance companies for testing + var tags = [ + "21st Century Insurance", + "Farmers Insurance", + "Grange Insurance", + "Liberty Mutual Insurance", + "State Auto Insurance", + "State Farm Insurance", + "Travelers Insurance" + ]; + $("#autocomplete").autocomplete({ - source: this.availableTags, - position: { - my: 'left top+6', + source: function( request, response ) { + var matcher = new RegExp( "^" + $.ui.autocomplete.escapeRegex( request.term ), "i" ); + response( $.grep( tags, function( item ){ + return matcher.test( item ); + }) ); }, - select: function( event, ui ) { + position: { + my: "left top+6", + }, + minLength: 0, + select: function (event, ui) { select(ui.item.value); - } + }, + search: function(event, ui) { + setTimeout(() => { + let w = $(this).autocomplete("widget").find("div"), + re = new RegExp("("+this.value+")", "i"); + w.html((i, html) => + html.replace(re, "$1") + ); + },5); + }, }); }, + watch: { + selectedQuery(newValue, oldValue) { + if (oldValue.length > 0 && newValue.length === 0) { + $( "#autocomplete" ).autocomplete( "search", "" ); + } + }, + }, components: { funnelHeader, navbar, @@ -144,9 +171,9 @@ ul { padding: 0; background: $white; border: 1px solid $gray; - border-radius: .25rem; + border-radius: 0.25rem; li { - padding: .125rem .5rem; + padding: 0.125rem 0.5rem; &:hover { background-color: $gray-100; cursor: pointer; From a54a36b8c75744e11a53e047014ab0ddd1978bfc Mon Sep 17 00:00:00 2001 From: Bryan Mauger Date: Tue, 20 Feb 2024 10:18:16 -0500 Subject: [PATCH 04/20] WIP add styling for dropdown list. --- src/layouts/insurance-lookup/insurance-lookup.vue | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/layouts/insurance-lookup/insurance-lookup.vue b/src/layouts/insurance-lookup/insurance-lookup.vue index 72eb8fe12..2746c20c4 100644 --- a/src/layouts/insurance-lookup/insurance-lookup.vue +++ b/src/layouts/insurance-lookup/insurance-lookup.vue @@ -168,13 +168,13 @@ ul { position: absolute; list-style-type: none; margin: 0; - padding: 0; + padding: .25rem; background: $white; border: 1px solid $gray; border-radius: 0.25rem; li { - padding: 0.125rem 0.5rem; - &:hover { + &:hover, + .ui-state-active { background-color: $gray-100; cursor: pointer; } From a01f0f456ae7d557b3a870d10db4e622c122e0df Mon Sep 17 00:00:00 2001 From: Bryan Mauger Date: Tue, 20 Feb 2024 13:20:29 -0500 Subject: [PATCH 05/20] Add routing values. --- src/layouts/insurance-lookup/insurance-lookup.vue | 7 +++++-- src/layouts/insurance/insurance.spec.js | 3 --- src/router/router-constants/fmgPage-values.js | 1 + src/router/router-constants/routing-table.js | 2 +- 4 files changed, 7 insertions(+), 6 deletions(-) delete mode 100644 src/layouts/insurance/insurance.spec.js diff --git a/src/layouts/insurance-lookup/insurance-lookup.vue b/src/layouts/insurance-lookup/insurance-lookup.vue index 2746c20c4..6e822ea3c 100644 --- a/src/layouts/insurance-lookup/insurance-lookup.vue +++ b/src/layouts/insurance-lookup/insurance-lookup.vue @@ -101,10 +101,12 @@ export default { this.selectedQuery = value; }, backButtonAction() { + // Go back to Quote page this.$router.navigateWithoutSaving(this.navigationScenarios.CLICKED_BACK, this.$route); }, forwardButtonAction() { - alert("Still needs to be wired up"); + // Still needs wired up when insurance-details page is created + this.$router.navigateWithSaving(this.navigationScenarios.CLICKED_FORWARD, this.$route); }, }, mounted() { @@ -130,10 +132,11 @@ export default { position: { my: "left top+6", }, - minLength: 0, + minLength: 0, // Necessary to display menu when clearing input select: function (event, ui) { select(ui.item.value); }, + // Bold matching letters as you type in the input search: function(event, ui) { setTimeout(() => { let w = $(this).autocomplete("widget").find("div"), diff --git a/src/layouts/insurance/insurance.spec.js b/src/layouts/insurance/insurance.spec.js deleted file mode 100644 index 3ad2b30cc..000000000 --- a/src/layouts/insurance/insurance.spec.js +++ /dev/null @@ -1,3 +0,0 @@ -describe("insurance", () => { - it.todo("Should render a normal string"); -}); diff --git a/src/router/router-constants/fmgPage-values.js b/src/router/router-constants/fmgPage-values.js index 880555ae8..4307867a3 100644 --- a/src/router/router-constants/fmgPage-values.js +++ b/src/router/router-constants/fmgPage-values.js @@ -12,6 +12,7 @@ const fmgPageValues = { ADDRESS_VEHICLES: "address-vehicles", QUOTE: "quote", INSURANCE_LOOKUP: "insurance-lookup", + INSURANCE_DETAILS: "insurance-details", SERVICE_LOCATION: "service-location", HERITAGE: "heritage", SCHEDULE: "schedule", diff --git a/src/router/router-constants/routing-table.js b/src/router/router-constants/routing-table.js index 161196eb4..0205d355d 100644 --- a/src/router/router-constants/routing-table.js +++ b/src/router/router-constants/routing-table.js @@ -404,7 +404,7 @@ const routingTable = function (store) { }, { scenario: navigationScenarios.CLICKED_FORWARD, - destinationFmgPageValue: fmgPageValues.SCHEDULE, + destinationFmgPageValue: fmgPageValues.INSURANCE_DETAILS, }, ], }, From 6e3306b5ab2d77fad01f454b8c6a0a50ffb0c186 Mon Sep 17 00:00:00 2001 From: Bryan Mauger Date: Tue, 20 Feb 2024 15:57:27 -0500 Subject: [PATCH 06/20] Update style for list items. --- src/layouts/insurance-lookup/insurance-lookup.vue | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/layouts/insurance-lookup/insurance-lookup.vue b/src/layouts/insurance-lookup/insurance-lookup.vue index 6e822ea3c..7cda82334 100644 --- a/src/layouts/insurance-lookup/insurance-lookup.vue +++ b/src/layouts/insurance-lookup/insurance-lookup.vue @@ -181,6 +181,15 @@ ul { background-color: $gray-100; cursor: pointer; } + .ui-menu-item-wrapper { + border: 1px solid transparent; + border-radius: 2px; + padding-left: .25rem; + &.ui-state-active { + border: 1px solid $gray-200; + border-radius: 2px; + } + } } } } From fb58bab45c2afb13c4cce8a6f8ace5ed75a864b9 Mon Sep 17 00:00:00 2001 From: Bryan Mauger Date: Tue, 20 Feb 2024 15:59:53 -0500 Subject: [PATCH 07/20] Bold text on hover/active --- src/layouts/insurance-lookup/insurance-lookup.vue | 1 + 1 file changed, 1 insertion(+) diff --git a/src/layouts/insurance-lookup/insurance-lookup.vue b/src/layouts/insurance-lookup/insurance-lookup.vue index 7cda82334..444cb0f53 100644 --- a/src/layouts/insurance-lookup/insurance-lookup.vue +++ b/src/layouts/insurance-lookup/insurance-lookup.vue @@ -188,6 +188,7 @@ ul { &.ui-state-active { border: 1px solid $gray-200; border-radius: 2px; + font-weight: bold; } } } From c712e8d170492ba3333cd881031756d77e081cc6 Mon Sep 17 00:00:00 2001 From: Bryan Mauger Date: Wed, 21 Feb 2024 08:30:10 -0500 Subject: [PATCH 08/20] Update style for matched letters and hover state. --- src/layouts/insurance-lookup/insurance-lookup.vue | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/layouts/insurance-lookup/insurance-lookup.vue b/src/layouts/insurance-lookup/insurance-lookup.vue index 444cb0f53..7830e037d 100644 --- a/src/layouts/insurance-lookup/insurance-lookup.vue +++ b/src/layouts/insurance-lookup/insurance-lookup.vue @@ -142,7 +142,7 @@ export default { let w = $(this).autocomplete("widget").find("div"), re = new RegExp("("+this.value+")", "i"); w.html((i, html) => - html.replace(re, "$1") + html.replace(re, "$1") ); },5); }, @@ -185,10 +185,13 @@ ul { border: 1px solid transparent; border-radius: 2px; padding-left: .25rem; + span { + font-weight: 600; + } &.ui-state-active { border: 1px solid $gray-200; border-radius: 2px; - font-weight: bold; + font-weight: 600; } } } From 2912407afd1422119fe1f9a9e574f08fef4b88ea Mon Sep 17 00:00:00 2001 From: Bryan Mauger Date: Mon, 26 Feb 2024 10:53:07 -0500 Subject: [PATCH 09/20] WIP remove unneeded code. --- .../insurance-lookup/insurance-lookup.vue | 33 ++----------------- 1 file changed, 2 insertions(+), 31 deletions(-) diff --git a/src/layouts/insurance-lookup/insurance-lookup.vue b/src/layouts/insurance-lookup/insurance-lookup.vue index 7830e037d..12fc16691 100644 --- a/src/layouts/insurance-lookup/insurance-lookup.vue +++ b/src/layouts/insurance-lookup/insurance-lookup.vue @@ -1,5 +1,5 @@