rails_modal_manager 1.0.24 → 1.0.26

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: 20a3082c01f5672140d5d5028efe3eb49a013b4892c1523e58f157184efe16d1
4
- data.tar.gz: aa605039f5d7feb3f7366666762590e05a46b84221a40fbe99d34eea67c7d21d
3
+ metadata.gz: f2c7e861b06a7a378dc21ec988f07b02b0935149b585852976b0ceb50e0cd8d3
4
+ data.tar.gz: c010260ca9554d2b1d5cd308db92b02594bfeb35b344a9cd3c6c26c51eaec788
5
5
  SHA512:
6
- metadata.gz: 13e2cb60176ef87fba7a9d3cdd6a4b248e5e84501f42c30d96f40d4f5816227158a883fb090e2da11187783f8054bf3988be6d32724e27b2522f97dc93327c7a
7
- data.tar.gz: 4cd5e6987e846d764f98efd0cdccc03457f9d7c29159278b5ce94d814f72865682274f0576a929fb0851f45b7200a8596cb220d2264d6a1b2977f927a2ae48d0
6
+ metadata.gz: bdbfdfaa241ed600e1dbe673f66f5fc41b7b4decb89647f8a372dcf8d6e668020593189029036b0e9ebb99e0b7943b363269bcca9dfb0aef4d2279d716018f7a
7
+ data.tar.gz: e1f8b65751b40fec5a418f7a9063690429fd6c046b01d7793e6e88032110bf2a7a52a5e3fffcb29254985aa01358b24abf8906cb362d65e83b6b9cea5d4345b0
data/README.md CHANGED
@@ -3,7 +3,7 @@
3
3
  Rails 애플리케이션을 위한 고급 모달 매니저입니다.
4
4
  `@reshacs/react-modal-manager`에서 포팅되었습니다.
5
5
 
6
- **Version:** 1.0.18
6
+ **Version:** 1.0.24
7
7
 
8
8
  ---
9
9
 
@@ -789,6 +789,20 @@ MIT License
789
789
 
790
790
  ## 변경 이력
791
791
 
792
+ ### v1.0.24
793
+
794
+ - **`submenu_groups` 옵션 추가**: 사이드바의 각 메뉴에 서로 다른 서브메뉴 그룹을 연결 가능
795
+ - **`forceReloadActive` 이벤트 발생**: 사이드바 전환 시 `rmm-submenu:itemSelect` 이벤트 발생 (`source: 'forceReload'`)
796
+ - **커스텀 콘텐츠 로딩 가이드 추가**: 커스텀 컨트롤러에서 콘텐츠 로딩 시 권장 패턴 문서화
797
+
798
+ ### v1.0.23
799
+
800
+ - **`title` 속성 추가**: 사이드바 아이템과 서브메뉴 아이템에 마우스 오버 툴팁 지원
801
+
802
+ ### v1.0.19 ~ v1.0.22
803
+
804
+ - 내부 개선 및 버그 수정
805
+
792
806
  ### v1.0.18
793
807
 
794
808
  - **모달 리셋 시 콘텐츠 동기화**: `resetToFirst()` 호출 시 `itemSelect` 이벤트 발생하도록 개선
@@ -28,6 +28,8 @@ export default class extends Controller {
28
28
  collapsed: { type: Boolean, default: false },
29
29
  // 모바일+최대화 상태에서의 사이드바 모드: 'expanded' | 'icons' | 'hidden'
30
30
  sidebarMode: { type: String, default: 'icons' },
31
+ // 이미 선택된 항목을 다시 클릭했을 때 이벤트 발생 여부
32
+ refreshOnReselect: { type: Boolean, default: true },
31
33
  }
32
34
 
