diff options
author | matthewsotoudeh <matthewsot@outlook.com> | 2014-05-03 19:33:48 -0700 |
---|---|---|
committer | matthewsotoudeh <matthewsot@outlook.com> | 2014-05-03 19:33:48 -0700 |
commit | 9489b3df5a82fa37914ba1afe4e2752d168fd4dc (patch) | |
tree | 2d2e2c665011ace819df94d8b5404e1ce6826bb6 | |
parent | f007f59d2b43cbde0bd68d60dab028cd875002ef (diff) |
can escape lightbox with the esc key
-rw-r--r-- | Wedge.js | 37 | ||||
-rw-r--r-- | Wedge.js.map | 2 | ||||
-rw-r--r-- | Wedge.ts | 36 |
3 files changed, 58 insertions, 17 deletions
@@ -40,14 +40,21 @@ var ScaleInAnimation = (function () { return ScaleInAnimation; })(); -/* -* Displays the Wedge Lightbox. -* link: A link to the youtube video or picture. +/* initWedge() +* Displays the Wedge Lightbox +* +* link: A link to the youtube video or picture * title: Text displayed below the content -* type: The type of link provided - youtube or pic +* type: The type of link provided - youtube, pic, or div +* animator: An IWedgeAnimator that controls how animations are handled +* exitOnEscape: Controls whether the lightbox can be exited by pressing the escape key +* doAutoPosition: Controls whether the lightbox is automatically centered +* opacity: The final opacity of the overlay +* allowExit: Controls whether the user is allowed to exit the lightbox */ -function initWedge(link, title, type, animator, doAutoPosition, opacity, allowExit, overlayId, contentId) { +function initWedge(link, title, type, animator, exitOnEscape, doAutoPosition, opacity, allowExit, overlayId, contentId) { if (typeof animator === "undefined") { animator = new SimpleFadeAnimation; } + if (typeof exitOnEscape === "undefined") { exitOnEscape = true; } if (typeof doAutoPosition === "undefined") { doAutoPosition = true; } if (typeof opacity === "undefined") { opacity = 0.9; } if (typeof allowExit === "undefined") { allowExit = true; } @@ -64,16 +71,30 @@ function initWedge(link, title, type, animator, doAutoPosition, opacity, allowEx $(overlay).css('width', window.innerWidth); if (allowExit) { - $(overlay).click(function () { + var doExit = function () { animator.animateOut(overlayId, contentId, function () { if (type == 'div') { $('#' + link).appendTo($('body')); $('#' + link).hide(); } - $(content).stop().remove(); + $(overlay).unbind('click', doExit); + $(document).unbind("keyup", keyUp); + $(overlay).stop().remove(); + $(content).stop().remove(); }); - }); + }; + + var keyUp = function (e) { + if (e.keyCode == 27) { + doExit(); + } + }; + + $(overlay).click(doExit); + if (exitOnEscape) { + $(document).keyup(keyUp); + } } /* diff --git a/Wedge.js.map b/Wedge.js.map index 6f6b455..dcc31a1 100644 --- a/Wedge.js.map +++ b/Wedge.js.map @@ -1 +1 @@ -{"version":3,"file":"Wedge.js","sourceRoot":"","sources":["Wedge.ts"],"names":["SimpleFadeAnimation","SimpleFadeAnimation.constructor","SimpleFadeAnimation.animateIn","SimpleFadeAnimation.animateOut","ScaleInAnimation","ScaleInAnimation.constructor","ScaleInAnimation.animateIn","ScaleInAnimation.animateOut","initWedge"],"mappings":"AAAA,oCAAoC;;AAOpC;IAAAA;IAUAC,CAACA;AAAAD,IATGA,0CAAAA,UAAUA,SAASA,EAAEA,SAASA;QAC1BE,CAACA,CAACA,GAAGA,GAAGA,SAASA,CAACA,CAACA,MAAMA,CAACA,MAAMA,CAACA;QACjCA,CAACA,CAACA,GAAGA,GAAGA,SAASA,CAACA,CAACA,MAAMA,CAACA,MAAMA,CAACA;IACrCA,CAACA;;IAEDF,2CAAAA,UAAWA,SAASA,EAAEA,SAASA,EAAEA,SAASA;QACtCG,CAACA,CAACA,GAAGA,GAAGA,SAASA,CAACA,CAACA,OAAOA,CAACA,MAAMA,CAACA;QAClCA,CAACA,CAACA,GAAGA,GAAGA,SAASA,CAACA,CAACA,OAAOA,CAACA,MAAMA,CAACA;IACtCA,CAACA;IACLH,2BAACA;AAADA,CAACA,IAAA;;AAED,2CAA2C;AAC3C;IAAAI;IAmBAC,CAACA;AAAAD,IAlBGA,uCAAAA,UAAUA,SAASA,EAAEA,SAASA;QAC1BE,CAACA,CAACA,GAAGA,GAAGA,SAASA,CAACA,CAACA,MAAMA,CAACA,MAAMA,CAACA;QACjCA,IAAIA,OAAOA,GAAGA,GAAGA,GAAGA,SAASA;QAC7BA,CAACA,CAACA,OAAOA,CAACA,CAACA,GAAGA,CAACA,WAAWA,EAAEA,8BAA8BA,CAACA;QAC3DA,CAACA,CAACA,OAAOA,CAACA,CAACA,OAAOA,CAACA;YACfA,MAAMA,EAAEA,CAACA;YACTA,MAAMA,EAAEA,CAACA;YACTA,SAASA,EAAEA,CAACA;SACfA,CAACA;IACNA,CAACA;IACDF,wCAAAA,UAAWA,SAASA,EAAEA,SAASA,EAAEA,SAASA;QACtCG,CAACA,CAACA,GAAGA,GAAGA,SAASA,CAACA,CAACA,OAAOA,CAACA,MAAMA,EAAEA,SAASA,CAACA;QAC7CA,CAACA,CAACA,GAAGA,GAAGA,SAASA,CAACA,CAACA,OAAOA,CAACA;YACvBA,MAAMA,EAAEA,GAAGA;YACXA,MAAMA,EAAEA,GAAGA;YACXA,SAASA,EAAEA,CAACA;SACfA,CAACA;IACNA,CAACA;IACLH,wBAACA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"}
\ No newline at end of file +{"version":3,"file":"Wedge.js","sourceRoot":"","sources":["Wedge.ts"],"names":["SimpleFadeAnimation","SimpleFadeAnimation.constructor","SimpleFadeAnimation.animateIn","SimpleFadeAnimation.animateOut","ScaleInAnimation","ScaleInAnimation.constructor","ScaleInAnimation.animateIn","ScaleInAnimation.animateOut","initWedge"],"mappings":"AAAA,oCAAoC;;AAOpC;IAAAA;IAUAC,CAACA;AAAAD,IATGA,0CAAAA,UAAUA,SAASA,EAAEA,SAASA;QAC1BE,CAACA,CAACA,GAAGA,GAAGA,SAASA,CAACA,CAACA,MAAMA,CAACA,MAAMA,CAACA;QACjCA,CAACA,CAACA,GAAGA,GAAGA,SAASA,CAACA,CAACA,MAAMA,CAACA,MAAMA,CAACA;IACrCA,CAACA;;IAEDF,2CAAAA,UAAWA,SAASA,EAAEA,SAASA,EAAEA,SAASA;QACtCG,CAACA,CAACA,GAAGA,GAAGA,SAASA,CAACA,CAACA,OAAOA,CAACA,MAAMA,CAACA;QAClCA,CAACA,CAACA,GAAGA,GAAGA,SAASA,CAACA,CAACA,OAAOA,CAACA,MAAMA,CAACA;IACtCA,CAACA;IACLH,2BAACA;AAADA,CAACA,IAAA;;AAED,2CAA2C;AAC3C;IAAAI;IAmBAC,CAACA;AAAAD,IAlBGA,uCAAAA,UAAUA,SAASA,EAAEA,SAASA;QAC1BE,CAACA,CAACA,GAAGA,GAAGA,SAASA,CAACA,CAACA,MAAMA,CAACA,MAAMA,CAACA;QACjCA,IAAIA,OAAOA,GAAGA,GAAGA,GAAGA,SAASA;QAC7BA,CAACA,CAACA,OAAOA,CAACA,CAACA,GAAGA,CAACA,WAAWA,EAAEA,8BAA8BA,CAACA;QAC3DA,CAACA,CAACA,OAAOA,CAACA,CAACA,OAAOA,CAACA;YACfA,MAAMA,EAAEA,CAACA;YACTA,MAAMA,EAAEA,CAACA;YACTA,SAASA,EAAEA,CAACA;SACfA,CAACA;IACNA,CAACA;IACDF,wCAAAA,UAAWA,SAASA,EAAEA,SAASA,EAAEA,SAASA;QACtCG,CAACA,CAACA,GAAGA,GAAGA,SAASA,CAACA,CAACA,OAAOA,CAACA,MAAMA,EAAEA,SAASA,CAACA;QAC7CA,CAACA,CAACA,GAAGA,GAAGA,SAASA,CAACA,CAACA,OAAOA,CAACA;YACvBA,MAAMA,EAAEA,GAAGA;YACXA,MAAMA,EAAEA,GAAGA;YACXA,SAASA,EAAEA,CAACA;SACfA,CAACA;IACNA,CAACA;IACLH,wBAACA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"}
\ No newline at end of file @@ -39,13 +39,19 @@ class ScaleInAnimation implements IWedgeAnimator { } } -/* - * Displays the Wedge Lightbox. - * link: A link to the youtube video or picture. +/* initWedge() + * Displays the Wedge Lightbox + * + * link: A link to the youtube video or picture * title: Text displayed below the content - * type: The type of link provided - youtube or pic + * type: The type of link provided - youtube, pic, or div + * animator: An IWedgeAnimator that controls how animations are handled + * exitOnEscape: Controls whether the lightbox can be exited by pressing the escape key + * doAutoPosition: Controls whether the lightbox is automatically centered + * opacity: The final opacity of the overlay + * allowExit: Controls whether the user is allowed to exit the lightbox */ -function initWedge(link, title, type, animator: IWedgeAnimator = new SimpleFadeAnimation, doAutoPosition = true, opacity = 0.9, allowExit = true, overlayId = 'wedge-overlay', contentId = 'wedge-content') { +function initWedge(link, title, type, animator: IWedgeAnimator = new SimpleFadeAnimation, exitOnEscape = true, doAutoPosition = true, opacity = 0.9, allowExit = true, overlayId = 'wedge-overlay', contentId = 'wedge-content') { /* * Shows the overlay */ @@ -57,16 +63,30 @@ function initWedge(link, title, type, animator: IWedgeAnimator = new SimpleFadeA $(overlay).css('width', window.innerWidth); if (allowExit) { - $(overlay).click(() => { + var doExit = () => { animator.animateOut(overlayId, contentId, () => { if (type == 'div') { $('#' + link).appendTo($('body')); $('#' + link).hide(); } - $(content).stop().remove(); + $(overlay).unbind('click', doExit); + $(document).unbind("keyup", keyUp); + $(overlay).stop().remove(); + $(content).stop().remove(); }); - }); + } + + var keyUp = (e) => { //Thanks! https://stackoverflow.com/questions/3369593/how-to-detect-escape-key-press-with-javascript + if (e.keyCode == 27) { + doExit(); + } + }; + + $(overlay).click(doExit); + if (exitOnEscape) { + $(document).keyup(keyUp); + } } /* * Shows the content |