Преглед изворни кода

fix: replace HTMLElement with Element

Sven пре 1 година
родитељ
комит
26abb7e6dc
3 измењених фајлова са 9 додато и 8 уклоњено
  1. 3 2
      README.md
  2. 2 2
      lib/dom.ts
  3. 4 4
      lib/onSelector.ts

+ 3 - 2
README.md

@@ -124,6 +124,7 @@ If set to `false` (default), querySelector() will be used and only the first mat
 If `continuous` is set to `true`, the listener will not be deregistered after it was called once (defaults to false).  
   
 When using TypeScript, the generic `TElement` can be used to specify the type of the element(s) that the listener will return.  
+It will default to `HTMLElement` if left undefined.  
   
 ⚠️ In order to use this function, [`initOnSelector()`](#initonselector) has to be called as soon as possible.  
 This initialization function has to be called after `DOMContentLoaded` is fired (or immediately if `@run-at document-end` is set).  
@@ -263,7 +264,7 @@ document.body.dispatchEvent(mouseEvent);
 ### insertAfter()
 Usage:  
 ```ts
-insertAfter(beforeElement: HTMLElement, afterElement: HTMLElement): HTMLElement
+insertAfter(beforeElement: Element, afterElement: Element): Element
 ```
   
 Inserts the element passed as `afterElement` as a sibling after the passed `beforeElement`.  
@@ -288,7 +289,7 @@ insertAfter(beforeElement, afterElement);
 ### addParent()
 Usage:  
 ```ts
-addParent(element: HTMLElement, newParent: HTMLElement): HTMLElement
+addParent(element: Element, newParent: Element): Element
 ```
   
 Adds a parent element around the passed `element` and returns the new parent.  

+ 2 - 2
lib/dom.ts

@@ -15,7 +15,7 @@ export function getUnsafeWindow() {
  * Inserts `afterElement` as a sibling just after the provided `beforeElement`
  * @returns Returns the `afterElement`
  */
-export function insertAfter(beforeElement: HTMLElement, afterElement: HTMLElement) {
+export function insertAfter(beforeElement: Element, afterElement: Element) {
   beforeElement.parentNode?.insertBefore(afterElement, beforeElement.nextSibling);
   return afterElement;
 }
@@ -24,7 +24,7 @@ export function insertAfter(beforeElement: HTMLElement, afterElement: HTMLElemen
  * Adds a parent container around the provided element
  * @returns Returns the new parent element
  */
-export function addParent(element: HTMLElement, newParent: HTMLElement) {
+export function addParent(element: Element, newParent: Element) {
   const oldParent = element.parentNode;
 
   if(!oldParent)

+ 4 - 4
lib/onSelector.ts

@@ -1,21 +1,21 @@
 /** Options for the `onSelector()` function */
 export type OnSelectorOpts<TElem extends Element = HTMLElement> = SelectorOptsOne<TElem> | SelectorOptsAll<TElem>;
 
-type SelectorOptsOne<TElem extends Element> = SelectorOptsBase & {
+type SelectorOptsOne<TElem extends Element> = SelectorOptsCommon & {
   /** Whether to use `querySelectorAll()` instead - default is false */
   all?: false;
   /** Gets called whenever the selector was found in the DOM */
   listener: (element: TElem) => void;
 };
 
-type SelectorOptsAll<TElem extends Element> = SelectorOptsBase & {
+type SelectorOptsAll<TElem extends Element> = SelectorOptsCommon & {
   /** Whether to use `querySelectorAll()` instead - default is false */
   all: true;
   /** Gets called whenever the selector was found in the DOM */
   listener: (elements: NodeListOf<TElem>) => void;
 };
 
-type SelectorOptsBase = {
+type SelectorOptsCommon = {
   /** Whether to call the listener continuously instead of once - default is false */
   continuous?: boolean;
 };
@@ -58,7 +58,7 @@ function checkSelectorExists<TElem extends Element = HTMLElement>(selector: stri
   const deleteIndices: number[] = [];
   options.forEach((option, i) => {
     try {
-      const elements = option.all ? document.querySelectorAll<HTMLElement>(selector) : document.querySelector<HTMLElement>(selector);
+      const elements = option.all ? document.querySelectorAll<TElem>(selector) : document.querySelector<TElem>(selector);
       if((elements !== null && elements instanceof NodeList && elements.length > 0) || elements !== null) {
         // I don't feel like dealing with intersecting types, this should work just fine at runtime
         // @ts-ignore