1
0
Fork 0
mirror of https://github.com/muerwre/vault-frontend.git synced 2025-04-25 21:06:42 +07:00

better image scroll on mobile devices

This commit is contained in:
Fedor Katurov 2019-11-26 12:15:49 +07:00
parent ff249e0107
commit 284721db67
2 changed files with 18 additions and 4 deletions

View file

@ -1,4 +1,12 @@
import React, { FC, useMemo, useState, useEffect, useRef, useCallback } from 'react'; import React, {
FC,
useMemo,
useState,
useEffect,
useRef,
useCallback,
useLayoutEffect,
} from 'react';
import { ImageSwitcher } from '../ImageSwitcher'; import { ImageSwitcher } from '../ImageSwitcher';
import * as styles from './styles.scss'; import * as styles from './styles.scss';
import { INode } from '~/redux/types'; import { INode } from '~/redux/types';
@ -108,7 +116,9 @@ const NodeImageSlideBlock: FC<IProps> = ({ node, is_loading, updateLayout }) =>
} }
// update layout after all manipulations // update layout after all manipulations
return () => clearTimeout(timeout); return () => {
if (timeout) clearTimeout(timeout);
};
}, [is_dragging, wrap, offset, heights, max_height, images, is_loading, updateLayout]); }, [is_dragging, wrap, offset, heights, max_height, images, is_loading, updateLayout]);
const onDrag = useCallback( const onDrag = useCallback(
@ -157,8 +167,8 @@ const NodeImageSlideBlock: FC<IProps> = ({ node, is_loading, updateLayout }) =>
const stopDragging = useCallback(() => { const stopDragging = useCallback(() => {
if (!is_dragging) return; if (!is_dragging) return;
normalizeOffset();
setIsDragging(false); setIsDragging(false);
normalizeOffset();
}, [setIsDragging, is_dragging, normalizeOffset]); }, [setIsDragging, is_dragging, normalizeOffset]);
const startDragging = useCallback( const startDragging = useCallback(
@ -224,7 +234,7 @@ const NodeImageSlideBlock: FC<IProps> = ({ node, is_loading, updateLayout }) =>
)} )}
<div <div
className={styles.image_container} className={classNames(styles.image_container, { [styles.is_dragging]: is_dragging })}
style={{ style={{
height, height,
transform: `translate(${offset}px, 0)`, transform: `translate(${offset}px, 0)`,

View file

@ -36,6 +36,10 @@
opacity: 1; opacity: 1;
border-radius: $radius $radius 0 0; border-radius: $radius $radius 0 0;
} }
&.is_dragging {
transition: none;
}
} }
.image_wrap { .image_wrap {