better photo viewing experience

preload photos
photo scale animation
This commit is contained in:
2020-10-17 08:01:38 +00:00
committed by Stepan Usatiuk
parent 7614cdd747
commit 47a90febd1
3 changed files with 36 additions and 4 deletions

View File

@@ -14,7 +14,12 @@
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
box-shadow: $pt-elevation-shadow-4;
img {
box-shadow: $pt-elevation-shadow-4;
}
transition: transform 0.3s;
} }
#photoOverlayDrawer { #photoOverlayDrawer {
@@ -29,7 +34,7 @@
padding: 1rem; padding: 1rem;
background-color: $light-gray5; background-color: $light-gray5;
box-shadow: $pt-elevation-shadow-4; box-shadow: $pt-elevation-shadow-4;
transition: transform 0.5s; transition: transform 0.3s;
} }
} }
@@ -37,6 +42,10 @@
.bp3-overlay-appear { .bp3-overlay-appear {
opacity: 0; opacity: 0;
#photo {
transform: scale(0.95, 0.95);
}
#photoOverlayDrawer { #photoOverlayDrawer {
transform: translate(10rem); transform: translate(10rem);
} }
@@ -46,6 +55,10 @@
.bp3-overlay-appear-active { .bp3-overlay-appear-active {
opacity: 1; opacity: 1;
#photo {
transform: scale(1, 1);
}
#photoOverlayDrawer { #photoOverlayDrawer {
transform: translate(0rem); transform: translate(0rem);
} }
@@ -55,6 +68,10 @@
.bp3-overlay-exit { .bp3-overlay-exit {
opacity: 1; opacity: 1;
#photo {
transform: scale(1, 1);
}
#photoOverlayDrawer { #photoOverlayDrawer {
transform: translate(0rem); transform: translate(0rem);
} }
@@ -63,9 +80,12 @@
.bp3-overlay-exit-active { .bp3-overlay-exit-active {
opacity: 0; opacity: 0;
#photo {
transform: scale(0.95, 0.95);
}
#photoOverlayDrawer { #photoOverlayDrawer {
transform: translate(10rem); transform: translate(10rem);
} }
} }

View File

@@ -10,6 +10,7 @@ import { PhotoCard } from "./PhotoCard";
import { Button, Classes, Overlay, Spinner } from "@blueprintjs/core"; import { Button, Classes, Overlay, Spinner } from "@blueprintjs/core";
import { UploadButton } from "./UploadButton"; import { UploadButton } from "./UploadButton";
import { Photo } from "./Photo"; import { Photo } from "./Photo";
import { getPhotoThumbPath } from "~redux/api/photos";
export interface IOverviewComponentProps { export interface IOverviewComponentProps {
photos: IPhotoReqJSON[]; photos: IPhotoReqJSON[];
@@ -71,7 +72,7 @@ export const OverviewComponent: React.FunctionComponent<IOverviewComponentProps>
onClose={() => { onClose={() => {
setOverlayOpen(false); setOverlayOpen(false);
}} }}
transitionDuration={500} transitionDuration={300}
lazy lazy
> >
<div id="photoOverlayContainer"> <div id="photoOverlayContainer">

View File

@@ -45,6 +45,12 @@ export class PhotoCardComponent extends React.PureComponent<
*/ */
public render(): JSX.Element { public render(): JSX.Element {
const fileExists = this.props.photo.uploaded; const fileExists = this.props.photo.uploaded;
const preloadImage = (url: string) => {
const img = new Image();
img.src = url;
};
return ( return (
<Card <Card
className="photoCard" className="photoCard"
@@ -55,6 +61,11 @@ export class PhotoCardComponent extends React.PureComponent<
<img <img
loading="lazy" loading="lazy"
src={getPhotoThumbPath(this.props.photo, 512)} src={getPhotoThumbPath(this.props.photo, 512)}
onMouseEnter={() =>
preloadImage(
getPhotoThumbPath(this.props.photo, 2048),
)
}
></img> ></img>
) : ( ) : (
<Spinner /> <Spinner />