Browse Source

adding types of actions to dropdowns + more functionality

Former-commit-id: 77ddd24a47
Former-commit-id: aedb5170d8
pull/258/head
Jack Lukic 12 years ago
parent
commit
5f15c164c3
27 changed files with 340 additions and 127 deletions
  1. 2
      build/minified/modules/behavior/state.js
  2. 2
      build/minified/modules/behavior/state.min.js
  3. 16
      build/minified/modules/checkbox.js
  4. 2
      build/minified/modules/checkbox.min.js
  5. 77
      build/minified/modules/dropdown.js
  6. 2
      build/minified/modules/dropdown.min.css
  7. 2
      build/minified/modules/dropdown.min.js
  8. 2
      build/packaged/modules/behavior/state.js
  9. 16
      build/packaged/modules/checkbox.js
  10. 77
      build/packaged/modules/dropdown.js
  11. 2
      build/packaged/semantic.min.css.REMOVED.git-id
  12. 2
      build/packaged/semantic.min.js.REMOVED.git-id
  13. 2
      build/uncompressed/modules/behavior/state.js
  14. 16
      build/uncompressed/modules/checkbox.js
  15. 15
      build/uncompressed/modules/dropdown.css
  16. 77
      build/uncompressed/modules/dropdown.js
  17. 8
      node/src/documents/modules/dropdown.html
  18. 2
      node/src/files/components/semantic/modules/behavior/state.js
  19. 2
      node/src/files/components/semantic/modules/checkbox.js
  20. 15
      node/src/files/components/semantic/modules/dropdown.css
  21. 13
      node/src/files/components/semantic/modules/dropdown.js
  22. 2
      spec/modules/module.commented.js
  23. 2
      spec/modules/module.js
  24. 2
      src/modules/behavior/state.js
  25. 16
      src/modules/checkbox.js
  26. 77
      src/modules/dropdown.js
  27. 16
      src/modules/dropdown.less

2
build/minified/modules/behavior/state.js

