Skip to content

Commit a4c36e3

Browse files
authored
Merge pull request #147 from Geta/fix/#72
Fix/#72 Show modal in same position (height) as trigger of modal
2 parents 83b7f8e + fd401b5 commit a4c36e3

File tree

2 files changed

+30
-7
lines changed

2 files changed

+30
-7
lines changed

src/Geta.NotFoundHandler.Admin/Areas/GetaNotFoundHandlerAdmin/Pages/Suggestions.cshtml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@
8181
</div>
8282
</div>
8383
<div class="d-grid gap-2">
84-
<button type="submit" class="btn btn-secondary" data-bs-toggle="modal" data-bs-target="#@referersModalId">
84+
<button type="submit" class="btn btn-secondary modal-trigger" data-bs-toggle="modal" data-bs-target="#@referersModalId">
8585
<span data-feather="file-text"></span> referrers (@item.Referers.Count)
8686
</button>
8787
</div>

src/Geta.NotFoundHandler.Admin/wwwroot/GetaNotFoundHandlerAdmin/js/dashboard.js

Lines changed: 29 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,15 @@
11
/* globals feather:false */
22

3-
(function() {
3+
(function () {
44
'use strict';
55

66
feather.replace();
77

8-
98
function clearInput() {
109
var initiators = document.querySelectorAll('[data-clear]');
11-
initiators.forEach(function(initiator) {
10+
initiators.forEach(function (initiator) {
1211
initiator.addEventListener('click',
13-
function(e) {
12+
function (e) {
1413
var target = e.currentTarget;
1514
var selector = target.getAttribute('data-clear');
1615
var input = document.querySelector(selector);
@@ -21,7 +20,7 @@
2120

2221
function confirmSubmit() {
2322
var initiators = document.querySelectorAll('[data-confirm]');
24-
initiators.forEach(function(initiator) {
23+
initiators.forEach(function (initiator) {
2524
var form = initiator.form;
2625
form.addEventListener('submit',
2726
function (e) {
@@ -36,6 +35,30 @@
3635
});
3736
}
3837

38+
function adjustModalPosition() {
39+
var modalTriggers = document.querySelectorAll('.modal-trigger[data-bs-target]');
40+
modalTriggers.forEach(function (modalTrigger) {
41+
modalTrigger.addEventListener('click', function () {
42+
var dialogSelector = modalTrigger.dataset.bsTarget + " .modal-dialog";
43+
44+
var modalDialog = document.querySelector(dialogSelector);
45+
if (!modalDialog) { return; }
46+
47+
modalDialog.style = "position: fixed;" +
48+
"top: " + modalTrigger.getBoundingClientRect().top + "px;" +
49+
"left: 50%;" +
50+
"min-width: 500px;" +
51+
"transform: translate(-50%, -50%);";
52+
53+
var modalContent = document.querySelector(dialogSelector + " .modal-content");
54+
if(!modalContent) { return; }
55+
56+
modalContent.style = "max-height: 300px;"; // we can't use here vh, due to iframe viewport, viewport is not static when scrollable
57+
});
58+
});
59+
}
60+
3961
clearInput();
4062
confirmSubmit();
41-
})()
63+
adjustModalPosition();
64+
})()

0 commit comments

Comments
 (0)