rails_modal_manager 1.0.10 → 1.0.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: d269701f2b02e0fdfff0588481955d72e01a4bf9482ee6490fa4cfafa16d8485
|
|
4
|
+
data.tar.gz: 24b240b6fe17cd7a3b10aa645b345fb53627c4549dc6f2fdd5123004fad48ef0
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 02c3088c03fe707a6bf7281d0c9e2efc659a0e0f3ca6cc72740908b0530d6198686b74b6004fc4dff47f9aba20b81a967b675b12a6c676f37d08d164ed51916b
|
|
7
|
+
data.tar.gz: aad4172168208e0c032782497b73b549e90bd352dcd3558c1ca8a0a33f55ad5dae0204b75b4edf3fb18c007ffe72c2caf93c73af6c33960327c8056c645af30a
|
data/README.md
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Rails 애플리케이션을 위한 고급 모달 매니저입니다.
|
|
4
4
|
`@reshacs/react-modal-manager`에서 포팅되었습니다.
|
|
5
5
|
|
|
6
|
-
**Version:** 1.0.
|
|
6
|
+
**Version:** 1.0.11
|
|
7
7
|
|
|
8
8
|
---
|
|
9
9
|
|
|
@@ -784,3 +784,16 @@ MIT License
|
|
|
784
784
|
## 기여
|
|
785
785
|
|
|
786
786
|
버그 리포트와 기능 제안은 GitHub Issues를 이용해주세요.
|
|
787
|
+
|
|
788
|
+
---
|
|
789
|
+
|
|
790
|
+
## 변경 이력
|
|
791
|
+
|
|
792
|
+
### v1.0.11
|
|
793
|
+
|
|
794
|
+
- **사이드바-서브메뉴 AJAX 연동 개선**: 사이드바 메뉴 전환 시 활성화된 서브메뉴의 콘텐츠가 자동으로 로드되도록 개선
|
|
795
|
+
- **서브메뉴 컨트롤러에 `forceReloadActive()` 메서드 추가**: 외부에서 현재 활성 탭의 콘텐츠를 강제로 다시 로드할 수 있는 메서드 추가
|
|
796
|
+
|
|
797
|
+
### v1.0.10
|
|
798
|
+
|
|
799
|
+
- 초기 안정화 버전
|
|
@@ -154,22 +154,36 @@ export default class extends Controller {
|
|
|
154
154
|
if (targetSubmenu) {
|
|
155
155
|
targetSubmenu.classList.add('rmm-submenu-group-active')
|
|
156
156
|
|
|
157
|
-
//
|
|
158
|
-
const
|
|
159
|
-
if (
|
|
160
|
-
const activeSubmenuItem =
|
|
157
|
+
// Find the submenu controller element
|
|
158
|
+
const submenuElement = targetSubmenu.querySelector('[data-controller*="rmm-submenu"]')
|
|
159
|
+
if (submenuElement) {
|
|
160
|
+
const activeSubmenuItem = submenuElement.querySelector('.rmm-submenu-item.rmm-active')
|
|
161
|
+
|
|
161
162
|
if (!activeSubmenuItem) {
|
|
162
|
-
|
|
163
|
+
// No active item - click the first one
|
|
164
|
+
const firstItem = submenuElement.querySelector('.rmm-submenu-item')
|
|
163
165
|
if (firstItem) {
|
|
164
166
|
firstItem.click()
|
|
165
167
|
}
|
|
166
168
|
} else {
|
|
167
|
-
//
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
169
|
+
// Active item exists - trigger content reload
|
|
170
|
+
// Get the Stimulus controller instance and call forceReloadActive
|
|
171
|
+
const submenuController = this.application.getControllerForElementAndIdentifier(
|
|
172
|
+
submenuElement,
|
|
173
|
+
'rmm-submenu'
|
|
174
|
+
)
|
|
175
|
+
|
|
176
|
+
if (submenuController && typeof submenuController.forceReloadActive === 'function') {
|
|
177
|
+
// Use the new forceReloadActive method
|
|
178
|
+
submenuController.forceReloadActive()
|
|
179
|
+
} else {
|
|
180
|
+
// Fallback: handle preload mode panel switching
|
|
181
|
+
const panelId = activeSubmenuItem.dataset.panelId
|
|
182
|
+
if (panelId) {
|
|
183
|
+
modal.querySelectorAll('.rmm-tab-panel').forEach(p => p.classList.remove('rmm-tab-panel-active'))
|
|
184
|
+
const panel = modal.querySelector(`#${panelId}`)
|
|
185
|
+
if (panel) panel.classList.add('rmm-tab-panel-active')
|
|
186
|
+
}
|
|
173
187
|
}
|
|
174
188
|
}
|
|
175
189
|
}
|
|
@@ -55,9 +55,10 @@ export default class extends Controller {
|
|
|
55
55
|
selectItem(e) {
|
|
56
56
|
const item = e.currentTarget
|
|
57
57
|
const itemId = item.dataset.itemId
|
|
58
|
+
const forceReload = e.detail?.forceReload || false
|
|
58
59
|
|
|
59
|
-
// Skip if already active
|
|
60
|
-
if (itemId === this.currentItemId) {
|
|
60
|
+
// Skip if already active (unless force reload is requested)
|
|
61
|
+
if (itemId === this.currentItemId && !forceReload) {
|
|
61
62
|
return
|
|
62
63
|
}
|
|
63
64
|
|
|
@@ -88,6 +89,21 @@ export default class extends Controller {
|
|
|
88
89
|
})
|
|
89
90
|
}
|
|
90
91
|
|
|
92
|
+
/**
|
|
93
|
+
* Force reload the active submenu item's content
|
|
94
|
+
* Called by sidebar controller when switching sidebar items
|
|
95
|
+
*/
|
|
96
|
+
forceReloadActive() {
|
|
97
|
+
const activeItem = this.element.querySelector('.rmm-submenu-item.rmm-active')
|
|
98
|
+
if (activeItem) {
|
|
99
|
+
if (this.loadModeValue === 'ajax') {
|
|
100
|
+
this.loadAjaxContent(activeItem)
|
|
101
|
+
} else {
|
|
102
|
+
this.switchPanel(activeItem)
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
|
|
91
107
|
/**
|
|
92
108
|
* Preload mode: Switch between pre-rendered panels
|
|
93
109
|
*/
|