57 lines
1.4 KiB
Plaintext
57 lines
1.4 KiB
Plaintext
define([
|
|
'jquery',
|
|
'./utils'
|
|
], function ($, CompatUtils) {
|
|
// No-op CSS adapter that discards all classes by default
|
|
function _dropdownAdapter (clazz) {
|
|
return null;
|
|
}
|
|
|
|
function DropdownCSS () { }
|
|
|
|
DropdownCSS.prototype.render = function (decorated) {
|
|
var $dropdown = decorated.call(this);
|
|
|
|
var dropdownCssClass = this.options.get('dropdownCssClass') || '';
|
|
|
|
if ($.isFunction(dropdownCssClass)) {
|
|
dropdownCssClass = dropdownCssClass(this.$element);
|
|
}
|
|
|
|
var dropdownCssAdapter = this.options.get('adaptDropdownCssClass');
|
|
dropdownCssAdapter = dropdownCssAdapter || _dropdownAdapter;
|
|
|
|
if (dropdownCssClass.indexOf(':all:') !== -1) {
|
|
dropdownCssClass = dropdownCssClass.replace(':all:', '');
|
|
|
|
var _cssAdapter = dropdownCssAdapter;
|
|
|
|
dropdownCssAdapter = function (clazz) {
|
|
var adapted = _cssAdapter(clazz);
|
|
|
|
if (adapted != null) {
|
|
// Append the old one along with the adapted one
|
|
return adapted + ' ' + clazz;
|
|
}
|
|
|
|
return clazz;
|
|
};
|
|
}
|
|
|
|
var dropdownCss = this.options.get('dropdownCss') || {};
|
|
|
|
if ($.isFunction(dropdownCss)) {
|
|
dropdownCss = dropdownCss(this.$element);
|
|
}
|
|
|
|
CompatUtils.syncCssClasses($dropdown, this.$element, dropdownCssAdapter);
|
|
|
|
$dropdown.css(dropdownCss);
|
|
$dropdown.addClass(dropdownCssClass);
|
|
|
|
return $dropdown;
|
|
};
|
|
|
|
return DropdownCSS;
|
|
});
|