Skip to content

Commit 36cbeea

Browse files
feederbox826elkorol
andcommitted
refactor scenePageRememberStates
- rename folder for consistency - use csUiLib - fix inconsitencies with div toggler - remove double lookup with rbEventKey - don't handle active class, let react do it's job Co-authored-by: Elkorol <[email protected]>
1 parent ad21862 commit 36cbeea

File tree

3 files changed

+52
-0
lines changed

3 files changed

+52
-0
lines changed
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
# Scene Page Remember States
2+
3+
This plugin uses local storage to rememebr what is the current active nav tab of the scenes' detail panel, and upon any page load activate the last remembered active nav tab.
4+
5+
It also rembers the active collapsed state of the divider button and upon page load if it's true, it will automatically collapse the divider.
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
function sceneDivider(tabs) {
2+
const dividerBtn = document.querySelector(".scene-divider > button");
3+
4+
// check if tab is currently collapsed, and if it should be
5+
const isCollapsed = () => tabs.classList.contains("collapsed")
6+
const storedCollapse = localStorage.getItem("remember-state-divider") == "true"
7+
// if it should be, but is not, collapse
8+
if (storedCollapse && !isCollapsed()) dividerBtn.click()
9+
10+
// add listener to change desired state based on current collapsed state
11+
dividerBtn.addEventListener("click", () => {
12+
// isCollapsed does not update in time
13+
const newState = !isCollapsed()
14+
localStorage.setItem("remember-state-divider", newState)
15+
})
16+
}
17+
18+
function navTab() {
19+
const detailsNav = document.querySelector(".nav-tabs")
20+
21+
// Check local storage for entries
22+
let activeKey = localStorage.getItem("remember-state-navtab");
23+
24+
// click on desired active key if defined
25+
if (activeKey) {
26+
detailsNav.querySelector(`a[data-rb-event-key="${activeKey}"]`).click()
27+
}
28+
29+
// add event listener
30+
detailsNav.querySelectorAll("a").forEach(href => {
31+
href.addEventListener("click", function() {
32+
localStorage.setItem("remember-state-navtab", this.dataset.rbEventKey)
33+
})
34+
})
35+
}
36+
37+
csLib.PathElementListener("/scenes/", ".nav-tabs", navTab)
38+
csLib.PathElementListener("/scenes/", ".scene-tabs", sceneDivider)
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
name: Scene Page Remember States
2+
description: Uses local storage to remember the state of the scene page detail panel nav bar and activate it on page load. Remembers collapse state of the divider.
3+
url:
4+
version: 0.2
5+
ui:
6+
requires:
7+
- CommunityScriptsUILibrary
8+
javascript:
9+
- scenesPageRememberStates.js

0 commit comments

Comments
 (0)