From 949f0bd320f0d1b290d3dfa0a1c2f12a1578be75 Mon Sep 17 00:00:00 2001 From: Lanskikh Date: Fri, 5 Jul 2024 16:34:56 +0500 Subject: [PATCH] maybe fixed sliders, trainings tab --- src/components/Main/Products.tsx | 125 ++++++++++++++++++++++++------- src/components/Main/Projects.tsx | 8 +- 2 files changed, 101 insertions(+), 32 deletions(-) diff --git a/src/components/Main/Products.tsx b/src/components/Main/Products.tsx index 692657a..fbf5b89 100644 --- a/src/components/Main/Products.tsx +++ b/src/components/Main/Products.tsx @@ -1,6 +1,7 @@ -import { useState } from 'react'; +import { useEffect, useReducer, useState } from 'react'; import { MiniTitle } from '../../ui/MiniTitle'; import { Title } from '../../ui/Title'; +import { useWindowWidth } from '../../hooks/useWindowWidth'; export function Products() { const [curTab, setCurTab] = useState(0); @@ -124,7 +125,7 @@ function TrainingsTab() {
{ + switch (action) { + case 'prev': + setSliderOffset(-(width - 80) * 2); + return [state[state.length - 3], ...state.slice(0, -1)]; + case 'next': + setSliderOffset(prev => prev + width - 80); + return [...state.slice(1), state[2]]; + default: + return state; + } + }, + [ + 'src/assets/rzhd2.png', + 'src/assets/train.png', + 'src/assets/dispatcher.png', + 'src/assets/winda.png', + 'src/assets/rzhd.png', + 'src/assets/rzhd2.png', + 'src/assets/train.png', + ], + ); + + useEffect(() => { + setSliderOffset(-width + 80); + }, [order, slide, width]); + return (
@@ -172,32 +206,67 @@ function SimulatorsTab() {
-
- - - - - +
setTouchStart(e.targetTouches[0].clientX)} + onTouchEnd={e => { + if (e.nativeEvent.changedTouches[0].clientX - touchStart > 100) { + dispatch('prev'); + setSlide(prev => (prev === 0 ? order.length - 3 : prev - 1)); + } else if ( + e.nativeEvent.changedTouches[0].clientX - touchStart < + -100 + ) { + dispatch('next'); + setSlide(prev => (prev === order.length - 3 ? 0 : prev + 1)); + } + }} + > + {width < 640 ? ( + order.map(src => ( + + )) + ) : ( + <> + + + + + + + )}

модель позволяет производить расчеты характеристик работы, diff --git a/src/components/Main/Projects.tsx b/src/components/Main/Projects.tsx index 32cd8c2..4ef7bfa 100644 --- a/src/components/Main/Projects.tsx +++ b/src/components/Main/Projects.tsx @@ -115,9 +115,9 @@ function Slider({ return (

{ @@ -142,7 +142,7 @@ function Slider({ ))}
-
+