Add kiosk launcher downloads and player URL resolution

This commit is contained in:
2026-08-06 18:51:33 +01:00
parent 59730837ad
commit a4f8a807ff
23 changed files with 621 additions and 71 deletions
+61
View File
@@ -876,6 +876,67 @@
font-size: 0.875rem;
}
.dashboard-launcher-actions {
display: flex;
flex-direction: column;
justify-content: flex-end;
align-items: flex-end;
gap: 0.5rem;
}
.dashboard-launcher-row {
display: flex;
align-items: flex-start;
justify-content: space-between;
gap: 1rem;
}
.dashboard-launcher-copy {
flex: 1 1 auto;
min-width: 0;
}
.dashboard-kiosk-launcher-confirmation {
background: var(--bs-tertiary-bg);
}
.dashboard-kiosk-launcher-confirmation .form-check.form-switch {
display: flex;
align-items: center;
gap: 0.5rem;
padding-left: 0;
}
.dashboard-kiosk-launcher-confirmation .form-check-input {
float: none;
margin: 0;
transform: scale(0.92);
transform-origin: left center;
}
.dashboard-kiosk-launcher-confirmation .form-check-label {
letter-spacing: 0.01em;
line-height: 1.1;
}
.dashboard-launcher-open-button {
min-width: 5rem;
}
.dashboard-kiosk-launcher-download {
text-align: left;
}
.dashboard-kiosk-launcher-download.disabled,
.dashboard-kiosk-launcher-download[aria-disabled='true'] {
pointer-events: none;
opacity: 0.6;
}
.dashboard-launcher-download {
width: 9rem;
}
.screen-command-card .card-header {
padding-top: 1rem;
padding-bottom: 1rem;
@@ -773,10 +773,62 @@
});
}
function initKioskLauncherModal() {
var modal = document.getElementById('dashboard-kiosk-launcher-modal');
if (!modal) {
return;
}
var checkbox = modal.querySelector('[data-kiosk-launcher-confirm]');
var downloadLinks = Array.prototype.slice.call(modal.querySelectorAll('[data-kiosk-launcher-download]'));
function setDownloadsEnabled(enabled) {
downloadLinks.forEach(function (link) {
if (!link) {
return;
}
link.classList.toggle('disabled', !enabled);
link.setAttribute('aria-disabled', enabled ? 'false' : 'true');
if (enabled) {
link.removeAttribute('tabindex');
} else {
link.setAttribute('tabindex', '-1');
}
});
}
function resetModalState() {
if (checkbox) {
checkbox.checked = false;
}
setDownloadsEnabled(false);
}
if (checkbox) {
checkbox.addEventListener('change', function () {
setDownloadsEnabled(Boolean(checkbox.checked));
});
}
modal.addEventListener('show.bs.modal', resetModalState);
modal.addEventListener('hidden.bs.modal', resetModalState);
modal.addEventListener('click', function (event) {
var target = event.target && event.target.closest ? event.target.closest('[data-kiosk-launcher-download]') : null;
if (target && target.classList.contains('disabled')) {
event.preventDefault();
event.stopPropagation();
}
});
resetModalState();
}
window.webHandleDashboardState = handleDashboardState;
initClientRenameHandler();
initClientMoveHandler();
initKioskLauncherModal();
var screenCommandSelect = document.getElementById('screen-command-select');
if (screenCommandSelect) {
updateScreenCommandControls(latestDashboardState || readScreenCommandStateFromDom());