Skip to content

Commit f46a1db

Browse files
committed
improvement: do not use active admin dialog, just use html5 dialog
1 parent b65cc90 commit f46a1db

File tree

5 files changed

+79
-9
lines changed

5 files changed

+79
-9
lines changed

app/admin/fmu.rb

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -117,16 +117,28 @@ def download_shapefiles(fmus)
117117
end
118118
if resource.geojson
119119
row(:geojson) do
120-
div id: "geojson_modal", style: "display: none;" do
121-
resource.geojson
120+
dialog id: "geojson_modal" do
121+
html5_header do
122+
strong Fmu.human_attribute_name(:geojson)
123+
button "Close", class: "button close-dialog-button"
124+
end
125+
div do
126+
resource.geojson
127+
end
122128
end
123-
link_to t("active_admin.view"), "javascript:void(0)", onclick: "$('#geojson_modal').dialog({ modal: true, dialogClass: 'custom_dialog' })"
129+
link_to t("active_admin.view"), "javascript:void(0)", onclick: "document.querySelector('#geojson_modal').showModal()"
124130
end
125131
row(:properties) do
126-
div id: "properties_modal", style: "display: none;" do
127-
resource.properties
132+
dialog id: "properties_modal" do
133+
html5_header do
134+
strong Fmu.human_attribute_name(:properties)
135+
button "Close", class: "button close-dialog-button"
136+
end
137+
div do
138+
resource.properties
139+
end
128140
end
129-
link_to t("active_admin.view"), "javascript:void(0)", onclick: "$('#properties_modal').dialog({ modal: true, dialogClass: 'custom_dialog' })"
141+
link_to t("active_admin.view"), "javascript:void(0)", onclick: "document.querySelector('#properties_modal').showModal()"
130142
end
131143
end
132144
row :created_at

app/assets/javascripts/active_admin.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
//= require activeadmin_addons/all
33
//= require access_control
44
//= require editor
5+
//= require dialog
56
//= require users
67
//= require rod
78
//= require fmu

app/assets/javascripts/dialog.js

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
function initializeDialog() {
2+
document.querySelectorAll("dialog").forEach((dialog) => {
3+
// close when clicking outside
4+
dialog.addEventListener("mousedown", (event) => {
5+
// Check if the click is on the backdrop (not the dialog content)
6+
const dialogDimensions = dialog.getBoundingClientRect();
7+
if (
8+
event.clientX < dialogDimensions.left ||
9+
event.clientX > dialogDimensions.right ||
10+
event.clientY < dialogDimensions.top ||
11+
event.clientY > dialogDimensions.bottom
12+
) {
13+
dialog.close();
14+
}
15+
});
16+
17+
dialog.querySelector(".close-dialog-button").addEventListener("click", () => {
18+
dialog.close();
19+
});
20+
});
21+
}
22+
23+
document.addEventListener("DOMContentLoaded", initializeDialog);

app/assets/stylesheets/active_admin.scss

Lines changed: 25 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -214,13 +214,35 @@ body.active_admin {
214214
display: none;
215215
}
216216

217-
.custom_dialog {
218-
width: unset !important;
217+
dialog {
218+
border: 0;
219+
padding: 0;
220+
219221
max-height: 80vh;
220222
max-width: 70vw;
221223
overflow-y: auto;
222224

223-
.ui-dialog-content {
225+
header {
226+
display: flex;
227+
background-color: $panelHeaderBck;
228+
color: #fff;
229+
justify-content: space-between;
230+
align-items: center;
224231
padding: 10px;
232+
border-bottom: 1px solid #ccc;
233+
234+
.close-dialog {
235+
cursor: pointer;
236+
font-size: 1.5em;
237+
}
225238
}
239+
240+
> div {
241+
padding: 10px;
242+
}
243+
}
244+
245+
dialog::backdrop {
246+
backdrop-filter: blur(2px);
226247
}
248+

config/initializers/active_admin.rb

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -369,6 +369,18 @@ def set_admin_locale
369369
app.view_factory.register header: CustomAdminHeader
370370
end
371371

372+
module Arbre
373+
module HTML
374+
class Dialog < Tag
375+
builder_method :dialog
376+
end
377+
378+
class Header < Tag
379+
builder_method :html5_header
380+
end
381+
end
382+
end
383+
372384
# activeadmin_addons update in 1.10 introduced a bug where it raises Formtastic::UnsupportedEnumCollection for multiple selects with enum values
373385
# not sure why it should be raising not supported but it works so for me it's supported just fine
374386
# https://github.com/platanus/activeadmin_addons/pull/442/files#diff-811ca221eee9c4866653114961ac21bcd0398557bb402c60f149be506c385a8eR3

0 commit comments

Comments
 (0)