Fix the check for the provided element
authorAlexander Ebert <ebert@woltlab.com>
Wed, 10 Aug 2022 16:51:14 +0000 (18:51 +0200)
committerAlexander Ebert <ebert@woltlab.com>
Wed, 10 Aug 2022 16:51:14 +0000 (18:51 +0200)
The implementation expects an input element, but an additional guard is in place to only accept DOM elements. The intention was to reject other values such as strings which were common with the previous jQuery implementation.

ts/WoltLabSuite/Core/Ui/Search/Input.ts
wcfsetup/install/files/js/WoltLabSuite/Core/Ui/Search/Input.js

index e80107de95a8951e4ff4b95783aae2006fcbe6f6..0d9dd52dd8a9d8ea1864e3ae488ec79d9bc3bc53 100644 (file)
@@ -41,7 +41,7 @@ class UiSearchInput {
    */
   constructor(element: HTMLInputElement, options: SearchInputOptions) {
     this.element = element;
-    if (!(this.element instanceof HTMLInputElement)) {
+    if (!(this.element instanceof HTMLElement)) {
       throw new TypeError("Expected a valid DOM element.");
     } else if (this.element.nodeName !== "INPUT" || (this.element.type !== "search" && this.element.type !== "text")) {
       throw new Error('Expected an input[type="text"].');
index b7482cec0c340d86c1a3498f14104885bdd7130b..4f62daf4f47ba52f021678c182b6cb8d35eb7af6 100644 (file)
@@ -30,7 +30,7 @@ define(["require", "exports", "tslib", "../../Ajax", "../../Core", "../../Dom/Ut
             this.request = undefined;
             this.timerDelay = undefined;
             this.element = element;
-            if (!(this.element instanceof HTMLInputElement)) {
+            if (!(this.element instanceof HTMLElement)) {
                 throw new TypeError("Expected a valid DOM element.");
             }
             else if (this.element.nodeName !== "INPUT" || (this.element.type !== "search" && this.element.type !== "text")) {