Added parameter to configure the scroll behavior
authorMarcel Werk <burntime@woltlab.com>
Sun, 1 May 2022 17:54:24 +0000 (19:54 +0200)
committerMarcel Werk <burntime@woltlab.com>
Sun, 1 May 2022 17:54:24 +0000 (19:54 +0200)
ts/WoltLabSuite/Core/Ui/Scroll.ts
wcfsetup/install/files/js/WoltLabSuite/Core/Ui/Scroll.js

index afee101c23ea43305a23bb19af5184b299806d77..288a6bcd3b4ff9f28b5402d8cda3091c08a5eed3 100644 (file)
@@ -40,7 +40,7 @@ function onScroll(): void {
  * @param       {Element}       element         target element
  * @param       {function=}     callback        callback invoked once scrolling has ended
  */
-export function element(element: HTMLElement, callback?: Callback): void {
+export function element(element: HTMLElement, callback?: Callback, behavior: ScrollBehavior = "smooth"): void {
   if (!(element instanceof HTMLElement)) {
     throw new TypeError("Expected a valid DOM element.");
   } else if (callback !== undefined && typeof callback !== "function") {
@@ -83,7 +83,7 @@ export function element(element: HTMLElement, callback?: Callback): void {
   window.scrollTo({
     left: 0,
     top: y,
-    behavior: "smooth",
+    behavior,
   });
 
   window.setTimeout(() => {
index bd701947bcb8f586c04da8f273e3b8922d4780f5..8ef9c90ea1c46708173e5a7b0e49edefaca18302 100644 (file)
@@ -28,7 +28,7 @@ define(["require", "exports", "tslib", "../Dom/Util"], function (require, export
      * @param       {Element}       element         target element
      * @param       {function=}     callback        callback invoked once scrolling has ended
      */
-    function element(element, callback) {
+    function element(element, callback, behavior = "smooth") {
         if (!(element instanceof HTMLElement)) {
             throw new TypeError("Expected a valid DOM element.");
         }
@@ -72,7 +72,7 @@ define(["require", "exports", "tslib", "../Dom/Util"], function (require, export
         window.scrollTo({
             left: 0,
             top: y,
-            behavior: "smooth",
+            behavior,
         });
         window.setTimeout(() => {
             // no scrolling took place