summaryrefslogtreecommitdiffstats
path: root/browser/components/shopping/content/shopping-sidebar.js
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-19 00:47:55 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-19 00:47:55 +0000
commit26a029d407be480d791972afb5975cf62c9360a6 (patch)
treef435a8308119effd964b339f76abb83a57c29483 /browser/components/shopping/content/shopping-sidebar.js
parentInitial commit. (diff)
downloadfirefox-26a029d407be480d791972afb5975cf62c9360a6.tar.xz
firefox-26a029d407be480d791972afb5975cf62c9360a6.zip
Adding upstream version 124.0.1.upstream/124.0.1
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'browser/components/shopping/content/shopping-sidebar.js')
-rw-r--r--browser/components/shopping/content/shopping-sidebar.js80
1 files changed, 80 insertions, 0 deletions
diff --git a/browser/components/shopping/content/shopping-sidebar.js b/browser/components/shopping/content/shopping-sidebar.js
new file mode 100644
index 0000000000..6873682ae6
--- /dev/null
+++ b/browser/components/shopping/content/shopping-sidebar.js
@@ -0,0 +1,80 @@
+/* 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/. */
+
+"use strict";
+
+// This is loaded into chrome windows with the subscript loader. Wrap in
+// a block to prevent accidentally leaking globals onto `window`.
+{
+ const SHOPPING_SIDEBAR_WIDTH_PREF =
+ "browser.shopping.experience2023.sidebarWidth";
+ class ShoppingSidebar extends MozXULElement {
+ #browser;
+ #initialized;
+
+ static get markup() {
+ return `
+ <browser
+ class="shopping-sidebar"
+ autoscroll="false"
+ disablefullscreen="true"
+ disablehistory="true"
+ flex="1"
+ message="true"
+ manualactiveness="true"
+ remoteType="privilegedabout"
+ maychangeremoteness="true"
+ remote="true"
+ src="about:shoppingsidebar"
+ type="content"
+ />
+ `;
+ }
+
+ constructor() {
+ super();
+ }
+
+ connectedCallback() {
+ this.initialize();
+ }
+
+ initialize() {
+ if (this.#initialized) {
+ return;
+ }
+ this.resizeObserverFn = this.resizeObserverFn.bind(this);
+ this.appendChild(this.constructor.fragment);
+ this.#browser = this.querySelector(".shopping-sidebar");
+
+ let previousWidth = Services.prefs.getIntPref(
+ SHOPPING_SIDEBAR_WIDTH_PREF,
+ 0
+ );
+ if (previousWidth > 0) {
+ this.style.width = `${previousWidth}px`;
+ }
+
+ this.resizeObserver = new ResizeObserver(this.resizeObserverFn);
+ this.resizeObserver.observe(this);
+
+ this.#initialized = true;
+ }
+
+ resizeObserverFn(entries) {
+ for (let entry of entries) {
+ if (entry.contentBoxSize[0].inlineSize < 1) {
+ return;
+ }
+
+ Services.prefs.setIntPref(
+ SHOPPING_SIDEBAR_WIDTH_PREF,
+ entry.contentBoxSize[0].inlineSize
+ );
+ }
+ }
+ }
+
+ customElements.define("shopping-sidebar", ShoppingSidebar);
+}