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
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);
+ },
+ };
};