diff --git a/src/components/node/NodeImageBlock/index.tsx b/src/components/node/NodeImageBlock/index.tsx index fe12fa9b..5a47a957 100644 --- a/src/components/node/NodeImageBlock/index.tsx +++ b/src/components/node/NodeImageBlock/index.tsx @@ -24,8 +24,8 @@ interface IProps { const NodeImageBlock: FC = ({ node, is_loading }) => { const [current, setCurrent] = useState(0); const [height, setHeight] = useState(0); - const refs = useRef([]); - // const [refs, setRefs] = useState>>({}); + const [loaded, setLoaded] = useState>({}); + const refs = useRef>({}); const images = useMemo( () => @@ -33,16 +33,13 @@ const NodeImageBlock: FC = ({ node, is_loading }) => { [node] ); - const setRef = useCallback( - index => el => { - refs.current[index] = el; - }, - [refs] - ); + const setRef = useCallback(index => el => (refs.current[index] = el), [refs]); + const onImageLoad = useCallback(index => () => setLoaded({ ...loaded, [index]: true }), [ + setLoaded, + loaded, + ]); useEffect(() => { - console.log({ refs }); - if (!refs || !refs.current[current]) return; const el = refs.current[current]; @@ -50,7 +47,7 @@ const NodeImageBlock: FC = ({ node, is_loading }) => { const element_height = el.getBoundingClientRect && el.getBoundingClientRect().height; setHeight(element_height); - }, [refs, current]); + }, [refs, current, loaded]); return (
@@ -61,7 +58,9 @@ const NodeImageBlock: FC = ({ node, is_loading }) => {
{images.map((file, index) => (
@@ -70,6 +69,7 @@ const NodeImageBlock: FC = ({ node, is_loading }) => { src={getImageSize(file.url, 'node')} alt="" key={file.id} + onLoad={onImageLoad(index)} />
))} diff --git a/src/components/node/NodeImageBlock/styles.scss b/src/components/node/NodeImageBlock/styles.scss index cc05c9cb..1ecffff6 100644 --- a/src/components/node/NodeImageBlock/styles.scss +++ b/src/components/node/NodeImageBlock/styles.scss @@ -8,11 +8,12 @@ position: relative; overflow: hidden; transition: height 0.5s; + user-select: none; .image { - max-height: 800px; + max-height: 960px; + max-width: 100%; opacity: 1; - width: 100%; border-radius: $radius $radius 0 0; } } @@ -27,6 +28,9 @@ touch-action: none; z-index: 1; transition: opacity 0.5s; + display: flex; + align-items: center; + justify-content: center; &:global(.is_active) { opacity: 1; diff --git a/src/styles/colors.scss b/src/styles/colors.scss index 89e90181..bb1ed0a0 100644 --- a/src/styles/colors.scss +++ b/src/styles/colors.scss @@ -2,7 +2,7 @@ $red: #ff3344; $yellow: #ffd60f; $dark_blue: #3c75ff; $blue: #3ca1ff; - $green: #00d2b9; +$green: #00d2b9; //$green: #00503c; $olive: #8bc12a; $orange: #ff7549; @@ -35,7 +35,7 @@ $button_bg_color: $red_gradient; $comment_bg: lighten($main_bg_color, 0%); $panel_bg: transparent; $node_bg: darken($content_bg, 4%); -$node_image_bg: lighten($main_bg_color, 4%); +$node_image_bg: darken($main_bg_color, 2%); $node_title_background: darken($main_bg_color, 8%); $editor_bg: $content_bg;