diff --git a/packages/overlayscrollbars/tests/browser/lifecycles/structureLifecycle/index.browser.ts b/packages/overlayscrollbars/tests/browser/lifecycles/structureLifecycle/index.browser.ts index 9475ec7..9b9b409 100644 --- a/packages/overlayscrollbars/tests/browser/lifecycles/structureLifecycle/index.browser.ts +++ b/packages/overlayscrollbars/tests/browser/lifecycles/structureLifecycle/index.browser.ts @@ -1,10 +1,25 @@ import 'styles/overlayscrollbars.scss'; import './index.scss'; + import { resize } from '@/testing-browser/Resize'; import { OverlayScrollbars } from 'overlayscrollbars'; +import { style } from 'support'; const targetElm = document.querySelector('#target') as HTMLElement; -window.os = OverlayScrollbars({ target: targetElm, content: false }); +const osInstance = (window.os = OverlayScrollbars({ target: targetElm, content: false })); -resize(document.querySelector('#resize')!); -resize(document.querySelector('#target')!); +const target: HTMLElement | null = document.querySelector('#target'); +const comparison: HTMLElement | null = document.querySelector('#comparison'); +const targetRes: HTMLElement | null = document.querySelector('#target .resize'); +const comparisonRes: HTMLElement | null = document.querySelector('#comparison .resize'); + +resize(target!).addResizeListener((width, height) => style(comparison, { width, height })); +//resize(comparison!).addResizeListener((width, height) => style(target, { width, height })); +resize(targetRes!).addResizeListener((width, height) => style(comparisonRes, { width, height })); +//resize(comparisonRes!).addResizeListener((width, height) => style(targetRes, { width, height })); + +target!.querySelector('.os-viewport')?.addEventListener('scroll', (e) => { + const viewport: HTMLElement | null = e.currentTarget as HTMLElement; + comparison!.scrollLeft = viewport.scrollLeft; + comparison!.scrollTop = viewport.scrollTop; +}); diff --git a/packages/overlayscrollbars/tests/browser/lifecycles/structureLifecycle/index.html b/packages/overlayscrollbars/tests/browser/lifecycles/structureLifecycle/index.html index fa4a0c8..fab709f 100644 --- a/packages/overlayscrollbars/tests/browser/lifecycles/structureLifecycle/index.html +++ b/packages/overlayscrollbars/tests/browser/lifecycles/structureLifecycle/index.html @@ -1,4 +1,14 @@
+ + + + + + + + + + Detected resizes: 0
-
-
Resize
-
50%
-
End
+
+
+
+
+
Resize
+
50%
+
End
+
+
+
+
+
+
+
Resize
+
50%
+
End
+
+
+
diff --git a/packages/overlayscrollbars/tests/browser/lifecycles/structureLifecycle/index.scss b/packages/overlayscrollbars/tests/browser/lifecycles/structureLifecycle/index.scss index 0a6dd53..f717156 100644 --- a/packages/overlayscrollbars/tests/browser/lifecycles/structureLifecycle/index.scss +++ b/packages/overlayscrollbars/tests/browser/lifecycles/structureLifecycle/index.scss @@ -27,7 +27,19 @@ body { left: 0; } -#target { +.columns { + display: flex; + width: 100%; + height: 100%; +} + +.column { + width: 100%; + height: 100%; +} + +#target, +#comparison { position: relative; border: 2px solid red; min-height: 100px; @@ -37,21 +49,25 @@ body { padding: 5px 50px 15px 20px; } -#resize { +#comparison { + overflow: hidden; +} + +.resize { overflow: hidden; background: blue; border: 1px solid black; padding: 10px; } -#percent { +.percent { height: 50%; background: purple; border: 1px solid black; padding: 10px; } -#end { +.end { position: relative; background: green; border: 1px solid black; @@ -60,7 +76,7 @@ body { display: none; } -#end::before { +.end::before { content: ''; position: absolute; display: block; diff --git a/packages/testing-browser/src/Resize.ts b/packages/testing-browser/src/Resize.ts index c261e1e..fd47b04 100644 --- a/packages/testing-browser/src/Resize.ts +++ b/packages/testing-browser/src/Resize.ts @@ -1,7 +1,10 @@ // @ts-ignore -import { createDiv, appendChildren, parent, style, on, off, addClass, WH, XY, clientSize } from '@/overlayscrollbars/support'; +import { createDiv, appendChildren, parent, style, on, off, addClass, WH, XY, clientSize, each } from '@/overlayscrollbars/support'; + +type ResizeListener = (width: number, height: number) => void; export const resize = (element: HTMLElement) => { + const resizeListeners: ResizeListener[] = []; const strMouseTouchDownEvent = 'mousedown touchstart'; const strMouseTouchUpEvent = 'mouseup touchend'; const strMouseTouchMoveEvent = 'mousemove touchmove'; @@ -30,6 +33,13 @@ export const resize = (element: HTMLElement) => { }; style(dragResizer, sizeStyle); + + each(resizeListeners, (listener: ResizeListener) => { + if (listener) { + listener(sizeStyle.width, sizeStyle.height); + } + }); + event.stopPropagation(); }; @@ -67,4 +77,10 @@ export const resize = (element: HTMLElement) => { event.stopPropagation(); } }); + + return { + addResizeListener(listener: ResizeListener) { + resizeListeners.push(listener); + }, + }; };