jquery-ui-rails-dox-fork 7.0.2

Sign up to get free protection for your applications and to get access to all the features.
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/CONTRIBUTING.txt +30 -0
  6. data/Gemfile +3 -0
  7. data/History.md +172 -0
  8. data/License.txt +2 -0
  9. data/README.md +311 -0
  10. data/Rakefile +263 -0
  11. data/VERSIONS.md +41 -0
  12. data/app/assets/images/jquery-ui/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  13. data/app/assets/images/jquery-ui/ui-icons_444444_256x240.png +0 -0
  14. data/app/assets/images/jquery-ui/ui-icons_555555_256x240.png +0 -0
  15. data/app/assets/images/jquery-ui/ui-icons_777620_256x240.png +0 -0
  16. data/app/assets/images/jquery-ui/ui-icons_777777_256x240.png +0 -0
  17. data/app/assets/images/jquery-ui/ui-icons_cc0000_256x240.png +0 -0
  18. data/app/assets/images/jquery-ui/ui-icons_ffffff_256x240.png +0 -0
  19. data/app/assets/javascripts/jquery-ui/core.js +15 -0
  20. data/app/assets/javascripts/jquery-ui/data.js +45 -0
  21. data/app/assets/javascripts/jquery-ui/disable-selection.js +51 -0
  22. data/app/assets/javascripts/jquery-ui/effect.all.js +15 -0
  23. data/app/assets/javascripts/jquery-ui/effect.js +975 -0
  24. data/app/assets/javascripts/jquery-ui/effects/effect-blind.js +76 -0
  25. data/app/assets/javascripts/jquery-ui/effects/effect-bounce.js +116 -0
  26. data/app/assets/javascripts/jquery-ui/effects/effect-clip.js +71 -0
  27. data/app/assets/javascripts/jquery-ui/effects/effect-drop.js +75 -0
  28. data/app/assets/javascripts/jquery-ui/effects/effect-explode.js +117 -0
  29. data/app/assets/javascripts/jquery-ui/effects/effect-fade.js +53 -0
  30. data/app/assets/javascripts/jquery-ui/effects/effect-fold.js +95 -0
  31. data/app/assets/javascripts/jquery-ui/effects/effect-highlight.js +63 -0
  32. data/app/assets/javascripts/jquery-ui/effects/effect-puff.js +49 -0
  33. data/app/assets/javascripts/jquery-ui/effects/effect-pulsate.js +70 -0
  34. data/app/assets/javascripts/jquery-ui/effects/effect-scale.js +63 -0
  35. data/app/assets/javascripts/jquery-ui/effects/effect-shake.js +80 -0
  36. data/app/assets/javascripts/jquery-ui/effects/effect-size.js +199 -0
  37. data/app/assets/javascripts/jquery-ui/effects/effect-slide.js +82 -0
  38. data/app/assets/javascripts/jquery-ui/effects/effect-transfer.js +46 -0
  39. data/app/assets/javascripts/jquery-ui/focusable.js +89 -0
  40. data/app/assets/javascripts/jquery-ui/form-reset-mixin.js +83 -0
  41. data/app/assets/javascripts/jquery-ui/form.js +25 -0
  42. data/app/assets/javascripts/jquery-ui/i18n/datepicker-af.js +40 -0
  43. data/app/assets/javascripts/jquery-ui/i18n/datepicker-ar-DZ.js +42 -0
  44. data/app/assets/javascripts/jquery-ui/i18n/datepicker-ar.js +42 -0
  45. data/app/assets/javascripts/jquery-ui/i18n/datepicker-az.js +40 -0
  46. data/app/assets/javascripts/jquery-ui/i18n/datepicker-be.js +40 -0
  47. data/app/assets/javascripts/jquery-ui/i18n/datepicker-bg.js +41 -0
  48. data/app/assets/javascripts/jquery-ui/i18n/datepicker-bs.js +40 -0
  49. data/app/assets/javascripts/jquery-ui/i18n/datepicker-ca.js +40 -0
  50. data/app/assets/javascripts/jquery-ui/i18n/datepicker-cs.js +40 -0
  51. data/app/assets/javascripts/jquery-ui/i18n/datepicker-cy-GB.js +48 -0
  52. data/app/assets/javascripts/jquery-ui/i18n/datepicker-da.js +40 -0
  53. data/app/assets/javascripts/jquery-ui/i18n/datepicker-de-AT.js +41 -0
  54. data/app/assets/javascripts/jquery-ui/i18n/datepicker-de.js +40 -0
  55. data/app/assets/javascripts/jquery-ui/i18n/datepicker-el.js +40 -0
  56. data/app/assets/javascripts/jquery-ui/i18n/datepicker-en-AU.js +40 -0
  57. data/app/assets/javascripts/jquery-ui/i18n/datepicker-en-GB.js +40 -0
  58. data/app/assets/javascripts/jquery-ui/i18n/datepicker-en-NZ.js +40 -0
  59. data/app/assets/javascripts/jquery-ui/i18n/datepicker-eo.js +40 -0
  60. data/app/assets/javascripts/jquery-ui/i18n/datepicker-es.js +40 -0
  61. data/app/assets/javascripts/jquery-ui/i18n/datepicker-et.js +48 -0
  62. data/app/assets/javascripts/jquery-ui/i18n/datepicker-eu.js +39 -0
  63. data/app/assets/javascripts/jquery-ui/i18n/datepicker-fa.js +76 -0
  64. data/app/assets/javascripts/jquery-ui/i18n/datepicker-fi.js +40 -0
  65. data/app/assets/javascripts/jquery-ui/i18n/datepicker-fo.js +48 -0
  66. data/app/assets/javascripts/jquery-ui/i18n/datepicker-fr-CA.js +40 -0
  67. data/app/assets/javascripts/jquery-ui/i18n/datepicker-fr-CH.js +40 -0
  68. data/app/assets/javascripts/jquery-ui/i18n/datepicker-fr.js +42 -0
  69. data/app/assets/javascripts/jquery-ui/i18n/datepicker-gl.js +40 -0
  70. data/app/assets/javascripts/jquery-ui/i18n/datepicker-he.js +40 -0
  71. data/app/assets/javascripts/jquery-ui/i18n/datepicker-hi.js +40 -0
  72. data/app/assets/javascripts/jquery-ui/i18n/datepicker-hr.js +40 -0
  73. data/app/assets/javascripts/jquery-ui/i18n/datepicker-hu.js +39 -0
  74. data/app/assets/javascripts/jquery-ui/i18n/datepicker-hy.js +40 -0
  75. data/app/assets/javascripts/jquery-ui/i18n/datepicker-id.js +41 -0
  76. data/app/assets/javascripts/jquery-ui/i18n/datepicker-is.js +48 -0
  77. data/app/assets/javascripts/jquery-ui/i18n/datepicker-it-CH.js +40 -0
  78. data/app/assets/javascripts/jquery-ui/i18n/datepicker-it.js +40 -0
  79. data/app/assets/javascripts/jquery-ui/i18n/datepicker-ja.js +40 -0
  80. data/app/assets/javascripts/jquery-ui/i18n/datepicker-ka.js +51 -0
  81. data/app/assets/javascripts/jquery-ui/i18n/datepicker-kk.js +40 -0
  82. data/app/assets/javascripts/jquery-ui/i18n/datepicker-km.js +40 -0
  83. data/app/assets/javascripts/jquery-ui/i18n/datepicker-ko.js +40 -0
  84. data/app/assets/javascripts/jquery-ui/i18n/datepicker-ky.js +41 -0
  85. data/app/assets/javascripts/jquery-ui/i18n/datepicker-lb.js +48 -0
  86. data/app/assets/javascripts/jquery-ui/i18n/datepicker-lt.js +48 -0
  87. data/app/assets/javascripts/jquery-ui/i18n/datepicker-lv.js +48 -0
  88. data/app/assets/javascripts/jquery-ui/i18n/datepicker-mk.js +40 -0
  89. data/app/assets/javascripts/jquery-ui/i18n/datepicker-ml.js +40 -0
  90. data/app/assets/javascripts/jquery-ui/i18n/datepicker-ms.js +40 -0
  91. data/app/assets/javascripts/jquery-ui/i18n/datepicker-nb.js +52 -0
  92. data/app/assets/javascripts/jquery-ui/i18n/datepicker-nl-BE.js +40 -0
  93. data/app/assets/javascripts/jquery-ui/i18n/datepicker-nl.js +40 -0
  94. data/app/assets/javascripts/jquery-ui/i18n/datepicker-nn.js +52 -0
  95. data/app/assets/javascripts/jquery-ui/i18n/datepicker-no.js +53 -0
  96. data/app/assets/javascripts/jquery-ui/i18n/datepicker-pl.js +40 -0
  97. data/app/assets/javascripts/jquery-ui/i18n/datepicker-pt-BR.js +48 -0
  98. data/app/assets/javascripts/jquery-ui/i18n/datepicker-pt.js +47 -0
  99. data/app/assets/javascripts/jquery-ui/i18n/datepicker-rm.js +64 -0
  100. data/app/assets/javascripts/jquery-ui/i18n/datepicker-ro.js +43 -0
  101. data/app/assets/javascripts/jquery-ui/i18n/datepicker-ru.js +40 -0
  102. data/app/assets/javascripts/jquery-ui/i18n/datepicker-sk.js +40 -0
  103. data/app/assets/javascripts/jquery-ui/i18n/datepicker-sl.js +41 -0
  104. data/app/assets/javascripts/jquery-ui/i18n/datepicker-sq.js +40 -0
  105. data/app/assets/javascripts/jquery-ui/i18n/datepicker-sr-SR.js +40 -0
  106. data/app/assets/javascripts/jquery-ui/i18n/datepicker-sr.js +40 -0
  107. data/app/assets/javascripts/jquery-ui/i18n/datepicker-sv.js +40 -0
  108. data/app/assets/javascripts/jquery-ui/i18n/datepicker-ta.js +56 -0
  109. data/app/assets/javascripts/jquery-ui/i18n/datepicker-th.js +40 -0
  110. data/app/assets/javascripts/jquery-ui/i18n/datepicker-tj.js +40 -0
  111. data/app/assets/javascripts/jquery-ui/i18n/datepicker-tr.js +40 -0
  112. data/app/assets/javascripts/jquery-ui/i18n/datepicker-uk.js +41 -0
  113. data/app/assets/javascripts/jquery-ui/i18n/datepicker-vi.js +40 -0
  114. data/app/assets/javascripts/jquery-ui/i18n/datepicker-zh-CN.js +40 -0
  115. data/app/assets/javascripts/jquery-ui/i18n/datepicker-zh-HK.js +40 -0
  116. data/app/assets/javascripts/jquery-ui/i18n/datepicker-zh-TW.js +40 -0
  117. data/app/assets/javascripts/jquery-ui/ie.js +20 -0
  118. data/app/assets/javascripts/jquery-ui/jquery-patch.js +91 -0
  119. data/app/assets/javascripts/jquery-ui/jquery-var-for-color.js +24 -0
  120. data/app/assets/javascripts/jquery-ui/keycode.js +51 -0
  121. data/app/assets/javascripts/jquery-ui/labels.js +71 -0
  122. data/app/assets/javascripts/jquery-ui/plugin.js +49 -0
  123. data/app/assets/javascripts/jquery-ui/position.js +513 -0
  124. data/app/assets/javascripts/jquery-ui/safe-active-element.js +46 -0
  125. data/app/assets/javascripts/jquery-ui/safe-blur.js +27 -0
  126. data/app/assets/javascripts/jquery-ui/scroll-parent.js +50 -0
  127. data/app/assets/javascripts/jquery-ui/tabbable.js +41 -0
  128. data/app/assets/javascripts/jquery-ui/unique-id.js +54 -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 +294 -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 +57 -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.2
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.2",
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
+ } );