From 94716f9e514ad44dedea103a829adea5be3ac2fc Mon Sep 17 00:00:00 2001 From: Hakim El Hattab Date: Thu, 20 Mar 2025 13:52:28 +0100 Subject: [PATCH] add support for data-preview-link on any element type (prev only a) --- css/reveal.scss | 3 ++- examples/preview-overlays.html | 38 ++++++++++++++++++++++++++++++++++ js/controllers/overlay.js | 4 ++-- 3 files changed, 42 insertions(+), 3 deletions(-) diff --git a/css/reveal.scss b/css/reveal.scss index 98edcb20..022793af 100644 --- a/css/reveal.scss +++ b/css/reveal.scss @@ -1444,7 +1444,8 @@ $controlsArrowAngleActive: 36deg; } .reveal [data-preview-image], -.reveal [data-preview-video] { +.reveal [data-preview-video], +.reveal [data-preview-link]:not(a):not([data-preview-link=false]) { cursor: zoom-in; } diff --git a/examples/preview-overlays.html b/examples/preview-overlays.html index a718c5bb..4775b6a4 100644 --- a/examples/preview-overlays.html +++ b/examples/preview-overlays.html @@ -82,8 +82,46 @@
Iframes
+ https://hakim.se | data-preview-link https://hakim.se | data-preview-link +
https://hakim.se | data-preview-link=false +
+
+
Preview link from an image
+ +
+
+ + + + +
+ +

Lightbox

+ +
+
+
Images
+
+ +
+
+ +
+ +
+
Videos
+
+ +
+
+ +
+ +
+
Iframes
+ https://hakim.se
diff --git a/js/controllers/overlay.js b/js/controllers/overlay.js index 3ca72273..81519e63 100644 --- a/js/controllers/overlay.js +++ b/js/controllers/overlay.js @@ -19,7 +19,7 @@ export default class Overlay { // Enable link previews globally if( this.Reveal.getConfig().previewLinks ) { - this.linkPreviewSelector = 'a[href]:not([data-preview-link=false])'; + this.linkPreviewSelector = 'a[href]:not([data-preview-link=false]), [data-preview-link]:not(a):not([data-preview-link=false])'; } // Enable link previews for individual elements else { @@ -284,7 +284,7 @@ export default class Overlay { // Was a link preview clicked? if( linkTarget ) { - let url = linkTarget.getAttribute( 'href' ); + let url = linkTarget.getAttribute( 'href' ) || linkTarget.getAttribute( 'data-preview-link' ); if( url ) { this.showIframePreview( url ); event.preventDefault();