try to make page more responsive
This commit is contained in:
1 parent
53b87a4e03
commit
ac864d96e3
1 file changed
+73
-5
+73
-5
@@ -272,6 +272,53 @@
|
|||||||
color: #0066cc;
|
color: #0066cc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Verhindert abgeschnittene Inhalte, wenn die Karte
|
||||||
|
* höher als der Viewport ist ("center" schneidet oben ab).
|
||||||
|
*/
|
||||||
|
@supports (align-items: safe center) {
|
||||||
|
body {
|
||||||
|
align-items: safe center;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Schmale Bildschirme: Navbar umbrechen lassen,
|
||||||
|
* Abstände und Logo verkleinern.
|
||||||
|
*/
|
||||||
|
@media (max-width: 600px) {
|
||||||
|
body {
|
||||||
|
align-items: flex-start;
|
||||||
|
padding-top: 130px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.navbar {
|
||||||
|
top: 8px;
|
||||||
|
left: 4%;
|
||||||
|
width: 92%;
|
||||||
|
padding: 10px;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
.logo-bar img {
|
||||||
|
height: 40px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.nav-actions {
|
||||||
|
flex-wrap: wrap;
|
||||||
|
justify-content: flex-end;
|
||||||
|
}
|
||||||
|
|
||||||
|
button, .button {
|
||||||
|
padding: 10px 14px;
|
||||||
|
font-size: 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.card {
|
||||||
|
padding: 20px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@keyframes spin {
|
@keyframes spin {
|
||||||
to {
|
to {
|
||||||
transform: rotate(360deg);
|
transform: rotate(360deg);
|
||||||
@@ -1737,7 +1784,7 @@
|
|||||||
function generateICS(meetingName, description, startTime, endTime, organizer) {
|
function generateICS(meetingName, description, startTime, endTime, organizer) {
|
||||||
/* Generate a unique room name from the meeting name */
|
/* Generate a unique room name from the meeting name */
|
||||||
const roomName = createRoomName(meetingName);
|
const roomName = createRoomName(meetingName);
|
||||||
const meetingUrl = `https://${CONFIG.jitsiLauncher}/launch.html?room=${encodeURIComponent(roomName)}`;
|
const meetingUrl = createLaunchUrl(roomName);
|
||||||
|
|
||||||
/* Format dates for ICS */
|
/* Format dates for ICS */
|
||||||
const formatICSDate = (date) => {
|
const formatICSDate = (date) => {
|
||||||
@@ -1935,6 +1982,24 @@ END:VCALENDAR`;
|
|||||||
* ============================================================
|
* ============================================================
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Zeitspanne, nach der der "Kopiert!"-Text zum
|
||||||
|
* normalen Button-Label zurückkehrt.
|
||||||
|
*/
|
||||||
|
const COPY_RESET_MS = 2000;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Launch-URL, die das Meeting im Jitsi-Client öffnet.
|
||||||
|
*
|
||||||
|
* Beispiel:
|
||||||
|
*
|
||||||
|
* "projekt-kickoff" ergibt
|
||||||
|
* https://meet.bnvb.eu/launch.html?room=projekt-kickoff
|
||||||
|
*/
|
||||||
|
function createLaunchUrl(roomName) {
|
||||||
|
return `https://${CONFIG.jitsiLauncher}/launch.html?room=${encodeURIComponent(roomName)}`;
|
||||||
|
}
|
||||||
|
|
||||||
function createAdhocLink() {
|
function createAdhocLink() {
|
||||||
const meetingName = meetingNameInput.value.trim();
|
const meetingName = meetingNameInput.value.trim();
|
||||||
|
|
||||||
@@ -1943,13 +2008,14 @@ END:VCALENDAR`;
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!ROOM_PATTERN.test(createRoomName(meetingName))) {
|
const roomName = createRoomName(meetingName);
|
||||||
|
|
||||||
|
if (!ROOM_PATTERN.test(roomName)) {
|
||||||
alert(getTranslation('creator.meetingNameInvalid') || 'Meeting name may only contain letters, numbers and hyphens');
|
alert(getTranslation('creator.meetingNameInvalid') || 'Meeting name may only contain letters, numbers and hyphens');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const roomName = createRoomName(meetingName);
|
const url = createLaunchUrl(roomName);
|
||||||
const url = `https://${CONFIG.jitsiLauncher}/launch.html?room=${encodeURIComponent(roomName)}`;
|
|
||||||
|
|
||||||
adhocLink.href = url;
|
adhocLink.href = url;
|
||||||
adhocLink.textContent = url;
|
adhocLink.textContent = url;
|
||||||
@@ -1961,6 +2027,7 @@ END:VCALENDAR`;
|
|||||||
async function copyAdhocLink() {
|
async function copyAdhocLink() {
|
||||||
const url = adhocLink.href;
|
const url = adhocLink.href;
|
||||||
|
|
||||||
|
/* Clipboard-API, mit Fallback für ältere Browser */
|
||||||
try {
|
try {
|
||||||
await navigator.clipboard.writeText(url);
|
await navigator.clipboard.writeText(url);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
@@ -1972,10 +2039,11 @@ END:VCALENDAR`;
|
|||||||
document.body.removeChild(input);
|
document.body.removeChild(input);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Kurzes Feedback, dann zurück zum normalen Label */
|
||||||
copyAdhocLinkButton.textContent = getTranslation('creator.copiedLabel') || 'Copied!';
|
copyAdhocLinkButton.textContent = getTranslation('creator.copiedLabel') || 'Copied!';
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
copyAdhocLinkButton.textContent = getTranslation('creator.copyLinkButton') || 'Copy Link';
|
copyAdhocLinkButton.textContent = getTranslation('creator.copyLinkButton') || 'Copy Link';
|
||||||
}, 2000);
|
}, COPY_RESET_MS);
|
||||||
}
|
}
|
||||||
|
|
||||||
function cancelCreateMeeting() {
|
function cancelCreateMeeting() {
|
||||||
|
|||||||
Reference in new issue
Block a user