ultimate_turbo_modal 1.3.1 → 1.4.0
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 +4 -4
- data/CHANGELOG.md +9 -0
- data/Gemfile.lock +1 -1
- data/lib/phlex/deferred_render_with_main_content.rb +2 -0
- data/lib/ultimate_turbo_modal/base.rb +129 -1
- data/lib/ultimate_turbo_modal/configuration.rb +2 -0
- data/lib/ultimate_turbo_modal/flavors/tailwind.rb +16 -133
- data/lib/ultimate_turbo_modal/flavors/vanilla.rb +16 -120
- data/lib/ultimate_turbo_modal/helpers/controller_helper.rb +2 -0
- data/lib/ultimate_turbo_modal/helpers/stream_helper.rb +2 -0
- data/lib/ultimate_turbo_modal/helpers/view_helper.rb +2 -0
- data/lib/ultimate_turbo_modal/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8d0ae24b41414e4d9419260f7de74789e488a6e0d0a961749e10c3f6ca70ecaf
|
4
|
+
data.tar.gz: ef606673fe357af79d46760a2c59252da8052fcd6fdbce56fdf264cd015fe460
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: '08ded5bfa9b93dac612301c125c9acd95fae727856154c861971917f3751cd1e11d15f49c9a3b2c00c70ac468c0e19f92a5d69a59158c63d5a826c70322478b2'
|
7
|
+
data.tar.gz: 23641e005618db6c5b09cfe64fbc8dad905930ae38bf04cfefcff722d681fc8423c7d39cb70d1cccb6d11743ff4cc9aa8c94c7b13a96d4e82b488d7e0a8fe240
|
data/CHANGELOG.md
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,7 +1,11 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
class UltimateTurboModal::Base < Phlex::HTML
|
2
4
|
prepend Phlex::DeferredRenderWithMainContent
|
3
5
|
# @param padding [Boolean] Whether to add padding around the modal content
|
4
|
-
# @param close_button [Boolean] Whether to show a close button
|
6
|
+
# @param close_button [Boolean] Whether to show a close button
|
7
|
+
# @param close_button_sr_label [String] Close button label for screen readers
|
8
|
+
# @param close_button_data_action [String] `data-action` attribute for the close button
|
5
9
|
# @param advance [Boolean] Whether to update the browser history when opening and closing the modal
|
6
10
|
# @param header_divider [Boolean] Whether to show a divider between the header and the main content
|
7
11
|
# @param footer_divider [Boolean] Whether to show a divider between the main content and the footer
|
@@ -10,6 +14,8 @@ class UltimateTurboModal::Base < Phlex::HTML
|
|
10
14
|
def initialize(
|
11
15
|
padding: UltimateTurboModal.configuration.padding,
|
12
16
|
close_button: UltimateTurboModal.configuration.close_button,
|
17
|
+
close_button_sr_label: "Close modal",
|
18
|
+
close_button_data_action: "modal#hideModal",
|
13
19
|
advance: UltimateTurboModal.configuration.advance,
|
14
20
|
header: UltimateTurboModal.configuration.header,
|
15
21
|
header_divider: UltimateTurboModal.configuration.header_divider,
|
@@ -18,6 +24,8 @@ class UltimateTurboModal::Base < Phlex::HTML
|
|
18
24
|
)
|
19
25
|
@padding = padding
|
20
26
|
@close_button = close_button
|
27
|
+
@close_button_sr_label = close_button_sr_label
|
28
|
+
@close_button_data_action = close_button_data_action
|
21
29
|
@advance = !!advance
|
22
30
|
@advance_url = advance if advance.present? && advance.is_a?(String)
|
23
31
|
@title = title
|
@@ -93,4 +101,124 @@ class UltimateTurboModal::Base < Phlex::HTML
|
|
93
101
|
def respond_to_missing?(method, include_private = false)
|
94
102
|
self.class.included_modules.any? { |mod| mod.instance_methods.include?(method) } || super
|
95
103
|
end
|
104
|
+
|
105
|
+
## HTML components
|
106
|
+
|
107
|
+
def modal(&)
|
108
|
+
outer_divs do
|
109
|
+
div_content do
|
110
|
+
div_header
|
111
|
+
div_main(&)
|
112
|
+
div_footer if footer?
|
113
|
+
end
|
114
|
+
end
|
115
|
+
end
|
116
|
+
|
117
|
+
def outer_divs(&)
|
118
|
+
div_dialog do
|
119
|
+
div_overlay
|
120
|
+
div_outer do
|
121
|
+
div_inner(&)
|
122
|
+
end
|
123
|
+
end
|
124
|
+
end
|
125
|
+
|
126
|
+
def div_dialog(&)
|
127
|
+
div(id: "modal-container",
|
128
|
+
class: self.class::DIV_DIALOG_CLASSES,
|
129
|
+
role: "dialog",
|
130
|
+
aria: {
|
131
|
+
labeled_by: "modal-title-h",
|
132
|
+
modal: true
|
133
|
+
},
|
134
|
+
data: {
|
135
|
+
controller: "modal",
|
136
|
+
modal_target: "container",
|
137
|
+
modal_advance_url_value: advance_url,
|
138
|
+
action: "turbo:submit-end->modal#submitEnd keyup@window->modal#closeWithKeyboard click@window->modal#outsideModalClicked click->modal#outsideModalClicked",
|
139
|
+
transition_enter: "ease-out duration-100",
|
140
|
+
transition_enter_start: "opacity-0",
|
141
|
+
transition_enter_end: "opacity-100",
|
142
|
+
transition_leave: "ease-in duration-50",
|
143
|
+
transition_leave_start: "opacity-100",
|
144
|
+
transition_leave_end: "opacity-0",
|
145
|
+
padding: padding?.to_s,
|
146
|
+
title: title?.to_s,
|
147
|
+
header: header?.to_s,
|
148
|
+
close_button: close_button?.to_s,
|
149
|
+
header_divider: header_divider?.to_s,
|
150
|
+
footer_divider: footer_divider?.to_s
|
151
|
+
}, &)
|
152
|
+
end
|
153
|
+
|
154
|
+
def div_overlay
|
155
|
+
div(id: "modal-overlay", class: self.class::DIV_OVERLAY_CLASSES)
|
156
|
+
end
|
157
|
+
|
158
|
+
def div_outer(&)
|
159
|
+
div(id: "modal-outer", class: self.class::DIV_OUTER_CLASSES, &)
|
160
|
+
end
|
161
|
+
|
162
|
+
def div_inner(&)
|
163
|
+
div(id: "modal-inner", class: self.class::DIV_INNER_CLASSES, &)
|
164
|
+
end
|
165
|
+
|
166
|
+
def div_content(&)
|
167
|
+
div(id: "modal-content", class: self.class::DIV_CONTENT_CLASSES, data: {modal_target: "content"}, &)
|
168
|
+
end
|
169
|
+
|
170
|
+
def div_main(&)
|
171
|
+
div(id: "modal-main", class: self.class::DIV_MAIN_CLASSES, &)
|
172
|
+
end
|
173
|
+
|
174
|
+
def div_header(&)
|
175
|
+
div(id: "modal-header", class: self.class::DIV_HEADER_CLASSES) do
|
176
|
+
div_title
|
177
|
+
button_close
|
178
|
+
end
|
179
|
+
end
|
180
|
+
|
181
|
+
def div_title
|
182
|
+
div(id: "modal-title", class: self.class::DIV_TITLE_CLASSES) do
|
183
|
+
if @title_block.present?
|
184
|
+
render @title_block
|
185
|
+
else
|
186
|
+
h3(id: "modal-title-h", class: self.class::DIV_TITLE_H_CLASSES) { @title }
|
187
|
+
end
|
188
|
+
end
|
189
|
+
end
|
190
|
+
|
191
|
+
def div_footer
|
192
|
+
div(id: "modal-footer", class: self.class::DIV_FOOTER_CLASSES) do
|
193
|
+
render @footer
|
194
|
+
end
|
195
|
+
end
|
196
|
+
|
197
|
+
def button_close
|
198
|
+
div(id: "modal-close", class: self.class::BUTTON_CLOSE_CLASSES) do
|
199
|
+
close_button_tag do
|
200
|
+
icon_close
|
201
|
+
span(class: self.class::BUTTON_CLOSE_SR_ONLY_CLASSES) { @close_button_sr_label }
|
202
|
+
end
|
203
|
+
end
|
204
|
+
end
|
205
|
+
|
206
|
+
def close_button_tag(&)
|
207
|
+
button(type: "button",
|
208
|
+
aria: {label: "close"},
|
209
|
+
class: self.class::CLOSE_BUTTON_TAG_CLASSES,
|
210
|
+
data: {
|
211
|
+
action: @close_button_data_action
|
212
|
+
}, &)
|
213
|
+
end
|
214
|
+
|
215
|
+
def icon_close
|
216
|
+
svg(class: self.class::ICON_CLOSE_CLASSES, fill: "currentColor", viewBox: "0 0 20 20") do |s|
|
217
|
+
s.path(
|
218
|
+
fill_rule: "evenodd",
|
219
|
+
d: "M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z",
|
220
|
+
clip_rule: "evenodd"
|
221
|
+
)
|
222
|
+
end
|
223
|
+
end
|
96
224
|
end
|
@@ -1,137 +1,20 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module UltimateTurboModal::Flavors
|
2
4
|
class Tailwind < UltimateTurboModal::Base
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
div_dialog do
|
18
|
-
div_overlay
|
19
|
-
div_outer do
|
20
|
-
div_inner(&)
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
24
|
-
|
25
|
-
def div_dialog(&)
|
26
|
-
div(id: "modal-container",
|
27
|
-
class: "relative group",
|
28
|
-
role: "dialog",
|
29
|
-
aria: {
|
30
|
-
labeled_by: "modal-title-h",
|
31
|
-
modal: true
|
32
|
-
},
|
33
|
-
data: {
|
34
|
-
controller: "modal",
|
35
|
-
modal_target: "container",
|
36
|
-
modal_advance_url_value: advance_url,
|
37
|
-
action: "turbo:submit-end->modal#submitEnd keyup@window->modal#closeWithKeyboard click@window->modal#outsideModalClicked click->modal#outsideModalClicked",
|
38
|
-
transition_enter: "ease-out duration-100",
|
39
|
-
transition_enter_start: "opacity-0",
|
40
|
-
transition_enter_end: "opacity-100",
|
41
|
-
transition_leave: "ease-in duration-50",
|
42
|
-
transition_leave_start: "opacity-100",
|
43
|
-
transition_leave_end: "opacity-0",
|
44
|
-
padding: padding?.to_s,
|
45
|
-
title: title?.to_s,
|
46
|
-
header: header?.to_s,
|
47
|
-
close_button: close_button?.to_s,
|
48
|
-
header_divider: header_divider?.to_s,
|
49
|
-
footer_divider: footer_divider?.to_s
|
50
|
-
}, &)
|
51
|
-
end
|
52
|
-
|
53
|
-
def div_overlay
|
54
|
-
div(id: "modal-overlay",
|
55
|
-
class: "fixed inset-0 bg-gray-900 bg-opacity-50 transition-opacity dark:bg-opacity-80 z-40")
|
56
|
-
end
|
57
|
-
|
58
|
-
def div_outer(&)
|
59
|
-
div(id: "modal-outer",
|
60
|
-
class: "fixed inset-0 z-50 overflow-y-auto sm:max-w-[80%] md:max-w-3xl sm:mx-auto m-4", &)
|
61
|
-
end
|
62
|
-
|
63
|
-
def div_inner(&)
|
64
|
-
div(id: "modal-inner",
|
65
|
-
class: "flex min-h-full items-center justify-center p-1 sm:p-4", &)
|
66
|
-
end
|
67
|
-
|
68
|
-
def div_content(&)
|
69
|
-
div(id: "modal-content",
|
70
|
-
class: "relative transform overflow-hidden rounded-lg bg-white text-left shadow transition-all
|
71
|
-
sm:my-8 sm:max-w-3xl dark:bg-gray-800 dark:text-white",
|
72
|
-
data: {modal_target: "content"}, &)
|
73
|
-
end
|
74
|
-
|
75
|
-
def div_main(&)
|
76
|
-
div(id: "modal-main", class: "group-data-[padding=true]:p-4 group-data-[padding=true]:pt-2", &)
|
77
|
-
end
|
78
|
-
|
79
|
-
def header_block
|
80
|
-
return if @header_block.blank?
|
81
|
-
render @header_block
|
82
|
-
nil
|
83
|
-
end
|
84
|
-
|
85
|
-
def div_header(&)
|
86
|
-
div(id: "modal-header", class: "flex justify-between items-center w-full py-4 rounded-t dark:border-gray-600 group-data-[header-divider=true]:border-b group-data-[header=false]:absolute") do
|
87
|
-
div_title
|
88
|
-
button_close
|
89
|
-
end
|
90
|
-
end
|
91
|
-
|
92
|
-
def div_title
|
93
|
-
div(id: "modal-title", class: "pl-4") do
|
94
|
-
if @title_block.present?
|
95
|
-
render @title_block
|
96
|
-
else
|
97
|
-
h3(id: "modal-title-h", class: "group-data-[title=false]:hidden text-lg font-semibold text-gray-900 dark:text-white") { @title }
|
98
|
-
end
|
99
|
-
end
|
100
|
-
end
|
101
|
-
|
102
|
-
def div_footer
|
103
|
-
div(id: "modal-footer", class: "flex p-4 rounded-b dark:border-gray-600 group-data-[footer-divider=true]:border-t") do
|
104
|
-
render @footer
|
105
|
-
end
|
106
|
-
end
|
107
|
-
|
108
|
-
def button_close
|
109
|
-
div(id: "modal-close", class: "mr-4 group-data-[close-button=false]:hidden") do
|
110
|
-
close_button_tag do
|
111
|
-
icon_close
|
112
|
-
span(class: "sr-only") { "Close modal" }
|
113
|
-
end
|
114
|
-
end
|
115
|
-
end
|
116
|
-
|
117
|
-
def close_button_tag(&)
|
118
|
-
button(type: "button",
|
119
|
-
aria: {label: "close"},
|
120
|
-
class: "text-gray-400 bg-transparent hover:bg-gray-200 hover:text-gray-900 rounded-lg text-sm
|
121
|
-
p-1.5 ml-auto inline-flex items-center dark:hover:bg-gray-600 dark:hover:text-white",
|
122
|
-
data: {
|
123
|
-
action: "modal#hideModal"
|
124
|
-
}, &)
|
125
|
-
end
|
126
|
-
|
127
|
-
def icon_close
|
128
|
-
svg(class: "w-5 h-5", fill: "currentColor", viewBox: "0 0 20 20") do |s|
|
129
|
-
s.path(
|
130
|
-
fill_rule: "evenodd",
|
131
|
-
d: "M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z",
|
132
|
-
clip_rule: "evenodd"
|
133
|
-
)
|
134
|
-
end
|
135
|
-
end
|
5
|
+
DIV_DIALOG_CLASSES = "relative group"
|
6
|
+
DIV_OVERLAY_CLASSES = "fixed inset-0 bg-gray-900 bg-opacity-50 transition-opacity dark:bg-opacity-80 z-40"
|
7
|
+
DIV_OUTER_CLASSES = "fixed inset-0 z-50 overflow-y-auto sm:max-w-[80%] md:max-w-3xl sm:mx-auto m-4"
|
8
|
+
DIV_INNER_CLASSES = "flex min-h-full items-center justify-center p-1 sm:p-4"
|
9
|
+
DIV_CONTENT_CLASSES = "relative transform overflow-hidden rounded-lg bg-white text-left shadow transition-all sm:my-8 sm:max-w-3xl dark:bg-gray-800 dark:text-white"
|
10
|
+
DIV_MAIN_CLASSES = "group-data-[padding=true]:p-4 group-data-[padding=true]:pt-2"
|
11
|
+
DIV_HEADER_CLASSES = "flex justify-between items-center w-full py-4 rounded-t dark:border-gray-600 group-data-[header-divider=true]:border-b group-data-[header=false]:absolute"
|
12
|
+
DIV_TITLE_CLASSES = "pl-4"
|
13
|
+
DIV_TITLE_H_CLASSES = "group-data-[title=false]:hidden text-lg font-semibold text-gray-900 dark:text-white"
|
14
|
+
DIV_FOOTER_CLASSES = "flex p-4 rounded-b dark:border-gray-600 group-data-[footer-divider=true]:border-t"
|
15
|
+
BUTTON_CLOSE_CLASSES = "mr-4 group-data-[close-button=false]:hidden"
|
16
|
+
BUTTON_CLOSE_SR_ONLY_CLASSES = "sr-only"
|
17
|
+
CLOSE_BUTTON_TAG_CLASSES = "text-gray-400 bg-transparent hover:bg-gray-200 hover:text-gray-900 rounded-lg text-sm p-1.5 ml-auto inline-flex items-center dark:hover:bg-gray-600 dark:hover:text-white"
|
18
|
+
ICON_CLOSE_CLASSES = "w-5 h-5"
|
136
19
|
end
|
137
20
|
end
|
@@ -1,124 +1,20 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module UltimateTurboModal::Flavors
|
2
4
|
class Vanilla < UltimateTurboModal::Base
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
div_dialog do
|
18
|
-
div_overlay
|
19
|
-
div_outer do
|
20
|
-
div_inner(&)
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
24
|
-
|
25
|
-
def div_dialog(&)
|
26
|
-
div(id: "modal-container",
|
27
|
-
class: "modal-container",
|
28
|
-
role: "dialog",
|
29
|
-
aria: {
|
30
|
-
labeled_by: "modal-title-h",
|
31
|
-
modal: true
|
32
|
-
},
|
33
|
-
data: {
|
34
|
-
controller: "modal",
|
35
|
-
modal_target: "container",
|
36
|
-
modal_advance_url_value: advance_url,
|
37
|
-
action: "turbo:submit-end->modal#submitEnd keyup@window->modal#closeWithKeyboard click@window->modal#outsideModalClicked click->modal#outsideModalClicked",
|
38
|
-
transition_enter: "ease-out duration-100",
|
39
|
-
transition_enter_start: "opacity-0",
|
40
|
-
transition_enter_end: "opacity-100",
|
41
|
-
transition_leave: "ease-in duration-50",
|
42
|
-
transition_leave_start: "opacity-100",
|
43
|
-
transition_leave_end: "opacity-0",
|
44
|
-
padding: padding?.to_s,
|
45
|
-
title: title?.to_s,
|
46
|
-
header: header?.to_s,
|
47
|
-
close_button: close_button?.to_s,
|
48
|
-
header_divider: header_divider?.to_s,
|
49
|
-
footer_divider: footer_divider?.to_s
|
50
|
-
}, &)
|
51
|
-
end
|
52
|
-
|
53
|
-
def div_overlay
|
54
|
-
div(id: "modal-overlay", class: "modal-overlay")
|
55
|
-
end
|
56
|
-
|
57
|
-
def div_outer(&)
|
58
|
-
div(id: "modal-outer", class: "modal-outer", &)
|
59
|
-
end
|
60
|
-
|
61
|
-
def div_inner(&)
|
62
|
-
div(id: "modal-inner", class: "modal-inner", &)
|
63
|
-
end
|
64
|
-
|
65
|
-
def div_content(&)
|
66
|
-
div(id: "modal-content", class: "modal-content", data: {modal_target: "content"}, &)
|
67
|
-
end
|
68
|
-
|
69
|
-
def div_main(&)
|
70
|
-
div(id: "modal-main", class: "modal-main", &)
|
71
|
-
end
|
72
|
-
|
73
|
-
def div_header(&)
|
74
|
-
div(id: "modal-header", class: "modal-header") do
|
75
|
-
div_title
|
76
|
-
button_close
|
77
|
-
end
|
78
|
-
end
|
79
|
-
|
80
|
-
def div_title
|
81
|
-
div(id: "modal-title", class: "modal-title") do
|
82
|
-
if @title_block.present?
|
83
|
-
render @title_block
|
84
|
-
else
|
85
|
-
h3(id: "modal-title-h", class: "modal-title-h") { @title }
|
86
|
-
end
|
87
|
-
end
|
88
|
-
end
|
89
|
-
|
90
|
-
def div_footer
|
91
|
-
div(id: "modal-footer", class: "modal-footer") do
|
92
|
-
render @footer
|
93
|
-
end
|
94
|
-
end
|
95
|
-
|
96
|
-
def button_close
|
97
|
-
div(id: "modal-close", class: "modal-close") do
|
98
|
-
close_button_tag do
|
99
|
-
icon_close
|
100
|
-
span(class: "sr-only") { "Close modal" }
|
101
|
-
end
|
102
|
-
end
|
103
|
-
end
|
104
|
-
|
105
|
-
def close_button_tag(&)
|
106
|
-
button(type: "button",
|
107
|
-
aria: {label: "close"},
|
108
|
-
class: "modal-close-button",
|
109
|
-
data: {
|
110
|
-
action: "modal#hideModal"
|
111
|
-
}, &)
|
112
|
-
end
|
113
|
-
|
114
|
-
def icon_close
|
115
|
-
svg(class: "modal-close-icon", fill: "currentColor", viewBox: "0 0 20 20") do |s|
|
116
|
-
s.path(
|
117
|
-
fill_rule: "evenodd",
|
118
|
-
d: "M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z",
|
119
|
-
clip_rule: "evenodd"
|
120
|
-
)
|
121
|
-
end
|
122
|
-
end
|
5
|
+
DIV_DIALOG_CLASSES = "modal-container"
|
6
|
+
DIV_OVERLAY_CLASSES = "modal-overlay"
|
7
|
+
DIV_OUTER_CLASSES = "modal-outer"
|
8
|
+
DIV_INNER_CLASSES = "modal-inner"
|
9
|
+
DIV_CONTENT_CLASSES = "modal-content"
|
10
|
+
DIV_MAIN_CLASSES = "modal-main"
|
11
|
+
DIV_HEADER_CLASSES = "modal-header"
|
12
|
+
DIV_TITLE_CLASSES = "modal-title"
|
13
|
+
DIV_TITLE_H_CLASSES = "modal-title-h"
|
14
|
+
DIV_FOOTER_CLASSES = "modal-footer"
|
15
|
+
BUTTON_CLOSE_CLASSES = "modal-close"
|
16
|
+
BUTTON_CLOSE_SR_ONLY_CLASSES = "sr-only"
|
17
|
+
CLOSE_BUTTON_TAG_CLASSES = "modal-close-button"
|
18
|
+
ICON_CLOSE_CLASSES = "modal-close-icon"
|
123
19
|
end
|
124
20
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ultimate_turbo_modal
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Carl Mercier
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-11-
|
11
|
+
date: 2023-11-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: phlex-rails
|