Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Sync membership cart flow dataLayer changes into release branch #264

Merged
Show file tree
Hide file tree
Changes from 4 commits
Commits
Show all changes
61 commits
Select commit Hold shift + click to select a range
fb0871d
#181 Fix styles of pet-tags/tag-quote and pet-tags/tag-select (#182)
miakobchuk Aug 6, 2024
7ad2286
hotfix for change domain
miakobchuk Aug 7, 2024
4c4d79b
adding additional environment entry to config
miakobchuk Aug 8, 2024
19b96ad
updated trusted site block
miakobchuk Aug 8, 2024
7c16136
Menu links refactoring (#188)
miakobchuk Aug 9, 2024
760d840
PM-361
miakobchuk Aug 13, 2024
ec80ebd
PM-361
miakobchuk Aug 13, 2024
61de609
Merge remote-tracking branch 'refs/remotes/origin/stage' into develop
BaDos Aug 14, 2024
4f3a98a
updated document-based footer
miakobchuk Aug 16, 2024
c646d3a
added x icon for footer
miakobchuk Aug 16, 2024
dd27d15
removed external icon for petmicrochiplookup.org link
miakobchuk Aug 16, 2024
472442a
Merge remote-tracking branch 'refs/remotes/origin/stage' into develop
BaDos Aug 22, 2024
3f7a07e
Merge remote-tracking branch 'refs/remotes/origin/main' into stage
BaDos Aug 30, 2024
433f2fd
Merge remote-tracking branch 'refs/remotes/origin/stage' into develop
BaDos Aug 30, 2024
9b9a03e
Merge remote-tracking branch 'refs/remotes/origin/main' into stage
BaDos Sep 10, 2024
941bf8c
Merge remote-tracking branch 'refs/remotes/origin/stage' into develop
BaDos Sep 10, 2024
ba32c40
24PW: Post Purchase Thank You Page - EDS Build (#201)
hero-dokane Sep 11, 2024
ef8d162
24PW: Post Purchase Thank You Page - EDS Build - QA Feedback Updates …
hero-dokane Sep 12, 2024
dc21b70
24PW: Post Purchase Thank You Page - EDS Build - QA Feedback Updates …
hero-dokane Sep 13, 2024
f155c78
Fixes for the form issues (#205)
BaDos Sep 16, 2024
d06bf4d
Feature/post purchase thank you page (#206)
hero-dokane Sep 16, 2024
9217777
Sync develop into stage (#207)
BaDos Sep 16, 2024
9c7dc18
24PW: Membership V2 Paid Page - EDS Build (#208)
hero-dokane Sep 17, 2024
e386258
24PW: Membership V2 Paid Page - QA Updates (#209)
hero-dokane Sep 17, 2024
9dc8710
Add page /paid/lost-pet-protection (#194)
hero-dokane Sep 18, 2024
1f49990
24PW: Membership V2 Paid Page - QA Updates (#211)
hero-dokane Sep 18, 2024
95c0d6b
Fix config matching (#212)
BaDos Sep 18, 2024
510df5e
Merge remote-tracking branch 'origin/stage' into develop
BaDos Sep 18, 2024
866cd49
24PW: Lost Pet Recovery Paid Page - EDS Build (#210)
hero-dokane Sep 18, 2024
d53e374
Sync develop into stage (#213)
BaDos Sep 18, 2024
909c0f5
Sync develop into stage (#213) (#214)
BaDos Sep 18, 2024
9f26a83
Fix css (#216)
BaDos Sep 25, 2024
510aede
Merge branch 'develop' into stage
fe-lix- Sep 25, 2024
aaec9fa
24PW: New Template - Paid Blog (#219)
hero-dokane Oct 3, 2024
b65b41b
24PW: Pawpack Page - EDS Build (#215)
hero-dokane Oct 3, 2024
c1a242e
Merge remote-tracking branch 'origin/main' into stage
BaDos Oct 3, 2024
68d13c8
Merge remote-tracking branch 'origin/stage' into develop
BaDos Oct 3, 2024
643de65
Added Shipping of Tag to the summary page (#221)
BaDos Oct 4, 2024
316c81e
Sync develop into stage (#220)
hero-dokane Oct 4, 2024
e00a58f
24PW: Pawpack Page - EDS Build - QA Feedback (#222)
hero-dokane Oct 7, 2024
07d5622
Merge branch stage into develop
hero-dokane Oct 7, 2024
31f4da7
WIP on bugfix/mobile-nav-redirect-visibility (#224)
hero-dokane Oct 7, 2024
2392032
24PW: Pet Insurance - Aggregator Widget (#225)
pgilmore-phi Oct 8, 2024
ba35c4d
Revert decorateButtons function, apply callout cta styling (#226)
hero-dokane Oct 8, 2024
66e50df
Adding thank you page dataLayer object (#230)
pgilmore-phi Oct 11, 2024
47026d2
Back sync develop with main (#234)
pgilmore-phi Oct 15, 2024
d2a50c3
Merge feature pm 568 abandon cart changes into develop for testing (#…
pgilmore-phi Oct 15, 2024
95e36b9
Feature pm 568 abandon cart: update species ID ternary condition (#237)
pgilmore-phi Oct 15, 2024
eafd2e3
Salesforce Abandoned Cart: refactored payload (#239)
pgilmore-phi Oct 16, 2024
4bceb66
Salesforce Abandoned Cart: Add upsert on thank you page (#241)
pgilmore-phi Oct 17, 2024
00210f0
Added condition to load paid blog header fragment based on paid blog …
pgilmore-phi Oct 17, 2024
08b8290
wrap tracking data inside ecommerce object (#242)
pgilmore-phi Oct 17, 2024
0117118
dataLayer updates: add currency to purchase event (#243)
pgilmore-phi Oct 18, 2024
07bddf7
Update header logo svg file and sizes in CSS (#245)
Mao8a Oct 22, 2024
50f61d7
Sync to Dev: Feature/pm 563 dl add to cart (#251)
hero-dokane Oct 23, 2024
2d02414
Sync to DEV: Updating purchase event DL with new requirements (#252)
pgilmore-phi Oct 23, 2024
ea9647f
initial setup for DL on summary
pgilmore-phi Oct 23, 2024
1dbae80
Added items array
pgilmore-phi Oct 23, 2024
5bb1332
PM-564: Adding membership cart summary dataLayer events
pgilmore-phi Oct 24, 2024
b5ef8c8
PM-564: Updated logic to use same key value across all events for name
pgilmore-phi Oct 25, 2024
8495ccc
Merge branch 'release/sprint-22-dataLayer-updates' into feature/PM-56…
pgilmore-phi Oct 25, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions blocks/footer-paid/footer-paid.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import {
decorateLinks,
isCanada,
} from '../../scripts/lib-franklin.js';
import { changeDomain, addCanadaToLinks } from '../../scripts/scripts.js';

/**
* loads and decorates the footer
Expand Down Expand Up @@ -108,6 +109,8 @@ export default async function decorate(block) {
}
});

changeDomain(footer);
addCanadaToLinks(footer);
decorateLinks(footer);
block.append(footer);
}
Expand Down
3 changes: 2 additions & 1 deletion blocks/footer/footer.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import {
isMobile,
isCanada,
} from '../../scripts/lib-franklin.js';
import { changeDomain } from '../../scripts/scripts.js';
import { changeDomain, addCanadaToLinks } from '../../scripts/scripts.js';

const socialNetworks = ['Instagram', 'Twitter', 'Facebook'];

Expand Down Expand Up @@ -154,6 +154,7 @@ export default async function decorate(block) {

decorateIcons(footer);
changeDomain(footer);
addCanadaToLinks(footer);
decorateLinks(footer);
instrumentTrackingEvents(footer);
block.append(footer);
Expand Down
9 changes: 5 additions & 4 deletions blocks/found-pet-report/found-pet-report.js
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ export default async function decorate(block) {
<div class="error-message"></div>
</div>
<div class="wrapper wrapper-info">
<input type="number" id="microchipId" name="microchipId" required placeholder="">
<input type="text" id="microchipId" name="microchipId" required placeholder="" maxlength="15">
<label for="microchipId" class="float-label">Microchip number (up to 15 digits)*</label>
<span class="checkmark"></span>
<div class="error-message"></div>
Expand All @@ -93,7 +93,7 @@ export default async function decorate(block) {
<div class="error-message"></div>
</div>
<div class="wrapper">
<input type="number" id="phoneNumber" name="phoneNumber" placeholder="" maxlength="10">
<input type="tel" id="phoneNumber" name="phoneNumber" placeholder="" maxlength="12">
<label for="phoneNumber" class="float-label">Phone Number*</label>
<span class="checkmark"></span>
<div class="error-message"></div>
Expand Down Expand Up @@ -168,7 +168,8 @@ export default async function decorate(block) {
// REGEX for validators
const AT_LEAST_ONE_SYMBOL_REGEX = /.+/;
const AT_LEAST_ONE_SYMBOL_OR_NUMBER_REGEX = /[0-9\p{P}\p{S}]/u;
const PHONE_OPTIONAL_REGEX = /^\(?(\d{3})\)?[- ]?(\d{3})[- ]?(\d{4})$/;
// const PHONE_OPTIONAL_REGEX = /^\(?(\d{3})\)?[- ]?(\d{3})[- ]?(\d{4})$/;
const PHONE_OPTIONAL_REGEX = /^\d{3}-?\d{3}-?\d{4}$/;
const EMAIL_OPTIONAL_REGEX = /^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;

const states = {
Expand Down Expand Up @@ -275,7 +276,7 @@ export default async function decorate(block) {
validateField(event.target, AT_LEAST_ONE_SYMBOL_REGEX, 'This value is required.');
});
microchipId.addEventListener('blur', (event) => {
validateField(event.target, AT_LEAST_ONE_SYMBOL_OR_NUMBER_REGEX, 'This value is required.');
validateField(event.target, AT_LEAST_ONE_SYMBOL_REGEX, 'This value is required.');
});
ownerName.addEventListener('blur', (event) => {
validateField(event.target, AT_LEAST_ONE_SYMBOL_REGEX, 'This value is required.');
Expand Down
23 changes: 17 additions & 6 deletions blocks/fragment-tabs/fragment-tabs.js
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,21 @@ class Tabs {
}
});

return Promise.all(fetchPromises);
await Promise.all(fetchPromises);

// Create an array of tabs with currentTab first
const tabsInOrder = [currentTab, ...Object.keys(this.tabs).filter((tab) => tab !== currentTab)];

// Create an array of promises for decorateMain and loadBlocks
const decorateAndLoadPromises = tabsInOrder.map(async (tab) => {
const tabDiv = document.getElementById(`tab-content-${tab}`);
if (tabDiv) {
decorateMain(tabDiv);
await loadBlocks(tabDiv);
}
});

await Promise.all(decorateAndLoadPromises);
}

static async createTabContent(tab, content, path) {
Expand All @@ -54,9 +68,6 @@ class Tabs {
};
resetAttributeBase('img', 'src');
resetAttributeBase('source', 'srcset');

decorateMain(tabDiv);
await loadBlocks(tabDiv);
}

async loadTab() {
Expand Down Expand Up @@ -90,15 +101,15 @@ class Tabs {
if (resp.ok) {
content = await resp.text();
}
// We need to preload other tabs so LazyLoad can assign event listeners correctly
await this.preloadTabs();
}
if (content) {
this.preloadedContent[currentTab] = content;
await Tabs.createTabContent(currentTab, content, path);
const tabDiv = document.getElementById(`tab-content-${currentTab}`);
tabDiv.style.display = 'block';
}
// We need to preload other tabs so LazyLoad can assign event listeners correctly
await this.preloadTabs();
}
}
}
Expand Down
8 changes: 6 additions & 2 deletions blocks/header-paid/header-paid.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { jsx } from '../../scripts/scripts.js';
import { jsx, changeDomain, addCanadaToLinks } from '../../scripts/scripts.js';
import { loadFragment } from '../fragment/fragment.js';
import { isCanada } from '../../scripts/lib-franklin.js';
import { isCanada, decorateLinks } from '../../scripts/lib-franklin.js';

// Adding animation for header
function onDomContentLoaded() {
Expand Down Expand Up @@ -46,4 +46,8 @@ export default async function decorate(block) {
// DOM is already loaded
onDomContentLoaded();
}

changeDomain(block);
addCanadaToLinks(block);
decorateLinks(block);
}
43 changes: 3 additions & 40 deletions blocks/header/header.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import {
baseDomain,
} from '../../scripts/lib-franklin.js';
import { trackGTMEvent } from '../../scripts/lib-analytics.js';
import { changeDomain } from '../../scripts/scripts.js';
import { changeDomain, addCanadaToLinks } from '../../scripts/scripts.js';

// let positionY = 0;
// const SCROLL_STEP = 25;
Expand Down Expand Up @@ -342,38 +342,6 @@ function addLinkToLogo(header) {
}
}

/**
* Rewrite links to add Canada to the path
* @param {Element} header The header block element
*/
function addCanadaToLinks(header) {
if (isCanada) {
header.querySelectorAll('a').forEach((anchor) => {
if (anchor.getAttribute('rel') === 'alternate') return;
const url = new URL(anchor.href);
const newUrl = new URL(anchor.href, window.location.origin);
if (url.hostname === window.location.hostname) {
// change only for internal links
newUrl.pathname = `/ca${url.pathname}`;
anchor.href = newUrl.toString();
}
});
}
}

/**
* Adds external link icons to links
* @param {Element} header
*/
function addExternalLinkIcons(header) {
header.querySelectorAll('a').forEach((anchor) => {
const url = new URL(anchor.href);
if (url.hostname !== window.location.hostname) {
anchor.classList.add('icon-external');
}
});
}

/**
* Fetch images from the document based media folder.
* @param {Element} block The header block element
Expand Down Expand Up @@ -447,7 +415,6 @@ export default async function decorate(block) {
navWrapper.className = 'nav-wrapper';
navWrapper.append(nav);
block.append(navWrapper);
addCanadaToLinks(navWrapper);

// Append membership hover content
const membershipsHoverContent = nav.querySelector('.nav-memberships');
Expand All @@ -456,16 +423,12 @@ export default async function decorate(block) {
// Append register hover content
const registerHoverContent = nav.querySelector('.nav-register');
navWrapper.append(registerHoverContent);
decorateLinks(registerHoverContent);

// Add icon to login links
const loginLinks = nav.querySelector('.login');
addExternalLinkIcons(loginLinks);

decorateIcons(nav);
decorateButtons(nav);
changeDomain(block);
decorateLinks(nav);
addCanadaToLinks(block);
decorateLinks(block);
instrumentTrackingEvents(nav);
removeTargetBlank(nav);
addLinkToLogo(nav);
Expand Down
5 changes: 3 additions & 2 deletions scripts/lib-franklin.js
Original file line number Diff line number Diff line change
Expand Up @@ -596,13 +596,14 @@ export function decorateButtons(element) {
*/
export function decorateLinks(element) {
const currentDomain = window.location.hostname;
const domainRegex = new RegExp(`^https?://(www\\.)?${currentDomain.replace(/\./g, '\\.')}`);

element.querySelectorAll('a').forEach((a) => {
const url = new URL(a.href);
// open non-current domain pages in new tab
if (!domainRegex.test(a.href)) {
if (url.hostname !== currentDomain) {
a.target = '_blank';
}

// open tel: links in the same tab
if (/^tel:/.test(a.href)) {
a.target = '_self';
Expand Down
22 changes: 22 additions & 0 deletions scripts/scripts.js
Original file line number Diff line number Diff line change
Expand Up @@ -144,6 +144,27 @@ export function changeDomain(block) {
});
}

/**
* Rewrite links to add Canada to the path
* @param {Element} block The block element
*/
export function addCanadaToLinks(block) {
if (isCanada) {
block.querySelectorAll('a').forEach((anchor) => {
if (anchor.getAttribute('rel') === 'alternate') return;
const url = new URL(anchor.href);
const newUrl = new URL(anchor.href, window.location.origin);
if (url.hostname === window.location.hostname) {
// change only for internal links
if (!url.pathname.startsWith('/ca/')) {
newUrl.pathname = `/ca${url.pathname}`;
anchor.href = newUrl.toString();
}
}
});
}
}

/**
* Decorates the main element.
* @param {Element} main The main element
Expand All @@ -154,6 +175,7 @@ export function decorateMain(main) {
decorateButtons(main);
decorateIcons(main);
changeDomain(main);
addCanadaToLinks(main);
decorateLinks(main);
buildAutoBlocks(main);
decorateSections(main);
Expand Down