Persist pinned item pane section across restarts
This commit is contained in:
parent
a81701d7e7
commit
0f0fec0c64
1 changed files with 30 additions and 3 deletions
|
@ -134,12 +134,13 @@
|
|||
this._pendingPinnedPane = val;
|
||||
val = '';
|
||||
}
|
||||
this.setAttribute('pinnedPane', val);
|
||||
this.setAttribute('pinnedPane', val || '');
|
||||
if (val) {
|
||||
this._pendingPinnedPane = '';
|
||||
this._pinnedPaneMinScrollHeight = this._getMinScrollHeightForPane(this.getEnabledPane(val));
|
||||
}
|
||||
this.sidenav.updatePaneStatus(val);
|
||||
this._savePinnedPane();
|
||||
}
|
||||
|
||||
get _minScrollHeight() {
|
||||
|
@ -218,8 +219,9 @@
|
|||
});
|
||||
this._initIntersectionObserver();
|
||||
|
||||
this._unregisterID = Zotero.Notifier.registerObserver(
|
||||
this._notifierID = Zotero.Notifier.registerObserver(
|
||||
this, ['item', 'itempane', 'tab'], 'ItemDetails');
|
||||
this._prefsObserverID = Zotero.Prefs.registerObserver('pinnedPane', this._restorePinnedPane.bind(this));
|
||||
|
||||
this._disableScrollHandler = false;
|
||||
this._pinnedPaneMinScrollHeight = 0;
|
||||
|
@ -239,7 +241,8 @@
|
|||
this._paneHiddenOb.disconnect();
|
||||
this._intersectionOb.disconnect();
|
||||
|
||||
Zotero.Notifier.unregisterObserver(this._unregisterID);
|
||||
Zotero.Notifier.unregisterObserver(this._notifierID);
|
||||
Zotero.Prefs.unregisterObserver(this._prefsObserverID);
|
||||
}
|
||||
|
||||
async render() {
|
||||
|
@ -263,6 +266,7 @@
|
|||
}
|
||||
|
||||
this.renderCustomSections();
|
||||
this._restorePinnedPane();
|
||||
|
||||
let panes = this.getPanes();
|
||||
for (let box of [this._header, ...panes]) {
|
||||
|
@ -643,6 +647,29 @@
|
|||
this.render();
|
||||
}
|
||||
}
|
||||
|
||||
_savePinnedPane() {
|
||||
if (this.tabType !== 'library') {
|
||||
return;
|
||||
}
|
||||
let pinnedPane = this.pinnedPane;
|
||||
if (pinnedPane) {
|
||||
Zotero.Prefs.set('pinnedPane', pinnedPane);
|
||||
}
|
||||
else {
|
||||
Zotero.Prefs.clear('pinnedPane');
|
||||
}
|
||||
}
|
||||
|
||||
_restorePinnedPane() {
|
||||
if (this.tabType !== 'library') {
|
||||
return;
|
||||
}
|
||||
let pinnedPane = Zotero.Prefs.get('pinnedPane') || '';
|
||||
if (this.pinnedPane !== pinnedPane) {
|
||||
this.pinnedPane = pinnedPane;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
customElements.define("item-details", ItemDetails);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue