From 9592715507ed414945ef4950e52d0f3fca32fa82 Mon Sep 17 00:00:00 2001 From: "Florine W. Dekker" Date: Thu, 18 Aug 2022 19:23:42 +0200 Subject: [PATCH] Add `root` parameters for query functions --- package-lock.json | Bin 230343 -> 227064 bytes package.json | 14 +++++++------- src/main/js/template.js | 18 ++++++++++-------- 3 files changed, 17 insertions(+), 15 deletions(-) diff --git a/package-lock.json b/package-lock.json index b68c3f2b6a8cb8e0a20c5ac1460945ada1a826b7..7f9f5ea90040d235d4bdd657573655a6d347904d 100644 GIT binary patch delta 7461 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 diff --git a/package.json b/package.json index f80d88d..31cc93f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@fwdekker/template", - "version": "2.6.0", + "version": "2.7.0", "description": "The base template for pages on fwdekker.com.", "author": "Florine W. Dekker", "license": "MIT", @@ -27,17 +27,17 @@ "normalize.css": "^8.0.1" }, "devDependencies": { - "grunt": "^1.4.1", + "grunt": "^1.5.3", "grunt-cli": "^1.4.3", - "grunt-contrib-clean": "^2.0.0", + "grunt-contrib-clean": "^2.0.1", "grunt-contrib-cssmin": "^4.0.0", "grunt-contrib-watch": "^1.1.0", "grunt-focus": "^1.0.0", "grunt-webpack": "^5.0.0", - "ts-loader": "^9.2.8", + "ts-loader": "^9.3.1", "ts-node": "^10.7.0", - "typescript": "^4.6.3", - "webpack": "^5.70.0", - "webpack-cli": "^4.9.2" + "typescript": "^4.7.4", + "webpack": "^5.74.0", + "webpack-cli": "^4.10.0" } } diff --git a/src/main/js/template.js b/src/main/js/template.js index ed0c12a..7651c7e 100644 --- a/src/main/js/template.js +++ b/src/main/js/template.js @@ -10,20 +10,22 @@ const stringToHtml = function(string, query) { } /** - * Alias for `document.querySelector`. + * Alias for `root.querySelector(query)`. * - * @param q {string} the query string - * @returns {HTMLElement} the element identified by the query string + * @param query {string} the query string + * @param root {HTMLElement} the element to start searching in, or `undefined` if searching should start in `document` + * @returns {HTMLElement} the element identified by `query` in `root` */ -const $ = q => document.querySelector(q); +const $ = (query, root) => root === undefined ? document.querySelector(query) : root.querySelector(query); /** - * Alias for `document.querySelectorAll`. + * Alias for `root.querySelectorAll(query)`. * - * @param q {string} the query string - * @returns {NodeListOf} the elements identified by the query string + * @param query {string} the query string + * @param root {HTMLElement} the element to start searching in, or `undefined` if searching should start in `document` + * @returns {NodeListOf} the elements identified by `query` in `root` */ -const $a = q => document.querySelectorAll(q); +const $a = (query, root) => root === undefined ? document.querySelectorAll(query) : root.querySelectorAll(query); /** * Runs the given function once the page is loaded.