Bug 1886362 - Fix about:welcome import button not collapsing on panel click r=mconley,reusable-components-reviewers,migration-reviewers,mstriemer
Differential Revision: https://phabricator.services.mozilla.com/D206946
This commit is contained in:
@@ -333,6 +333,7 @@ export class MigrationWizard extends HTMLElement {
|
||||
this.#getPermissionsButton.addEventListener("click", this);
|
||||
|
||||
this.#browserProfileSelector.addEventListener("click", this);
|
||||
this.#browserProfileSelector.addEventListener("mousedown", this);
|
||||
this.#resourceTypeList = shadow.querySelector("#resource-type-list");
|
||||
this.#resourceTypeList.addEventListener("change", this);
|
||||
|
||||
@@ -1396,107 +1397,122 @@ export class MigrationWizard extends HTMLElement {
|
||||
}
|
||||
}
|
||||
|
||||
#handleClickEvent(event) {
|
||||
if (
|
||||
event.target == this.#importButton ||
|
||||
event.target == this.#importFromFileButton
|
||||
) {
|
||||
this.#doImport();
|
||||
} else if (
|
||||
event.target.classList.contains("cancel-close") ||
|
||||
event.target.classList.contains("finish-button")
|
||||
) {
|
||||
this.dispatchEvent(
|
||||
new CustomEvent("MigrationWizard:Close", { bubbles: true })
|
||||
);
|
||||
} else if (
|
||||
event.currentTarget == this.#browserProfileSelectorList &&
|
||||
event.target != this.#browserProfileSelectorList
|
||||
) {
|
||||
this.#onBrowserProfileSelectionChanged(event.target);
|
||||
// If the user selected a file migration type from the selector, we'll
|
||||
// help the user out by immediately starting the file migration flow,
|
||||
// rather than waiting for them to click the "Select File".
|
||||
if (
|
||||
event.target.getAttribute("type") ==
|
||||
MigrationWizardConstants.MIGRATOR_TYPES.FILE
|
||||
) {
|
||||
this.#doImport();
|
||||
}
|
||||
} else if (event.target == this.#safariPermissionButton) {
|
||||
this.#requestSafariPermissions();
|
||||
} else if (event.currentTarget == this.#resourceSummary) {
|
||||
this.#expandedDetails = true;
|
||||
} else if (event.target == this.#chooseImportFromFile) {
|
||||
this.dispatchEvent(
|
||||
new CustomEvent("MigrationWizard:RequestState", {
|
||||
bubbles: true,
|
||||
detail: {
|
||||
allowOnlyFileMigrators: true,
|
||||
},
|
||||
})
|
||||
);
|
||||
} else if (event.target == this.#safariPasswordImportSkipButton) {
|
||||
// If the user chose to skip importing passwords from Safari, we
|
||||
// programmatically uncheck the PASSWORDS resource type and re-request
|
||||
// import.
|
||||
let checkbox = this.#shadowRoot.querySelector(
|
||||
`label[data-resource-type="${MigrationWizardConstants.DISPLAYED_RESOURCE_TYPES.PASSWORDS}"]`
|
||||
).control;
|
||||
checkbox.checked = false;
|
||||
|
||||
// If there are no other checked checkboxes, go back to the selection
|
||||
// screen.
|
||||
let checked = this.#shadowRoot.querySelectorAll(
|
||||
`label[data-resource-type] > input:checked`
|
||||
).length;
|
||||
|
||||
if (!checked) {
|
||||
this.requestState();
|
||||
} else {
|
||||
this.#doImport();
|
||||
}
|
||||
} else if (event.target == this.#safariPasswordImportSelectButton) {
|
||||
this.#selectSafariPasswordFile();
|
||||
} else if (event.target == this.#extensionsSuccessLink) {
|
||||
this.dispatchEvent(
|
||||
new CustomEvent("MigrationWizard:OpenAboutAddons", {
|
||||
bubbles: true,
|
||||
})
|
||||
);
|
||||
event.preventDefault();
|
||||
} else if (event.target == this.#getPermissionsButton) {
|
||||
this.#getPermissions();
|
||||
}
|
||||
}
|
||||
|
||||
#handleChangeEvent(event) {
|
||||
if (event.target == this.#browserProfileSelector) {
|
||||
this.#onBrowserProfileSelectionChanged();
|
||||
} else if (event.target == this.#selectAllCheckbox) {
|
||||
let checkboxes = this.#shadowRoot.querySelectorAll(
|
||||
'label[data-resource-type]:not([hidden]) > input[type="checkbox"]'
|
||||
);
|
||||
for (let checkbox of checkboxes) {
|
||||
checkbox.checked = this.#selectAllCheckbox.checked;
|
||||
}
|
||||
this.#displaySelectedResources();
|
||||
} else {
|
||||
let checkboxes = this.#shadowRoot.querySelectorAll(
|
||||
'label[data-resource-type]:not([hidden]) > input[type="checkbox"]'
|
||||
);
|
||||
|
||||
let allVisibleChecked = Array.from(checkboxes).every(checkbox => {
|
||||
return checkbox.checked;
|
||||
});
|
||||
|
||||
this.#selectAllCheckbox.checked = allVisibleChecked;
|
||||
this.#displaySelectedResources();
|
||||
}
|
||||
}
|
||||
|
||||
handleEvent(event) {
|
||||
if (
|
||||
event.target == this.#browserProfileSelector &&
|
||||
(event.type == "mousedown" ||
|
||||
(event.type == "click" &&
|
||||
event.mozInputSource == MouseEvent.MOZ_SOURCE_KEYBOARD))
|
||||
) {
|
||||
this.#browserProfileSelectorList.toggle(event);
|
||||
return;
|
||||
}
|
||||
switch (event.type) {
|
||||
case "click": {
|
||||
if (
|
||||
event.target == this.#importButton ||
|
||||
event.target == this.#importFromFileButton
|
||||
) {
|
||||
this.#doImport();
|
||||
} else if (
|
||||
event.target.classList.contains("cancel-close") ||
|
||||
event.target.classList.contains("finish-button")
|
||||
) {
|
||||
this.dispatchEvent(
|
||||
new CustomEvent("MigrationWizard:Close", { bubbles: true })
|
||||
);
|
||||
} else if (event.target == this.#browserProfileSelector) {
|
||||
this.#browserProfileSelectorList.show(event);
|
||||
} else if (
|
||||
event.currentTarget == this.#browserProfileSelectorList &&
|
||||
event.target != this.#browserProfileSelectorList
|
||||
) {
|
||||
this.#onBrowserProfileSelectionChanged(event.target);
|
||||
// If the user selected a file migration type from the selector, we'll
|
||||
// help the user out by immediately starting the file migration flow,
|
||||
// rather than waiting for them to click the "Select File".
|
||||
if (
|
||||
event.target.getAttribute("type") ==
|
||||
MigrationWizardConstants.MIGRATOR_TYPES.FILE
|
||||
) {
|
||||
this.#doImport();
|
||||
}
|
||||
} else if (event.target == this.#safariPermissionButton) {
|
||||
this.#requestSafariPermissions();
|
||||
} else if (event.currentTarget == this.#resourceSummary) {
|
||||
this.#expandedDetails = true;
|
||||
} else if (event.target == this.#chooseImportFromFile) {
|
||||
this.dispatchEvent(
|
||||
new CustomEvent("MigrationWizard:RequestState", {
|
||||
bubbles: true,
|
||||
detail: {
|
||||
allowOnlyFileMigrators: true,
|
||||
},
|
||||
})
|
||||
);
|
||||
} else if (event.target == this.#safariPasswordImportSkipButton) {
|
||||
// If the user chose to skip importing passwords from Safari, we
|
||||
// programmatically uncheck the PASSWORDS resource type and re-request
|
||||
// import.
|
||||
let checkbox = this.#shadowRoot.querySelector(
|
||||
`label[data-resource-type="${MigrationWizardConstants.DISPLAYED_RESOURCE_TYPES.PASSWORDS}"]`
|
||||
).control;
|
||||
checkbox.checked = false;
|
||||
|
||||
// If there are no other checked checkboxes, go back to the selection
|
||||
// screen.
|
||||
let checked = this.#shadowRoot.querySelectorAll(
|
||||
`label[data-resource-type] > input:checked`
|
||||
).length;
|
||||
|
||||
if (!checked) {
|
||||
this.requestState();
|
||||
} else {
|
||||
this.#doImport();
|
||||
}
|
||||
} else if (event.target == this.#safariPasswordImportSelectButton) {
|
||||
this.#selectSafariPasswordFile();
|
||||
} else if (event.target == this.#extensionsSuccessLink) {
|
||||
this.dispatchEvent(
|
||||
new CustomEvent("MigrationWizard:OpenAboutAddons", {
|
||||
bubbles: true,
|
||||
})
|
||||
);
|
||||
event.preventDefault();
|
||||
} else if (event.target == this.#getPermissionsButton) {
|
||||
this.#getPermissions();
|
||||
}
|
||||
this.#handleClickEvent(event);
|
||||
break;
|
||||
}
|
||||
case "change": {
|
||||
if (event.target == this.#browserProfileSelector) {
|
||||
this.#onBrowserProfileSelectionChanged();
|
||||
} else if (event.target == this.#selectAllCheckbox) {
|
||||
let checkboxes = this.#shadowRoot.querySelectorAll(
|
||||
'label[data-resource-type]:not([hidden]) > input[type="checkbox"]'
|
||||
);
|
||||
for (let checkbox of checkboxes) {
|
||||
checkbox.checked = this.#selectAllCheckbox.checked;
|
||||
}
|
||||
this.#displaySelectedResources();
|
||||
} else {
|
||||
let checkboxes = this.#shadowRoot.querySelectorAll(
|
||||
'label[data-resource-type]:not([hidden]) > input[type="checkbox"]'
|
||||
);
|
||||
|
||||
let allVisibleChecked = Array.from(checkboxes).every(checkbox => {
|
||||
return checkbox.checked;
|
||||
});
|
||||
|
||||
this.#selectAllCheckbox.checked = allVisibleChecked;
|
||||
this.#displaySelectedResources();
|
||||
}
|
||||
this.#handleChangeEvent(event);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user