mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-11-12 06:08:24 +02:00
Bug 1378770 - [Onboarding] Sync tour should proceed with only valid Email. r=mossop
MozReview-Commit-ID: BBHPrZPlZzN --HG-- extra : rebase_source : 1f554bed559b0ab5c6e39561070b2c57f383f690
This commit is contained in:
parent
e5b6464756
commit
124429537c
2 changed files with 12 additions and 3 deletions
|
|
@ -26,7 +26,9 @@ document.getElementById("onboarding-overlay")
|
||||||
break;
|
break;
|
||||||
case "onboarding-tour-sync-button":
|
case "onboarding-tour-sync-button":
|
||||||
let emailInput = document.getElementById("onboarding-tour-sync-email-input");
|
let emailInput = document.getElementById("onboarding-tour-sync-email-input");
|
||||||
Mozilla.UITour.showFirefoxAccounts(null, emailInput.value);
|
if (emailInput.checkValidity()) {
|
||||||
|
Mozilla.UITour.showFirefoxAccounts(null, emailInput.value);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case "onboarding-overlay":
|
case "onboarding-overlay":
|
||||||
case "onboarding-overlay-close-btn":
|
case "onboarding-overlay-close-btn":
|
||||||
|
|
|
||||||
|
|
@ -193,6 +193,11 @@ var onboardingTourset = {
|
||||||
getPage(win, bundle) {
|
getPage(win, bundle) {
|
||||||
let div = win.document.createElement("div");
|
let div = win.document.createElement("div");
|
||||||
div.classList.add("onboarding-no-button");
|
div.classList.add("onboarding-no-button");
|
||||||
|
// The email validation pattern used in the form comes from IETF rfc5321,
|
||||||
|
// which is identical to server-side checker of Firefox Account. See
|
||||||
|
// discussion in https://bugzilla.mozilla.org/show_bug.cgi?id=1378770#c6
|
||||||
|
// for detail.
|
||||||
|
let emailRegex = "^[\\w.!#$%&’*+\\/=?^`{|}~-]{1,64}@[a-z\\d](?:[a-z\\d-]{0,253}[a-z\\d])?(?:\\.[a-z\\d](?:[a-z\\d-]{0,253}[a-z\\d])?)+$";
|
||||||
div.innerHTML = `
|
div.innerHTML = `
|
||||||
<section class="onboarding-tour-description">
|
<section class="onboarding-tour-description">
|
||||||
<h1 data-l10n-id="onboarding.tour-sync.title2"></h1>
|
<h1 data-l10n-id="onboarding.tour-sync.title2"></h1>
|
||||||
|
|
@ -202,14 +207,16 @@ var onboardingTourset = {
|
||||||
<form>
|
<form>
|
||||||
<h3 data-l10n-id="onboarding.tour-sync.form.title"></h3>
|
<h3 data-l10n-id="onboarding.tour-sync.form.title"></h3>
|
||||||
<p data-l10n-id="onboarding.tour-sync.form.description"></p>
|
<p data-l10n-id="onboarding.tour-sync.form.description"></p>
|
||||||
<input id="onboarding-tour-sync-email-input" type="text"></input><br />
|
<input id="onboarding-tour-sync-email-input" type="email" required="true"></input><br />
|
||||||
<button id="onboarding-tour-sync-button" class="onboarding-tour-action-button" data-l10n-id="onboarding.tour-sync.button"></button>
|
<button id="onboarding-tour-sync-button" class="onboarding-tour-action-button" data-l10n-id="onboarding.tour-sync.button"></button>
|
||||||
</form>
|
</form>
|
||||||
<img src="resource://onboarding/img/figure_sync.svg" />
|
<img src="resource://onboarding/img/figure_sync.svg" />
|
||||||
</section>
|
</section>
|
||||||
`;
|
`;
|
||||||
div.querySelector("#onboarding-tour-sync-email-input").placeholder =
|
let emailInput = div.querySelector("#onboarding-tour-sync-email-input");
|
||||||
|
emailInput.placeholder =
|
||||||
bundle.GetStringFromName("onboarding.tour-sync.email-input.placeholder");
|
bundle.GetStringFromName("onboarding.tour-sync.email-input.placeholder");
|
||||||
|
emailInput.pattern = emailRegex;
|
||||||
return div;
|
return div;
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue