Skip to content

Commit

Permalink
feat(FOROME-97): create scroll shadow component
Browse files Browse the repository at this point in the history
  • Loading branch information
QSdmitrioul committed May 27, 2022
1 parent bd2aabf commit fe3d530
Show file tree
Hide file tree
Showing 12 changed files with 219 additions and 247 deletions.
62 changes: 0 additions & 62 deletions src/components/variant/ui/drawer-window.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ import {
Dispatch,
MouseEvent,
SetStateAction,
useEffect,
useRef,
useState,
} from 'react'
Expand All @@ -19,12 +18,6 @@ import datasetStore from '@store/dataset/dataset'
import variantStore from '@store/ws/variant'
import { Checkbox } from '@ui/checkbox/checkbox'
import { Icon } from '@ui/icon'
import {
createShadow,
createTrigger,
DisplayValue,
Placement,
} from '@ui/scroll-shadower/scroll-shadowier.utils'
import {
ICommonAspectDescriptor,
IPreAspectDescriptor,
Expand Down Expand Up @@ -53,61 +46,6 @@ export const DrawerWindow = observer(
DrawerClass.normClass,
)

useEffect(() => {
const element = ref.current

if (!element) return

const rightShadow = createShadow(element, Placement.right)
const leftShadow = createShadow(element, Placement.left)

leftShadow.style.position = 'fixed'
rightShadow.style.position = 'fixed'

leftShadow.style.top = '40px'
leftShadow.style.bottom = '25px'
rightShadow.style.top = '40px'
rightShadow.style.bottom = '25px'

if (refColumn.current) {
leftShadow.style.left = refColumn.current.clientWidth + 'px'
}
const rightTrigger = createTrigger(element, Placement.right)
const leftTrigger = createTrigger(element, Placement.left)

const intersectionObserver = new IntersectionObserver(
entries => {
for (const entry of entries) {
switch (entry.target) {
case rightTrigger:
rightShadow.style.display = entry.isIntersecting
? DisplayValue.none
: DisplayValue.block
break
case leftTrigger:
leftShadow.style.display = entry.isIntersecting
? DisplayValue.none
: DisplayValue.block
break
}
}
},
{
threshold: [0],
},
)

intersectionObserver.observe(rightTrigger)
intersectionObserver.observe(leftTrigger)

return () => {
;[rightTrigger, rightShadow, leftShadow, leftTrigger].forEach(target =>
target.remove(),
)
intersectionObserver.disconnect()
}
}, [])

const { shouldAddShadow, handleScroll, handleStartScroll } =
useScrollShadow(ref.current)

Expand Down
2 changes: 1 addition & 1 deletion src/router/router.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import { QueryParamProvider } from 'use-query-params'

import { GlobalStyle } from '@theme'
import { Routes } from '@router/routes.enum'
import { TestPage } from '@ui/scroller/page'
import { TestPage } from '@ui/shadow-scroller/page'
import { DtreePage } from '@pages/filter/dtree'
import { RefinerPage } from '@pages/filter/refiner'
import { IgvPage } from '@pages/igv'
Expand Down
136 changes: 0 additions & 136 deletions src/ui/scroll-shadower/scroll-shadowier.tsx

This file was deleted.

1 change: 0 additions & 1 deletion src/ui/scroller/index.ts

This file was deleted.

6 changes: 0 additions & 6 deletions src/ui/scroller/scroller.interfaces.ts

This file was deleted.

3 changes: 0 additions & 3 deletions src/ui/scroller/scroller.module.css

This file was deleted.

32 changes: 0 additions & 32 deletions src/ui/scroller/scroller.tsx

This file was deleted.

1 change: 1 addition & 0 deletions src/ui/shadow-scroller/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export * from './shadow-scroller'
8 changes: 4 additions & 4 deletions src/ui/scroller/page.tsx → src/ui/shadow-scroller/page.tsx
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
import { FC } from 'react'

import { Scroller } from '@ui/scroller/scroller'
import { ShadowScroller } from '@ui/shadow-scroller/shadow-scroller'

export const TestPage: FC = () => {
return (
<div className="w-full h-full items-center flex justify-around">
<div className="w-[1000px] h-[1000px]">
<Scroller
<ShadowScroller
showShadows={true}
className="w-[800px] h-[800px] overflow-auto border-[2px]"
className="w-[800px] h-[800px] overflow-auto border-[2px] border-red-light"
>
<div className="bg-orange-light text-blue-dark w-[1200px] h-fit">
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Adipisci
Expand Down Expand Up @@ -129,7 +129,7 @@ export const TestPage: FC = () => {
laboriosam molestiae nemo omnis possimus quam, quas quis quisquam
ratione repudiandae sequi tempora tenetur, velit.
</div>
</Scroller>
</ShadowScroller>
</div>
</div>
)
Expand Down
44 changes: 44 additions & 0 deletions src/ui/shadow-scroller/shadow-scroller.module.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
.container {
position: relative;
cursor: grab;

&__shadow {
position: absolute;
top: 0;
left: 0;
}

&__value {
position: relative;
width: fit-content;
height: fit-content;

&_vertical {
width: 100%;
}

&_horizontal {
height: 100%;
}
}

&__scroller {
position: absolute;
z-index: 1;
top: 0;
right: 0;
bottom: 0;
left: 0;
overflow: auto;

&_vertical {
overflow-x: hidden;
overflow-y: auto;
}

&_horizontal {
overflow-y: hidden;
overflow-x: auto;
}
}
}
Loading

0 comments on commit fe3d530

Please sign in to comment.