activeadmin-rb 1.4.0 → 1.5.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (67) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -1
  3. data/.travis.yml +17 -12
  4. data/CHANGELOG.md +10 -1
  5. data/Gemfile +3 -11
  6. data/activeadmin-rb.gemspec +3 -2
  7. data/app/views/active_admin/devise/confirmations/new.html.erb +1 -1
  8. data/app/views/active_admin/devise/passwords/edit.html.erb +1 -1
  9. data/app/views/active_admin/devise/passwords/new.html.erb +1 -1
  10. data/app/views/active_admin/devise/registrations/new.html.erb +1 -1
  11. data/app/views/active_admin/devise/shared/_error_messages.html.erb +15 -0
  12. data/app/views/active_admin/devise/unlocks/new.html.erb +1 -1
  13. data/docs/documentation.md +1 -1
  14. data/features/index/filters.feature +3 -3
  15. data/features/index/pagination.feature +3 -3
  16. data/features/registering_assets.feature +4 -8
  17. data/features/support/env.rb +4 -0
  18. data/gemfiles/rails_42.gemfile +2 -1
  19. data/gemfiles/rails_50.gemfile +2 -1
  20. data/gemfiles/rails_51.gemfile +2 -1
  21. data/gemfiles/rails_52.gemfile +2 -1
  22. data/gemfiles/rails_60.gemfile +13 -0
  23. data/lib/active_admin.rb +1 -0
  24. data/lib/active_admin/application.rb +4 -3
  25. data/lib/active_admin/asset_registration.rb +0 -8
  26. data/lib/active_admin/version.rb +1 -1
  27. data/lib/bug_report_templates/active_admin_master.rb +3 -4
  28. data/spec/bug_report_templates_spec.rb +6 -4
  29. data/spec/support/active_admin_integration_spec_helper.rb +15 -7
  30. data/spec/support/rails_template.rb +8 -6
  31. data/spec/unit/asset_registration_spec.rb +0 -29
  32. data/spec/unit/auto_link_spec.rb +26 -16
  33. data/spec/unit/comments_spec.rb +22 -7
  34. data/spec/unit/filters/filter_form_builder_spec.rb +10 -10
  35. data/spec/unit/form_builder_spec.rb +1 -1
  36. data/spec/unit/pretty_format_spec.rb +73 -22
  37. data/spec/unit/resource_controller/data_access_spec.rb +3 -3
  38. data/spec/unit/routing_spec.rb +1 -1
  39. data/spec/unit/view_helpers/flash_helper_spec.rb +1 -1
  40. data/spec/unit/view_helpers/form_helper_spec.rb +2 -2
  41. data/spec/unit/views/components/attributes_table_spec.rb +1 -1
  42. metadata +20 -36
  43. data/vendor/assets/javascripts/jquery-ui/data.js +0 -41
  44. data/vendor/assets/javascripts/jquery-ui/disable-selection.js +0 -48
  45. data/vendor/assets/javascripts/jquery-ui/escape-selector.js +0 -23
  46. data/vendor/assets/javascripts/jquery-ui/focusable.js +0 -86
  47. data/vendor/assets/javascripts/jquery-ui/ie.js +0 -17
  48. data/vendor/assets/javascripts/jquery-ui/keycode.js +0 -47
  49. data/vendor/assets/javascripts/jquery-ui/plugin.js +0 -46
  50. data/vendor/assets/javascripts/jquery-ui/position.js +0 -500
  51. data/vendor/assets/javascripts/jquery-ui/safe-active-element.js +0 -42
  52. data/vendor/assets/javascripts/jquery-ui/safe-blur.js +0 -23
  53. data/vendor/assets/javascripts/jquery-ui/scroll-parent.js +0 -47
  54. data/vendor/assets/javascripts/jquery-ui/tabbable.js +0 -38
  55. data/vendor/assets/javascripts/jquery-ui/unique-id.js +0 -51
  56. data/vendor/assets/javascripts/jquery-ui/version.js +0 -17
  57. data/vendor/assets/javascripts/jquery-ui/widget.js +0 -735
  58. data/vendor/assets/javascripts/jquery-ui/widgets/button.js +0 -391
  59. data/vendor/assets/javascripts/jquery-ui/widgets/checkboxradio.js +0 -300
  60. data/vendor/assets/javascripts/jquery-ui/widgets/controlgroup.js +0 -300
  61. data/vendor/assets/javascripts/jquery-ui/widgets/datepicker.js +0 -2123
  62. data/vendor/assets/javascripts/jquery-ui/widgets/dialog.js +0 -954
  63. data/vendor/assets/javascripts/jquery-ui/widgets/draggable.js +0 -1259
  64. data/vendor/assets/javascripts/jquery-ui/widgets/mouse.js +0 -230
  65. data/vendor/assets/javascripts/jquery-ui/widgets/resizable.js +0 -1207
  66. data/vendor/assets/javascripts/jquery-ui/widgets/sortable.js +0 -1561
  67. data/vendor/assets/javascripts/jquery-ui/widgets/tabs.js +0 -931
@@ -1,391 +0,0 @@
1
- //= require jquery-ui/widgets/controlgroup
2
- //= require jquery-ui/widgets/checkboxradio
3
- //= require jquery-ui/keycode
4
- //= require jquery-ui/widget
5
-
6
- /*!
7
- * jQuery UI Button 1.12.1
8
- * http://jqueryui.com
9
- *
10
- * Copyright jQuery Foundation and other contributors
11
- * Released under the MIT license.
12
- * http://jquery.org/license
13
- */
14
-
15
- //>>label: Button
16
- //>>group: Widgets
17
- //>>description: Enhances a form with themeable buttons.
18
- //>>docs: http://api.jqueryui.com/button/
19
- //>>demos: http://jqueryui.com/button/
20
- //>>css.structure: ../../themes/base/core.css
21
- //>>css.structure: ../../themes/base/button.css
22
- //>>css.theme: ../../themes/base/theme.css
23
-
24
- ( function( factory ) {
25
- if ( typeof define === "function" && define.amd ) {
26
-
27
- // AMD. Register as an anonymous module.
28
- define( [
29
- "jquery",
30
-
31
- // These are only for backcompat
32
- // TODO: Remove after 1.12
33
- "./controlgroup",
34
- "./checkboxradio",
35
-
36
- "../keycode",
37
- "../widget"
38
- ], factory );
39
- } else {
40
-
41
- // Browser globals
42
- factory( jQuery );
43
- }
44
- }( function( $ ) {
45
-
46
- $.widget( "ui.button", {
47
- version: "1.12.1",
48
- defaultElement: "<button>",
49
- options: {
50
- classes: {
51
- "ui-button": "ui-corner-all"
52
- },
53
- disabled: null,
54
- icon: null,
55
- iconPosition: "beginning",
56
- label: null,
57
- showLabel: true
58
- },
59
-
60
- _getCreateOptions: function() {
61
- var disabled,
62
-
63
- // This is to support cases like in jQuery Mobile where the base widget does have
64
- // an implementation of _getCreateOptions
65
- options = this._super() || {};
66
-
67
- this.isInput = this.element.is( "input" );
68
-
69
- disabled = this.element[ 0 ].disabled;
70
- if ( disabled != null ) {
71
- options.disabled = disabled;
72
- }
73
-
74
- this.originalLabel = this.isInput ? this.element.val() : this.element.html();
75
- if ( this.originalLabel ) {
76
- options.label = this.originalLabel;
77
- }
78
-
79
- return options;
80
- },
81
-
82
- _create: function() {
83
- if ( !this.option.showLabel & !this.options.icon ) {
84
- this.options.showLabel = true;
85
- }
86
-
87
- // We have to check the option again here even though we did in _getCreateOptions,
88
- // because null may have been passed on init which would override what was set in
89
- // _getCreateOptions
90
- if ( this.options.disabled == null ) {
91
- this.options.disabled = this.element[ 0 ].disabled || false;
92
- }
93
-
94
- this.hasTitle = !!this.element.attr( "title" );
95
-
96
- // Check to see if the label needs to be set or if its already correct
97
- if ( this.options.label && this.options.label !== this.originalLabel ) {
98
- if ( this.isInput ) {
99
- this.element.val( this.options.label );
100
- } else {
101
- this.element.html( this.options.label );
102
- }
103
- }
104
- this._addClass( "ui-button", "ui-widget" );
105
- this._setOption( "disabled", this.options.disabled );
106
- this._enhance();
107
-
108
- if ( this.element.is( "a" ) ) {
109
- this._on( {
110
- "keyup": function( event ) {
111
- if ( event.keyCode === $.ui.keyCode.SPACE ) {
112
- event.preventDefault();
113
-
114
- // Support: PhantomJS <= 1.9, IE 8 Only
115
- // If a native click is available use it so we actually cause navigation
116
- // otherwise just trigger a click event
117
- if ( this.element[ 0 ].click ) {
118
- this.element[ 0 ].click();
119
- } else {
120
- this.element.trigger( "click" );
121
- }
122
- }
123
- }
124
- } );
125
- }
126
- },
127
-
128
- _enhance: function() {
129
- if ( !this.element.is( "button" ) ) {
130
- this.element.attr( "role", "button" );
131
- }
132
-
133
- if ( this.options.icon ) {
134
- this._updateIcon( "icon", this.options.icon );
135
- this._updateTooltip();
136
- }
137
- },
138
-
139
- _updateTooltip: function() {
140
- this.title = this.element.attr( "title" );
141
-
142
- if ( !this.options.showLabel && !this.title ) {
143
- this.element.attr( "title", this.options.label );
144
- }
145
- },
146
-
147
- _updateIcon: function( option, value ) {
148
- var icon = option !== "iconPosition",
149
- position = icon ? this.options.iconPosition : value,
150
- displayBlock = position === "top" || position === "bottom";
151
-
152
- // Create icon
153
- if ( !this.icon ) {
154
- this.icon = $( "<span>" );
155
-
156
- this._addClass( this.icon, "ui-button-icon", "ui-icon" );
157
-
158
- if ( !this.options.showLabel ) {
159
- this._addClass( "ui-button-icon-only" );
160
- }
161
- } else if ( icon ) {
162
-
163
- // If we are updating the icon remove the old icon class
164
- this._removeClass( this.icon, null, this.options.icon );
165
- }
166
-
167
- // If we are updating the icon add the new icon class
168
- if ( icon ) {
169
- this._addClass( this.icon, null, value );
170
- }
171
-
172
- this._attachIcon( position );
173
-
174
- // If the icon is on top or bottom we need to add the ui-widget-icon-block class and remove
175
- // the iconSpace if there is one.
176
- if ( displayBlock ) {
177
- this._addClass( this.icon, null, "ui-widget-icon-block" );
178
- if ( this.iconSpace ) {
179
- this.iconSpace.remove();
180
- }
181
- } else {
182
-
183
- // Position is beginning or end so remove the ui-widget-icon-block class and add the
184
- // space if it does not exist
185
- if ( !this.iconSpace ) {
186
- this.iconSpace = $( "<span> </span>" );
187
- this._addClass( this.iconSpace, "ui-button-icon-space" );
188
- }
189
- this._removeClass( this.icon, null, "ui-wiget-icon-block" );
190
- this._attachIconSpace( position );
191
- }
192
- },
193
-
194
- _destroy: function() {
195
- this.element.removeAttr( "role" );
196
-
197
- if ( this.icon ) {
198
- this.icon.remove();
199
- }
200
- if ( this.iconSpace ) {
201
- this.iconSpace.remove();
202
- }
203
- if ( !this.hasTitle ) {
204
- this.element.removeAttr( "title" );
205
- }
206
- },
207
-
208
- _attachIconSpace: function( iconPosition ) {
209
- this.icon[ /^(?:end|bottom)/.test( iconPosition ) ? "before" : "after" ]( this.iconSpace );
210
- },
211
-
212
- _attachIcon: function( iconPosition ) {
213
- this.element[ /^(?:end|bottom)/.test( iconPosition ) ? "append" : "prepend" ]( this.icon );
214
- },
215
-
216
- _setOptions: function( options ) {
217
- var newShowLabel = options.showLabel === undefined ?
218
- this.options.showLabel :
219
- options.showLabel,
220
- newIcon = options.icon === undefined ? this.options.icon : options.icon;
221
-
222
- if ( !newShowLabel && !newIcon ) {
223
- options.showLabel = true;
224
- }
225
- this._super( options );
226
- },
227
-
228
- _setOption: function( key, value ) {
229
- if ( key === "icon" ) {
230
- if ( value ) {
231
- this._updateIcon( key, value );
232
- } else if ( this.icon ) {
233
- this.icon.remove();
234
- if ( this.iconSpace ) {
235
- this.iconSpace.remove();
236
- }
237
- }
238
- }
239
-
240
- if ( key === "iconPosition" ) {
241
- this._updateIcon( key, value );
242
- }
243
-
244
- // Make sure we can't end up with a button that has neither text nor icon
245
- if ( key === "showLabel" ) {
246
- this._toggleClass( "ui-button-icon-only", null, !value );
247
- this._updateTooltip();
248
- }
249
-
250
- if ( key === "label" ) {
251
- if ( this.isInput ) {
252
- this.element.val( value );
253
- } else {
254
-
255
- // If there is an icon, append it, else nothing then append the value
256
- // this avoids removal of the icon when setting label text
257
- this.element.html( value );
258
- if ( this.icon ) {
259
- this._attachIcon( this.options.iconPosition );
260
- this._attachIconSpace( this.options.iconPosition );
261
- }
262
- }
263
- }
264
-
265
- this._super( key, value );
266
-
267
- if ( key === "disabled" ) {
268
- this._toggleClass( null, "ui-state-disabled", value );
269
- this.element[ 0 ].disabled = value;
270
- if ( value ) {
271
- this.element.blur();
272
- }
273
- }
274
- },
275
-
276
- refresh: function() {
277
-
278
- // Make sure to only check disabled if its an element that supports this otherwise
279
- // check for the disabled class to determine state
280
- var isDisabled = this.element.is( "input, button" ) ?
281
- this.element[ 0 ].disabled : this.element.hasClass( "ui-button-disabled" );
282
-
283
- if ( isDisabled !== this.options.disabled ) {
284
- this._setOptions( { disabled: isDisabled } );
285
- }
286
-
287
- this._updateTooltip();
288
- }
289
- } );
290
-
291
- // DEPRECATED
292
- if ( $.uiBackCompat !== false ) {
293
-
294
- // Text and Icons options
295
- $.widget( "ui.button", $.ui.button, {
296
- options: {
297
- text: true,
298
- icons: {
299
- primary: null,
300
- secondary: null
301
- }
302
- },
303
-
304
- _create: function() {
305
- if ( this.options.showLabel && !this.options.text ) {
306
- this.options.showLabel = this.options.text;
307
- }
308
- if ( !this.options.showLabel && this.options.text ) {
309
- this.options.text = this.options.showLabel;
310
- }
311
- if ( !this.options.icon && ( this.options.icons.primary ||
312
- this.options.icons.secondary ) ) {
313
- if ( this.options.icons.primary ) {
314
- this.options.icon = this.options.icons.primary;
315
- } else {
316
- this.options.icon = this.options.icons.secondary;
317
- this.options.iconPosition = "end";
318
- }
319
- } else if ( this.options.icon ) {
320
- this.options.icons.primary = this.options.icon;
321
- }
322
- this._super();
323
- },
324
-
325
- _setOption: function( key, value ) {
326
- if ( key === "text" ) {
327
- this._super( "showLabel", value );
328
- return;
329
- }
330
- if ( key === "showLabel" ) {
331
- this.options.text = value;
332
- }
333
- if ( key === "icon" ) {
334
- this.options.icons.primary = value;
335
- }
336
- if ( key === "icons" ) {
337
- if ( value.primary ) {
338
- this._super( "icon", value.primary );
339
- this._super( "iconPosition", "beginning" );
340
- } else if ( value.secondary ) {
341
- this._super( "icon", value.secondary );
342
- this._super( "iconPosition", "end" );
343
- }
344
- }
345
- this._superApply( arguments );
346
- }
347
- } );
348
-
349
- $.fn.button = ( function( orig ) {
350
- return function() {
351
- if ( !this.length || ( this.length && this[ 0 ].tagName !== "INPUT" ) ||
352
- ( this.length && this[ 0 ].tagName === "INPUT" && (
353
- this.attr( "type" ) !== "checkbox" && this.attr( "type" ) !== "radio"
354
- ) ) ) {
355
- return orig.apply( this, arguments );
356
- }
357
- if ( !$.ui.checkboxradio ) {
358
- $.error( "Checkboxradio widget missing" );
359
- }
360
- if ( arguments.length === 0 ) {
361
- return this.checkboxradio( {
362
- "icon": false
363
- } );
364
- }
365
- return this.checkboxradio.apply( this, arguments );
366
- };
367
- } )( $.fn.button );
368
-
369
- $.fn.buttonset = function() {
370
- if ( !$.ui.controlgroup ) {
371
- $.error( "Controlgroup widget missing" );
372
- }
373
- if ( arguments[ 0 ] === "option" && arguments[ 1 ] === "items" && arguments[ 2 ] ) {
374
- return this.controlgroup.apply( this,
375
- [ arguments[ 0 ], "items.button", arguments[ 2 ] ] );
376
- }
377
- if ( arguments[ 0 ] === "option" && arguments[ 1 ] === "items" ) {
378
- return this.controlgroup.apply( this, [ arguments[ 0 ], "items.button" ] );
379
- }
380
- if ( typeof arguments[ 0 ] === "object" && arguments[ 0 ].items ) {
381
- arguments[ 0 ].items = {
382
- button: arguments[ 0 ].items
383
- };
384
- }
385
- return this.controlgroup.apply( this, arguments );
386
- };
387
- }
388
-
389
- return $.ui.button;
390
-
391
- } ) );
@@ -1,300 +0,0 @@
1
- //= require jquery-ui/widget
2
-
3
- /*!
4
- * jQuery UI Controlgroup 1.12.1
5
- * http://jqueryui.com
6
- *
7
- * Copyright jQuery Foundation and other contributors
8
- * Released under the MIT license.
9
- * http://jquery.org/license
10
- */
11
-
12
- //>>label: Controlgroup
13
- //>>group: Widgets
14
- //>>description: Visually groups form control widgets
15
- //>>docs: http://api.jqueryui.com/controlgroup/
16
- //>>demos: http://jqueryui.com/controlgroup/
17
- //>>css.structure: ../../themes/base/core.css
18
- //>>css.structure: ../../themes/base/controlgroup.css
19
- //>>css.theme: ../../themes/base/theme.css
20
-
21
- ( function( factory ) {
22
- if ( typeof define === "function" && define.amd ) {
23
-
24
- // AMD. Register as an anonymous module.
25
- define( [
26
- "jquery",
27
- "../widget"
28
- ], factory );
29
- } else {
30
-
31
- // Browser globals
32
- factory( jQuery );
33
- }
34
- }( function( $ ) {
35
- var controlgroupCornerRegex = /ui-corner-([a-z]){2,6}/g;
36
-
37
- return $.widget( "ui.controlgroup", {
38
- version: "1.12.1",
39
- defaultElement: "<div>",
40
- options: {
41
- direction: "horizontal",
42
- disabled: null,
43
- onlyVisible: true,
44
- items: {
45
- "button": "input[type=button], input[type=submit], input[type=reset], button, a",
46
- "controlgroupLabel": ".ui-controlgroup-label",
47
- "checkboxradio": "input[type='checkbox'], input[type='radio']",
48
- "selectmenu": "select",
49
- "spinner": ".ui-spinner-input"
50
- }
51
- },
52
-
53
- _create: function() {
54
- this._enhance();
55
- },
56
-
57
- // To support the enhanced option in jQuery Mobile, we isolate DOM manipulation
58
- _enhance: function() {
59
- this.element.attr( "role", "toolbar" );
60
- this.refresh();
61
- },
62
-
63
- _destroy: function() {
64
- this._callChildMethod( "destroy" );
65
- this.childWidgets.removeData( "ui-controlgroup-data" );
66
- this.element.removeAttr( "role" );
67
- if ( this.options.items.controlgroupLabel ) {
68
- this.element
69
- .find( this.options.items.controlgroupLabel )
70
- .find( ".ui-controlgroup-label-contents" )
71
- .contents().unwrap();
72
- }
73
- },
74
-
75
- _initWidgets: function() {
76
- var that = this,
77
- childWidgets = [];
78
-
79
- // First we iterate over each of the items options
80
- $.each( this.options.items, function( widget, selector ) {
81
- var labels;
82
- var options = {};
83
-
84
- // Make sure the widget has a selector set
85
- if ( !selector ) {
86
- return;
87
- }
88
-
89
- if ( widget === "controlgroupLabel" ) {
90
- labels = that.element.find( selector );
91
- labels.each( function() {
92
- var element = $( this );
93
-
94
- if ( element.children( ".ui-controlgroup-label-contents" ).length ) {
95
- return;
96
- }
97
- element.contents()
98
- .wrapAll( "<span class='ui-controlgroup-label-contents'></span>" );
99
- } );
100
- that._addClass( labels, null, "ui-widget ui-widget-content ui-state-default" );
101
- childWidgets = childWidgets.concat( labels.get() );
102
- return;
103
- }
104
-
105
- // Make sure the widget actually exists
106
- if ( !$.fn[ widget ] ) {
107
- return;
108
- }
109
-
110
- // We assume everything is in the middle to start because we can't determine
111
- // first / last elements until all enhancments are done.
112
- if ( that[ "_" + widget + "Options" ] ) {
113
- options = that[ "_" + widget + "Options" ]( "middle" );
114
- } else {
115
- options = { classes: {} };
116
- }
117
-
118
- // Find instances of this widget inside controlgroup and init them
119
- that.element
120
- .find( selector )
121
- .each( function() {
122
- var element = $( this );
123
- var instance = element[ widget ]( "instance" );
124
-
125
- // We need to clone the default options for this type of widget to avoid
126
- // polluting the variable options which has a wider scope than a single widget.
127
- var instanceOptions = $.widget.extend( {}, options );
128
-
129
- // If the button is the child of a spinner ignore it
130
- // TODO: Find a more generic solution
131
- if ( widget === "button" && element.parent( ".ui-spinner" ).length ) {
132
- return;
133
- }
134
-
135
- // Create the widget if it doesn't exist
136
- if ( !instance ) {
137
- instance = element[ widget ]()[ widget ]( "instance" );
138
- }
139
- if ( instance ) {
140
- instanceOptions.classes =
141
- that._resolveClassesValues( instanceOptions.classes, instance );
142
- }
143
- element[ widget ]( instanceOptions );
144
-
145
- // Store an instance of the controlgroup to be able to reference
146
- // from the outermost element for changing options and refresh
147
- var widgetElement = element[ widget ]( "widget" );
148
- $.data( widgetElement[ 0 ], "ui-controlgroup-data",
149
- instance ? instance : element[ widget ]( "instance" ) );
150
-
151
- childWidgets.push( widgetElement[ 0 ] );
152
- } );
153
- } );
154
-
155
- this.childWidgets = $( $.unique( childWidgets ) );
156
- this._addClass( this.childWidgets, "ui-controlgroup-item" );
157
- },
158
-
159
- _callChildMethod: function( method ) {
160
- this.childWidgets.each( function() {
161
- var element = $( this ),
162
- data = element.data( "ui-controlgroup-data" );
163
- if ( data && data[ method ] ) {
164
- data[ method ]();
165
- }
166
- } );
167
- },
168
-
169
- _updateCornerClass: function( element, position ) {
170
- var remove = "ui-corner-top ui-corner-bottom ui-corner-left ui-corner-right ui-corner-all";
171
- var add = this._buildSimpleOptions( position, "label" ).classes.label;
172
-
173
- this._removeClass( element, null, remove );
174
- this._addClass( element, null, add );
175
- },
176
-
177
- _buildSimpleOptions: function( position, key ) {
178
- var direction = this.options.direction === "vertical";
179
- var result = {
180
- classes: {}
181
- };
182
- result.classes[ key ] = {
183
- "middle": "",
184
- "first": "ui-corner-" + ( direction ? "top" : "left" ),
185
- "last": "ui-corner-" + ( direction ? "bottom" : "right" ),
186
- "only": "ui-corner-all"
187
- }[ position ];
188
-
189
- return result;
190
- },
191
-
192
- _spinnerOptions: function( position ) {
193
- var options = this._buildSimpleOptions( position, "ui-spinner" );
194
-
195
- options.classes[ "ui-spinner-up" ] = "";
196
- options.classes[ "ui-spinner-down" ] = "";
197
-
198
- return options;
199
- },
200
-
201
- _buttonOptions: function( position ) {
202
- return this._buildSimpleOptions( position, "ui-button" );
203
- },
204
-
205
- _checkboxradioOptions: function( position ) {
206
- return this._buildSimpleOptions( position, "ui-checkboxradio-label" );
207
- },
208
-
209
- _selectmenuOptions: function( position ) {
210
- var direction = this.options.direction === "vertical";
211
- return {
212
- width: direction ? "auto" : false,
213
- classes: {
214
- middle: {
215
- "ui-selectmenu-button-open": "",
216
- "ui-selectmenu-button-closed": ""
217
- },
218
- first: {
219
- "ui-selectmenu-button-open": "ui-corner-" + ( direction ? "top" : "tl" ),
220
- "ui-selectmenu-button-closed": "ui-corner-" + ( direction ? "top" : "left" )
221
- },
222
- last: {
223
- "ui-selectmenu-button-open": direction ? "" : "ui-corner-tr",
224
- "ui-selectmenu-button-closed": "ui-corner-" + ( direction ? "bottom" : "right" )
225
- },
226
- only: {
227
- "ui-selectmenu-button-open": "ui-corner-top",
228
- "ui-selectmenu-button-closed": "ui-corner-all"
229
- }
230
-
231
- }[ position ]
232
- };
233
- },
234
-
235
- _resolveClassesValues: function( classes, instance ) {
236
- var result = {};
237
- $.each( classes, function( key ) {
238
- var current = instance.options.classes[ key ] || "";
239
- current = $.trim( current.replace( controlgroupCornerRegex, "" ) );
240
- result[ key ] = ( current + " " + classes[ key ] ).replace( /\s+/g, " " );
241
- } );
242
- return result;
243
- },
244
-
245
- _setOption: function( key, value ) {
246
- if ( key === "direction" ) {
247
- this._removeClass( "ui-controlgroup-" + this.options.direction );
248
- }
249
-
250
- this._super( key, value );
251
- if ( key === "disabled" ) {
252
- this._callChildMethod( value ? "disable" : "enable" );
253
- return;
254
- }
255
-
256
- this.refresh();
257
- },
258
-
259
- refresh: function() {
260
- var children,
261
- that = this;
262
-
263
- this._addClass( "ui-controlgroup ui-controlgroup-" + this.options.direction );
264
-
265
- if ( this.options.direction === "horizontal" ) {
266
- this._addClass( null, "ui-helper-clearfix" );
267
- }
268
- this._initWidgets();
269
-
270
- children = this.childWidgets;
271
-
272
- // We filter here because we need to track all childWidgets not just the visible ones
273
- if ( this.options.onlyVisible ) {
274
- children = children.filter( ":visible" );
275
- }
276
-
277
- if ( children.length ) {
278
-
279
- // We do this last because we need to make sure all enhancment is done
280
- // before determining first and last
281
- $.each( [ "first", "last" ], function( index, value ) {
282
- var instance = children[ value ]().data( "ui-controlgroup-data" );
283
-
284
- if ( instance && that[ "_" + instance.widgetName + "Options" ] ) {
285
- var options = that[ "_" + instance.widgetName + "Options" ](
286
- children.length === 1 ? "only" : value
287
- );
288
- options.classes = that._resolveClassesValues( options.classes, instance );
289
- instance.element[ instance.widgetName ]( options );
290
- } else {
291
- that._updateCornerClass( children[ value ](), value );
292
- }
293
- } );
294
-
295
- // Finally call the refresh method on each of the child widgets.
296
- this._callChildMethod( "refresh" );
297
- }
298
- }
299
- } );
300
- } ) );