kamrify commited on
Commit
19d10ff
·
1 Parent(s): 34367c9

Improve scroll for taller elements

Browse files
Files changed (2) hide show
  1. index.html +13 -0
  2. src/utils.ts +3 -1
index.html CHANGED
@@ -167,6 +167,7 @@
167
  <div class="buttons">
168
  <button id="highlight-btn">Animated Highlight</button>
169
  <button id="buggy-highlight-btn">Buggy Highlight</button>
 
170
  <button id="simple-highlight-btn">Simple Highlight</button>
171
  <button id="transition-highlight-btn">Transition Highlight</button>
172
  <button id="disallow-close">Disallow Close</button>
@@ -923,6 +924,18 @@ npm install driver.js</pre
923
  });
924
  });
925
 
 
 
 
 
 
 
 
 
 
 
 
 
926
  document.getElementById("highlight-btn").addEventListener("click", () => {
927
  driver({
928
  animate: true,
 
167
  <div class="buttons">
168
  <button id="highlight-btn">Animated Highlight</button>
169
  <button id="buggy-highlight-btn">Buggy Highlight</button>
170
+ <button id="off-screen-highlight-btn">Off Screen Highlight</button>
171
  <button id="simple-highlight-btn">Simple Highlight</button>
172
  <button id="transition-highlight-btn">Transition Highlight</button>
173
  <button id="disallow-close">Disallow Close</button>
 
924
  });
925
  });
926
 
927
+ document.getElementById("off-screen-highlight-btn").addEventListener("click", () => {
928
+ driver().highlight({
929
+ element: ".container",
930
+ popover: {
931
+ title: "Buggy Highlight",
932
+ description: "Unlike the older version, new version doesn't work with z-indexes so no more positional issues.",
933
+ side: "bottom",
934
+ align: "start",
935
+ },
936
+ });
937
+ });
938
+
939
  document.getElementById("highlight-btn").addEventListener("click", () => {
940
  driver({
941
  animate: true,
src/utils.ts CHANGED
@@ -30,12 +30,14 @@ export function bringInView(element: Element) {
30
 
31
  const shouldSmoothScroll = getConfig("smoothScroll");
32
 
 
 
33
  element.scrollIntoView({
34
  // Removing the smooth scrolling for elements which exist inside the scrollable parent
35
  // This was causing the highlight to not properly render
36
  behavior: !shouldSmoothScroll || hasScrollableParent(element) ? "auto" : "smooth",
37
  inline: "center",
38
- block: "center",
39
  });
40
  }
41
 
 
30
 
31
  const shouldSmoothScroll = getConfig("smoothScroll");
32
 
33
+ const isTallerThanViewport = (element as HTMLElement).offsetHeight > window.innerHeight;
34
+
35
  element.scrollIntoView({
36
  // Removing the smooth scrolling for elements which exist inside the scrollable parent
37
  // This was causing the highlight to not properly render
38
  behavior: !shouldSmoothScroll || hasScrollableParent(element) ? "auto" : "smooth",
39
  inline: "center",
40
+ block: isTallerThanViewport ? "start" : "center",
41
  });
42
  }
43