diff --git a/ui (gen4)/css/widget/overlay.css b/ui (gen4)/css/widget/overlay.css new file mode 100755 index 00000000..5753ce04 --- /dev/null +++ b/ui (gen4)/css/widget/overlay.css @@ -0,0 +1,57 @@ + +.overlay { + position: absolute; + + width: 100%; + height: 100%; + top: 0px; + left: 0px; + + overflow: hidden; + + background: rgba(0, 0, 0, 0.5); + + -webkit-transform-style: preserve-3d; + -moz-transform-style: preserve-3d; + transform-style: preserve-3d; +} +.overlay~.overlay { + background: rgba(0, 0, 0, 0.1); +} + + +.overlay .content { + position: relative; + display: inline-block; + + background: white; + + top: 50%; + left: 50%; + + width: auto; + height: auto; + + min-width: 200px; + max-width: 80vw; + max-height: 100vh; + + transform: translateY(-50%) translateX(-50%); + + box-shadow: rgba(0, 0, 0, 0.1) 0.3em 0.3em 5em; +} +.overlay~.overlay .content { + box-shadow: rgba(0, 0, 0, 0.05) 0.1em 0.1em 3em; +} + +/* NOTE: this does not include text... + ...need a way to go around this... +*/ +.blur>* { + -webkit-filter: blur(2px); + filter: blur(2px); +} +.blur>.overlay { + -webkit-filter: none; + filter: none; +} diff --git a/ui (gen4)/lib/widget/browse.js b/ui (gen4)/lib/widget/browse.js index 4698b8d2..666ed7b7 100755 --- a/ui (gen4)/lib/widget/browse.js +++ b/ui (gen4)/lib/widget/browse.js @@ -21,18 +21,7 @@ console.log('>>> browse') // XXX var object = require('../../object') - - - -/*********************************************************************/ -// helpers... - -function proxyToDom(name){ - return function(){ - this.dom[name].apply(this.dom, arguments) - return this - } -} +var widget = require('./widget') @@ -308,34 +297,23 @@ var BrowserPrototype = { // to them handlers that stop propagation in .__init__(..). // The list of non-propagated events in defined in // .options.nonPropagatedEvents - trigger: function(){ - var args = args2array(arguments) - var evt = args.shift() - - if(typeof(evt) == typeof('str')){ - evt = $.Event(evt) - } - - evt.source = this - - args.splice(0, 0, evt) - - this.dom.trigger.apply(this.dom, args) - return this - }, + // + // XXX triggering events from here and from jQuery/dom has a + // different effect... + trigger: widget.triggerEventWithSource, // proxy event api... - on: proxyToDom('on'), - one: proxyToDom('one'), - off: proxyToDom('off'), - bind: proxyToDom('bind'), - unbind: proxyToDom('unbind'), - deligate: proxyToDom('deligate'), - undeligate: proxyToDom('undeligate'), + on: widget.proxyToDom('on'), + one: widget.proxyToDom('one'), + off: widget.proxyToDom('off'), + bind: widget.proxyToDom('bind'), + unbind: widget.proxyToDom('unbind'), + deligate: widget.proxyToDom('deligate'), + undeligate: widget.proxyToDom('undeligate'), // specific events... - focus: proxyToDom('focus'), - blur: proxyToDom('blur'), + focus: widget.proxyToDom('focus'), + blur: widget.proxyToDom('blur'), // base api... diff --git a/ui (gen4)/lib/widget/overlay.html b/ui (gen4)/lib/widget/overlay.html new file mode 100755 index 00000000..97ccbdbe --- /dev/null +++ b/ui (gen4)/lib/widget/overlay.html @@ -0,0 +1,115 @@ + + + + + + + + + + + + + + + + + + +Theme: + +
+ + + + + +
+

A context for an overlay...

+ +

+ + +
+

Overlay

+ +
+ + + + + + diff --git a/ui (gen4)/lib/widget/overlay.js b/ui (gen4)/lib/widget/overlay.js new file mode 100755 index 00000000..8c5a8c63 --- /dev/null +++ b/ui (gen4)/lib/widget/overlay.js @@ -0,0 +1,98 @@ +/********************************************************************** +* +* +* +**********************************************************************/ + +define(function(require){ var module = {} +console.log('>>> overlay') + +//var DEBUG = DEBUG != null ? DEBUG : true + +var object = require('../../object') +var widget = require('./widget') + + +/*********************************************************************/ + +var OverlayClassPrototype = { + make: function(client, options){ + var that = this + var overlay = $('
') + .addClass('overlay') + .click(function(){ + event.stopPropagation() + }) + .append($('
') + .addClass('content') + .click(function(){ + event.stopPropagation() + }) + .append(client)) + + return overlay + }, +} + + +var OverlayPrototype = { + dom: null, + + // XXX triggering events from here and from jQuery/dom has a + // different effect... + trigger: widget.triggerEventWithSource, + + // proxy event api... + on: widget.proxyToDom('on'), + one: widget.proxyToDom('one'), + off: widget.proxyToDom('off'), + bind: widget.proxyToDom('bind'), + unbind: widget.proxyToDom('unbind'), + deligate: widget.proxyToDom('deligate'), + undeligate: widget.proxyToDom('undeligate'), + + // custom events... + close: function(handler){ + // trigger the event... + if(handler == null){ + this.dom.detach() + if(this.parent.children('.overlay').length == 0){ + this.parent.removeClass('blur') + } + this.trigger('close') + + // register a handler... + } else { + this.on('close', handler) + } + }, + + __init__: function(parent, client, options){ + var that = this + parent = this.parent = $(parent || 'body') + + var dom = this.dom = this.constructor.make(client, options) + .click(function(){ + that.close() + }) + + parent + .addClass('blur') + .append(dom) + + return this + }, +} + + +var Overlay = +module.Overlay = +object.makeConstructor('Overlay', + OverlayClassPrototype, + OverlayPrototype) + + + +/********************************************************************** +* vim:set ts=4 sw=4 : */ +return module }) diff --git a/ui (gen4)/lib/widget/widget.js b/ui (gen4)/lib/widget/widget.js new file mode 100755 index 00000000..e8a39dd7 --- /dev/null +++ b/ui (gen4)/lib/widget/widget.js @@ -0,0 +1,55 @@ +/********************************************************************** +* +* +* +**********************************************************************/ + +define(function(require){ var module = {} +console.log('>>> widget') + +//var DEBUG = DEBUG != null ? DEBUG : true + + +/*********************************************************************/ +// helpers... + +var proxyToDom = +module.proxyToDom = +function(name){ + return function(){ + this.dom[name].apply(this.dom, arguments) + return this + } +} + + +// XXX triggering events from here and from jQuery/dom has a +// different effect... +var triggerEventWithSource = +module.triggerEventWithSource = +function(){ + var args = args2array(arguments) + var evt = args.shift() + + if(typeof(evt) == typeof('str')){ + evt = $.Event(evt) + } + + evt.source = this + + args.splice(0, 0, evt) + + this.dom.trigger.apply(this.dom, args) + return this +} + + + +/*********************************************************************/ + + + + +/********************************************************************** +* vim:set ts=4 sw=4 : */ +return module })