| <!DOCTYPE html> |
| <html> |
| <!-- |
| Copyright 2010 The Closure Library Authors. All Rights Reserved. |
| |
| Use of this source code is governed by the Apache License, Version 2.0. |
| See the COPYING file for details. |
| --> |
| <head> |
| <title>goog.ui.HoverCard</title> |
| <script src="../base.js"></script> |
| <script> |
| goog.require('goog.debug.DivConsole'); |
| goog.require('goog.debug.LogManager'); |
| goog.require('goog.log'); |
| goog.require('goog.positioning.AnchoredPosition'); |
| goog.require('goog.positioning.Corner'); |
| goog.require('goog.ui.Component.EventType'); |
| goog.require('goog.ui.HoverCard'); |
| </script> |
| <link rel="stylesheet" href="css/demo.css"> |
| <link rel="stylesheet" href="../css/hovercard.css"> |
| <style> |
| #personEmail { |
| font-style: italic; |
| } |
| .anchor { |
| font: bold; |
| color: white; |
| background-color: gray; |
| padding: 20px; |
| margin: 20px; |
| } |
| </style> |
| </head> |
| <body> |
| <h1>goog.ui.HoverCard</h1> |
| <p> |
| Show by mouse position:<br><br><br> |
| <span class="anchor" email="tom@gmail.com">Tom Smith</span> |
| <span class="anchor" email="dick@gmail.com">Dick Jones</span> |
| <span class="anchor" email="harry@gmail.com">Harry Brown</span> |
| |
| <br><br><br>Show hovercard to the right:<br><br><br> |
| <span class="anchor" config="right" email="tom@gmail.com">Tom Smith</span> |
| <span class="anchor" config="right" email="dick@gmail.com">Dick Jones</span> |
| <span class="anchor" config="right" |
| email="harry@gmail.com">Harry Brown</span> |
| |
| <br><br><br>Show hovercard below:<br><br><br> |
| <span class="anchor" config="down" email="tom@gmail.com">Tom Smith</span> |
| <span class="anchor" config="down" email="dick@gmail.com">Dick Jones</span> |
| <span class="anchor" config="down" |
| email="harry@gmail.com">Harry Brown</span> |
| |
| <br><br><br> |
| |
| </p> |
| |
| <div id='profileCard' style="display:none;position:absolute"> |
| <div style="position:relative;left:2px;z-index:100"> |
| <table class="goog-hovercard-icons"> |
| <tr> |
| <td>Email</td> |
| <td>Chat</td> |
| <td>More</td> |
| </tr> |
| </table> |
| <table class="goog-hovercard-content"> |
| <tr> |
| <td valign="top"> |
| <span id='personName'> </span><br /> |
| <span id='personEmail'> </span> |
| </td> |
| </tr> |
| </table> |
| </div> |
| |
| <script> |
| function writeDiv(top, left) { |
| var width = 300 + 10; |
| var height = 115 + 10; |
| document.write( |
| '<div class="goog-shadow" style="position:absolute;left:' + |
| left + 'px;top:' + top + 'px;width:' + |
| width + 'px;height:' + height + 'px;z-index:10" ></div>\n'); |
| } |
| |
| var y = 0; |
| var left = 0; |
| var size = 6; |
| for (var i = 0; i < size; ++i) { |
| for (var j = 0; j < size; ++j) { |
| writeDiv(y + i, left + j); |
| } |
| } |
| </script> |
| </div> |
| |
| <!-- Event log. --> |
| <fieldset class="goog-debug-panel"> |
| <legend>Event Log</legend> |
| <div id="log"></div> |
| </fieldset> |
| <br> |
| <div id="perf"></div> |
| |
| <script> |
| var timer = goog.now(); |
| |
| // Set up a logger. |
| goog.debug.LogManager.getRoot().setLevel(goog.log.Level.ALL); |
| var logger = goog.log.getLogger('demo'); |
| var logconsole = new goog.debug.DivConsole(goog.dom.getElement('log')); |
| logconsole.setCapturing(true); |
| |
| var EVENTS = goog.object.getValues(goog.ui.HoverCard.EventType); |
| goog.log.fine(logger, 'Listening for: ' + EVENTS.join(', ') + '.'); |
| |
| function logEvent(e) { |
| goog.log.info(logger, 'HoverCard dispatched: ' + e.type); |
| } |
| |
| // Initialize hovercard object. |
| var hc; |
| hc = new goog.ui.HoverCard({SPAN: 'email'}); |
| hc.setElement(goog.dom.getElement('profileCard')); |
| goog.events.listen(hc, goog.ui.HoverCard.EventType.TRIGGER, |
| onTrigger); |
| goog.events.listen(hc, goog.ui.HoverCard.EventType.BEFORE_SHOW, |
| onBeforeShow); |
| |
| hc.className = 'goog-hovercard'; |
| |
| var config = { |
| 'right': goog.positioning.Corner.TOP_RIGHT, |
| 'down': goog.positioning.Corner.BOTTOM_LEFT |
| } |
| |
| function onTrigger(event) { |
| // Usually, you will only need to respond to the TRIGGER event if |
| // you want hovercard triggers to have different behaviors. |
| var trigger = event.anchor; |
| var conf = trigger.getAttribute("config"); |
| var pos = null; |
| if (conf) { |
| pos = new goog.positioning.AnchoredPosition(trigger, config[conf]); |
| } |
| hc.setPosition(pos); |
| |
| return true; |
| } |
| |
| function onBeforeShow() { |
| // This is where you typically set the contents of your hovercard, |
| // based on the triggering element. |
| var trigger = hc.getAnchorElement(); |
| var email = trigger.getAttribute("email"); |
| var name = trigger.innerHTML; |
| var emailEl = goog.dom.getElement('personEmail'); |
| emailEl.innerHTML = email; |
| var nameEl = goog.dom.getElement('personName'); |
| nameEl.innerHTML = name; |
| |
| return true; |
| } |
| |
| goog.events.listen(hc, EVENTS, logEvent); |
| |
| goog.dom.setTextContent(goog.dom.getElement('perf'), |
| (goog.now() - timer) + 'ms'); |
| |
| </script> |
| |
| |
| </body> |
| </html> |