mirror of
https://github.com/BrenBroZAYT/gameyfin.git
synced 2026-06-13 16:40:01 +00:00
09953a3f78
* chore: bump version to v2.3.0-preview * Customize start page (#803) * Update ConfigService to support complex Objects Implemented tests for ConfigService * Added DB migration for config table * Fixed version in banner.txt not being displayed * Implement Library ordering Implement "Show recently added games on homepage" * Fix build.gradle.kts * FIx bug when creating libraries * Fix TypeScript errors Fix library sorting * Bump actions/checkout from 5 to 6 (#811) Bumps [actions/checkout](https://github.com/actions/checkout) from 5 to 6. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/checkout/compare/v5...v6) --- updated-dependencies: - dependency-name: actions/checkout dependency-version: '6' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Added automatic scanning using file system watchers (#813) * Implement collections (#814) * Backend implementation for collections * Fix database schema and migration script * Refactor some config values Fix ArrayInput not being deactivatable * Remove "AutoRegisterNewUsers" config option * Fix bug when removing ignored paths * Add UI for collections (WIP) * Fix table actions not synced with state Fix tests * Finish implementation of collection feature * Fix tests * Bump actions/checkout from 5 to 6 (#815) Bumps [actions/checkout](https://github.com/actions/checkout) from 5 to 6. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/checkout/compare/v5...v6) --- updated-dependencies: - dependency-name: actions/checkout dependency-version: '6' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Fix "allow guests to create game requests" not being enabled when guest access is activated * Fix: Disable loading of EditGameMetadataModal and MatchGameModal in GameView when user is not admin * Bump actions/checkout from 5 to 6 (#819) Bumps [actions/checkout](https://github.com/actions/checkout) from 5 to 6. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/checkout/compare/v5...v6) --- updated-dependencies: - dependency-name: actions/checkout dependency-version: '6' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Overhaul startpage (#823) * WIP: Update start page layout * Performance improvements (lazy loading and virtualized grids/lists) Fix various smaller issues * Implement use of blurhash for all images in backend and covers in frontend * Fix bugs and test * Fix code analysis issues * Remove "UI settings" since they have been made obsolete * Remove length limit from "image.originalUrl" (#824) * Remove alpine based image (#825) * Fix bug when games from library are still in a collection, thus prevention deletion of said library * Delete image files in background * Fix layout --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
50 lines
2.0 KiB
TypeScript
50 lines
2.0 KiB
TypeScript
import {Image, useDisclosure} from "@heroui/react";
|
|
import React from "react";
|
|
import {useField} from "formik";
|
|
import {ImageBrokenIcon, PencilIcon} from "@phosphor-icons/react";
|
|
import {GameHeaderPickerModal} from "Frontend/components/general/modals/GameHeaderPickerModal";
|
|
|
|
|
|
// @ts-ignore
|
|
export default function GameHeaderPicker({game, showErrorUntouched = false, ...props}) {
|
|
|
|
// @ts-ignore
|
|
const [field] = useField(props);
|
|
|
|
const gameHeaderPickerModal = useDisclosure();
|
|
|
|
return (<>
|
|
<div className="relative group size-full cursor-pointer bg-background/50"
|
|
onClick={gameHeaderPickerModal.onOpenChange}>
|
|
{field.value || game.header?.id ?
|
|
<div className="size-full overflow-hidden">
|
|
<Image
|
|
alt={game.title}
|
|
className="z-0 object-cover group-hover:brightness-25"
|
|
src={field.value ? field.value : `images/cover/${game.header?.id}`}
|
|
{...props}
|
|
{...field}
|
|
radius="none"
|
|
/>
|
|
</div> :
|
|
<div
|
|
className="absolute inset-0 flex flex-col text-center items-center justify-center group-hover:opacity-0"
|
|
>
|
|
<ImageBrokenIcon size={46}/>
|
|
<p>No header image available</p>
|
|
</div>}
|
|
<div
|
|
className="absolute inset-0 flex flex-col gap-2 text-center items-center justify-center opacity-0 group-hover:opacity-100"
|
|
>
|
|
<PencilIcon size={46}/>
|
|
<p>Edit header image</p>
|
|
</div>
|
|
</div>
|
|
<GameHeaderPickerModal
|
|
game={game}
|
|
isOpen={gameHeaderPickerModal.isOpen}
|
|
onOpenChange={gameHeaderPickerModal.onOpenChange}
|
|
setHeaderUrl={(headerUrl) => field.onChange({target: {name: field.name, value: headerUrl}})}
|
|
/>
|
|
</>);
|
|
} |