Skip to content

Commit cacd2eb

Browse files
authored
Fix saving on some pages, replace spinner (hestiacp#3307)
Use alpine event bindings load shortcuts.js after jquery Replace spinner Fix loader
1 parent 8d0ab0a commit cacd2eb

File tree

7 files changed

+35
-150
lines changed

7 files changed

+35
-150
lines changed

web/css/src/themes/default.css

Lines changed: 16 additions & 123 deletions
Original file line numberDiff line numberDiff line change
@@ -2187,132 +2187,25 @@
21872187
/* Spinner
21882188
========================================================================== */
21892189

2190-
.spinner {
2191-
-webkit-mask-box-image: radial-gradient(
2192-
center,
2193-
ellipse farthest-corner,
2194-
rgb(0 0 0 / 100%) 68%,
2195-
rgb(0 0 0 / 0%) 69.5%
2196-
);
2197-
background: #eee;
2198-
size: 20px;
2199-
position: relative;
2200-
clip-path: ellipse(10px 10px at 50% 50%);
2201-
}
2202-
2203-
.spinner-inner {
2204-
position: absolute;
2205-
top: 0;
2206-
left: 0;
2207-
background: transparent;
2208-
border-width: 10px;
2209-
size: 0;
2210-
border-style: solid;
2211-
border-color: transparent;
2212-
border-top-color: rgb(124 124 124 / 100%);
2213-
transform: rotate(-45deg);
2214-
animation: inner 15s linear infinite;
2215-
}
2216-
2217-
.spinner-mask {
2218-
position: absolute;
2219-
top: 0;
2220-
left: 0;
2221-
background: transparent;
2222-
border-width: 10px;
2223-
size: 0;
2224-
border-style: solid;
2225-
border-color: transparent;
2226-
border-top-color: #eee;
2227-
transform: rotate(-45deg);
2228-
animation: mask 15s linear infinite;
2229-
}
2230-
2231-
.spinner-mask::after,
2232-
.spinner-mask-two {
2233-
display: block;
2234-
content: "";
2190+
.fullscreen-loader {
2191+
position: fixed;
2192+
inset: 0;
2193+
display: flex;
2194+
justify-content: center;
2195+
align-items: center;
2196+
padding: 50px;
2197+
background-color: rgb(0 0 0 / 50%);
2198+
font-size: 50px;
2199+
z-index: 9999;
2200+
visibility: hidden;
22352201
opacity: 0;
2236-
position: absolute;
2237-
top: 0;
2238-
left: 0;
2239-
background: transparent;
2240-
border-width: 10px;
2241-
size: 0;
2242-
border-style: solid;
2243-
border-color: transparent;
2244-
border-top-color: rgb(124 124 124 / 100%);
2245-
transform: rotate(45deg);
2246-
animation: mask-two 15s linear infinite;
2202+
transition: opacity 0.2s ease, visibility 0s 0.2s;
22472203
}
22482204

2249-
@keyframes inner {
2250-
0% {
2251-
transform: rotate(-45deg);
2252-
}
2253-
2254-
25% {
2255-
border-left-color: transparent;
2256-
}
2257-
2258-
26% {
2259-
border-left-color: rgb(124 124 124 / 100%);
2260-
}
2261-
2262-
50% {
2263-
border-bottom-color: transparent;
2264-
}
2265-
2266-
51% {
2267-
border-bottom-color: rgb(124 124 124 / 100%);
2268-
}
2269-
2270-
75% {
2271-
border-right-color: transparent;
2272-
}
2273-
2274-
76% {
2275-
border-right-color: rgb(124 124 124 / 100%);
2276-
}
2277-
2278-
100% {
2279-
transform: rotate(315deg);
2280-
border-left-color: rgb(124 124 124 / 100%);
2281-
border-bottom-color: rgb(124 124 124 / 100%);
2282-
border-right-color: rgb(124 124 124 / 100%);
2283-
}
2284-
}
2285-
2286-
@keyframes mask {
2287-
0% {
2288-
transform: rotate(-45deg);
2289-
}
2290-
2291-
75% {
2292-
transform: rotate(-45deg);
2293-
}
2294-
2295-
100% {
2296-
transform: rotate(45deg);
2297-
}
2298-
}
2299-
2300-
@keyframes mask-two {
2301-
0% {
2302-
opacity: 0;
2303-
}
2304-
2305-
25% {
2306-
opacity: 0;
2307-
}
2308-
2309-
26% {
2310-
opacity: 1;
2311-
}
2312-
2313-
100% {
2314-
opacity: 1;
2315-
}
2205+
.fullscreen-loader.show {
2206+
visibility: visible;
2207+
opacity: 1;
2208+
transition: opacity 0.2s ease, visibility 0s 0s;
23162209
}
23172210

23182211
.qr-code {

web/css/themes/default.min.css

Lines changed: 8 additions & 8 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

web/js/init.js

Lines changed: 3 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,8 @@
11
document.addEventListener('DOMContentLoaded', () => {
22
// Refactored
3-
const submitLoader = document.querySelector('.button[form=vstobjects][type=submit]');
4-
if (submitLoader) {
5-
submitLoader.addEventListener('click', (evt) => {
6-
const loaderElement = document.createElement('div');
7-
loaderElement.classList.add('spinner');
8-
loaderElement.innerHTML =
9-
'<div class="spinner-inner"></div><div class="spinner-mask"></div><div class="spinner-mask-two"></div>';
10-
11-
// this both gives an indication that we've clicked and is loading, also prevents double-clicking/clicking-on-something-else while loading.
12-
document.querySelector('.button[form=vstobjects][type=submit]').replaceWith(loaderElement);
13-
document.querySelector('.button').replaceWith('');
14-
// workaround a render bug on Safari (loading icon doesn't render without this)
15-
evt.preventDefault();
16-
document.querySelector('#vstobjects').submit();
17-
});
18-
}
3+
document.querySelector('#vstobjects').addEventListener('submit', () => {
4+
document.querySelector('.fullscreen-loader').classList.add('show');
5+
});
196

207
document.querySelectorAll('.toolbar-right .sort-by').forEach((el) => {
218
el.addEventListener('click', () => $('.context-menu.sort-order').toggle());

web/js/pages/edit_package.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,14 +55,14 @@ App.Listeners.PACKAGE.init = function () {
5555
// Trigger listeners
5656
App.Listeners.PACKAGE.init();
5757
App.Listeners.PACKAGE.checkbox_unlimited_feature();
58-
$('form[name="v_edit_package"]').on('submit', function () {
58+
App.Listeners.PACKAGE.submit = function () {
5959
$('input:disabled').each(function (i, elm) {
6060
$(elm).attr('disabled', false);
6161
if (Alpine.store('globals').isUnlimitedValue($(elm).val())) {
6262
$(elm).val(Alpine.store('globals').UNLIM_VALUE);
6363
}
6464
});
65-
});
65+
};
6666

6767
$(document).ready(function () {
6868
$('.js-add-ns').click(function () {

web/templates/footer.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,10 @@
1717
<p><?= _("LEAVE_PAGE_CONFIRMATION") ?></p>
1818
</div>
1919

20+
<div class="fullscreen-loader">
21+
<i class="fas fa-circle-notch fa-spin"></i>
22+
</div>
23+
2024
<div x-data>
2125
<dialog x-ref="dialog" class="shortcuts animate__animated animate__fadeIn">
2226
<div class="shortcuts-header">

web/templates/includes/js.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
<script defer src="/js/main.js?<?= JS_LATEST_UPDATE ?>"></script>
2-
<script defer src="/js/shortcuts.js?<?= JS_LATEST_UPDATE ?>"></script>
32
<script defer src="/js/vendor/alpine-3.10.5.min.js?<?= JS_LATEST_UPDATE ?>"></script>
43
<script defer src="/js/vendor/jquery-3.6.3.min.js?<?= JS_LATEST_UPDATE ?>"></script>
54
<script defer src="/js/vendor/jquery-ui.min.js?<?= JS_LATEST_UPDATE ?>"></script>
65
<script defer src="/js/vendor/chart.min.js?<?= JS_LATEST_UPDATE ?>"></script>
6+
<script defer src="/js/shortcuts.js?<?= JS_LATEST_UPDATE ?>"></script>
77
<script defer src="/js/events.js?<?= JS_LATEST_UPDATE ?>"></script>
88
<script defer src="/js/init.js?<?= JS_LATEST_UPDATE ?>"></script>
99
<script>

web/templates/pages/edit_package.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
showDatabaseOptions: false,
2626
showSystemOptions: false,
2727
}"
28+
x-on:submit="App.Listeners.PACKAGE.submit()"
2829
id="vstobjects"
2930
name="v_edit_package"
3031
method="post"

0 commit comments

Comments
 (0)