jquery-ui-rails-test 6.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (180) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +2 -0
  3. data/.gitmodules +3 -0
  4. data/.travis.yml +2 -0
  5. data/Gemfile +3 -0
  6. data/History.md +172 -0
  7. data/License.txt +2 -0
  8. data/README.md +311 -0
  9. data/Rakefile +261 -0
  10. data/VERSIONS.md +40 -0
  11. data/app/assets/images/jquery-ui/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  12. data/app/assets/images/jquery-ui/ui-icons_444444_256x240.png +0 -0
  13. data/app/assets/images/jquery-ui/ui-icons_555555_256x240.png +0 -0
  14. data/app/assets/images/jquery-ui/ui-icons_777620_256x240.png +0 -0
  15. data/app/assets/images/jquery-ui/ui-icons_777777_256x240.png +0 -0
  16. data/app/assets/images/jquery-ui/ui-icons_cc0000_256x240.png +0 -0
  17. data/app/assets/images/jquery-ui/ui-icons_ffffff_256x240.png +0 -0
  18. data/app/assets/javascripts/jquery-ui/core.js +15 -0
  19. data/app/assets/javascripts/jquery-ui/data.js +45 -0
  20. data/app/assets/javascripts/jquery-ui/disable-selection.js +51 -0
  21. data/app/assets/javascripts/jquery-ui/effect.all.js +15 -0
  22. data/app/assets/javascripts/jquery-ui/effect.js +975 -0
  23. data/app/assets/javascripts/jquery-ui/effects/effect-blind.js +76 -0
  24. data/app/assets/javascripts/jquery-ui/effects/effect-bounce.js +116 -0
  25. data/app/assets/javascripts/jquery-ui/effects/effect-clip.js +71 -0
  26. data/app/assets/javascripts/jquery-ui/effects/effect-drop.js +75 -0
  27. data/app/assets/javascripts/jquery-ui/effects/effect-explode.js +117 -0
  28. data/app/assets/javascripts/jquery-ui/effects/effect-fade.js +53 -0
  29. data/app/assets/javascripts/jquery-ui/effects/effect-fold.js +95 -0
  30. data/app/assets/javascripts/jquery-ui/effects/effect-highlight.js +63 -0
  31. data/app/assets/javascripts/jquery-ui/effects/effect-puff.js +49 -0
  32. data/app/assets/javascripts/jquery-ui/effects/effect-pulsate.js +70 -0
  33. data/app/assets/javascripts/jquery-ui/effects/effect-scale.js +63 -0
  34. data/app/assets/javascripts/jquery-ui/effects/effect-shake.js +80 -0
  35. data/app/assets/javascripts/jquery-ui/effects/effect-size.js +199 -0
  36. data/app/assets/javascripts/jquery-ui/effects/effect-slide.js +82 -0
  37. data/app/assets/javascripts/jquery-ui/effects/effect-transfer.js +46 -0
  38. data/app/assets/javascripts/jquery-ui/focusable.js +89 -0
  39. data/app/assets/javascripts/jquery-ui/form-reset-mixin.js +83 -0
  40. data/app/assets/javascripts/jquery-ui/form.js +25 -0
  41. data/app/assets/javascripts/jquery-ui/i18n/datepicker-af.js +40 -0
  42. data/app/assets/javascripts/jquery-ui/i18n/datepicker-ar-DZ.js +42 -0
  43. data/app/assets/javascripts/jquery-ui/i18n/datepicker-ar.js +42 -0
  44. data/app/assets/javascripts/jquery-ui/i18n/datepicker-az.js +40 -0
  45. data/app/assets/javascripts/jquery-ui/i18n/datepicker-be.js +40 -0
  46. data/app/assets/javascripts/jquery-ui/i18n/datepicker-bg.js +41 -0
  47. data/app/assets/javascripts/jquery-ui/i18n/datepicker-bs.js +40 -0
  48. data/app/assets/javascripts/jquery-ui/i18n/datepicker-ca.js +40 -0
  49. data/app/assets/javascripts/jquery-ui/i18n/datepicker-cs.js +40 -0
  50. data/app/assets/javascripts/jquery-ui/i18n/datepicker-cy-GB.js +48 -0
  51. data/app/assets/javascripts/jquery-ui/i18n/datepicker-da.js +40 -0
  52. data/app/assets/javascripts/jquery-ui/i18n/datepicker-de-AT.js +41 -0
  53. data/app/assets/javascripts/jquery-ui/i18n/datepicker-de.js +40 -0
  54. data/app/assets/javascripts/jquery-ui/i18n/datepicker-el.js +40 -0
  55. data/app/assets/javascripts/jquery-ui/i18n/datepicker-en-AU.js +40 -0
  56. data/app/assets/javascripts/jquery-ui/i18n/datepicker-en-GB.js +40 -0
  57. data/app/assets/javascripts/jquery-ui/i18n/datepicker-en-NZ.js +40 -0
  58. data/app/assets/javascripts/jquery-ui/i18n/datepicker-eo.js +40 -0
  59. data/app/assets/javascripts/jquery-ui/i18n/datepicker-es.js +40 -0
  60. data/app/assets/javascripts/jquery-ui/i18n/datepicker-et.js +48 -0
  61. data/app/assets/javascripts/jquery-ui/i18n/datepicker-eu.js +39 -0
  62. data/app/assets/javascripts/jquery-ui/i18n/datepicker-fa.js +76 -0
  63. data/app/assets/javascripts/jquery-ui/i18n/datepicker-fi.js +40 -0
  64. data/app/assets/javascripts/jquery-ui/i18n/datepicker-fo.js +48 -0
  65. data/app/assets/javascripts/jquery-ui/i18n/datepicker-fr-CA.js +40 -0
  66. data/app/assets/javascripts/jquery-ui/i18n/datepicker-fr-CH.js +40 -0
  67. data/app/assets/javascripts/jquery-ui/i18n/datepicker-fr.js +42 -0
  68. data/app/assets/javascripts/jquery-ui/i18n/datepicker-gl.js +40 -0
  69. data/app/assets/javascripts/jquery-ui/i18n/datepicker-he.js +40 -0
  70. data/app/assets/javascripts/jquery-ui/i18n/datepicker-hi.js +40 -0
  71. data/app/assets/javascripts/jquery-ui/i18n/datepicker-hr.js +40 -0
  72. data/app/assets/javascripts/jquery-ui/i18n/datepicker-hu.js +39 -0
  73. data/app/assets/javascripts/jquery-ui/i18n/datepicker-hy.js +40 -0
  74. data/app/assets/javascripts/jquery-ui/i18n/datepicker-id.js +40 -0
  75. data/app/assets/javascripts/jquery-ui/i18n/datepicker-is.js +48 -0
  76. data/app/assets/javascripts/jquery-ui/i18n/datepicker-it-CH.js +40 -0
  77. data/app/assets/javascripts/jquery-ui/i18n/datepicker-it.js +40 -0
  78. data/app/assets/javascripts/jquery-ui/i18n/datepicker-ja.js +40 -0
  79. data/app/assets/javascripts/jquery-ui/i18n/datepicker-ka.js +51 -0
  80. data/app/assets/javascripts/jquery-ui/i18n/datepicker-kk.js +40 -0
  81. data/app/assets/javascripts/jquery-ui/i18n/datepicker-km.js +40 -0
  82. data/app/assets/javascripts/jquery-ui/i18n/datepicker-ko.js +40 -0
  83. data/app/assets/javascripts/jquery-ui/i18n/datepicker-ky.js +41 -0
  84. data/app/assets/javascripts/jquery-ui/i18n/datepicker-lb.js +48 -0
  85. data/app/assets/javascripts/jquery-ui/i18n/datepicker-lt.js +48 -0
  86. data/app/assets/javascripts/jquery-ui/i18n/datepicker-lv.js +48 -0
  87. data/app/assets/javascripts/jquery-ui/i18n/datepicker-mk.js +40 -0
  88. data/app/assets/javascripts/jquery-ui/i18n/datepicker-ml.js +40 -0
  89. data/app/assets/javascripts/jquery-ui/i18n/datepicker-ms.js +40 -0
  90. data/app/assets/javascripts/jquery-ui/i18n/datepicker-nb.js +52 -0
  91. data/app/assets/javascripts/jquery-ui/i18n/datepicker-nl-BE.js +40 -0
  92. data/app/assets/javascripts/jquery-ui/i18n/datepicker-nl.js +40 -0
  93. data/app/assets/javascripts/jquery-ui/i18n/datepicker-nn.js +52 -0
  94. data/app/assets/javascripts/jquery-ui/i18n/datepicker-no.js +53 -0
  95. data/app/assets/javascripts/jquery-ui/i18n/datepicker-pl.js +40 -0
  96. data/app/assets/javascripts/jquery-ui/i18n/datepicker-pt-BR.js +48 -0
  97. data/app/assets/javascripts/jquery-ui/i18n/datepicker-pt.js +47 -0
  98. data/app/assets/javascripts/jquery-ui/i18n/datepicker-rm.js +64 -0
  99. data/app/assets/javascripts/jquery-ui/i18n/datepicker-ro.js +43 -0
  100. data/app/assets/javascripts/jquery-ui/i18n/datepicker-ru.js +40 -0
  101. data/app/assets/javascripts/jquery-ui/i18n/datepicker-sk.js +40 -0
  102. data/app/assets/javascripts/jquery-ui/i18n/datepicker-sl.js +41 -0
  103. data/app/assets/javascripts/jquery-ui/i18n/datepicker-sq.js +40 -0
  104. data/app/assets/javascripts/jquery-ui/i18n/datepicker-sr-SR.js +40 -0
  105. data/app/assets/javascripts/jquery-ui/i18n/datepicker-sr.js +40 -0
  106. data/app/assets/javascripts/jquery-ui/i18n/datepicker-sv.js +40 -0
  107. data/app/assets/javascripts/jquery-ui/i18n/datepicker-ta.js +56 -0
  108. data/app/assets/javascripts/jquery-ui/i18n/datepicker-th.js +40 -0
  109. data/app/assets/javascripts/jquery-ui/i18n/datepicker-tj.js +40 -0
  110. data/app/assets/javascripts/jquery-ui/i18n/datepicker-tr.js +40 -0
  111. data/app/assets/javascripts/jquery-ui/i18n/datepicker-uk.js +41 -0
  112. data/app/assets/javascripts/jquery-ui/i18n/datepicker-vi.js +40 -0
  113. data/app/assets/javascripts/jquery-ui/i18n/datepicker-zh-CN.js +40 -0
  114. data/app/assets/javascripts/jquery-ui/i18n/datepicker-zh-HK.js +40 -0
  115. data/app/assets/javascripts/jquery-ui/i18n/datepicker-zh-TW.js +40 -0
  116. data/app/assets/javascripts/jquery-ui/ie.js +20 -0
  117. data/app/assets/javascripts/jquery-ui/jquery-patch.js +91 -0
  118. data/app/assets/javascripts/jquery-ui/jquery-var-for-color.js +24 -0
  119. data/app/assets/javascripts/jquery-ui/keycode.js +51 -0
  120. data/app/assets/javascripts/jquery-ui/labels.js +71 -0
  121. data/app/assets/javascripts/jquery-ui/plugin.js +49 -0
  122. data/app/assets/javascripts/jquery-ui/position.js +513 -0
  123. data/app/assets/javascripts/jquery-ui/safe-active-element.js +46 -0
  124. data/app/assets/javascripts/jquery-ui/safe-blur.js +27 -0
  125. data/app/assets/javascripts/jquery-ui/scroll-parent.js +50 -0
  126. data/app/assets/javascripts/jquery-ui/tabbable.js +41 -0
  127. data/app/assets/javascripts/jquery-ui/unique-id.js +54 -0
  128. data/app/assets/javascripts/jquery-ui/vendor/jquery-color/LICENSE.txt +43 -0
  129. data/app/assets/javascripts/jquery-ui/vendor/jquery-color/jquery.color.js +722 -0
  130. data/app/assets/javascripts/jquery-ui/version.js +20 -0
  131. data/app/assets/javascripts/jquery-ui/widget.js +758 -0
  132. data/app/assets/javascripts/jquery-ui/widgets/accordion.js +627 -0
  133. data/app/assets/javascripts/jquery-ui/widgets/autocomplete.js +685 -0
  134. data/app/assets/javascripts/jquery-ui/widgets/button.js +454 -0
  135. data/app/assets/javascripts/jquery-ui/widgets/checkboxradio.js +289 -0
  136. data/app/assets/javascripts/jquery-ui/widgets/controlgroup.js +304 -0
  137. data/app/assets/javascripts/jquery-ui/widgets/datepicker.js +2243 -0
  138. data/app/assets/javascripts/jquery-ui/widgets/dialog.js +968 -0
  139. data/app/assets/javascripts/jquery-ui/widgets/draggable.js +1268 -0
  140. data/app/assets/javascripts/jquery-ui/widgets/droppable.js +508 -0
  141. data/app/assets/javascripts/jquery-ui/widgets/menu.js +720 -0
  142. data/app/assets/javascripts/jquery-ui/widgets/mouse.js +241 -0
  143. data/app/assets/javascripts/jquery-ui/widgets/progressbar.js +184 -0
  144. data/app/assets/javascripts/jquery-ui/widgets/resizable.js +1225 -0
  145. data/app/assets/javascripts/jquery-ui/widgets/selectable.js +321 -0
  146. data/app/assets/javascripts/jquery-ui/widgets/selectmenu.js +702 -0
  147. data/app/assets/javascripts/jquery-ui/widgets/slider.js +760 -0
  148. data/app/assets/javascripts/jquery-ui/widgets/sortable.js +1622 -0
  149. data/app/assets/javascripts/jquery-ui/widgets/spinner.js +588 -0
  150. data/app/assets/javascripts/jquery-ui/widgets/tabs.js +931 -0
  151. data/app/assets/javascripts/jquery-ui/widgets/tooltip.js +533 -0
  152. data/app/assets/javascripts/jquery-ui.js +56 -0
  153. data/app/assets/stylesheets/jquery-ui/accordion.css +26 -0
  154. data/app/assets/stylesheets/jquery-ui/all.css +14 -0
  155. data/app/assets/stylesheets/jquery-ui/autocomplete.css +19 -0
  156. data/app/assets/stylesheets/jquery-ui/base.css +32 -0
  157. data/app/assets/stylesheets/jquery-ui/button.css +85 -0
  158. data/app/assets/stylesheets/jquery-ui/checkboxradio.css +37 -0
  159. data/app/assets/stylesheets/jquery-ui/controlgroup.css +68 -0
  160. data/app/assets/stylesheets/jquery-ui/core.css +100 -0
  161. data/app/assets/stylesheets/jquery-ui/datepicker.css +188 -0
  162. data/app/assets/stylesheets/jquery-ui/dialog.css +104 -0
  163. data/app/assets/stylesheets/jquery-ui/draggable.css +15 -0
  164. data/app/assets/stylesheets/jquery-ui/menu.css +67 -0
  165. data/app/assets/stylesheets/jquery-ui/progressbar.css +31 -0
  166. data/app/assets/stylesheets/jquery-ui/resizable.css +81 -0
  167. data/app/assets/stylesheets/jquery-ui/selectable.css +20 -0
  168. data/app/assets/stylesheets/jquery-ui/selectmenu.css +53 -0
  169. data/app/assets/stylesheets/jquery-ui/slider.css +78 -0
  170. data/app/assets/stylesheets/jquery-ui/sortable.css +15 -0
  171. data/app/assets/stylesheets/jquery-ui/spinner.css +55 -0
  172. data/app/assets/stylesheets/jquery-ui/tabs.css +54 -0
  173. data/app/assets/stylesheets/jquery-ui/theme.css.erb +456 -0
  174. data/app/assets/stylesheets/jquery-ui/tooltip.css +22 -0
  175. data/app/assets/stylesheets/jquery-ui.css +1 -0
  176. data/lib/jquery/ui/rails/engine.rb +8 -0
  177. data/lib/jquery/ui/rails/version.rb +8 -0
  178. data/lib/jquery/ui/rails.rb +2 -0
  179. data/lib/jquery-ui-rails.rb +1 -0
  180. metadata +250 -0
