From 2ca1fe379b916c1dd0943033e046f7dfd08da3af Mon Sep 17 00:00:00 2001
From: Patrizio Bekerle <patrizio.bekerle@tugraz.at>
Date: Tue, 15 Jun 2021 09:44:12 +0200
Subject: [PATCH] Add querySlotted function

---
 packages/common/package.json |  2 +-
 packages/common/utils.js     | 20 ++++++++++++++++++++
 2 files changed, 21 insertions(+), 1 deletion(-)

diff --git a/packages/common/package.json b/packages/common/package.json
index ceda0d26..cef9b7e0 100644
--- a/packages/common/package.json
+++ b/packages/common/package.json
@@ -1,7 +1,7 @@
 {
   "name": "@dbp-toolkit/common",
   "homepage": "https://gitlab.tugraz.at/dbp/web-components/toolkit/-/tree/master/packages/common",
-  "version": "0.2.5",
+  "version": "0.2.6",
   "module": "index.js",
   "license": "LGPL-2.1-or-later",
   "repository": {
diff --git a/packages/common/utils.js b/packages/common/utils.js
index 64f7b396..5fb9d93b 100644
--- a/packages/common/utils.js
+++ b/packages/common/utils.js
@@ -335,3 +335,23 @@ export const getBaseName = (str) => {
 export const getFileExtension = (str) => {
     return str.split('.').pop();
 };
+
+/**
+ * Queries for "selector" in "root" in the slot html
+ *
+ * @param root
+ * @param selector
+ * @returns {*[]}
+ */
+export const querySlotted = (root, selector) => {
+    let slots = root.querySelectorAll('slot');
+    let matched = [];
+
+    slots.forEach((slot) => {
+        matched = matched.concat(slot.assignedElements().filter((el) => {
+            return el.matches(selector);
+        }));
+    });
+
+    return matched;
+};
-- 
GitLab