From f52ae5f0b28eccaeb72d1757740939bd56a495e1 Mon Sep 17 00:00:00 2001 From: Fedor Katurov Date: Fri, 24 Apr 2020 14:36:18 +0700 Subject: [PATCH] fixed image slider --- src/components/node/ImageSwitcher/styles.scss | 7 +++-- .../node/NodeImageSlideBlock/index.tsx | 28 ++++++++++--------- .../node/NodeImageSlideBlock/styles.scss | 13 +++------ 3 files changed, 23 insertions(+), 25 deletions(-) diff --git a/src/components/node/ImageSwitcher/styles.scss b/src/components/node/ImageSwitcher/styles.scss index 83c3b18a..0a4e5eab 100644 --- a/src/components/node/ImageSwitcher/styles.scss +++ b/src/components/node/ImageSwitcher/styles.scss @@ -9,12 +9,13 @@ position: absolute; background: transparentize(black, 0.5); display: flex; - right: 0; - top: 0; - border-radius: 8px; + left: 50%; + top: -60px; + border-radius: 24px; padding: 0 3px; flex-wrap: wrap; transition: background-color 0.5s; + transform: translate(-50%, 0); &:hover { background: transparentize(black, 0.2); diff --git a/src/components/node/NodeImageSlideBlock/index.tsx b/src/components/node/NodeImageSlideBlock/index.tsx index c122ce8f..397a8a79 100644 --- a/src/components/node/NodeImageSlideBlock/index.tsx +++ b/src/components/node/NodeImageSlideBlock/index.tsx @@ -41,6 +41,7 @@ const NodeImageSlideBlock: FC = ({ const [initial_x, setInitialX] = useState(0); const [offset, setOffset] = useState(0); const [is_dragging, setIsDragging] = useState(false); + const [drag_start, setDragStart] = useState(); const slide = useRef(); const wrap = useRef(); @@ -165,7 +166,6 @@ const NodeImageSlideBlock: FC = ({ const updateMaxHeight = useCallback(() => { if (!wrap.current) return; const { width } = wrap.current.getBoundingClientRect(); - // setMaxHeight(width * NODE_SETTINGS.MAX_IMAGE_ASPECT); setMaxHeight(window.innerHeight - 143); normalizeOffset(); }, [wrap, setMaxHeight, normalizeOffset]); @@ -183,11 +183,12 @@ const NodeImageSlideBlock: FC = ({ setIsDragging(false); normalizeOffset(); - if (initial_x - getX(event) < 10) { + if (+new Date() - drag_start < 300) { + // click detection onOpenPhotoSwipe(); } }, - [setIsDragging, is_dragging, normalizeOffset, onOpenPhotoSwipe] + [setIsDragging, is_dragging, normalizeOffset, onOpenPhotoSwipe, drag_start] ); const startDragging = useCallback( @@ -195,8 +196,9 @@ const NodeImageSlideBlock: FC = ({ setIsDragging(true); setInitialX(getX(event)); setInitialOffset(offset); + setDragStart(+new Date()); }, - [setIsDragging, setInitialX, offset, setInitialOffset] + [setIsDragging, setInitialX, offset, setInitialOffset, setDragStart] ); useEffect(() => updateMaxHeight(), [images]); @@ -243,15 +245,6 @@ const NodeImageSlideBlock: FC = ({ - {!is_loading && ( - - )} -
= ({
))} + + {!is_loading && ( + + )} ); }; diff --git a/src/components/node/NodeImageSlideBlock/styles.scss b/src/components/node/NodeImageSlideBlock/styles.scss index 9b58ff28..c703829b 100644 --- a/src/components/node/NodeImageSlideBlock/styles.scss +++ b/src/components/node/NodeImageSlideBlock/styles.scss @@ -2,9 +2,10 @@ overflow: hidden; position: relative; min-width: 0; - width: 100%; transition: height 0.25s; border-radius: $radius; + margin-right: -10px; + margin-left: -10px; .is_loading { .placeholder { @@ -14,7 +15,6 @@ } .image_container { - // background: $node_image_bg; border-radius: $panel_radius 0 0 $panel_radius; display: flex; align-items: flex-start; @@ -31,10 +31,7 @@ } .image { - // that was for containered image: - // max-height: 960px; - // max-height: 120vh !important; - // max-width: 100%; + max-width: 100%; opacity: 1; border-radius: $radius; box-shadow: transparentize($color: white, $amount: 0.95) 0 -1px, @@ -48,15 +45,13 @@ .image_wrap { width: 100%; - // top: 0; - // left: 0; - // opacity: 0; pointer-events: none; touch-action: none; z-index: 1; display: flex; align-items: center; justify-content: center; + padding: 0 10px; &:global(.is_active) { opacity: 1;