summaryrefslogtreecommitdiffstats
path: root/js/tests/visual/tooltip.html
diff options
context:
space:
mode:
Diffstat (limited to 'js/tests/visual/tooltip.html')
-rw-r--r--js/tests/visual/tooltip.html138
1 files changed, 138 insertions, 0 deletions
diff --git a/js/tests/visual/tooltip.html b/js/tests/visual/tooltip.html
new file mode 100644
index 0000000..1a3b9f2
--- /dev/null
+++ b/js/tests/visual/tooltip.html
@@ -0,0 +1,138 @@
+<!doctype html>
+<html lang="en">
+ <head>
+ <meta charset="utf-8">
+ <meta name="viewport" content="width=device-width, initial-scale=1">
+ <link href="../../../dist/css/bootstrap.min.css" rel="stylesheet">
+ <title>Tooltip</title>
+ <style>
+ #target {
+ border: 1px solid;
+ width: 100px;
+ height: 50px;
+ margin-left: 50px;
+ transform: rotate(270deg);
+ margin-top: 100px;
+ }
+ </style>
+ </head>
+ <body>
+ <div class="container">
+ <h1>Tooltip <small>Bootstrap Visual Test</small></h1>
+
+ <p class="text-muted">Tight pants next level keffiyeh <a href="#" data-bs-toggle="tooltip" title="Default tooltip">you probably</a> haven't heard of them. Photo booth beard raw denim letterpress vegan messenger bag stumptown. Farm-to-table seitan, mcsweeney's fixie sustainable quinoa 8-bit american apparel <a href="#" data-bs-toggle="tooltip" title="Another tooltip">have a</a> terry richardson vinyl chambray. Beard stumptown, cardigans banh mi lomo thundercats. Tofu biodiesel williamsburg marfa, four loko mcsweeney's cleanse vegan chambray. A really ironic artisan <a href="#" data-bs-toggle="tooltip" title="Another one here too">whatever keytar</a>, scenester farm-to-table banksy Austin <a href="#" data-bs-toggle="tooltip" title="The last tip!">twitter handle</a> freegan cred raw denim single-origin coffee viral.</p>
+
+ <hr>
+
+ <div class="row">
+ <p>
+ <button type="button" class="btn btn-secondary" data-bs-toggle="tooltip" data-bs-placement="auto" title="Tooltip on auto">
+ Tooltip on auto
+ </button>
+ <button type="button" class="btn btn-secondary" data-bs-toggle="tooltip" data-bs-placement="top" title="Tooltip on top">
+ Tooltip on top
+ </button>
+ <button type="button" class="btn btn-secondary" data-bs-toggle="tooltip" data-bs-placement="right" title="Tooltip on right">
+ Tooltip on end
+ </button>
+ <button type="button" class="btn btn-secondary" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Tooltip on bottom">
+ Tooltip on bottom
+ </button>
+ <button type="button" class="btn btn-secondary" data-bs-toggle="tooltip" data-bs-placement="left" title="Tooltip on left">
+ Tooltip on start
+ </button>
+ </p>
+ </div>
+ <div class="row">
+ <p>
+ <button type="button" class="btn btn-secondary" data-bs-toggle="tooltip" data-bs-placement="left" title="Tooltip with container (selector)" data-bs-container="#customContainer">
+ Tooltip with container (selector)
+ </button>
+ <button id="tooltipElement" type="button" class="btn btn-secondary" data-bs-placement="left" title="Tooltip with container (element)">
+ Tooltip with container (element)
+ </button>
+ <button type="button" class="btn btn-secondary" data-bs-toggle="tooltip" data-bs-html="true" title="<em>Tooltip</em> <u>with</u> <b>HTML</b>">
+ Tooltip with HTML
+ </button>
+ <button type="button" class="btn btn-secondary" data-bs-toggle="tooltip" data-bs-placement="left" title="Tooltip with XSS" data-bs-container="<img src=1 onerror=alert(123)>">
+ Tooltip with XSS
+ </button>
+ </p>
+ </div>
+ <div class="row">
+ <div class="col-sm-3">
+ <div id="target" title="Test tooltip on transformed element"></div>
+ </div>
+ <div id="shadow" class="pt-5"></div>
+ </div>
+ <div id="customContainer"></div>
+
+ <div class="row mt-4 border-top">
+ <hr>
+ <div class="h4">Test Selector triggered tooltips</div>
+ <div id="wrapperTriggeredBySelector">
+ <div class="py-2 selectorButtonsBlock">
+ <button type="button" class="btn btn-secondary bs-dynamic-tooltip" title="random title">Using title</button>
+ <button type="button" class="btn btn-secondary bs-dynamic-tooltip" data-bs-title="random title">Using bs-title</button>
+ </div>
+
+ </div>
+ <div class="mt-3">
+ <button type="button" class="btn btn-primary" onclick="duplicateButtons()">Duplicate above two buttons</button>
+ </div>
+ </div>
+ </div>
+
+ <script src="../../../dist/js/bootstrap.bundle.js"></script>
+ <script>
+ /* global bootstrap: false */
+
+ if (typeof document.body.attachShadow === 'function') {
+ const shadowRoot = document.getElementById('shadow').attachShadow({ mode: 'open' })
+ shadowRoot.innerHTML =
+ '<button id="firstShadowTooltip" type="button" class="btn btn-secondary" data-bs-toggle="tooltip" data-bs-placement="top" title="Tooltip on top in a shadow dom">' +
+ ' Tooltip on top in a shadow dom' +
+ '</button>' +
+ '<button id="secondShadowTooltip" type="button" class="btn btn-secondary" data-bs-toggle="tooltip" data-bs-placement="top" title="Tooltip on top in a shadow dom with container option">' +
+ ' Tooltip on top in a shadow dom' +
+ '</button>'
+
+ new bootstrap.Tooltip(shadowRoot.firstChild)
+ new bootstrap.Tooltip(shadowRoot.getElementById('secondShadowTooltip'), {
+ container: shadowRoot
+ })
+ }
+
+ new bootstrap.Tooltip('#tooltipElement', {
+ container: '#customContainer'
+ })
+
+ const targetTooltip = new bootstrap.Tooltip('#target', {
+ placement: 'top',
+ trigger: 'manual'
+ })
+ targetTooltip.show()
+
+ document.querySelectorAll('[data-bs-toggle="tooltip"]').forEach(tooltipEl => new bootstrap.Tooltip(tooltipEl))
+ </script>
+
+ <script>
+ /* global bootstrap: false */
+
+ new bootstrap.Tooltip('#wrapperTriggeredBySelector', {
+ animation: false,
+ selector: '.bs-dynamic-tooltip'
+ })
+
+ /* eslint-disable no-unused-vars */
+ function duplicateButtons() {
+ const buttonsBlock = document.querySelector('.selectorButtonsBlock')// get first
+ const buttonsBlockClone = buttonsBlock.cloneNode(true)
+ buttonsBlockClone.innerHTML += new Date().toLocaleString()
+ document.querySelector('#wrapperTriggeredBySelector').append(buttonsBlockClone)
+ }
+ /* eslint-enable no-unused-vars */
+ </script>
+
+ </body>
+</html>