Compare commits
2 Commits
2f71b13de6
...
1cec74fc78
| Author | SHA1 | Date | |
|---|---|---|---|
|
1cec74fc78
|
|||
|
626f4b039a
|
@@ -28,7 +28,8 @@ jobs:
|
|||||||
port: 22
|
port: 22
|
||||||
script: |
|
script: |
|
||||||
cd /usr/share/webapps/homepage
|
cd /usr/share/webapps/homepage
|
||||||
git pull --force https://Alexander:${{ secrets.homepage_gitea_token }}@git.bocken.org/Alexander/homepage
|
git remote set-url origin https://Alexander:${{ secrets.homepage_gitea_token }}@git.bocken.org/Alexander/homepage
|
||||||
|
git fetch origin
|
||||||
git reset --hard origin/master
|
git reset --hard origin/master
|
||||||
npm run build
|
npm run build
|
||||||
sudo systemctl restart homepage.service
|
sudo systemctl restart homepage.service
|
||||||
|
|||||||
@@ -10,8 +10,7 @@
|
|||||||
} = $props();
|
} = $props();
|
||||||
|
|
||||||
const isEnglish = $derived(lang === 'en');
|
const isEnglish = $derived(lang === 'en');
|
||||||
const label = $derived(isEnglish ? 'Favorites Only' : 'Nur Favoriten');
|
const label = $derived(isEnglish ? 'Favorites' : 'Favoriten');
|
||||||
const loginRequiredLabel = $derived(isEnglish ? 'Login required' : 'Anmeldung erforderlich');
|
|
||||||
|
|
||||||
let checked = $state(enabled);
|
let checked = $state(enabled);
|
||||||
|
|
||||||
@@ -57,24 +56,13 @@
|
|||||||
text-align: left;
|
text-align: left;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.login-required {
|
|
||||||
font-size: 0.85rem;
|
|
||||||
color: var(--nord3);
|
|
||||||
font-style: italic;
|
|
||||||
padding: 0.5rem 0;
|
|
||||||
}
|
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<div class="filter-section">
|
<div class="filter-section">
|
||||||
<div class="filter-label">{label}</div>
|
<div class="filter-label">{label}</div>
|
||||||
{#if isLoggedIn}
|
<Toggle
|
||||||
<Toggle
|
bind:checked={checked}
|
||||||
bind:checked={checked}
|
label=""
|
||||||
label=""
|
on:change={handleChange}
|
||||||
on:change={handleChange}
|
/>
|
||||||
/>
|
|
||||||
{:else}
|
|
||||||
<div class="login-required">{loginRequiredLabel}</div>
|
|
||||||
{/if}
|
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -79,11 +79,18 @@
|
|||||||
|
|
||||||
.filter-panel {
|
.filter-panel {
|
||||||
display: grid;
|
display: grid;
|
||||||
grid-template-columns: 120px 120px 1fr 160px 140px;
|
|
||||||
gap: 2rem;
|
gap: 2rem;
|
||||||
align-items: start;
|
align-items: start;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.filter-panel.with-favorites {
|
||||||
|
grid-template-columns: 120px 120px 1fr 160px 90px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.filter-panel.without-favorites {
|
||||||
|
grid-template-columns: 120px 120px 1fr 160px;
|
||||||
|
}
|
||||||
|
|
||||||
@media (max-width: 968px) {
|
@media (max-width: 968px) {
|
||||||
.toggle-button {
|
.toggle-button {
|
||||||
display: flex;
|
display: flex;
|
||||||
@@ -125,7 +132,7 @@
|
|||||||
<span class="arrow" class:open={filtersOpen}>▼</span>
|
<span class="arrow" class:open={filtersOpen}>▼</span>
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
<div class="filter-panel" class:open={filtersOpen}>
|
<div class="filter-panel" class:open={filtersOpen} class:with-favorites={isLoggedIn} class:without-favorites={!isLoggedIn}>
|
||||||
<CategoryFilter
|
<CategoryFilter
|
||||||
categories={availableCategories}
|
categories={availableCategories}
|
||||||
selected={selectedCategory}
|
selected={selectedCategory}
|
||||||
@@ -154,11 +161,13 @@
|
|||||||
{months}
|
{months}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<FavoritesFilter
|
{#if isLoggedIn}
|
||||||
enabled={selectedFavoritesOnly}
|
<FavoritesFilter
|
||||||
onToggle={onFavoritesToggle}
|
enabled={selectedFavoritesOnly}
|
||||||
{isLoggedIn}
|
onToggle={onFavoritesToggle}
|
||||||
{lang}
|
{isLoggedIn}
|
||||||
/>
|
{lang}
|
||||||
|
/>
|
||||||
|
{/if}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -27,6 +27,7 @@
|
|||||||
});
|
});
|
||||||
|
|
||||||
let searchQuery = $state('');
|
let searchQuery = $state('');
|
||||||
|
let showFilters = $state(false);
|
||||||
|
|
||||||
// Filter data loaded from APIs
|
// Filter data loaded from APIs
|
||||||
let availableTags = $state([]);
|
let availableTags = $state([]);
|
||||||
@@ -246,6 +247,9 @@
|
|||||||
clearButton.style.display = 'flex';
|
clearButton.style.display = 'flex';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Enable filter panel for JS-enabled browsers
|
||||||
|
showFilters = true;
|
||||||
|
|
||||||
// Get initial search value from URL if present
|
// Get initial search value from URL if present
|
||||||
const urlParams = new URLSearchParams(window.location.search);
|
const urlParams = new URLSearchParams(window.location.search);
|
||||||
const urlQuery = urlParams.get('q');
|
const urlQuery = urlParams.get('q');
|
||||||
@@ -340,20 +344,22 @@ scale: 0.8 0.8;
|
|||||||
</button>
|
</button>
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
<FilterPanel
|
{#if showFilters}
|
||||||
availableCategories={categories}
|
<FilterPanel
|
||||||
{availableTags}
|
availableCategories={categories}
|
||||||
{availableIcons}
|
{availableTags}
|
||||||
{selectedCategory}
|
{availableIcons}
|
||||||
{selectedTags}
|
{selectedCategory}
|
||||||
{selectedIcon}
|
{selectedTags}
|
||||||
{selectedSeasons}
|
{selectedIcon}
|
||||||
{selectedFavoritesOnly}
|
{selectedSeasons}
|
||||||
{lang}
|
{selectedFavoritesOnly}
|
||||||
{isLoggedIn}
|
{lang}
|
||||||
onCategoryChange={handleCategoryChange}
|
{isLoggedIn}
|
||||||
onTagToggle={handleTagToggle}
|
onCategoryChange={handleCategoryChange}
|
||||||
onIconChange={handleIconChange}
|
onTagToggle={handleTagToggle}
|
||||||
onSeasonChange={handleSeasonChange}
|
onIconChange={handleIconChange}
|
||||||
onFavoritesToggle={handleFavoritesToggle}
|
onSeasonChange={handleSeasonChange}
|
||||||
/>
|
onFavoritesToggle={handleFavoritesToggle}
|
||||||
|
/>
|
||||||
|
{/if}
|
||||||
|
|||||||
Reference in New Issue
Block a user