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: 02b2719477c30526ae7b96cff7a9f494855477568ec11279bb48c6009370b3f7
4
- data.tar.gz: d88ca69cd83c2db76f2b5c9132bb652aeacdddbcb2afdc69189b9688e35081ed
3
+ metadata.gz: d269701f2b02e0fdfff0588481955d72e01a4bf9482ee6490fa4cfafa16d8485
4
+ data.tar.gz: 24b240b6fe17cd7a3b10aa645b345fb53627c4549dc6f2fdd5123004fad48ef0
5
5
  SHA512:
6
- metadata.gz: f82434fb170f66af13e95d040dfaf4c381360c345d6cbf55e70022624733e808e2aa422eb9d4dcdd862428578f5cc217b232b5d7ecf2145493671c8b6cc02939
7
- data.tar.gz: 5e1c4d5fe59746d264a1a99ae443f383943a30e31aa660eda90527eeff99cd81f60e120cc46eee5cf633e92c58d32e7a267cc52374a07623268fd54ebf562e11
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.10
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
- // Auto-select first submenu item if none is active
158
- const submenuController = targetSubmenu.querySelector('[data-controller="rmm-submenu"]')
159
- if (submenuController) {
160
- const activeSubmenuItem = submenuController.querySelector('.rmm-submenu-item.rmm-active')
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
- const firstItem = submenuController.querySelector('.rmm-submenu-item')
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
- // Ensure the panel for active submenu item is shown
168
- const panelId = activeSubmenuItem.dataset.panelId
169
- if (panelId) {
170
- modal.querySelectorAll('.rmm-tab-panel').forEach(p => p.classList.remove('rmm-tab-panel-active'))
171
- const panel = modal.querySelector(`#${panelId}`)
172
- if (panel) panel.classList.add('rmm-tab-panel-active')
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
  */
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module RailsModalManager
4
- VERSION = "1.0.10"
4
+ VERSION = "1.0.11"
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rails_modal_manager
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.10
4
+ version: 1.0.11
5
5
  platform: ruby
6
6
  authors:
7
7
  - reshacs