33
35
  connect() {
@@ -194,9 +196,24 @@ export default class extends Controller {
194
196
 
195
197
  const item = e.currentTarget
196
198
  const itemId = item.dataset.itemId
199
+ const isReselect = itemId === this.currentItemId
197
200
 
198
- // Skip if already active
199
- if (itemId === this.currentItemId) {
201
+ // 이미 선택된 항목을 다시 클릭한 경우
202
+ if (isReselect) {
203
+ // refreshOnReselect가 false면 무시
204
+ if (!this.refreshOnReselectValue) {
205
+ return
206
+ }
207
+ // refreshOnReselect가 true면 이벤트만 발생 (UI 변경 없음)
208
+ this.dispatch('itemSelect', {
209
+ detail: {
210
+ modalId: this.modalIdValue,
211
+ itemId: item.dataset.itemId,
212
+ itemLabel: item.dataset.itemLabel,
213
+ hasSubmenu: !!item.dataset.submenuId,
214
+ isReselect: true,
215
+ }
216
+ })
200
217
  return
201
218
  }
202
219
 
@@ -234,6 +251,7 @@ export default class extends Controller {
234
251
  itemId: item.dataset.itemId,
235
252
  itemLabel: item.dataset.itemLabel,
236
253
  hasSubmenu: !!item.dataset.submenuId,
254
+ isReselect: false,
237
255
  }
238
256
  })
239
257
  }
@@ -85,18 +85,7 @@
85
85
  </div>
86
86
 
87
87
  <div class="rmm-header-controls">
88
- <% if minimizable %>
89
- <button type="button"
90
- class="rmm-header-btn"
91
- data-action="click->rmm-header#minimize"
92
- title="최소화">
93
- <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
94
- <line x1="5" y1="12" x2="19" y2="12"></line>
95
- </svg>
96
- </button>
97
- <% end %>
98
-
99
- <%# Custom header buttons (before size controls) %>
88
+ <%# Custom header buttons (before minimize) %>
100
89
  <% header_buttons.each do |btn| %>
101
90
  <%
102
91
  btn_id = btn[:id]
@@ -126,6 +115,17 @@
126
115
  </button>
127
116
  <% end %>
128
117
 
118
+ <% if minimizable %>
119
+ <button type="button"
120
+ class="rmm-header-btn"
121
+ data-action="click->rmm-header#minimize"
122
+ title="최소화">
123
+ <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
124
+ <line x1="5" y1="12" x2="19" y2="12"></line>
125
+ </svg>
126
+ </button>
127
+ <% end %>
128
+
129
129
  <% if show_size_controls %>
130
130
  <%# Default size button - restores to original size %>
131
131
  <button type="button"
@@ -5,6 +5,7 @@
5
5
  modal_id: String - The modal ID
6
6
  items: Array - Menu items [{id:, label:, icon_svg:, badge:, active:, disabled:, panel_id:, submenu_id:, title:}]
7
7
  collapsed: Boolean - Initially collapsed (default: false)
8
+ refresh_on_reselect: Boolean - Dispatch event when clicking already selected item (default: true)
8
9
 
9
10
  Item options:
10
11
  - panel_id: ID of the content panel to show when selected
@@ -15,6 +16,7 @@
15
16
  modal_id ||= ""
16
17
  items ||= []
17
18
  collapsed ||= false
19
+ refresh_on_reselect = true if local_assigns[:refresh_on_reselect].nil?
18
20
 
19
21
  sidebar_classes = ["rmm-sidebar"]
20
22
  sidebar_classes << "rmm-sidebar-collapsed" if collapsed
@@ -22,7 +24,8 @@
22
24
  <div class="<%= sidebar_classes.join(' ') %>"
23
25
  data-controller="rmm-sidebar"
24
26
  data-rmm-sidebar-modal-id-value="<%= modal_id %>"
25
- data-rmm-sidebar-collapsed-value="<%= collapsed %>">
27
+ data-rmm-sidebar-collapsed-value="<%= collapsed %>"
28
+ data-rmm-sidebar-refresh-on-reselect-value="<%= refresh_on_reselect %>">
26
29
  <nav class="rmm-sidebar-nav" data-rmm-sidebar-target="nav">
27
30
  <% items.each do |item| %>
28
31
  <%
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module RailsModalManager
4
- VERSION = "1.0.24"
4
+ VERSION = "1.0.26"
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.24
4
+ version: 1.0.26
5
5
  platform: ruby
6
6
  authors:
7
7
  - reshacs