@@ -0,0 +1,454 @@
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.13.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
+ "use strict";
26
+
27
+ if ( typeof define === "function" && define.amd ) {
28
+
29
+ // AMD. Register as an anonymous module.
30
+ define( [
31
+ "jquery",
32
+
33
+ // These are only for backcompat
34
+ // TODO: Remove after 1.12
35
+ "./controlgroup",
36
+ "./checkboxradio",
37
+
38
+ "../keycode",
39
+ "../widget"
40
+ ], factory );
41
+ } else {
42
+
43
+ // Browser globals
44
+ factory( jQuery );
45
+ }
46
+ } )( function( $ ) {
47
+ "use strict";
48
+
49
+ $.widget( "ui.button", {
50
+ version: "1.13.1",
51
+ defaultElement: "<button>",
52
+ options: {
53
+ classes: {
54
+ "ui-button": "ui-corner-all"
55
+ },
56
+ disabled: null,
57
+ icon: null,
58
+ iconPosition: "beginning",
59
+ label: null,
60
+ showLabel: true
61
+ },
62
+
63
+ _getCreateOptions: function() {
64
+ var disabled,
65
+
66
+ // This is to support cases like in jQuery Mobile where the base widget does have
67
+ // an implementation of _getCreateOptions
68
+ options = this._super() || {};
69
+
70
+ this.isInput = this.element.is( "input" );
71
+
72
+ disabled = this.element[ 0 ].disabled;
73
+ if ( disabled != null ) {
74
+ options.disabled = disabled;
75
+ }
76
+
77
+ this.originalLabel = this.isInput ? this.element.val() : this.element.html();
78
+ if ( this.originalLabel ) {
79
+ options.label = this.originalLabel;
80
+ }
81
+
82
+ return options;
83
+ },
84
+
85
+ _create: function() {
86
+ if ( !this.option.showLabel & !this.options.icon ) {
87
+ this.options.showLabel = true;
88
+ }
89
+
90
+ // We have to check the option again here even though we did in _getCreateOptions,
91
+ // because null may have been passed on init which would override what was set in
92
+ // _getCreateOptions
93
+ if ( this.options.disabled == null ) {
94
+ this.options.disabled = this.element[ 0 ].disabled || false;
95
+ }
96
+
97
+ this.hasTitle = !!this.element.attr( "title" );
98
+
99
+ // Check to see if the label needs to be set or if its already correct
100
+ if ( this.options.label && this.options.label !== this.originalLabel ) {
101
+ if ( this.isInput ) {
102
+ this.element.val( this.options.label );
103
+ } else {
104
+ this.element.html( this.options.label );
105
+ }
106
+ }
107
+ this._addClass( "ui-button", "ui-widget" );
108
+ this._setOption( "disabled", this.options.disabled );
109
+ this._enhance();
110
+
111
+ if ( this.element.is( "a" ) ) {
112
+ this._on( {
113
+ "keyup": function( event ) {
114
+ if ( event.keyCode === $.ui.keyCode.SPACE ) {
115
+ event.preventDefault();
116
+
117
+ // Support: PhantomJS <= 1.9, IE 8 Only
118
+ // If a native click is available use it so we actually cause navigation
119
+ // otherwise just trigger a click event
120
+ if ( this.element[ 0 ].click ) {
121
+ this.element[ 0 ].click();
122
+ } else {
123
+ this.element.trigger( "click" );
124
+ }
125
+ }
126
+ }
127
+ } );
128
+ }
129
+ },
130
+
131
+ _enhance: function() {
132
+ if ( !this.element.is( "button" ) ) {
133
+ this.element.attr( "role", "button" );
134
+ }
135
+
136
+ if ( this.options.icon ) {
137
+ this._updateIcon( "icon", this.options.icon );
138
+ this._updateTooltip();
139
+ }
140
+ },
141
+
142
+ _updateTooltip: function() {
143
+ this.title = this.element.attr( "title" );
144
+
145
+ if ( !this.options.showLabel && !this.title ) {
146
+ this.element.attr( "title", this.options.label );
147
+ }
148
+ },
149
+
150
+ _updateIcon: function( option, value ) {
151
+ var icon = option !== "iconPosition",
152
+ position = icon ? this.options.iconPosition : value,
153
+ displayBlock = position === "top" || position === "bottom";
154
+
155
+ // Create icon
156
+ if ( !this.icon ) {
157
+ this.icon = $( "<span>" );
158
+
159
+ this._addClass( this.icon, "ui-button-icon", "ui-icon" );
160
+
161
+ if ( !this.options.showLabel ) {
162
+ this._addClass( "ui-button-icon-only" );
163
+ }
164
+ } else if ( icon ) {
165
+
166
+ // If we are updating the icon remove the old icon class
167
+ this._removeClass( this.icon, null, this.options.icon );
168
+ }
169
+
170
+ // If we are updating the icon add the new icon class
171
+ if ( icon ) {
172
+ this._addClass( this.icon, null, value );
173
+ }
174
+
175
+ this._attachIcon( position );
176
+
177
+ // If the icon is on top or bottom we need to add the ui-widget-icon-block class and remove
178
+ // the iconSpace if there is one.
179
+ if ( displayBlock ) {
180
+ this._addClass( this.icon, null, "ui-widget-icon-block" );
181
+ if ( this.iconSpace ) {
182
+ this.iconSpace.remove();
183
+ }
184
+ } else {
185
+
186
+ // Position is beginning or end so remove the ui-widget-icon-block class and add the
187
+ // space if it does not exist
188
+ if ( !this.iconSpace ) {
189
+ this.iconSpace = $( "<span> </span>" );
190
+ this._addClass( this.iconSpace, "ui-button-icon-space" );
191
+ }
192
+ this._removeClass( this.icon, null, "ui-wiget-icon-block" );
193
+ this._attachIconSpace( position );
194
+ }
195
+ },
196
+
197
+ _destroy: function() {
198
+ this.element.removeAttr( "role" );
199
+
200
+ if ( this.icon ) {
201
+ this.icon.remove();
202
+ }
203
+ if ( this.iconSpace ) {
204
+ this.iconSpace.remove();
205
+ }
206
+ if ( !this.hasTitle ) {
207
+ this.element.removeAttr( "title" );
208
+ }
209
+ },
210
+
211
+ _attachIconSpace: function( iconPosition ) {
212
+ this.icon[ /^(?:end|bottom)/.test( iconPosition ) ? "before" : "after" ]( this.iconSpace );
213
+ },
214
+
215
+ _attachIcon: function( iconPosition ) {
216
+ this.element[ /^(?:end|bottom)/.test( iconPosition ) ? "append" : "prepend" ]( this.icon );
217
+ },
218
+
219
+ _setOptions: function( options ) {
220
+ var newShowLabel = options.showLabel === undefined ?
221
+ this.options.showLabel :
222
+ options.showLabel,
223
+ newIcon = options.icon === undefined ? this.options.icon : options.icon;
224
+
225
+ if ( !newShowLabel && !newIcon ) {
226
+ options.showLabel = true;
227
+ }
228
+ this._super( options );
229
+ },
230
+
231
+ _setOption: function( key, value ) {
232
+ if ( key === "icon" ) {
233
+ if ( value ) {
234
+ this._updateIcon( key, value );
235
+ } else if ( this.icon ) {
236
+ this.icon.remove();
237
+ if ( this.iconSpace ) {
238
+ this.iconSpace.remove();
239
+ }
240
+ }
241
+ }
242
+
243
+ if ( key === "iconPosition" ) {
244
+ this._updateIcon( key, value );
245
+ }
246
+
247
+ // Make sure we can't end up with a button that has neither text nor icon
248
+ if ( key === "showLabel" ) {
249
+ this._toggleClass( "ui-button-icon-only", null, !value );
250
+ this._updateTooltip();
251
+ }
252
+
253
+ if ( key === "label" ) {
254
+ if ( this.isInput ) {
255
+ this.element.val( value );
256
+ } else {
257
+
258
+ // If there is an icon, append it, else nothing then append the value
259
+ // this avoids removal of the icon when setting label text
260
+ this.element.html( value );
261
+ if ( this.icon ) {
262
+ this._attachIcon( this.options.iconPosition );
263
+ this._attachIconSpace( this.options.iconPosition );
264
+ }
265
+ }
266
+ }
267
+
268
+ this._super( key, value );
269
+
270
+ if ( key === "disabled" ) {
271
+ this._toggleClass( null, "ui-state-disabled", value );
272
+ this.element[ 0 ].disabled = value;
273
+ if ( value ) {
274
+ this.element.trigger( "blur" );
275
+ }
276
+ }
277
+ },
278
+
279
+ refresh: function() {
280
+
281
+ // Make sure to only check disabled if its an element that supports this otherwise
282
+ // check for the disabled class to determine state
283
+ var isDisabled = this.element.is( "input, button" ) ?
284
+ this.element[ 0 ].disabled : this.element.hasClass( "ui-button-disabled" );
285
+
286
+ if ( isDisabled !== this.options.disabled ) {
287
+ this._setOptions( { disabled: isDisabled } );
288
+ }
289
+
290
+ this._updateTooltip();
291
+ }
292
+ } );
293
+
294
+ // DEPRECATED
295
+ if ( $.uiBackCompat !== false ) {
296
+
297
+ // Text and Icons options
298
+ $.widget( "ui.button", $.ui.button, {
299
+ options: {
300
+ text: true,
301
+ icons: {
302
+ primary: null,
303
+ secondary: null
304
+ }
305
+ },
306
+
307
+ _create: function() {
308
+ if ( this.options.showLabel && !this.options.text ) {
309
+ this.options.showLabel = this.options.text;
310
+ }
311
+ if ( !this.options.showLabel && this.options.text ) {
312
+ this.options.text = this.options.showLabel;
313
+ }
314
+ if ( !this.options.icon && ( this.options.icons.primary ||
315
+ this.options.icons.secondary ) ) {
316
+ if ( this.options.icons.primary ) {
317
+ this.options.icon = this.options.icons.primary;
318
+ } else {
319
+ this.options.icon = this.options.icons.secondary;
320
+ this.options.iconPosition = "end";
321
+ }
322
+ } else if ( this.options.icon ) {
323
+ this.options.icons.primary = this.options.icon;
324
+ }
325
+ this._super();
326
+ },
327
+
328
+ _setOption: function( key, value ) {
329
+ if ( key === "text" ) {
330
+ this._super( "showLabel", value );
331
+ return;
332
+ }
333
+ if ( key === "showLabel" ) {
334
+ this.options.text = value;
335
+ }
336
+ if ( key === "icon" ) {
337
+ this.options.icons.primary = value;
338
+ }
339
+ if ( key === "icons" ) {
340
+ if ( value.primary ) {
341
+ this._super( "icon", value.primary );
342
+ this._super( "iconPosition", "beginning" );
343
+ } else if ( value.secondary ) {
344
+ this._super( "icon", value.secondary );
345
+ this._super( "iconPosition", "end" );
346
+ }
347
+ }
348
+ this._superApply( arguments );
349
+ }
350
+ } );
351
+
352
+ $.fn.button = ( function( orig ) {
353
+ return function( options ) {
354
+ var isMethodCall = typeof options === "string";
355
+ var args = Array.prototype.slice.call( arguments, 1 );
356
+ var returnValue = this;
357
+
358
+ if ( isMethodCall ) {
359
+
360
+ // If this is an empty collection, we need to have the instance method
361
+ // return undefined instead of the jQuery instance
362
+ if ( !this.length && options === "instance" ) {
363
+ returnValue = undefined;
364
+ } else {
365
+ this.each( function() {
366
+ var methodValue;
367
+ var type = $( this ).attr( "type" );
368
+ var name = type !== "checkbox" && type !== "radio" ?
369
+ "button" :
370
+ "checkboxradio";
371
+ var instance = $.data( this, "ui-" + name );
372
+
373
+ if ( options === "instance" ) {
374
+ returnValue = instance;
375
+ return false;
376
+ }
377
+
378
+ if ( !instance ) {
379
+ return $.error( "cannot call methods on button" +
380
+ " prior to initialization; " +
381
+ "attempted to call method '" + options + "'" );
382
+ }
383
+
384
+ if ( typeof instance[ options ] !== "function" ||
385
+ options.charAt( 0 ) === "_" ) {
386
+ return $.error( "no such method '" + options + "' for button" +
387
+ " widget instance" );
388
+ }
389
+
390
+ methodValue = instance[ options ].apply( instance, args );
391
+
392
+ if ( methodValue !== instance && methodValue !== undefined ) {
393
+ returnValue = methodValue && methodValue.jquery ?
394
+ returnValue.pushStack( methodValue.get() ) :
395
+ methodValue;
396
+ return false;
397
+ }
398
+ } );
399
+ }
400
+ } else {
401
+
402
+ // Allow multiple hashes to be passed on init
403
+ if ( args.length ) {
404
+ options = $.widget.extend.apply( null, [ options ].concat( args ) );
405
+ }
406
+
407
+ this.each( function() {
408
+ var type = $( this ).attr( "type" );
409
+ var name = type !== "checkbox" && type !== "radio" ? "button" : "checkboxradio";
410
+ var instance = $.data( this, "ui-" + name );
411
+
412
+ if ( instance ) {
413
+ instance.option( options || {} );
414
+ if ( instance._init ) {
415
+ instance._init();
416
+ }
417
+ } else {
418
+ if ( name === "button" ) {
419
+ orig.call( $( this ), options );
420
+ return;
421
+ }
422
+
423
+ $( this ).checkboxradio( $.extend( { icon: false }, options ) );
424
+ }
425
+ } );
426
+ }
427
+
428
+ return returnValue;
429
+ };
430
+ } )( $.fn.button );
431
+
432
+ $.fn.buttonset = function() {
433
+ if ( !$.ui.controlgroup ) {
434
+ $.error( "Controlgroup widget missing" );
435
+ }
436
+ if ( arguments[ 0 ] === "option" && arguments[ 1 ] === "items" && arguments[ 2 ] ) {
437
+ return this.controlgroup.apply( this,
438
+ [ arguments[ 0 ], "items.button", arguments[ 2 ] ] );
439
+ }
440
+ if ( arguments[ 0 ] === "option" && arguments[ 1 ] === "items" ) {
441
+ return this.controlgroup.apply( this, [ arguments[ 0 ], "items.button" ] );
442
+ }
443
+ if ( typeof arguments[ 0 ] === "object" && arguments[ 0 ].items ) {
444
+ arguments[ 0 ].items = {
445
+ button: arguments[ 0 ].items
446
+ };
447
+ }
448
+ return this.controlgroup.apply( this, arguments );
449
+ };
450
+ }
451
+
452
+ return $.ui.button;
453
+
454
+ } );