summaryrefslogtreecommitdiffstats
path: root/comm/mail/components/unifiedtoolbar/content/items/space-button.mjs
diff options
context:
space:
mode:
Diffstat (limited to 'comm/mail/components/unifiedtoolbar/content/items/space-button.mjs')
-rw-r--r--comm/mail/components/unifiedtoolbar/content/items/space-button.mjs41
1 files changed, 41 insertions, 0 deletions
diff --git a/comm/mail/components/unifiedtoolbar/content/items/space-button.mjs b/comm/mail/components/unifiedtoolbar/content/items/space-button.mjs
new file mode 100644
index 0000000000..75c23592bf
--- /dev/null
+++ b/comm/mail/components/unifiedtoolbar/content/items/space-button.mjs
@@ -0,0 +1,41 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, you can obtain one at http://mozilla.org/MPL/2.0/. */
+
+import { UnifiedToolbarButton } from "chrome://messenger/content/unifiedtoolbar/unified-toolbar-button.mjs";
+
+/* import-globals-from ../../../../base/content/spacesToolbar.js */
+
+/**
+ * Unified toolbar button that opens a specific space.
+ * Attributes:
+ * - space: Space to open when the button is activated
+ */
+class SpaceButton extends UnifiedToolbarButton {
+ connectedCallback() {
+ super.connectedCallback();
+ const spaceId = this.getAttribute("space");
+ const space = gSpacesToolbar.spaces.find(
+ spaceDetails => spaceDetails.name == spaceId
+ );
+ if (space.button.classList.contains("has-badge")) {
+ const badgeContainer = space.button.querySelector(
+ ".spaces-badge-container"
+ );
+ this.badge = badgeContainer.textContent;
+ }
+ }
+
+ handleClick = event => {
+ const spaceId = this.getAttribute("space");
+ const space = gSpacesToolbar.spaces.find(
+ spaceDetails => spaceDetails.name == spaceId
+ );
+ gSpacesToolbar.openSpace(document.getElementById("tabmail"), space);
+ event.preventDefault();
+ event.stopPropagation();
+ };
+}
+customElements.define("space-button", SpaceButton, {
+ extends: "button",
+});