From 62126c089480412ae7f8045f96662197b41ab960 Mon Sep 17 00:00:00 2001 From: robdel12 Date: Sun, 30 Jul 2017 21:28:47 -0500 Subject: [PATCH] Fix disabled optgroups not being disabled in dropkick Fixes #336 --- dist/dropkick.css | 5 +++++ dist/dropkick.js | 2 +- src/css/dropkick.scss | 6 ++++++ src/dropkick.js | 9 +++++++++ tests/dropkick-test.js | 22 ++++++++++++++++++++++ 5 files changed, 43 insertions(+), 1 deletion(-) diff --git a/dist/dropkick.css b/dist/dropkick.css index c5e40d63..2d59b332 100644 --- a/dist/dropkick.css +++ b/dist/dropkick.css @@ -123,6 +123,11 @@ margin-bottom: 0; padding-bottom: 0; } +.dk-optgroup-disabled { + opacity: 0.6; + color: #BBBBBB; + cursor: not-allowed; } + .dk-optgroup-label { padding: 0 0.5em 0.25em; font-weight: bold; diff --git a/dist/dropkick.js b/dist/dropkick.js index 090ecd49..1d319873 100644 --- a/dist/dropkick.js +++ b/dist/dropkick.js @@ -1 +1 @@ -!function(e){function t(i){if(s[i])return s[i].exports;var a=s[i]={i:i,l:!1,exports:{}};return e[i].call(a.exports,a,a.exports,t),a.l=!0,a.exports}var s={};t.m=e,t.c=s,t.d=function(e,s,i){t.o(e,s)||Object.defineProperty(e,s,{configurable:!1,enumerable:!0,get:i})},t.n=function(e){var s=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(s,"a",s),s},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=0)}([function(e,t,s){s(1),e.exports=s(4)},function(e,t,s){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var l="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n=function(){function e(e,t){for(var s=0;s: "+t;if("SELECT"===this.sel.nodeName)return this.init(this.sel,s)}return n(e,[{key:"init",value:function(t,s){var i,a=window.Dropkick,l=e.build(t,"dk"+a.uid);if(this.data={},this.data.select=t,this.data.elem=l.elem,this.data.settings=d.default.extend({},h.default,s),this.disabled=t.disabled,this.form=t.form,this.length=t.length,this.multiple=t.multiple,this.options=l.options.slice(0),this.selectedIndex=t.selectedIndex,this.selectedOptions=l.selected.slice(0),this.value=t.value,this.data.cacheID=a.uid,a.cache[this.data.cacheID]=this,this.data.settings.initialize.call(this),a.uid+=1,this._changeListener||(t.addEventListener("change",this),this._changeListener=!0),!c||this.data.settings.mobile){if(t.parentNode.insertBefore(this.data.elem,t),t.setAttribute("data-dkCacheId",this.data.cacheID),this.data.elem.addEventListener("click",this),this.data.elem.addEventListener("keydown",this),this.data.elem.addEventListener("keypress",this),this.form&&this.form.addEventListener("reset",this),!this.multiple)for(i=0;i-1?(t.parentNode.insertBefore(i,t),this.options.splice(a,0,i)):(this.data.elem.lastChild.appendChild(i),this.options.push(i)),i.addEventListener("mouseover",this),e.selected&&this.select(a))}},{key:"item",value:function(e){return e=e<0?this.options.length+e:e,this.options[e]||null}},{key:"remove",value:function(e){var t=this.item(e);t.parentNode.removeChild(t),this.options.splice(e,1),this.data.select.remove(e),this.select(this.data.select.selectedIndex),this.length-=1}},{key:"close",value:function(){var e,t=this.data.elem;if(!this.isOpen||this.multiple)return!1;for(e=0;ee,s=l>e,i=t&&!s?"-up":"-down",this.isOpen=!0,d.default.addClass(n,"dk-select-open"+i),o.setAttribute("aria-expanded","true"),this._scrollTo(this.options.length-1),this._scrollTo(this.selectedIndex),this.data.settings.open.call(this)}},{key:"disable",value:function(e,t){var s="dk-option-disabled";0!==arguments.length&&"boolean"!=typeof e||(t=void 0===e,e=this.data.elem,s="dk-select-disabled",this.disabled=t),void 0===t&&(t=!0),"number"==typeof e&&(e=this.item(e)),t?(e.setAttribute("aria-disabled",!0),d.default.addClass(e,s)):(e.setAttribute("aria-disabled",!1),d.default.removeClass(e,s))}},{key:"hide",value:function(e,t){void 0===t&&(t=!0),e=this.item(e),t?(e.setAttribute("aria-hidden",!0),d.default.addClass(e,"dk-option-hidden")):(e.setAttribute("aria-hidden",!1),d.default.removeClass(e,"dk-option-hidden"))}},{key:"select",value:function(e,t){var s,i,a,l,n=this.data.select;if("number"==typeof e&&(e=this.item(e)),"string"==typeof e)for(s=0;s0&&(!c||this.data.settings.mobile)&&this.dispose().init(this.data.select,this.data.settings)}},{key:"dispose",value:function(){var e=window.Dropkick;return Object.keys(this).length>0&&(!c||this.data.settings.mobile)&&(delete e.cache[this.data.cacheID],this.data.elem.parentNode.removeChild(this.data.elem),this.data.select.removeAttribute("data-dkCacheId")),this}},{key:"handleEvent",value:function(e){if(!this.disabled)switch(e.type){case"click":this._delegate(e);break;case"keydown":this._keyHandler(e);break;case"keypress":this._searchOptions(e);break;case"mouseover":this._highlight(e);break;case"reset":this.reset();break;case"change":this.data.settings.change.call(this)}}},{key:"_delegate",value:function(e){var t,s,i,a,l=e.target;if(d.default.hasClass(l,"dk-option-disabled"))return!1;if(this.multiple){if(d.default.hasClass(l,"dk-option"))if(t=window.getSelection(),"Range"===t.type&&t.collapseToStart(),e.shiftKey)if(i=this.options.indexOf(this.selectedOptions[0]),a=this.options.indexOf(this.selectedOptions[this.selectedOptions.length-1]),s=this.options.indexOf(l),s>i&&sa&&a>i&&(a=i),this.reset(!0),a>s)for(;sa-1;)this.select(s--);else e.ctrlKey||e.metaKey?this.select(l):(this.reset(!0),this.select(l))}else this[this.isOpen?"close":"open"](),d.default.hasClass(l,"dk-option")&&this.select(l)}},{key:"_highlight",value:function(e){var t,s=e.target;if(!this.multiple){for(t=0;ta.length-1?l=a.length-1:l<0&&(l=0),this.data.select.options[l].disabled||(this.reset(!0),this.select(l),this._scrollTo(l));break;case n.space:if(!this.isOpen){e.preventDefault(),this.open();break}case n.tab:case n.enter:for(l=0;la.offsetHeight?(t+=e.offsetHeight,a.scrollTop=t-a.offsetHeight):s<0&&(a.scrollTop=t)}}]),e}();t.default=p,window.Dropkick=p,window.Dropkick.cache={},window.Dropkick.uid=0,p.build=function(e,t){var s,i,a,l=[],n={elem:null,options:[],selected:[]},o=function e(s){var i,a,l,o,r=[];switch(s.nodeName){case"OPTION":i=d.default.create("li",{class:"dk-option ","data-value":s.value,text:s.text,innerHTML:s.innerHTML,role:"option","aria-selected":"false",id:t+"-"+(s.id||s.value.replace(" ","-"))}),d.default.addClass(i,s.className),s.disabled&&(d.default.addClass(i,"dk-option-disabled"),i.setAttribute("aria-disabled","true")),s.hidden&&(d.default.addClass(i,"dk-option-hidden"),i.setAttribute("aria-hidden","true")),s.selected&&(d.default.addClass(i,"dk-option-selected"),i.setAttribute("aria-selected","true"),n.selected.push(i)),n.options.push(this.appendChild(i));break;case"OPTGROUP":for(a=d.default.create("li",{class:"dk-optgroup"}),s.label&&a.appendChild(d.default.create("div",{class:"dk-optgroup-label",innerHTML:s.label})),l=d.default.create("ul",{class:"dk-optgroup-options"}),o=s.children.length;o--;r.unshift(s.children[o]));r.forEach(e,l),this.appendChild(a).appendChild(l)}};for(n.elem=d.default.create("div",{class:"dk-select"+(e.multiple?"-multi":"")}),i=d.default.create("ul",{class:"dk-select-options",id:t+"-listbox",role:"listbox"}),e.disabled&&(d.default.addClass(n.elem,"dk-select-disabled"),n.elem.setAttribute("aria-disabled",!0)),n.elem.id=t+(e.id?"-"+e.id:""),d.default.addClass(n.elem,e.className),e.multiple?(n.elem.setAttribute("tabindex",e.getAttribute("tabindex")||"0"),i.setAttribute("aria-multiselectable","true")):(s=e.options[e.selectedIndex],n.elem.appendChild(d.default.create("div",{class:"dk-selected "+s.className,tabindex:e.tabindex||0,innerHTML:s?s.text:" ",id:t+"-combobox","aria-live":"assertive","aria-owns":i.id,role:"combobox"})),i.setAttribute("aria-expanded","false")),a=e.children.length;a--;l.unshift(e.children[a]));return l.forEach(o,n.elem.appendChild(i)),n},p.onDocClick=function(e){var t,s,i=window.Dropkick;if(1!==e.target.nodeType)return!1;null!==(t=e.target.getAttribute("data-dkcacheid"))&&i.cache[t].focus();for(s in i.cache)d.default.closest(e.target,i.cache[s].data.elem)||s===t||i.cache[s].disabled||i.cache[s].close()},void 0!==window.jQuery&&(window.jQuery.fn.dropkick=function(){var e=Array.prototype.slice.call(arguments);return jQuery(this).each(function(){e[0]&&"object"!==l(e[0])?"string"==typeof e[0]&&p.prototype[e[0]].apply(new p(this),e.slice(1)):new p(this,e[0]||{})})})},function(e,t,s){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=-1!==navigator.appVersion.indexOf("MSIE"),a={hasClass:function(e,t){var s=new RegExp("(^|\\s+)"+t+"(\\s+|$)");return e&&s.test(e.className)},addClass:function(e,t){e&&!this.hasClass(e,t)&&(e.className+=" "+t)},removeClass:function(e,t){var s=new RegExp("(^|\\s+)"+t+"(\\s+|$)");e&&(e.className=e.className.replace(s," "))},toggleClass:function(e,t){[(this.hasClass(e,t)?"remove":"add")+"Class"](e,t)},extend:function(e){return Array.prototype.slice.call(arguments,1).forEach(function(t){if(t)for(var s in t)e[s]=t[s]}),e},offset:function(e){var t=e.getBoundingClientRect()||{top:0,left:0},s=document.documentElement,a=i?s.scrollTop:window.pageYOffset,l=i?s.scrollLeft:window.pageXOffset;return{top:t.top+a-s.clientTop,left:t.left+l-s.clientLeft}},position:function(e,t){for(var s={top:0,left:0};e&&e!==t;)s.top+=e.offsetTop,s.left+=e.offsetLeft,e=e.parentNode;return s},closest:function(e,t){for(;e;){if(e===t)return e;e=e.parentNode}return!1},create:function(e,t){var s=void 0,i=document.createElement(e);t||(t={});for(s in t)t.hasOwnProperty(s)&&("innerHTML"===s?i.innerHTML=t[s]:i.setAttribute(s,t[s]));return i},deferred:function(e){return function(){var t=this,s=arguments;window.setTimeout(function(){e.apply(t,s)},1)}}};t.default=a},function(e,t,s){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i={initialize:function(){},mobile:!0,change:function(){},open:function(){},close:function(){},search:"strict",bubble:!0};t.default=i},function(e,t){}]); \ No newline at end of file +!function(e){function t(i){if(s[i])return s[i].exports;var a=s[i]={i:i,l:!1,exports:{}};return e[i].call(a.exports,a,a.exports,t),a.l=!0,a.exports}var s={};t.m=e,t.c=s,t.d=function(e,s,i){t.o(e,s)||Object.defineProperty(e,s,{configurable:!1,enumerable:!0,get:i})},t.n=function(e){var s=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(s,"a",s),s},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=0)}([function(e,t,s){s(1),e.exports=s(4)},function(e,t,s){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var l="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n=function(){function e(e,t){for(var s=0;s: "+t;if("SELECT"===this.sel.nodeName)return this.init(this.sel,s)}return n(e,[{key:"init",value:function(t,s){var i,a=window.Dropkick,l=e.build(t,"dk"+a.uid);if(this.data={},this.data.select=t,this.data.elem=l.elem,this.data.settings=d.default.extend({},c.default,s),this.disabled=t.disabled,this.form=t.form,this.length=t.length,this.multiple=t.multiple,this.options=l.options.slice(0),this.selectedIndex=t.selectedIndex,this.selectedOptions=l.selected.slice(0),this.value=t.value,this.data.cacheID=a.uid,a.cache[this.data.cacheID]=this,this.data.settings.initialize.call(this),a.uid+=1,this._changeListener||(t.addEventListener("change",this),this._changeListener=!0),!h||this.data.settings.mobile){if(t.parentNode.insertBefore(this.data.elem,t),t.setAttribute("data-dkCacheId",this.data.cacheID),this.data.elem.addEventListener("click",this),this.data.elem.addEventListener("keydown",this),this.data.elem.addEventListener("keypress",this),this.form&&this.form.addEventListener("reset",this),!this.multiple)for(i=0;i-1?(t.parentNode.insertBefore(i,t),this.options.splice(a,0,i)):(this.data.elem.lastChild.appendChild(i),this.options.push(i)),i.addEventListener("mouseover",this),e.selected&&this.select(a))}},{key:"item",value:function(e){return e=e<0?this.options.length+e:e,this.options[e]||null}},{key:"remove",value:function(e){var t=this.item(e);t.parentNode.removeChild(t),this.options.splice(e,1),this.data.select.remove(e),this.select(this.data.select.selectedIndex),this.length-=1}},{key:"close",value:function(){var e,t=this.data.elem;if(!this.isOpen||this.multiple)return!1;for(e=0;ee,s=l>e,i=t&&!s?"-up":"-down",this.isOpen=!0,d.default.addClass(n,"dk-select-open"+i),o.setAttribute("aria-expanded","true"),this._scrollTo(this.options.length-1),this._scrollTo(this.selectedIndex),this.data.settings.open.call(this)}},{key:"disable",value:function(e,t){var s="dk-option-disabled";0!==arguments.length&&"boolean"!=typeof e||(t=void 0===e,e=this.data.elem,s="dk-select-disabled",this.disabled=t),void 0===t&&(t=!0),"number"==typeof e&&(e=this.item(e)),t?(e.setAttribute("aria-disabled",!0),d.default.addClass(e,s)):(e.setAttribute("aria-disabled",!1),d.default.removeClass(e,s))}},{key:"hide",value:function(e,t){void 0===t&&(t=!0),e=this.item(e),t?(e.setAttribute("aria-hidden",!0),d.default.addClass(e,"dk-option-hidden")):(e.setAttribute("aria-hidden",!1),d.default.removeClass(e,"dk-option-hidden"))}},{key:"select",value:function(e,t){var s,i,a,l,n=this.data.select;if("number"==typeof e&&(e=this.item(e)),"string"==typeof e)for(s=0;s0&&(!h||this.data.settings.mobile)&&this.dispose().init(this.data.select,this.data.settings)}},{key:"dispose",value:function(){var e=window.Dropkick;return Object.keys(this).length>0&&(!h||this.data.settings.mobile)&&(delete e.cache[this.data.cacheID],this.data.elem.parentNode.removeChild(this.data.elem),this.data.select.removeAttribute("data-dkCacheId")),this}},{key:"handleEvent",value:function(e){if(!this.disabled)switch(e.type){case"click":this._delegate(e);break;case"keydown":this._keyHandler(e);break;case"keypress":this._searchOptions(e);break;case"mouseover":this._highlight(e);break;case"reset":this.reset();break;case"change":this.data.settings.change.call(this)}}},{key:"_delegate",value:function(e){var t,s,i,a,l=e.target;if(d.default.hasClass(l,"dk-option-disabled"))return!1;if(this.multiple){if(d.default.hasClass(l,"dk-option"))if(t=window.getSelection(),"Range"===t.type&&t.collapseToStart(),e.shiftKey)if(i=this.options.indexOf(this.selectedOptions[0]),a=this.options.indexOf(this.selectedOptions[this.selectedOptions.length-1]),s=this.options.indexOf(l),s>i&&sa&&a>i&&(a=i),this.reset(!0),a>s)for(;sa-1;)this.select(s--);else e.ctrlKey||e.metaKey?this.select(l):(this.reset(!0),this.select(l))}else this[this.isOpen?"close":"open"](),d.default.hasClass(l,"dk-option")&&this.select(l)}},{key:"_highlight",value:function(e){var t,s=e.target;if(!this.multiple){for(t=0;ta.length-1?l=a.length-1:l<0&&(l=0),this.data.select.options[l].disabled||(this.reset(!0),this.select(l),this._scrollTo(l));break;case n.space:if(!this.isOpen){e.preventDefault(),this.open();break}case n.tab:case n.enter:for(l=0;la.offsetHeight?(t+=e.offsetHeight,a.scrollTop=t-a.offsetHeight):s<0&&(a.scrollTop=t)}}]),e}();t.default=p,window.Dropkick=p,window.Dropkick.cache={},window.Dropkick.uid=0,p.build=function(e,t){var s,i,a,l=[],n={elem:null,options:[],selected:[]},o=function e(s){var i,a,l,o,r=[];switch(s.nodeName){case"OPTION":i=d.default.create("li",{class:"dk-option ","data-value":s.value,text:s.text,innerHTML:s.innerHTML,role:"option","aria-selected":"false",id:t+"-"+(s.id||s.value.replace(" ","-"))}),d.default.addClass(i,s.className),s.disabled&&(d.default.addClass(i,"dk-option-disabled"),i.setAttribute("aria-disabled","true")),s.hidden&&(d.default.addClass(i,"dk-option-hidden"),i.setAttribute("aria-hidden","true")),s.selected&&(d.default.addClass(i,"dk-option-selected"),i.setAttribute("aria-selected","true"),n.selected.push(i)),n.options.push(this.appendChild(i));break;case"OPTGROUP":for(a=d.default.create("li",{class:"dk-optgroup"}),s.label&&a.appendChild(d.default.create("div",{class:"dk-optgroup-label",innerHTML:s.label})),l=d.default.create("ul",{class:"dk-optgroup-options"}),o=s.children.length;o--;r.unshift(s.children[o]));s.disabled&&(a.classList.add("dk-optgroup-disabled"),r.forEach(function(e){e.disabled=s.disabled})),r.forEach(e,l),this.appendChild(a).appendChild(l)}};for(n.elem=d.default.create("div",{class:"dk-select"+(e.multiple?"-multi":"")}),i=d.default.create("ul",{class:"dk-select-options",id:t+"-listbox",role:"listbox"}),e.disabled&&(d.default.addClass(n.elem,"dk-select-disabled"),n.elem.setAttribute("aria-disabled",!0)),n.elem.id=t+(e.id?"-"+e.id:""),d.default.addClass(n.elem,e.className),e.multiple?(n.elem.setAttribute("tabindex",e.getAttribute("tabindex")||"0"),i.setAttribute("aria-multiselectable","true")):(s=e.options[e.selectedIndex],n.elem.appendChild(d.default.create("div",{class:"dk-selected "+s.className,tabindex:e.tabindex||0,innerHTML:s?s.text:" ",id:t+"-combobox","aria-live":"assertive","aria-owns":i.id,role:"combobox"})),i.setAttribute("aria-expanded","false")),a=e.children.length;a--;l.unshift(e.children[a]));return l.forEach(o,n.elem.appendChild(i)),n},p.onDocClick=function(e){var t,s,i=window.Dropkick;if(1!==e.target.nodeType)return!1;null!==(t=e.target.getAttribute("data-dkcacheid"))&&i.cache[t].focus();for(s in i.cache)d.default.closest(e.target,i.cache[s].data.elem)||s===t||i.cache[s].disabled||i.cache[s].close()},void 0!==window.jQuery&&(window.jQuery.fn.dropkick=function(){var e=Array.prototype.slice.call(arguments);return jQuery(this).each(function(){e[0]&&"object"!==l(e[0])?"string"==typeof e[0]&&p.prototype[e[0]].apply(new p(this),e.slice(1)):new p(this,e[0]||{})})})},function(e,t,s){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=-1!==navigator.appVersion.indexOf("MSIE"),a={hasClass:function(e,t){var s=new RegExp("(^|\\s+)"+t+"(\\s+|$)");return e&&s.test(e.className)},addClass:function(e,t){e&&!this.hasClass(e,t)&&(e.className+=" "+t)},removeClass:function(e,t){var s=new RegExp("(^|\\s+)"+t+"(\\s+|$)");e&&(e.className=e.className.replace(s," "))},toggleClass:function(e,t){[(this.hasClass(e,t)?"remove":"add")+"Class"](e,t)},extend:function(e){return Array.prototype.slice.call(arguments,1).forEach(function(t){if(t)for(var s in t)e[s]=t[s]}),e},offset:function(e){var t=e.getBoundingClientRect()||{top:0,left:0},s=document.documentElement,a=i?s.scrollTop:window.pageYOffset,l=i?s.scrollLeft:window.pageXOffset;return{top:t.top+a-s.clientTop,left:t.left+l-s.clientLeft}},position:function(e,t){for(var s={top:0,left:0};e&&e!==t;)s.top+=e.offsetTop,s.left+=e.offsetLeft,e=e.parentNode;return s},closest:function(e,t){for(;e;){if(e===t)return e;e=e.parentNode}return!1},create:function(e,t){var s=void 0,i=document.createElement(e);t||(t={});for(s in t)t.hasOwnProperty(s)&&("innerHTML"===s?i.innerHTML=t[s]:i.setAttribute(s,t[s]));return i},deferred:function(e){return function(){var t=this,s=arguments;window.setTimeout(function(){e.apply(t,s)},1)}}};t.default=a},function(e,t,s){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i={initialize:function(){},mobile:!0,change:function(){},open:function(){},close:function(){},search:"strict",bubble:!0};t.default=i},function(e,t){}]); \ No newline at end of file diff --git a/src/css/dropkick.scss b/src/css/dropkick.scss index 2cf7837d..dbd8f9e6 100644 --- a/src/css/dropkick.scss +++ b/src/css/dropkick.scss @@ -167,6 +167,12 @@ $dk-disabled-color: #BBBBBB !default; } } +.dk-optgroup-disabled { + opacity: 0.6; + color: $dk-disabled-color; + cursor: not-allowed; +} + .dk-optgroup-label { padding: 0 0.5em 0.25em; font-weight: bold; diff --git a/src/dropkick.js b/src/dropkick.js index 8f1fad36..ee04947b 100644 --- a/src/dropkick.js +++ b/src/dropkick.js @@ -1115,6 +1115,15 @@ Dropkick.build = function( sel, idpre ) { }); for ( i = node.children.length; i--; children.unshift( node.children[ i ] ) ); + + if (node.disabled) { + optgroup.classList.add('dk-optgroup-disabled'); + + children.forEach(option => { + option.disabled = node.disabled; + }); + } + children.forEach( addOption, optgroupList ); this.appendChild( optgroup ).appendChild( optgroupList ); diff --git a/tests/dropkick-test.js b/tests/dropkick-test.js index 0274ba0b..49d9a2b1 100644 --- a/tests/dropkick-test.js +++ b/tests/dropkick-test.js @@ -268,4 +268,26 @@ describe('Dropkick tests', function() { }); }); }); + + describe('disabled optgroups', function() { + beforeEach(function() { + $('#normal_select').append(''); + this.dk.refresh(); + }); + + it('has a disabled optgroup', function() { + expect($('.dk-optgroup').hasClass('dk-optgroup-disabled')).to.equal(true); + }); + + describe('clicking the disabled optgroup', function() { + beforeEach(function() { + this.dk.open(); + $('.dk-optgroup-options li:first').click(); + }); + + it('does not select the disabled option', function() { + expect($('.dk-selected ').text()).to.equal('first'); + }); + }); + }); });