Compare commits
2 Commits
539b1c13a0
...
ad8f32f8b8
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ad8f32f8b8 | ||
|
|
3788561bb7 |
4
package-lock.json
generated
4
package-lock.json
generated
@ -1,12 +1,12 @@
|
|||||||
{
|
{
|
||||||
"name": "twitch-vod-manager",
|
"name": "twitch-vod-manager",
|
||||||
"version": "4.6.135",
|
"version": "4.6.136",
|
||||||
"lockfileVersion": 3,
|
"lockfileVersion": 3,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "twitch-vod-manager",
|
"name": "twitch-vod-manager",
|
||||||
"version": "4.6.135",
|
"version": "4.6.136",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"axios": "^1.6.0",
|
"axios": "^1.6.0",
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "twitch-vod-manager",
|
"name": "twitch-vod-manager",
|
||||||
"version": "4.6.135",
|
"version": "4.6.136",
|
||||||
"description": "Twitch VOD Manager - Download Twitch VODs easily",
|
"description": "Twitch VOD Manager - Download Twitch VODs easily",
|
||||||
"main": "dist/main.js",
|
"main": "dist/main.js",
|
||||||
"author": "xRangerDE",
|
"author": "xRangerDE",
|
||||||
|
|||||||
@ -260,7 +260,7 @@
|
|||||||
<div class="content">
|
<div class="content">
|
||||||
<!-- VODs Tab -->
|
<!-- VODs Tab -->
|
||||||
<div class="tab-content active" id="vodsTab">
|
<div class="tab-content active" id="vodsTab">
|
||||||
<div id="streamerProfileHeader" class="streamer-profile-header" style="display:none;"></div>
|
<div id="streamerProfileHeader" class="streamer-profile-header is-hidden"></div>
|
||||||
<div class="vod-filter-row">
|
<div class="vod-filter-row">
|
||||||
<input type="text" id="vodFilterInput" class="filter-input" placeholder="Filter VODs..." oninput="onVodFilterInput()">
|
<input type="text" id="vodFilterInput" class="filter-input" placeholder="Filter VODs..." oninput="onVodFilterInput()">
|
||||||
<button type="button" id="vodFilterClearBtn" class="btn-close is-hidden" onclick="clearVodFilter()" title="Clear filter">x</button>
|
<button type="button" id="vodFilterClearBtn" class="btn-close is-hidden" onclick="clearVodFilter()" title="Clear filter">x</button>
|
||||||
|
|||||||
@ -30,16 +30,15 @@ function formatLastStreamAgo(iso: string | null): string {
|
|||||||
function hideStreamerProfileHeader(): void {
|
function hideStreamerProfileHeader(): void {
|
||||||
const el = document.getElementById('streamerProfileHeader');
|
const el = document.getElementById('streamerProfileHeader');
|
||||||
if (!el) return;
|
if (!el) return;
|
||||||
el.style.display = 'none';
|
el.classList.add('is-hidden');
|
||||||
applyHtml(el, '');
|
applyHtml(el, '');
|
||||||
}
|
}
|
||||||
|
|
||||||
function renderStreamerProfileSkeleton(login: string): void {
|
function renderStreamerProfileSkeleton(login: string): void {
|
||||||
const el = document.getElementById('streamerProfileHeader');
|
const el = document.getElementById('streamerProfileHeader');
|
||||||
if (!el) return;
|
if (!el) return;
|
||||||
el.classList.remove('is-live');
|
el.classList.remove('is-live', 'is-hidden');
|
||||||
el.classList.add('streamer-profile-skeleton');
|
el.classList.add('streamer-profile-skeleton');
|
||||||
el.style.display = 'flex';
|
|
||||||
applyHtml(el, `
|
applyHtml(el, `
|
||||||
<div class="streamer-profile-skel-block avatar"></div>
|
<div class="streamer-profile-skel-block avatar"></div>
|
||||||
<div class="streamer-profile-body">
|
<div class="streamer-profile-body">
|
||||||
@ -60,9 +59,8 @@ function renderStreamerProfileSkeleton(login: string): void {
|
|||||||
function renderStreamerProfileCard(p: StreamerProfile): void {
|
function renderStreamerProfileCard(p: StreamerProfile): void {
|
||||||
const el = document.getElementById('streamerProfileHeader');
|
const el = document.getElementById('streamerProfileHeader');
|
||||||
if (!el) return;
|
if (!el) return;
|
||||||
el.classList.remove('streamer-profile-skeleton');
|
el.classList.remove('streamer-profile-skeleton', 'is-hidden');
|
||||||
if (p.isLive) el.classList.add('is-live'); else el.classList.remove('is-live');
|
if (p.isLive) el.classList.add('is-live'); else el.classList.remove('is-live');
|
||||||
el.style.display = 'block';
|
|
||||||
|
|
||||||
const safeLogin = p.login.replace(/'/g, "\\'");
|
const safeLogin = p.login.replace(/'/g, "\\'");
|
||||||
const safeUrl = p.twitchUrl.replace(/'/g, "\\'");
|
const safeUrl = p.twitchUrl.replace(/'/g, "\\'");
|
||||||
|
|||||||
@ -4257,7 +4257,14 @@ input[type="number"]::-webkit-outer-spin-button {
|
|||||||
box-shadow: 0 0 0 2px rgba(255, 255, 255, 0.85), 0 0 0 4px rgba(145, 70, 255, 0.55);
|
box-shadow: 0 0 0 2px rgba(255, 255, 255, 0.85), 0 0 0 4px rgba(145, 70, 255, 0.55);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Skeleton loading state */
|
/* Skeleton loading state — switches the profile-header from its
|
||||||
|
regular block layout to a flex row so the avatar + body sit
|
||||||
|
side-by-side. The element itself was previously flipped via inline
|
||||||
|
.style.display='flex' in renderStreamerProfileSkeleton(). */
|
||||||
|
.streamer-profile-skeleton {
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
|
||||||
.streamer-profile-skeleton .streamer-profile-skel-block {
|
.streamer-profile-skeleton .streamer-profile-skel-block {
|
||||||
background: linear-gradient(90deg, var(--bg-elevated) 0%, rgba(255,255,255,0.06) 50%, var(--bg-elevated) 100%);
|
background: linear-gradient(90deg, var(--bg-elevated) 0%, rgba(255,255,255,0.06) 50%, var(--bg-elevated) 100%);
|
||||||
background-size: 200% 100%;
|
background-size: 200% 100%;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user