dom_matches-or-contained-in-selectors.js
/**
* @module matchesOrContainedInSelectors
* @description Compares an HTMLElement against an array of selectors to see if it is one of them or is contained within any of them.
*
* @since 1.0.0
*
* @param {HTMLElement} target The element to check against.
* @param {Array} selectors The array of selectors to test against.
*
* @return {boolean} Returns true if the element is one of them or is contained within any of the selectors.
*
* @example
* import { matchesOrContainedInSelectors } from "@gravityforms/utils";
*
* function Example() {
* const exampleTarget = getNodes( '.some-target-selector', false, document.body, true )[ 0 ];
* const exampleSelectors = [ '.node-selector-one', '.node-selector-one' ];
* if( matchesOrContainedInSelectors( exampleTarget, exampleSelectors ) ) {
* //do something
* }
* }
*
*/
export default function matchesOrContainedInSelectors( target, selectors ) {
for ( let i = 0; i < selectors.length; i++ ) {
const matchingElements = document.querySelectorAll( selectors[ i ] );
for ( let j = 0; j < matchingElements.length; j++ ) {
// Check if target matches or is contained within the current matching element
if ( target === matchingElements[ j ] || matchingElements[ j ].contains( target ) ) {
return true;
}
}
}
return false;
}