]> BookStack Code Mirror - bookstack/blobdiff - resources/js/services/util.js
Adapt tests with displayName array
[bookstack] / resources / js / services / util.js
index 59affff8814350ab1b6b1427f3007b8746e8c07e..1264d105860e11ae68e9f7d53cbbfd02ea878837 100644 (file)
@@ -31,9 +31,12 @@ export function debounce(func, waitMs, immediate) {
 export function scrollAndHighlightElement(element) {
     if (!element) return;
 
-    const parentDetails = element.closest('details');
-    if (parentDetails && !parentDetails.open) {
-        parentDetails.open = true;
+    let parent = element;
+    while (parent.parentElement) {
+        parent = parent.parentElement;
+        if (parent.nodeName === 'DETAILS' && !parent.open) {
+            parent.open = true;
+        }
     }
 
     element.scrollIntoView({behavior: 'smooth'});
@@ -81,6 +84,17 @@ export function uniqueId() {
     return (`${S4() + S4()}-${S4()}-${S4()}-${S4()}-${S4()}${S4()}${S4()}`);
 }
 
+/**
+ * Generate a random smaller unique ID.
+ *
+ * @returns {string}
+ */
+export function uniqueIdSmall() {
+    // eslint-disable-next-line no-bitwise
+    const S4 = () => (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);
+    return S4();
+}
+
 /**
  * Create a promise that resolves after the given time.
  * @param {int} timeMs