From dfb66e3742b309542e0217c0e42a362ca0781c52 Mon Sep 17 00:00:00 2001 From: Fedor Katurov Date: Tue, 27 Oct 2020 15:05:42 +0700 Subject: [PATCH 1/3] made proof-of-concept for image previewing --- .../node/NodeImageSlideBlock/index.tsx | 30 +++++++++++++------ .../node/NodeImageSlideBlock/styles.scss | 1 - 2 files changed, 21 insertions(+), 10 deletions(-) diff --git a/src/components/node/NodeImageSlideBlock/index.tsx b/src/components/node/NodeImageSlideBlock/index.tsx index 3f67b153..3da8172d 100644 --- a/src/components/node/NodeImageSlideBlock/index.tsx +++ b/src/components/node/NodeImageSlideBlock/index.tsx @@ -77,8 +77,8 @@ const NodeImageSlideBlock: FC = ({ ]); // update outside hooks - useEffect(() => updateLayout(), [loaded, height, images]); - useEffect(() => updateSizes(), [refs, current, loaded, images]); + useEffect(updateLayout, [loaded, height, images]); + useEffect(updateSizes, [refs, current, loaded, images]); useEffect(() => { const timeout = setTimeout(updateLayout, 300); @@ -300,14 +300,26 @@ const NodeImageSlideBlock: FC = ({ ref={setRef(index)} key={node.updated_at + file.id} > - + style={{ maxHeight: max_height, width: file.metadata.width }} + > + + + { + + } ))} diff --git a/src/components/node/NodeImageSlideBlock/styles.scss b/src/components/node/NodeImageSlideBlock/styles.scss index c1d00973..e821d329 100644 --- a/src/components/node/NodeImageSlideBlock/styles.scss +++ b/src/components/node/NodeImageSlideBlock/styles.scss @@ -155,7 +155,6 @@ align-items: center; justify-content: center; background: $content_bg; - z-index: 0; pointer-events: none; touch-action: none; transition: opacity 2s; From 51873064011c7aa0c15319b8a89930652e502601 Mon Sep 17 00:00:00 2001 From: Fedor Katurov Date: Tue, 27 Oct 2020 16:35:45 +0700 Subject: [PATCH 2/3] added blurred image for preloading --- .../node/NodeImageSlideBlock/index.tsx | 23 +++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/src/components/node/NodeImageSlideBlock/index.tsx b/src/components/node/NodeImageSlideBlock/index.tsx index 3da8172d..6ba8c19b 100644 --- a/src/components/node/NodeImageSlideBlock/index.tsx +++ b/src/components/node/NodeImageSlideBlock/index.tsx @@ -306,9 +306,28 @@ const NodeImageSlideBlock: FC = ({ - + + + + + + + + + + + { Date: Fri, 6 Nov 2020 22:16:32 +0700 Subject: [PATCH 3/3] added image preloader --- .../node/NodeImageSlideBlock/index.tsx | 57 ++++++++++++------- .../NodeImageSlideBlock/styles.module.scss | 39 ++++++++----- 2 files changed, 61 insertions(+), 35 deletions(-) diff --git a/src/components/node/NodeImageSlideBlock/index.tsx b/src/components/node/NodeImageSlideBlock/index.tsx index 44e97b93..aafb654c 100644 --- a/src/components/node/NodeImageSlideBlock/index.tsx +++ b/src/components/node/NodeImageSlideBlock/index.tsx @@ -272,7 +272,7 @@ const NodeImageSlideBlock: FC = ({
@@ -295,32 +295,46 @@ const NodeImageSlideBlock: FC = ({ images.map((file, index) => (
- { - // check if metadata is available, then show loader - } - - - + + + - + = ({ filter="url(#f1)" /> - { - - } + +
))}
diff --git a/src/components/node/NodeImageSlideBlock/styles.module.scss b/src/components/node/NodeImageSlideBlock/styles.module.scss index e821d329..ee38720f 100644 --- a/src/components/node/NodeImageSlideBlock/styles.module.scss +++ b/src/components/node/NodeImageSlideBlock/styles.module.scss @@ -39,18 +39,6 @@ transition: none; } - .image { - max-width: 100%; - opacity: 1; - border-radius: $radius; - box-shadow: transparentize($color: white, $amount: 0.95) 0 -1px, - transparentize($color: #000000, $amount: 0.6) 0 2px 5px; - - @include tablet { - border-radius: 0; - } - } - &.is_dragging { transition: none; } @@ -67,7 +55,7 @@ padding: 0 $gap / 2; position: relative; - &:global(.is_active) { + &.is_active { opacity: 1; } @@ -170,3 +158,28 @@ fill: white; } } + +.image, .preview { + max-width: 100%; + border-radius: $radius; + + @include tablet { + border-radius: 0; + } +} + +.image { + position: absolute; + opacity: 0; + + &.is_loaded { + opacity: 1; + position: static; + } +} + +.preview { + &.is_loaded { + display: none; + } +}