@ -485,7 +485,7 @@ $.fn.state = function(parameters) {
debug: function() {
if(settings.debug) {
module.performance.log(arguments[0]);
module.verbose = Function.prototype.bind.call(console.info, console, settings.moduleName + ':');
module.debug = Function.prototype.bind.call(console.info, console, settings.moduleName + ':');
}
},
error: function() {

2
build/minified/modules/behavior/state.min.js
File diff suppressed because it is too large
View File

16
build/minified/modules/checkbox.js

@ -66,6 +66,13 @@ $.fn.checkbox = function(parameters) {
}
},
destroy: function() {
module.verbose('Destroying previous module for', $module);
$module
.off(namespace)
;
},
is: {
radio: function() {
return $module
@ -83,13 +90,6 @@ $.fn.checkbox = function(parameters) {
}
},
destroy: function() {
module.verbose('Destroying previous module for', $module);
$module
.off(namespace)
;
},
enable: function() {
module.debug('Enabling checkbox');
$module
@ -157,7 +157,7 @@ $.fn.checkbox = function(parameters) {
debug: function() {
if(settings.debug) {
module.performance.log(arguments[0]);
module.verbose = Function.prototype.bind.call(console.info, console, settings.moduleName + ':');
module.debug = Function.prototype.bind.call(console.info, console, settings.moduleName + ':');
}
},
verbose: function() {

2
build/minified/modules/checkbox.min.js

@ -1 +1 @@
(function(e,t,n,o){e.fn.checkbox=function(t){var n,a=e(this),i=e.extend(!0,{},e.fn.checkbox.settings,t),s="."+i.namespace,r="module-"+i.namespace,l=(a.selector||"",(new Date).getTime()),c=[],u=arguments[0],d="string"==typeof u,f=[].slice.call(arguments,1);return a.each(function(){var t,m=e(this),p=e(this).find(i.selector.input),g=m.selector||"",h=this,v=m.data("module-"+i.namespace),b=i.className,y=i.namespace,x=i.errors;t={initialize:function(){i.context&&""!==g?(t.verbose("Initializing checkbox with delegated events",m),e(h,i.context).on(g,"click"+s,t.toggle).data(r,t)):(t.verbose("Initializing checkbox with bound events",m),m.on("click"+s,t.toggle).data(r,t))},is:{radio:function(){return m.hasClass(b.radio)}},can:{disable:function(){return"boolean"==typeof i.required?i.required:!t.is.radio()}},destroy:function(){t.verbose("Destroying previous module for",m),m.off(y)},enable:function(){t.debug("Enabling checkbox"),m.addClass(b.active),p.prop("checked",!0),e.proxy(i.onChange,p.get())(),e.proxy(i.onEnable,p.get())()},disable:function(){t.debug("Disabling checkbox"),m.removeClass(b.active),p.prop("checked",!1),e.proxy(i.onChange,p.get())(),e.proxy(i.onDisable,p.get())()},toggle:function(){t.verbose("Toggling checkbox state"),p.prop("checked")!==o&&p.prop("checked")?t.can.disable()&&t.disable():t.enable()},setting:function(n,a){return a===o?i[n]:(e.isPlainObject(n)?(t.verbose("Modifying settings object",n,a),e.extend(!0,i,n)):(t.verbose("Modifying setting",n,a),i[n]=a),o)},internal:function(n,a){return a===o?t[n]:(e.isPlainObject(n)?(t.verbose("Modifying internal property",n,a),e.extend(!0,t,n)):(t.verbose("Changing internal method to",a),t[n]=a),o)},debug:function(){i.debug&&(t.performance.log(arguments[0]),t.verbose=Function.prototype.bind.call(console.info,console,i.moduleName+":"))},verbose:function(){i.verbose&&i.debug&&(t.performance.log(arguments[0]),t.verbose=Function.prototype.bind.call(console.info,console,i.moduleName+":"))},error:function(){console.log!==o&&(t.error=Function.prototype.bind.call(console.log,console,i.moduleName+":"))},performance:{log:function(e){var n,o,a;i.performance&&(n=(new Date).getTime(),a=l||n,o=n-a,l=n,c.push({Element:h,Name:e,"Execution Time":o}),clearTimeout(t.performance.timer),t.performance.timer=setTimeout(t.performance.display,100))},display:function(){var t=i.moduleName,n=(i.moduleName+": "+g+"("+a.size()+" elements)",0);g&&(t+="Performance ("+g+")"),(console.group!==o||console.table!==o)&&c.length>0&&(console.groupCollapsed(t),console.table?(e.each(c,function(e,t){n+=t["Execution Time"]}),console.table(c)):e.each(c,function(e,t){n+=t["Execution Time"]}),console.log("Total Execution Time:",n+"ms"),console.groupEnd(),c=[],l=!1)}},invoke:function(n,a,i){var s,r;return a=a||f,i=h||i,"string"==typeof n&&v!==o&&(n=n.split("."),s=n.length-1,e.each(n,function(n,a){return e.isPlainObject(v[a])&&n!=s?(v=v[a],!0):v[a]!==o?(r=v[a],!0):(t.error(x.method),!1)})),e.isFunction(r)?(t.verbose("Executing invoked function",r),r.apply(i,a)):r||!1}},d?(v===o&&t.initialize(),n=t.invoke(u)):(v!==o&&t.destroy(),t.initialize())}),n?n:this},e.fn.checkbox.settings={moduleName:"Checkbox Module",namespace:"checkbox",verbose:!0,debug:!0,performance:!1,context:!1,required:"auto",onChange:function(){},onEnable:function(){},onDisable:function(){},errors:{method:"The method you called is not defined."},selector:{input:"input"},className:{active:"active",radio:"radio"}}})(jQuery,window,document);
(function(e,t,n,o){e.fn.checkbox=function(t){var n,a=e(this),i=e.extend(!0,{},e.fn.checkbox.settings,t),s="."+i.namespace,r="module-"+i.namespace,l=(a.selector||"",(new Date).getTime()),c=[],u=arguments[0],d="string"==typeof u,f=[].slice.call(arguments,1);return a.each(function(){var t,m=e(this),p=e(this).find(i.selector.input),g=m.selector||"",h=this,v=m.data("module-"+i.namespace),b=i.className,y=i.namespace,x=i.errors;t={initialize:function(){i.context&&""!==g?(t.verbose("Initializing checkbox with delegated events",m),e(h,i.context).on(g,"click"+s,t.toggle).data(r,t)):(t.verbose("Initializing checkbox with bound events",m),m.on("click"+s,t.toggle).data(r,t))},destroy:function(){t.verbose("Destroying previous module for",m),m.off(y)},is:{radio:function(){return m.hasClass(b.radio)}},can:{disable:function(){return"boolean"==typeof i.required?i.required:!t.is.radio()}},enable:function(){t.debug("Enabling checkbox"),m.addClass(b.active),p.prop("checked",!0),e.proxy(i.onChange,p.get())(),e.proxy(i.onEnable,p.get())()},disable:function(){t.debug("Disabling checkbox"),m.removeClass(b.active),p.prop("checked",!1),e.proxy(i.onChange,p.get())(),e.proxy(i.onDisable,p.get())()},toggle:function(){t.verbose("Toggling checkbox state"),p.prop("checked")!==o&&p.prop("checked")?t.can.disable()&&t.disable():t.enable()},setting:function(n,a){return a===o?i[n]:(e.isPlainObject(n)?(t.verbose("Modifying settings object",n,a),e.extend(!0,i,n)):(t.verbose("Modifying setting",n,a),i[n]=a),o)},internal:function(n,a){return a===o?t[n]:(e.isPlainObject(n)?(t.verbose("Modifying internal property",n,a),e.extend(!0,t,n)):(t.verbose("Changing internal method to",a),t[n]=a),o)},debug:function(){i.debug&&(t.performance.log(arguments[0]),t.debug=Function.prototype.bind.call(console.info,console,i.moduleName+":"))},verbose:function(){i.verbose&&i.debug&&(t.performance.log(arguments[0]),t.verbose=Function.prototype.bind.call(console.info,console,i.moduleName+":"))},error:function(){console.log!==o&&(t.error=Function.prototype.bind.call(console.log,console,i.moduleName+":"))},performance:{log:function(e){var n,o,a;i.performance&&(n=(new Date).getTime(),a=l||n,o=n-a,l=n,c.push({Element:h,Name:e,"Execution Time":o}),clearTimeout(t.performance.timer),t.performance.timer=setTimeout(t.performance.display,100))},display:function(){var t=i.moduleName,n=(i.moduleName+": "+g+"("+a.size()+" elements)",0);g&&(t+="Performance ("+g+")"),(console.group!==o||console.table!==o)&&c.length>0&&(console.groupCollapsed(t),console.table?(e.each(c,function(e,t){n+=t["Execution Time"]}),console.table(c)):e.each(c,function(e,t){n+=t["Execution Time"]}),console.log("Total Execution Time:",n+"ms"),console.groupEnd(),c=[],l=!1)}},invoke:function(n,a,i){var s,r;return a=a||f,i=h||i,"string"==typeof n&&v!==o&&(n=n.split("."),s=n.length-1,e.each(n,function(n,a){return e.isPlainObject(v[a])&&n!=s?(v=v[a],!0):v[a]!==o?(r=v[a],!0):(t.error(x.method),!1)})),e.isFunction(r)?(t.verbose("Executing invoked function",r),r.apply(i,a)):r||!1}},d?(v===o&&t.initialize(),n=t.invoke(u)):(v!==o&&t.destroy(),t.initialize())}),n?n:this},e.fn.checkbox.settings={moduleName:"Checkbox Module",namespace:"checkbox",verbose:!0,debug:!0,performance:!1,context:!1,required:"auto",onChange:function(){},onEnable:function(){},onDisable:function(){},errors:{method:"The method you called is not defined."},selector:{input:"input"},className:{active:"active",radio:"radio"}}})(jQuery,window,document);

77
build/minified/modules/dropdown.js

@ -34,6 +34,8 @@ $.fn.dropdown = function(parameters) {
var
$module = $(this),
$menu = $(this).find(settings.selector.menu),
$item = $(this).find(settings.selector.item),
$input = $(this).find(settings.selector.input)
isTouchDevice = ('ontouchstart' in document.documentElement),
@ -61,23 +63,53 @@ $.fn.dropdown = function(parameters) {
}
else {
module.verbose('Initializing dropdown with bound events', $module);
$module
.on(module.get.event() + eventNamespace, module.toggle)
.on(module.get.event() + eventNamespace, module.intent.test)
;
$item
.on('click' + eventNamespace, module.event.select)
;
$module
.data(moduleNamespace, module)
;
}
},
destroy: function() {
module.verbose('Destroying previous module for', $module);
$module
.off(namespace)
;
},
event: {
item: {
click: function () {
var
value = $(this).data(metadata.value) || $(this).html()
;
module.verbose('Determining select action');
if( $.isFunction( module.action[settings.action] ) {
module.action[ settings.action ](value);
}
else {
module.error(errors.action);
}
}
}
},
intent: {
test: function(event) {
module.debug('Checking if click was inside the dropdown', event.target);
if( $(event.target).closest($module).size() == 0 ) {
module.hide();
if( $(event.target).closest($menu).size() == 0 ) {
module.toggle();
event.stopPropagation();
}
},
@ -97,6 +129,22 @@ $.fn.dropdown = function(parameters) {
},
action: {
nothing: function() {},
close: function() {
module.hide();
},
form: function(value) {
module.debug('Adding selected value to hidden input', value);
$input.val(value);
module.hide();
}
}
get: {
event: function() {
@ -122,13 +170,6 @@ $.fn.dropdown = function(parameters) {
}
},
destroy: function() {
module.verbose('Destroying previous dropdown for', $module);
$module
.off(namespace)
;
},
animate: {
show: function() {
if(animation.show == 'show') {
@ -150,7 +191,6 @@ $.fn.dropdown = function(parameters) {
}
},
hide: function() {
console.log(animation.hide);
if(animation.hide == 'hide') {
$menu
.hide()
@ -235,7 +275,7 @@ $.fn.dropdown = function(parameters) {
debug: function() {
if(settings.debug) {
module.performance.log(arguments[0]);
module.verbose = Function.prototype.bind.call(console.info, console, settings.moduleName + ':');
module.debug = Function.prototype.bind.call(console.info, console, settings.moduleName + ':');
}
},
verbose: function() {
@ -359,6 +399,8 @@ $.fn.dropdown.settings = {
debug : true,
performance : false,
action: 'close',
animation: {
show: 'slide',
hide: 'slide'
@ -371,11 +413,18 @@ $.fn.dropdown.settings = {
onHide : function(){},
errors : {
action : 'You called a dropdown action that was not defined',
method : 'The method you called is not defined.'
},
metadata: {
value: 'value'
},
selector : {
input : 'input[type="hidden"]',
menu : '.menu'
item : '.menu > .item'
},
className : {

2
build/minified/modules/dropdown.min.css

@ -1 +1 @@
.ui.dropdown{position:relative;display:inline-block;line-height:1;white-space:nowrap}.ui.dropdown .menu{position:absolute;display:none;top:100%;background-color:#FFF;min-width:100%;-webkit-box-shadow:0 2px 0 0 rgba(0,0,0,.1),1px 0 0 0 rgba(0,0,0,.1) inset,-1px 0 0 0 rgba(0,0,0,.1) inset,0 -1px 0 0 rgba(0,0,0,.1) inset;-moz-box-shadow:0 2px 0 0 rgba(0,0,0,.1),1px 0 0 0 rgba(0,0,0,.1) inset,-1px 0 0 0 rgba(0,0,0,.1) inset;box-shadow:0 2px 0 0 rgba(0,0,0,.1),1px 0 0 0 rgba(0,0,0,.1) inset,-1px 0 0 0 rgba(0,0,0,.1) inset,0 -1px 0 0 rgba(0,0,0,.1) inset;-moz-border-radius:0 0 .325em .325em;-webkit-border-radius:0 0 .325em .325em;border-radius:0 0 .325em .325em;-webkit-transition:opacity .2s ease-out;-moz-transition:opacity .2s ease-out;-o-transition:opacity .2s ease-out;-ms-transition:opacity .2s ease-out;transition:opacity .2s ease-out;z-index:11}.ui.dropdown .menu{left:0}.ui>.ui.dropdown:last-child .menu{left:auto;right:0}.ui.dropdown .menu .item{cursor:pointer;border:0;border-top:1px solid rgba(0,0,0,.05);font-size:.9em;display:block;color:rgba(0,0,0,.75);padding:.85em 1em;font-size:.9rem;text-transform:none;font-weight:400;text-align:left;-webkit-touch-callout:none}.ui.dropdown .menu .item .icon{margin-right:.75em}.ui.dropdown .menu .item:first-child{border-top:0}.ui.dropdown.visible{border-bottom-left-radius:0!important;border-bottom-right-radius:0!important}.ui.dropdown .menu .item:hover{background-color:rgba(0,0,0,.02)}.ui.dropdown .menu .active.item{border-top:1px solid rgba(0,0,0,.05);font-weight:700}.ui.simple.dropdown .menu{overflow:hidden;height:0;width:0;position:absolute;opacity:0;-webkit-transition:opacity .2s ease-out;-moz-transition:opacity .2s ease-out;-o-transition:opacity .2s ease-out;-ms-transition:opacity .2s ease-out;transition:opacity .2s ease-out}.ui.simple.dropdown:hover .menu{display:block;overflow:visible;min-width:210px;width:100%;height:auto;opacity:1}.ui.selection.dropdown{cursor:pointer;display:inline-block;background-color:#FFF;padding:.5em 1em;line-height:1.33;-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.1);-moz-box-shadow:0 0 0 1px rgba(0,0,0,.1);box-shadow:0 0 0 1px rgba(0,0,0,.1);-webkit-border-radius:.3125em;-moz-border-radius:.3125em;border-radius:.3125em}.ui.selection.dropdown>.dropdown.icon{float:right;margin:.2em 0 .2em .5em}.ui.selection.dropdown,.ui.selection.dropdown .menu{-webkit-transition:box-shadow .2s ease-out;-moz-transition:box-shadow .2s ease-out;-o-transition:box-shadow .2s ease-out;-ms-transition:box-shadow .2s ease-out;transition:box-shadow .2s ease-out}.ui.selection.dropdown .menu{-webkit-box-shadow:0 1px 0 1px #EEE;-moz-box-shadow:0 1px 0 1px #EEE;box-shadow:0 1px 0 1px #EEE}.ui.selection.dropdown:hover,.ui.selection.dropdown.hover{-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.2);-moz-box-shadow:0 0 0 1px rgba(0,0,0,.2);box-shadow:0 0 0 1px rgba(0,0,0,.2)}.ui.selection.dropdown:hover .menu{-webkit-box-shadow:0 1px 0 1px #D3D3D3;-moz-box-shadow:0 1px 0 1px #D3D3D3;box-shadow:0 1px 0 1px #D3D3D3}
.ui.dropdown{position:relative;display:inline-block;line-height:1;white-space:nowrap;-webkit-transition:border-radius .1s ease;-moz-transition:border-radius .1s ease;-o-transition:border-radius .1s ease;-ms-transition:border-radius .1s ease;transition:border-radius .1s ease}.ui.dropdown .menu{position:absolute;display:none;top:100%;background-color:#FFF;min-width:100%;-webkit-box-shadow:0 2px 0 0 rgba(0,0,0,.1),1px 0 0 0 rgba(0,0,0,.1) inset,-1px 0 0 0 rgba(0,0,0,.1) inset,0 -1px 0 0 rgba(0,0,0,.1) inset;-moz-box-shadow:0 2px 0 0 rgba(0,0,0,.1),1px 0 0 0 rgba(0,0,0,.1) inset,-1px 0 0 0 rgba(0,0,0,.1) inset;box-shadow:0 2px 0 0 rgba(0,0,0,.1),1px 0 0 0 rgba(0,0,0,.1) inset,-1px 0 0 0 rgba(0,0,0,.1) inset,0 -1px 0 0 rgba(0,0,0,.1) inset;-moz-border-radius:0 0 .325em .325em;-webkit-border-radius:0 0 .325em .325em;border-radius:0 0 .325em .325em;-webkit-transition:opacity .2s ease;-moz-transition:opacity .2s ease;-o-transition:opacity .2s ease;-ms-transition:opacity .2s ease;transition:opacity .2s ease;z-index:11}.ui.dropdown .menu{left:0}.ui>.ui.dropdown:last-child .menu{left:auto;right:0}.ui.dropdown .menu .item{cursor:pointer;border:0;border-top:1px solid rgba(0,0,0,.05);font-size:.9em;display:block;color:rgba(0,0,0,.75);padding:.85em 1em;font-size:.9rem;text-transform:none;font-weight:400;text-align:left;-webkit-touch-callout:none}.ui.dropdown .menu .item .icon{margin-right:.75em}.ui.dropdown .menu .item:first-child{border-top:0}.ui.dropdown.visible{border-bottom-left-radius:0!important;border-bottom-right-radius:0!important}.ui.dropdown .menu .item:hover{background-color:rgba(0,0,0,.02)}.ui.dropdown .menu .active.item{border-top:1px solid rgba(0,0,0,.05);font-weight:700}.ui.simple.dropdown .menu{overflow:hidden;height:0;width:0;position:absolute;opacity:0;-webkit-transition:opacity .2s ease-out;-moz-transition:opacity .2s ease-out;-o-transition:opacity .2s ease-out;-ms-transition:opacity .2s ease-out;transition:opacity .2s ease-out}.ui.simple.dropdown:hover .menu{display:block;overflow:visible;min-width:210px;width:100%;height:auto;opacity:1}.ui.selection.dropdown{cursor:pointer;display:inline-block;background-color:#FFF;padding:.5em 1em;line-height:1.33;-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.1);-moz-box-shadow:0 0 0 1px rgba(0,0,0,.1);box-shadow:0 0 0 1px rgba(0,0,0,.1);-webkit-border-radius:.3125em;-moz-border-radius:.3125em;border-radius:.3125em}.ui.selection.dropdown>.dropdown.icon{float:right;margin:.2em 0 .2em .5em}.ui.selection.dropdown,.ui.selection.dropdown .menu{-webkit-transition:box-shadow .2s ease-out;-moz-transition:box-shadow .2s ease-out;-o-transition:box-shadow .2s ease-out;-ms-transition:box-shadow .2s ease-out;transition:box-shadow .2s ease-out}.ui.selection.dropdown .menu{-webkit-box-shadow:0 1px 0 1px #EEE;-moz-box-shadow:0 1px 0 1px #EEE;box-shadow:0 1px 0 1px #EEE}.ui.selection.dropdown:hover,.ui.selection.dropdown.hover{-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.2);-moz-box-shadow:0 0 0 1px rgba(0,0,0,.2);box-shadow:0 0 0 1px rgba(0,0,0,.2)}.ui.selection.dropdown:hover .menu{-webkit-box-shadow:0 1px 0 1px #D3D3D3;-moz-box-shadow:0 1px 0 1px #D3D3D3;box-shadow:0 1px 0 1px #D3D3D3}

2
build/minified/modules/dropdown.min.js

@ -1 +1 @@
(function(e,t,n,o){e.fn.dropdown=function(t){var a,i=e(this),s=e(n),r=e.extend(!0,{},e.fn.dropdown.settings,t),c="."+r.namespace,l="module-"+r.namespace,u=(i.selector||"",(new Date).getTime()),d=[],f=arguments[0],m="string"==typeof f,p=[].slice.call(arguments,1);return i.each(function(){var t,g=e(this),h=e(this).find(r.selector.menu),v="ontouchstart"in n.documentElement,b=g.selector||"",y=this,x=g.data("module-"+r.namespace),C=r.className,w=r.namespace,T=r.animation,k=r.errors;t={initialize:function(){r.context&&""!==b?(t.verbose("Initializing dropdown with delegated events",g),e(y,r.context).on(b,"click"+c,t.toggle).data(l,t)):(t.verbose("Initializing dropdown with bound events",g),g.on(t.get.event()+c,t.toggle),g.data(l,t))},intent:{test:function(n){t.debug("Checking if click was inside the dropdown",n.target),0==e(n.target).closest(g).size()&&t.hide()},bind:function(){t.verbose("Binding hide intent event to document"),e(n).on("click",t.intent.test)},unbind:function(){t.verbose("Removing hide intent event from document"),s.off("click")}},get:{event:function(){return v?"touchstart":"hover"==r.on?"hover":"click"==r.on?"click":o}},can:{click:function(){return v||"click"==r.on},show:function(){return!g.hasClass(C.disabled)}},destroy:function(){t.verbose("Destroying previous dropdown for",g),g.off(w)},animate:{show:function(){"show"==T.show?h.show():"slide"==T.show&&h.children().css("opacity",0).delay(100).animate({opacity:1},300,"easeOutQuad").end().slideDown(200,"easeOutQuad")},hide:function(){console.log(T.hide),"hide"==T.hide?h.hide():"slide"==T.hide&&h.children().css("opacity",1).animate({opacity:0},300,"easeOutQuad").end().delay(100).slideUp(200,"easeOutQuad")}},show:function(){t.debug("Showing dropdown"),g.addClass(C.active),t.animate.show(),t.can.click()&&t.intent.bind(),e.proxy(r.onChange,h.get())(),e.proxy(r.onShow,h.get())()},hide:function(){t.debug("Hiding dropdown"),g.removeClass(C.active),t.can.click()&&t.intent.unbind(),t.animate.hide(),e.proxy(r.onChange,h.get())(),e.proxy(r.onHide,h.get())()},toggle:function(){t.can.show()&&h.is(":not(:visible)")?t.show():t.hide()},setting:function(t,n){return n===o?r[t]:(e.isPlainObject(t)?e.extend(!0,r,t):r[t]=n,o)},internal:function(n,a){return a===o?t[n]:(e.isPlainObject(n)?e.extend(!0,t,n):t[n]=a,o)},debug:function(){r.debug&&(t.performance.log(arguments[0]),t.verbose=Function.prototype.bind.call(console.info,console,r.moduleName+":"))},verbose:function(){r.verbose&&r.debug&&(t.performance.log(arguments[0]),t.verbose=Function.prototype.bind.call(console.info,console,r.moduleName+":"))},error:function(){console.log!==o&&(t.error=Function.prototype.bind.call(console.log,console,r.moduleName+":"))},performance:{log:function(e){var n,o,a;r.performance&&(n=(new Date).getTime(),a=u||n,o=n-a,u=n,d.push({Element:y,Name:e,"Execution Time":o}),clearTimeout(t.performance.timer),t.performance.timer=setTimeout(t.performance.display,100))},display:function(){var t=r.moduleName,n=(r.moduleName+": "+b+"("+i.size()+" elements)",0);b&&(t+="Performance ("+b+")"),(console.group!==o||console.table!==o)&&d.length>0&&(console.groupCollapsed(t),console.table?(e.each(d,function(e,t){n+=t["Execution Time"]}),console.table(d)):e.each(d,function(e,t){n+=t["Execution Time"]}),console.log("Total Execution Time:",n+"ms"),console.groupEnd(),d=[],u=!1)}},invoke:function(n,a,i){var s,r;return a=a||p,i=y||i,"string"==typeof n&&x!==o&&(n=n.split("."),s=n.length-1,e.each(n,function(n,a){return e.isPlainObject(x[a])&&n!=s?(x=x[a],!0):x[a]!==o?(r=x[a],!0):(t.error(k.method),!1)})),e.isFunction(r)?(t.verbose("Executing invoked function",r),r.apply(i,a)):r||!1}},m?(x===o&&t.initialize(),a=t.invoke(f)):(x!==o&&t.destroy(),t.initialize())}),a?a:this},e.fn.dropdown.settings={moduleName:"Dropdown Module",namespace:"dropdown",verbose:!0,debug:!0,performance:!1,animation:{show:"slide",hide:"slide"},on:"click",onChange:function(){},onShow:function(){},onHide:function(){},errors:{method:"The method you called is not defined."},selector:{menu:".menu"},className:{active:"visible"}}})(jQuery,window,document);
(function(e,t,n,o){e.fn.dropdown=function(t){var a,i=e(this),s=e(n),r=e.extend(!0,{},e.fn.dropdown.settings,t),c="."+r.namespace,l="module-"+r.namespace,u=(i.selector||"",(new Date).getTime()),d=[],f=arguments[0],m="string"==typeof f,p=[].slice.call(arguments,1);return i.each(function(){var t,g=e(this),h=e(this).find(r.selector.menu),v="ontouchstart"in n.documentElement,b=g.selector||"",y=this,x=g.data("module-"+r.namespace),C=r.className,w=r.namespace,T=r.animation,k=r.errors;t={initialize:function(){r.context&&""!==b?(t.verbose("Initializing dropdown with delegated events",g),e(y,r.context).on(b,"click"+c,t.toggle).data(l,t)):(t.verbose("Initializing dropdown with bound events",g),g.on(t.get.event()+c,t.intent.test),g.data(l,t))},intent:{test:function(n){t.debug("Checking if click was inside the dropdown",n.target),0==e(n.target).closest(h).size()&&(t.toggle(),n.stopPropagation())},bind:function(){t.verbose("Binding hide intent event to document"),e(n).on("click",t.intent.test)},unbind:function(){t.verbose("Removing hide intent event from document"),s.off("click")}},get:{event:function(){return v?"touchstart":"hover"==r.on?"hover":"click"==r.on?"click":o}},can:{click:function(){return v||"click"==r.on},show:function(){return!g.hasClass(C.disabled)}},destroy:function(){t.verbose("Destroying previous dropdown for",g),g.off(w)},animate:{show:function(){"show"==T.show?h.show():"slide"==T.show&&h.children().css("opacity",0).delay(100).animate({opacity:1},300,"easeOutQuad").end().slideDown(200,"easeOutQuad")},hide:function(){"hide"==T.hide?h.hide():"slide"==T.hide&&h.children().css("opacity",1).animate({opacity:0},300,"easeOutQuad").end().delay(100).slideUp(200,"easeOutQuad")}},show:function(){t.debug("Showing dropdown"),g.addClass(C.active),t.animate.show(),t.can.click()&&t.intent.bind(),e.proxy(r.onChange,h.get())(),e.proxy(r.onShow,h.get())()},hide:function(){t.debug("Hiding dropdown"),g.removeClass(C.active),t.can.click()&&t.intent.unbind(),t.animate.hide(),e.proxy(r.onChange,h.get())(),e.proxy(r.onHide,h.get())()},toggle:function(){t.can.show()&&h.is(":not(:visible)")?t.show():t.hide()},setting:function(t,n){return n===o?r[t]:(e.isPlainObject(t)?e.extend(!0,r,t):r[t]=n,o)},internal:function(n,a){return a===o?t[n]:(e.isPlainObject(n)?e.extend(!0,t,n):t[n]=a,o)},debug:function(){r.debug&&(t.performance.log(arguments[0]),t.debug=Function.prototype.bind.call(console.info,console,r.moduleName+":"))},verbose:function(){r.verbose&&r.debug&&(t.performance.log(arguments[0]),t.verbose=Function.prototype.bind.call(console.info,console,r.moduleName+":"))},error:function(){console.log!==o&&(t.error=Function.prototype.bind.call(console.log,console,r.moduleName+":"))},performance:{log:function(e){var n,o,a;r.performance&&(n=(new Date).getTime(),a=u||n,o=n-a,u=n,d.push({Element:y,Name:e,"Execution Time":o}),clearTimeout(t.performance.timer),t.performance.timer=setTimeout(t.performance.display,100))},display:function(){var t=r.moduleName,n=(r.moduleName+": "+b+"("+i.size()+" elements)",0);b&&(t+="Performance ("+b+")"),(console.group!==o||console.table!==o)&&d.length>0&&(console.groupCollapsed(t),console.table?(e.each(d,function(e,t){n+=t["Execution Time"]}),console.table(d)):e.each(d,function(e,t){n+=t["Execution Time"]}),console.log("Total Execution Time:",n+"ms"),console.groupEnd(),d=[],u=!1)}},invoke:function(n,a,i){var s,r;return a=a||p,i=y||i,"string"==typeof n&&x!==o&&(n=n.split("."),s=n.length-1,e.each(n,function(n,a){return e.isPlainObject(x[a])&&n!=s?(x=x[a],!0):x[a]!==o?(r=x[a],!0):(t.error(k.method),!1)})),e.isFunction(r)?(t.verbose("Executing invoked function",r),r.apply(i,a)):r||!1}},m?(x===o&&t.initialize(),a=t.invoke(f)):(x!==o&&t.destroy(),t.initialize())}),a?a:this},e.fn.dropdown.settings={moduleName:"Dropdown Module",namespace:"dropdown",verbose:!0,debug:!0,performance:!1,action:"close",animation:{show:"slide",hide:"slide"},on:"click",onChange:function(){},onShow:function(){},onHide:function(){},errors:{method:"The method you called is not defined."},selector:{menu:".menu"},className:{active:"visible"}}})(jQuery,window,document);

2
build/packaged/modules/behavior/state.js

@ -485,7 +485,7 @@ $.fn.state = function(parameters) {
debug: function() {
if(settings.debug) {
module.performance.log(arguments[0]);
module.verbose = Function.prototype.bind.call(console.info, console, settings.moduleName + ':');
module.debug = Function.prototype.bind.call(console.info, console, settings.moduleName + ':');
}
},
error: function() {

16
build/packaged/modules/checkbox.js

@ -66,6 +66,13 @@ $.fn.checkbox = function(parameters) {
}
},
destroy: function() {
module.verbose('Destroying previous module for', $module);
$module
.off(namespace)
;
},
is: {
radio: function() {
return $module
@ -83,13 +90,6 @@ $.fn.checkbox = function(parameters) {
}
},
destroy: function() {
module.verbose('Destroying previous module for', $module);
$module
.off(namespace)
;
},
enable: function() {
module.debug('Enabling checkbox');
$module
@ -157,7 +157,7 @@ $.fn.checkbox = function(parameters) {
debug: function() {
if(settings.debug) {
module.performance.log(arguments[0]);
module.verbose = Function.prototype.bind.call(console.info, console, settings.moduleName + ':');
module.debug = Function.prototype.bind.call(console.info, console, settings.moduleName + ':');
}
},
verbose: function() {

77
build/packaged/modules/dropdown.js

@ -34,6 +34,8 @@ $.fn.dropdown = function(parameters) {
var
$module = $(this),
$menu = $(this).find(settings.selector.menu),
$item = $(this).find(settings.selector.item),
$input = $(this).find(settings.selector.input)
isTouchDevice = ('ontouchstart' in document.documentElement),
@ -61,23 +63,53 @@ $.fn.dropdown = function(parameters) {
}
else {
module.verbose('Initializing dropdown with bound events', $module);
$module
.on(module.get.event() + eventNamespace, module.toggle)
.on(module.get.event() + eventNamespace, module.intent.test)
;
$item
.on('click' + eventNamespace, module.event.select)
;
$module
.data(moduleNamespace, module)
;
}
},
destroy: function() {
module.verbose('Destroying previous module for', $module);
$module
.off(namespace)
;
},
event: {
item: {
click: function () {
var
value = $(this).data(metadata.value) || $(this).html()
;
module.verbose('Determining select action');
if( $.isFunction( module.action[settings.action] ) {
module.action[ settings.action ](value);
}
else {
module.error(errors.action);
}
}
}
},
intent: {
test: function(event) {
module.debug('Checking if click was inside the dropdown', event.target);
if( $(event.target).closest($module).size() == 0 ) {
module.hide();
if( $(event.target).closest($menu).size() == 0 ) {
module.toggle();
event.stopPropagation();
}
},
@ -97,6 +129,22 @@ $.fn.dropdown = function(parameters) {
},
action: {
nothing: function() {},
close: function() {
module.hide();
},
form: function(value) {
module.debug('Adding selected value to hidden input', value);
$input.val(value);
module.hide();
}
}
get: {
event: function() {
@ -122,13 +170,6 @@ $.fn.dropdown = function(parameters) {
}
},
destroy: function() {
module.verbose('Destroying previous dropdown for', $module);
$module
.off(namespace)
;
},
animate: {
show: function() {
if(animation.show == 'show') {
@ -150,7 +191,6 @@ $.fn.dropdown = function(parameters) {
}
},
hide: function() {
console.log(animation.hide);
if(animation.hide == 'hide') {
$menu
.hide()
@ -235,7 +275,7 @@ $.fn.dropdown = function(parameters) {
debug: function() {
if(settings.debug) {
module.performance.log(arguments[0]);
module.verbose = Function.prototype.bind.call(console.info, console, settings.moduleName + ':');
module.debug = Function.prototype.bind.call(console.info, console, settings.moduleName + ':');
}
},
verbose: function() {
@ -359,6 +399,8 @@ $.fn.dropdown.settings = {
debug : true,
performance : false,
action: 'close',
animation: {
show: 'slide',
hide: 'slide'
@ -371,11 +413,18 @@ $.fn.dropdown.settings = {
onHide : function(){},
errors : {
action : 'You called a dropdown action that was not defined',
method : 'The method you called is not defined.'
},
metadata: {
value: 'value'
},
selector : {
input : 'input[type="hidden"]',
menu : '.menu'
item : '.menu > .item'
},
className : {

2
build/packaged/semantic.min.css.REMOVED.git-id

@ -1 +1 @@
1062a585b0696a0af4d861a6941560c167dfba24
5dd53cafcc4e065adc363338f570384e7d941806

2
build/packaged/semantic.min.js.REMOVED.git-id

@ -1 +1 @@
abc35da2d20047da9c3ba4d4ed7f9cf750458436
3e66f0dc5b499861816375c6e348512adf5250df

2
build/uncompressed/modules/behavior/state.js

@ -485,7 +485,7 @@ $.fn.state = function(parameters) {
debug: function() {
if(settings.debug) {
module.performance.log(arguments[0]);
module.verbose = Function.prototype.bind.call(console.info, console, settings.moduleName + ':');
module.debug = Function.prototype.bind.call(console.info, console, settings.moduleName + ':');
}
},
error: function() {

16
build/uncompressed/modules/checkbox.js

@ -66,6 +66,13 @@ $.fn.checkbox = function(parameters) {
}
},
destroy: function() {
module.verbose('Destroying previous module for', $module);
$module
.off(namespace)
;
},
is: {
radio: function() {
return $module
@ -83,13 +90,6 @@ $.fn.checkbox = function(parameters) {
}
},
destroy: function() {
module.verbose('Destroying previous module for', $module);
$module
.off(namespace)
;
},
enable: function() {
module.debug('Enabling checkbox');
$module
@ -157,7 +157,7 @@ $.fn.checkbox = function(parameters) {
debug: function() {
if(settings.debug) {
module.performance.log(arguments[0]);
module.verbose = Function.prototype.bind.call(console.info, console, settings.moduleName + ':');
module.debug = Function.prototype.bind.call(console.info, console, settings.moduleName + ':');
}
},
verbose: function() {

15
build/uncompressed/modules/dropdown.css

@ -17,6 +17,11 @@
display: inline-block;
line-height: 1;
white-space: nowrap;
-webkit-transition: border-radius 0.1s ease;
-moz-transition: border-radius 0.1s ease;
-o-transition: border-radius 0.1s ease;
-ms-transition: border-radius 0.1s ease;
transition: border-radius 0.1s ease;
}
.ui.dropdown .menu {
position: absolute;
@ -30,11 +35,11 @@
-moz-border-radius: 0px 0px 0.325em 0.325em;
-webkit-border-radius: 0px 0px 0.325em 0.325em;
border-radius: 0px 0px 0.325em 0.325em;
-webkit-transition: opacity 0.2s ease-out;
-moz-transition: opacity 0.2s ease-out;
-o-transition: opacity 0.2s ease-out;
-ms-transition: opacity 0.2s ease-out;
transition: opacity 0.2s ease-out;
-webkit-transition: opacity 0.2s ease;
-moz-transition: opacity 0.2s ease;
-o-transition: opacity 0.2s ease;
-ms-transition: opacity 0.2s ease;
transition: opacity 0.2s ease;
z-index: 11;
}
/* Flyout Direction */

77
build/uncompressed/modules/dropdown.js

@ -34,6 +34,8 @@ $.fn.dropdown = function(parameters) {
var
$module = $(this),
$menu = $(this).find(settings.selector.menu),
$item = $(this).find(settings.selector.item),
$input = $(this).find(settings.selector.input)
isTouchDevice = ('ontouchstart' in document.documentElement),
@ -61,23 +63,53 @@ $.fn.dropdown = function(parameters) {
}
else {
module.verbose('Initializing dropdown with bound events', $module);
$module
.on(module.get.event() + eventNamespace, module.toggle)
.on(module.get.event() + eventNamespace, module.intent.test)
;
$item
.on('click' + eventNamespace, module.event.select)
;
$module
.data(moduleNamespace, module)
;
}
},
destroy: function() {
module.verbose('Destroying previous module for', $module);
$module
.off(namespace)
;
},
event: {
item: {
click: function () {
var
value = $(this).data(metadata.value) || $(this).html()
;
module.verbose('Determining select action');
if( $.isFunction( module.action[settings.action] ) {
module.action[ settings.action ](value);
}
else {
module.error(errors.action);
}
}
}
},
intent: {
test: function(event) {
module.debug('Checking if click was inside the dropdown', event.target);
if( $(event.target).closest($module).size() == 0 ) {
module.hide();
if( $(event.target).closest($menu).size() == 0 ) {
module.toggle();
event.stopPropagation();
}
},
@ -97,6 +129,22 @@ $.fn.dropdown = function(parameters) {
},
action: {
nothing: function() {},
close: function() {
module.hide();
},
form: function(value) {
module.debug('Adding selected value to hidden input', value);
$input.val(value);
module.hide();
}
}
get: {
event: function() {
@ -122,13 +170,6 @@ $.fn.dropdown = function(parameters) {
}
},
destroy: function() {
module.verbose('Destroying previous dropdown for', $module);
$module
.off(namespace)
;
},
animate: {
show: function() {
if(animation.show == 'show') {
@ -150,7 +191,6 @@ $.fn.dropdown = function(parameters) {
}
},
hide: function() {
console.log(animation.hide);
if(animation.hide == 'hide') {
$menu
.hide()
@ -235,7 +275,7 @@ $.fn.dropdown = function(parameters) {
debug: function() {
if(settings.debug) {
module.performance.log(arguments[0]);
module.verbose = Function.prototype.bind.call(console.info, console, settings.moduleName + ':');
module.debug = Function.prototype.bind.call(console.info, console, settings.moduleName + ':');
}
},
verbose: function() {
@ -359,6 +399,8 @@ $.fn.dropdown.settings = {
debug : true,
performance : false,
action: 'close',
animation: {
show: 'slide',
hide: 'slide'
@ -371,11 +413,18 @@ $.fn.dropdown.settings = {
onHide : function(){},
errors : {
action : 'You called a dropdown action that was not defined',
method : 'The method you called is not defined.'
},
metadata: {
value: 'value'
},
selector : {
input : 'input[type="hidden"]',
menu : '.menu'
item : '.menu > .item'
},
className : {

8
node/src/documents/modules/dropdown.html

@ -60,13 +60,13 @@ type : 'UI Module'
<h4 class="ui header">Combo Dropdown</h4>
<p>A button can be formatted with a dropdown beside it</p>
<div class="ui teal buttons">
<div class="ui button">Save</div>
<div class="ui button">Update Post</div>
<div class="ui teal dropdown icon button">
<i class="dropdown icon"></i>
<div class="menu">
<div class="item"><i class="edit icon"></i>Edit</div>
<div class="item"><i class="delete icon"></i>Remove</div>
<div class="item"><i class="hide icon"></i>Hide</div>
<div class="item"><i class="edit icon"></i>Edit Post</div>
<div class="item"><i class="delete icon"></i>Remove Post</div>
<div class="item"><i class="hide icon"></i>Hide Post</div>
</div>
</div>
</div>

2
node/src/files/components/semantic/modules/behavior/state.js

@ -485,7 +485,7 @@ $.fn.state = function(parameters) {
debug: function() {
if(settings.debug) {
module.performance.log(arguments[0]);
module.verbose = Function.prototype.bind.call(console.info, console, settings.moduleName + ':');
module.debug = Function.prototype.bind.call(console.info, console, settings.moduleName + ':');
}
},
error: function() {

2
node/src/files/components/semantic/modules/checkbox.js

@ -157,7 +157,7 @@ $.fn.checkbox = function(parameters) {
debug: function() {
if(settings.debug) {
module.performance.log(arguments[0]);
module.verbose = Function.prototype.bind.call(console.info, console, settings.moduleName + ':');
module.debug = Function.prototype.bind.call(console.info, console, settings.moduleName + ':');
}
},
verbose: function() {

15
node/src/files/components/semantic/modules/dropdown.css

@ -17,6 +17,11 @@
display: inline-block;
line-height: 1;
white-space: nowrap;
-webkit-transition: border-radius 0.1s ease;
-moz-transition: border-radius 0.1s ease;
-o-transition: border-radius 0.1s ease;
-ms-transition: border-radius 0.1s ease;
transition: border-radius 0.1s ease;
}
.ui.dropdown .menu {
position: absolute;
@ -30,11 +35,11 @@
-moz-border-radius: 0px 0px 0.325em 0.325em;
-webkit-border-radius: 0px 0px 0.325em 0.325em;
border-radius: 0px 0px 0.325em 0.325em;
-webkit-transition: opacity 0.2s ease-out;
-moz-transition: opacity 0.2s ease-out;
-o-transition: opacity 0.2s ease-out;
-ms-transition: opacity 0.2s ease-out;
transition: opacity 0.2s ease-out;
-webkit-transition: opacity 0.2s ease;
-moz-transition: opacity 0.2s ease;
-o-transition: opacity 0.2s ease;
-ms-transition: opacity 0.2s ease;
transition: opacity 0.2s ease;
z-index: 11;
}
/* Flyout Direction */

13
node/src/files/components/semantic/modules/dropdown.js

@ -61,9 +61,8 @@ $.fn.dropdown = function(parameters) {
}
else {
module.verbose('Initializing dropdown with bound events', $module);
$module
.on(module.get.event() + eventNamespace, module.toggle)
.on(module.get.event() + eventNamespace, module.intent.test)
;
$module
@ -76,8 +75,9 @@ $.fn.dropdown = function(parameters) {
test: function(event) {
module.debug('Checking if click was inside the dropdown', event.target);
if( $(event.target).closest($module).size() == 0 ) {
module.hide();
if( $(event.target).closest($menu).size() == 0 ) {
module.toggle();
event.stopPropagation();
}
},
@ -150,7 +150,6 @@ $.fn.dropdown = function(parameters) {
}
},
hide: function() {
console.log(animation.hide);
if(animation.hide == 'hide') {
$menu
.hide()
@ -235,7 +234,7 @@ $.fn.dropdown = function(parameters) {
debug: function() {
if(settings.debug) {
module.performance.log(arguments[0]);
module.verbose = Function.prototype.bind.call(console.info, console, settings.moduleName + ':');
module.debug = Function.prototype.bind.call(console.info, console, settings.moduleName + ':');
}
},
verbose: function() {
@ -359,6 +358,8 @@ $.fn.dropdown.settings = {
debug : true,
performance : false,
action: 'close',
animation: {
show: 'slide',
hide: 'slide'

2
spec/modules/module.commented.js

@ -201,7 +201,7 @@ $.fn.example = function(parameters) {
debug: function() {
if(settings.debug) {
module.performance.log(arguments[0]);
module.verbose = Function.prototype.bind.call(console.info, console, settings.moduleName + ':');
module.debug = Function.prototype.bind.call(console.info, console, settings.moduleName + ':');
}
},

2
spec/modules/module.js

@ -127,7 +127,7 @@ $.fn.example = function(parameters) {
debug: function() {
if(settings.debug) {
module.performance.log(arguments[0]);
module.verbose = Function.prototype.bind.call(console.info, console, settings.moduleName + ':');
module.debug = Function.prototype.bind.call(console.info, console, settings.moduleName + ':');
}
},
verbose: function() {

2
src/modules/behavior/state.js

@ -485,7 +485,7 @@ $.fn.state = function(parameters) {
debug: function() {
if(settings.debug) {
module.performance.log(arguments[0]);
module.verbose = Function.prototype.bind.call(console.info, console, settings.moduleName + ':');
module.debug = Function.prototype.bind.call(console.info, console, settings.moduleName + ':');
}
},
error: function() {

16
src/modules/checkbox.js

@ -66,6 +66,13 @@ $.fn.checkbox = function(parameters) {
}
},
destroy: function() {
module.verbose('Destroying previous module for', $module);
$module
.off(namespace)
;
},
is: {
radio: function() {
return $module
@ -83,13 +90,6 @@ $.fn.checkbox = function(parameters) {
}
},
destroy: function() {
module.verbose('Destroying previous module for', $module);
$module
.off(namespace)
;
},
enable: function() {
module.debug('Enabling checkbox');
$module
@ -157,7 +157,7 @@ $.fn.checkbox = function(parameters) {
debug: function() {
if(settings.debug) {
module.performance.log(arguments[0]);
module.verbose = Function.prototype.bind.call(console.info, console, settings.moduleName + ':');
module.debug = Function.prototype.bind.call(console.info, console, settings.moduleName + ':');
}
},
verbose: function() {

77
src/modules/dropdown.js

@ -34,6 +34,8 @@ $.fn.dropdown = function(parameters) {
var
$module = $(this),
$menu = $(this).find(settings.selector.menu),
$item = $(this).find(settings.selector.item),
$input = $(this).find(settings.selector.input)
isTouchDevice = ('ontouchstart' in document.documentElement),
@ -61,23 +63,53 @@ $.fn.dropdown = function(parameters) {
}
else {
module.verbose('Initializing dropdown with bound events', $module);
$module
.on(module.get.event() + eventNamespace, module.toggle)
.on(module.get.event() + eventNamespace, module.intent.test)
;
$item
.on('click' + eventNamespace, module.event.select)
;
$module
.data(moduleNamespace, module)
;
}
},
destroy: function() {
module.verbose('Destroying previous module for', $module);
$module
.off(namespace)
;
},
event: {
item: {
click: function () {
var
value = $(this).data(metadata.value) || $(this).html()
;
module.verbose('Determining select action');
if( $.isFunction( module.action[settings.action] ) {
module.action[ settings.action ](value);
}
else {
module.error(errors.action);
}
}
}
},
intent: {
test: function(event) {
module.debug('Checking if click was inside the dropdown', event.target);
if( $(event.target).closest($module).size() == 0 ) {
module.hide();
if( $(event.target).closest($menu).size() == 0 ) {
module.toggle();
event.stopPropagation();
}
},
@ -97,6 +129,22 @@ $.fn.dropdown = function(parameters) {
},
action: {
nothing: function() {},
close: function() {
module.hide();
},
form: function(value) {
module.debug('Adding selected value to hidden input', value);
$input.val(value);
module.hide();
}
}
get: {
event: function() {
@ -122,13 +170,6 @@ $.fn.dropdown = function(parameters) {
}
},
destroy: function() {
module.verbose('Destroying previous dropdown for', $module);
$module
.off(namespace)
;
},
animate: {
show: function() {
if(animation.show == 'show') {
@ -150,7 +191,6 @@ $.fn.dropdown = function(parameters) {
}
},
hide: function() {
console.log(animation.hide);
if(animation.hide == 'hide') {
$menu
.hide()
@ -235,7 +275,7 @@ $.fn.dropdown = function(parameters) {
debug: function() {
if(settings.debug) {
module.performance.log(arguments[0]);
module.verbose = Function.prototype.bind.call(console.info, console, settings.moduleName + ':');
module.debug = Function.prototype.bind.call(console.info, console, settings.moduleName + ':');
}
},
verbose: function() {
@ -359,6 +399,8 @@ $.fn.dropdown.settings = {
debug : true,
performance : false,
action: 'close',
animation: {
show: 'slide',
hide: 'slide'
@ -371,11 +413,18 @@ $.fn.dropdown.settings = {
onHide : function(){},
errors : {
action : 'You called a dropdown action that was not defined',
method : 'The method you called is not defined.'
},
metadata: {
value: 'value'
},
selector : {
input : 'input[type="hidden"]',
menu : '.menu'
item : '.menu > .item'
},
className : {

16
src/modules/dropdown.less

@ -21,6 +21,12 @@
line-height: 1;
white-space: nowrap;
-webkit-transition: border-radius 0.1s ease;
-moz-transition: border-radius 0.1s ease;
-o-transition: border-radius 0.1s ease;
-ms-transition: border-radius 0.1s ease;
transition: border-radius 0.1s ease;
}
.ui.dropdown .menu {
@ -52,11 +58,11 @@
-webkit-border-radius: 0px 0px 0.325em 0.325em;
border-radius: 0px 0px 0.325em 0.325em;
-webkit-transition: opacity 0.2s ease-out;
-moz-transition: opacity 0.2s ease-out;
-o-transition: opacity 0.2s ease-out;
-ms-transition: opacity 0.2s ease-out;
transition: opacity 0.2s ease-out;
-webkit-transition: opacity 0.2s ease;
-moz-transition: opacity 0.2s ease;
-o-transition: opacity 0.2s ease;
-ms-transition: opacity 0.2s ease;
transition: opacity 0.2s ease;
z-index: 11;
}

Loading…
Cancel
Save