UNPKG

1.59 kBJavaScriptView Raw
1import $ from './jquery';
2import '../../js-vendor/jquery/plugins/jquery.select2';
3
4/**
5 * Wraps a vanilla Select2 with ADG _style_, as an auiSelect2 method on jQuery objects.
6 *
7 * @since 5.2
8 */
9
10/**
11 * We make a copy of the original select2 so that later we might re-specify $.fn.auiSelect2 as $.fn.select2. That
12 * way, calling code will be able to call $thing.select2() as if they were calling the original library,
13 * and ADG styling will just magically happen.
14 */
15var originalSelect2 = $.fn.select2;
16
17// AUI-specific classes
18var auiContainer = 'aui-select2-container';
19var auiDropdown = 'aui-select2-drop aui-dropdown2';
20var auiHasAvatar = 'aui-has-avatar';
21
22$.fn.auiSelect2 = function (first) {
23 var updatedArgs;
24
25 if ($.isPlainObject(first)) {
26 var auiOpts = $.extend({}, first);
27 var auiAvatarClass = auiOpts.hasAvatar ? ' ' + auiHasAvatar : '';
28 //add our classes in addition to those the caller specified
29 auiOpts.containerCssClass = auiContainer + auiAvatarClass + (auiOpts.containerCssClass ? ' ' + auiOpts.containerCssClass : '');
30 auiOpts.dropdownCssClass = auiDropdown + auiAvatarClass + (auiOpts.dropdownCssClass ? ' ' + auiOpts.dropdownCssClass : '');
31 updatedArgs = Array.prototype.slice.call(arguments, 1);
32 updatedArgs.unshift(auiOpts);
33 } else if (!arguments.length) {
34 updatedArgs = [{
35 containerCssClass: auiContainer,
36 dropdownCssClass: auiDropdown
37 }];
38 } else {
39 updatedArgs = arguments;
40 }
41
42 return originalSelect2.apply(this, updatedArgs);
43};