rails_modal_manager 1.0.25 → 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:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: f2c7e861b06a7a378dc21ec988f07b02b0935149b585852976b0ceb50e0cd8d3
|
|
4
|
+
data.tar.gz: c010260ca9554d2b1d5cd308db92b02594bfeb35b344a9cd3c6c26c51eaec788
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: bdbfdfaa241ed600e1dbe673f66f5fc41b7b4decb89647f8a372dcf8d6e668020593189029036b0e9ebb99e0b7943b363269bcca9dfb0aef4d2279d716018f7a
|
|
7
|
+
data.tar.gz: e1f8b65751b40fec5a418f7a9063690429fd6c046b01d7793e6e88032110bf2a7a52a5e3fffcb29254985aa01358b24abf8906cb362d65e83b6b9cea5d4345b0
|
|
@@ -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
|
-
//
|
|
199
|
-
if (
|
|
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
|
}
|
|
@@ -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
|
<%
|