sn-jquery-ui-rails 6.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (177) 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 +168 -0
  7. data/License.txt +2 -0
  8. data/README.md +311 -0
  9. data/Rakefile +258 -0
  10. data/VERSIONS.md +39 -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 +41 -0
  20. data/app/assets/javascripts/jquery-ui/disable-selection.js +48 -0
  21. data/app/assets/javascripts/jquery-ui/effect.all.js +15 -0
  22. data/app/assets/javascripts/jquery-ui/effect.js +1637 -0
  23. data/app/assets/javascripts/jquery-ui/effects/effect-blind.js +73 -0
  24. data/app/assets/javascripts/jquery-ui/effects/effect-bounce.js +113 -0
  25. data/app/assets/javascripts/jquery-ui/effects/effect-clip.js +68 -0
  26. data/app/assets/javascripts/jquery-ui/effects/effect-drop.js +72 -0
  27. data/app/assets/javascripts/jquery-ui/effects/effect-explode.js +114 -0
  28. data/app/assets/javascripts/jquery-ui/effects/effect-fade.js +50 -0
  29. data/app/assets/javascripts/jquery-ui/effects/effect-fold.js +92 -0
  30. data/app/assets/javascripts/jquery-ui/effects/effect-highlight.js +60 -0
  31. data/app/assets/javascripts/jquery-ui/effects/effect-puff.js +46 -0
  32. data/app/assets/javascripts/jquery-ui/effects/effect-pulsate.js +67 -0
  33. data/app/assets/javascripts/jquery-ui/effects/effect-scale.js +60 -0
  34. data/app/assets/javascripts/jquery-ui/effects/effect-shake.js +77 -0
  35. data/app/assets/javascripts/jquery-ui/effects/effect-size.js +194 -0
  36. data/app/assets/javascripts/jquery-ui/effects/effect-slide.js +79 -0
  37. data/app/assets/javascripts/jquery-ui/effects/effect-transfer.js +43 -0
  38. data/app/assets/javascripts/jquery-ui/escape-selector.js +23 -0
  39. data/app/assets/javascripts/jquery-ui/focusable.js +86 -0
  40. data/app/assets/javascripts/jquery-ui/form-reset-mixin.js +80 -0
  41. data/app/assets/javascripts/jquery-ui/form.js +22 -0
  42. data/app/assets/javascripts/jquery-ui/i18n/datepicker-af.js +37 -0
  43. data/app/assets/javascripts/jquery-ui/i18n/datepicker-ar-DZ.js +39 -0
  44. data/app/assets/javascripts/jquery-ui/i18n/datepicker-ar.js +39 -0
  45. data/app/assets/javascripts/jquery-ui/i18n/datepicker-az.js +37 -0
  46. data/app/assets/javascripts/jquery-ui/i18n/datepicker-be.js +37 -0
  47. data/app/assets/javascripts/jquery-ui/i18n/datepicker-bg.js +38 -0
  48. data/app/assets/javascripts/jquery-ui/i18n/datepicker-bs.js +37 -0
  49. data/app/assets/javascripts/jquery-ui/i18n/datepicker-ca.js +37 -0
  50. data/app/assets/javascripts/jquery-ui/i18n/datepicker-cs.js +37 -0
  51. data/app/assets/javascripts/jquery-ui/i18n/datepicker-cy-GB.js +45 -0
  52. data/app/assets/javascripts/jquery-ui/i18n/datepicker-da.js +37 -0
  53. data/app/assets/javascripts/jquery-ui/i18n/datepicker-de.js +37 -0
  54. data/app/assets/javascripts/jquery-ui/i18n/datepicker-el.js +37 -0
  55. data/app/assets/javascripts/jquery-ui/i18n/datepicker-en-AU.js +37 -0
  56. data/app/assets/javascripts/jquery-ui/i18n/datepicker-en-GB.js +37 -0
  57. data/app/assets/javascripts/jquery-ui/i18n/datepicker-en-NZ.js +37 -0
  58. data/app/assets/javascripts/jquery-ui/i18n/datepicker-eo.js +37 -0
  59. data/app/assets/javascripts/jquery-ui/i18n/datepicker-es.js +37 -0
  60. data/app/assets/javascripts/jquery-ui/i18n/datepicker-et.js +45 -0
  61. data/app/assets/javascripts/jquery-ui/i18n/datepicker-eu.js +36 -0
  62. data/app/assets/javascripts/jquery-ui/i18n/datepicker-fa.js +73 -0
  63. data/app/assets/javascripts/jquery-ui/i18n/datepicker-fi.js +37 -0
  64. data/app/assets/javascripts/jquery-ui/i18n/datepicker-fo.js +45 -0
  65. data/app/assets/javascripts/jquery-ui/i18n/datepicker-fr-CA.js +37 -0
  66. data/app/assets/javascripts/jquery-ui/i18n/datepicker-fr-CH.js +37 -0
  67. data/app/assets/javascripts/jquery-ui/i18n/datepicker-fr.js +39 -0
  68. data/app/assets/javascripts/jquery-ui/i18n/datepicker-gl.js +37 -0
  69. data/app/assets/javascripts/jquery-ui/i18n/datepicker-he.js +37 -0
  70. data/app/assets/javascripts/jquery-ui/i18n/datepicker-hi.js +37 -0
  71. data/app/assets/javascripts/jquery-ui/i18n/datepicker-hr.js +37 -0
  72. data/app/assets/javascripts/jquery-ui/i18n/datepicker-hu.js +36 -0
  73. data/app/assets/javascripts/jquery-ui/i18n/datepicker-hy.js +37 -0
  74. data/app/assets/javascripts/jquery-ui/i18n/datepicker-id.js +37 -0
  75. data/app/assets/javascripts/jquery-ui/i18n/datepicker-is.js +45 -0
  76. data/app/assets/javascripts/jquery-ui/i18n/datepicker-it-CH.js +37 -0
  77. data/app/assets/javascripts/jquery-ui/i18n/datepicker-it.js +37 -0
  78. data/app/assets/javascripts/jquery-ui/i18n/datepicker-ja.js +37 -0
  79. data/app/assets/javascripts/jquery-ui/i18n/datepicker-ka.js +48 -0
  80. data/app/assets/javascripts/jquery-ui/i18n/datepicker-kk.js +37 -0
  81. data/app/assets/javascripts/jquery-ui/i18n/datepicker-km.js +37 -0
  82. data/app/assets/javascripts/jquery-ui/i18n/datepicker-ko.js +37 -0
  83. data/app/assets/javascripts/jquery-ui/i18n/datepicker-ky.js +38 -0
  84. data/app/assets/javascripts/jquery-ui/i18n/datepicker-lb.js +45 -0
  85. data/app/assets/javascripts/jquery-ui/i18n/datepicker-lt.js +45 -0
  86. data/app/assets/javascripts/jquery-ui/i18n/datepicker-lv.js +45 -0
  87. data/app/assets/javascripts/jquery-ui/i18n/datepicker-mk.js +37 -0
  88. data/app/assets/javascripts/jquery-ui/i18n/datepicker-ml.js +37 -0
  89. data/app/assets/javascripts/jquery-ui/i18n/datepicker-ms.js +37 -0
  90. data/app/assets/javascripts/jquery-ui/i18n/datepicker-nb.js +49 -0
  91. data/app/assets/javascripts/jquery-ui/i18n/datepicker-nl-BE.js +37 -0
  92. data/app/assets/javascripts/jquery-ui/i18n/datepicker-nl.js +37 -0
  93. data/app/assets/javascripts/jquery-ui/i18n/datepicker-nn.js +49 -0
  94. data/app/assets/javascripts/jquery-ui/i18n/datepicker-no.js +50 -0
  95. data/app/assets/javascripts/jquery-ui/i18n/datepicker-pl.js +37 -0
  96. data/app/assets/javascripts/jquery-ui/i18n/datepicker-pt-BR.js +45 -0
  97. data/app/assets/javascripts/jquery-ui/i18n/datepicker-pt.js +44 -0
  98. data/app/assets/javascripts/jquery-ui/i18n/datepicker-rm.js +61 -0
  99. data/app/assets/javascripts/jquery-ui/i18n/datepicker-ro.js +40 -0
  100. data/app/assets/javascripts/jquery-ui/i18n/datepicker-ru.js +37 -0
  101. data/app/assets/javascripts/jquery-ui/i18n/datepicker-sk.js +37 -0
  102. data/app/assets/javascripts/jquery-ui/i18n/datepicker-sl.js +38 -0
  103. data/app/assets/javascripts/jquery-ui/i18n/datepicker-sq.js +37 -0
  104. data/app/assets/javascripts/jquery-ui/i18n/datepicker-sr-SR.js +37 -0
  105. data/app/assets/javascripts/jquery-ui/i18n/datepicker-sr.js +37 -0
  106. data/app/assets/javascripts/jquery-ui/i18n/datepicker-sv.js +37 -0
  107. data/app/assets/javascripts/jquery-ui/i18n/datepicker-ta.js +53 -0
  108. data/app/assets/javascripts/jquery-ui/i18n/datepicker-th.js +37 -0
  109. data/app/assets/javascripts/jquery-ui/i18n/datepicker-tj.js +37 -0
  110. data/app/assets/javascripts/jquery-ui/i18n/datepicker-tr.js +37 -0
  111. data/app/assets/javascripts/jquery-ui/i18n/datepicker-uk.js +38 -0
  112. data/app/assets/javascripts/jquery-ui/i18n/datepicker-vi.js +37 -0
  113. data/app/assets/javascripts/jquery-ui/i18n/datepicker-zh-CN.js +37 -0
  114. data/app/assets/javascripts/jquery-ui/i18n/datepicker-zh-HK.js +37 -0
  115. data/app/assets/javascripts/jquery-ui/i18n/datepicker-zh-TW.js +37 -0
  116. data/app/assets/javascripts/jquery-ui/ie.js +17 -0
  117. data/app/assets/javascripts/jquery-ui/jquery-1-7.js +91 -0
  118. data/app/assets/javascripts/jquery-ui/keycode.js +47 -0
  119. data/app/assets/javascripts/jquery-ui/labels.js +65 -0
  120. data/app/assets/javascripts/jquery-ui/plugin.js +46 -0
  121. data/app/assets/javascripts/jquery-ui/position.js +500 -0
  122. data/app/assets/javascripts/jquery-ui/safe-active-element.js +42 -0
  123. data/app/assets/javascripts/jquery-ui/safe-blur.js +23 -0
  124. data/app/assets/javascripts/jquery-ui/scroll-parent.js +47 -0
  125. data/app/assets/javascripts/jquery-ui/tabbable.js +38 -0
  126. data/app/assets/javascripts/jquery-ui/unique-id.js +51 -0
  127. data/app/assets/javascripts/jquery-ui/version.js +17 -0
  128. data/app/assets/javascripts/jquery-ui/widget.js +735 -0
  129. data/app/assets/javascripts/jquery-ui/widgets/accordion.js +618 -0
  130. data/app/assets/javascripts/jquery-ui/widgets/autocomplete.js +689 -0
  131. data/app/assets/javascripts/jquery-ui/widgets/button.js +391 -0
  132. data/app/assets/javascripts/jquery-ui/widgets/checkboxradio.js +291 -0
  133. data/app/assets/javascripts/jquery-ui/widgets/controlgroup.js +300 -0
  134. data/app/assets/javascripts/jquery-ui/widgets/datepicker.js +2123 -0
  135. data/app/assets/javascripts/jquery-ui/widgets/dialog.js +954 -0
  136. data/app/assets/javascripts/jquery-ui/widgets/draggable.js +1259 -0
  137. data/app/assets/javascripts/jquery-ui/widgets/droppable.js +502 -0
  138. data/app/assets/javascripts/jquery-ui/widgets/menu.js +680 -0
  139. data/app/assets/javascripts/jquery-ui/widgets/mouse.js +230 -0
  140. data/app/assets/javascripts/jquery-ui/widgets/progressbar.js +181 -0
  141. data/app/assets/javascripts/jquery-ui/widgets/resizable.js +1207 -0
  142. data/app/assets/javascripts/jquery-ui/widgets/selectable.js +314 -0
  143. data/app/assets/javascripts/jquery-ui/widgets/selectmenu.js +697 -0
  144. data/app/assets/javascripts/jquery-ui/widgets/slider.js +757 -0
  145. data/app/assets/javascripts/jquery-ui/widgets/sortable.js +1561 -0
  146. data/app/assets/javascripts/jquery-ui/widgets/spinner.js +581 -0
  147. data/app/assets/javascripts/jquery-ui/widgets/tabs.js +931 -0
  148. data/app/assets/javascripts/jquery-ui/widgets/tooltip.js +526 -0
  149. data/app/assets/javascripts/jquery-ui.js +56 -0
  150. data/app/assets/stylesheets/jquery-ui/accordion.css +26 -0
  151. data/app/assets/stylesheets/jquery-ui/all.css +14 -0
  152. data/app/assets/stylesheets/jquery-ui/autocomplete.css +19 -0
  153. data/app/assets/stylesheets/jquery-ui/base.css +32 -0
  154. data/app/assets/stylesheets/jquery-ui/button.css +85 -0
  155. data/app/assets/stylesheets/jquery-ui/checkboxradio.css +37 -0
  156. data/app/assets/stylesheets/jquery-ui/controlgroup.css +68 -0
  157. data/app/assets/stylesheets/jquery-ui/core.css +100 -0
  158. data/app/assets/stylesheets/jquery-ui/datepicker.css +188 -0
  159. data/app/assets/stylesheets/jquery-ui/dialog.css +104 -0
  160. data/app/assets/stylesheets/jquery-ui/draggable.css +15 -0
  161. data/app/assets/stylesheets/jquery-ui/menu.css +67 -0
  162. data/app/assets/stylesheets/jquery-ui/progressbar.css +31 -0
  163. data/app/assets/stylesheets/jquery-ui/resizable.css +81 -0
  164. data/app/assets/stylesheets/jquery-ui/selectable.css +20 -0
  165. data/app/assets/stylesheets/jquery-ui/selectmenu.css +53 -0
  166. data/app/assets/stylesheets/jquery-ui/slider.css +78 -0
  167. data/app/assets/stylesheets/jquery-ui/sortable.css +15 -0
  168. data/app/assets/stylesheets/jquery-ui/spinner.css +55 -0
  169. data/app/assets/stylesheets/jquery-ui/tabs.css +54 -0
  170. data/app/assets/stylesheets/jquery-ui/theme.css.erb +453 -0
  171. data/app/assets/stylesheets/jquery-ui/tooltip.css +22 -0
  172. data/app/assets/stylesheets/jquery-ui.css +1 -0
  173. data/lib/jquery/ui/rails/engine.rb +8 -0
  174. data/lib/jquery/ui/rails/version.rb +8 -0
  175. data/lib/jquery/ui/rails.rb +2 -0
  176. data/lib/jquery-ui-rails.rb +1 -0
  177. metadata +248 -0
@@ -0,0 +1,391 @@
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
+ } ) );
@@ -0,0 +1,291 @@
1
+ //= require jquery-ui/escape-selector
2
+ //= require jquery-ui/form-reset-mixin
3
+ //= require jquery-ui/labels
4
+ //= require jquery-ui/widget
5
+
6
+ /*!
7
+ * jQuery UI Checkboxradio 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: Checkboxradio
16
+ //>>group: Widgets
17
+ //>>description: Enhances a form with multiple themeable checkboxes or radio buttons.
18
+ //>>docs: http://api.jqueryui.com/checkboxradio/
19
+ //>>demos: http://jqueryui.com/checkboxradio/
20
+ //>>css.structure: ../../themes/base/core.css
21
+ //>>css.structure: ../../themes/base/button.css
22
+ //>>css.structure: ../../themes/base/checkboxradio.css
23
+ //>>css.theme: ../../themes/base/theme.css
24
+
25
+ ( function( factory ) {
26
+ if ( typeof define === "function" && define.amd ) {
27
+
28
+ // AMD. Register as an anonymous module.
29
+ define( [
30
+ "jquery",
31
+ "../escape-selector",
32
+ "../form-reset-mixin",
33
+ "../labels",
34
+ "../widget"
35
+ ], factory );
36
+ } else {
37
+
38
+ // Browser globals
39
+ factory( jQuery );
40
+ }
41
+ }( function( $ ) {
42
+
43
+ $.widget( "ui.checkboxradio", [ $.ui.formResetMixin, {
44
+ version: "1.12.1",
45
+ options: {
46
+ disabled: null,
47
+ label: null,
48
+ icon: true,
49
+ classes: {
50
+ "ui-checkboxradio-label": "ui-corner-all",
51
+ "ui-checkboxradio-icon": "ui-corner-all"
52
+ }
53
+ },
54
+
55
+ _getCreateOptions: function() {
56
+ var disabled, labels;
57
+ var that = this;
58
+ var options = this._super() || {};
59
+
60
+ // We read the type here, because it makes more sense to throw a element type error first,
61
+ // rather then the error for lack of a label. Often if its the wrong type, it
62
+ // won't have a label (e.g. calling on a div, btn, etc)
63
+ this._readType();
64
+
65
+ labels = this.element.labels();
66
+
67
+ // If there are multiple labels, use the last one
68
+ this.label = $( labels[ labels.length - 1 ] );
69
+ if ( !this.label.length ) {
70
+ $.error( "No label found for checkboxradio widget" );
71
+ }
72
+
73
+ this.originalLabel = "";
74
+
75
+ // We need to get the label text but this may also need to make sure it does not contain the
76
+ // input itself.
77
+ this.label.contents().not( this.element[ 0 ] ).each( function() {
78
+
79
+ // The label contents could be text, html, or a mix. We concat each element to get a
80
+ // string representation of the label, without the input as part of it.
81
+ that.originalLabel += this.nodeType === 3 ? $( this ).text() : this.outerHTML;
82
+ } );
83
+
84
+ // Set the label option if we found label text
85
+ if ( this.originalLabel ) {
86
+ options.label = this.originalLabel;
87
+ }
88
+
89
+ disabled = this.element[ 0 ].disabled;
90
+ if ( disabled != null ) {
91
+ options.disabled = disabled;
92
+ }
93
+ return options;
94
+ },
95
+
96
+ _create: function() {
97
+ var checked = this.element[ 0 ].checked;
98
+
99
+ this._bindFormResetHandler();
100
+
101
+ if ( this.options.disabled == null ) {
102
+ this.options.disabled = this.element[ 0 ].disabled;
103
+ }
104
+
105
+ this._setOption( "disabled", this.options.disabled );
106
+ this._addClass( "ui-checkboxradio", "ui-helper-hidden-accessible" );
107
+ this._addClass( this.label, "ui-checkboxradio-label", "ui-button ui-widget" );
108
+
109
+ if ( this.type === "radio" ) {
110
+ this._addClass( this.label, "ui-checkboxradio-radio-label" );
111
+ }
112
+
113
+ if ( this.options.label && this.options.label !== this.originalLabel ) {
114
+ this._updateLabel();
115
+ } else if ( this.originalLabel ) {
116
+ this.options.label = this.originalLabel;
117
+ }
118
+
119
+ this._enhance();
120
+
121
+ if ( checked ) {
122
+ this._addClass( this.label, "ui-checkboxradio-checked", "ui-state-active" );
123
+ if ( this.icon ) {
124
+ this._addClass( this.icon, null, "ui-state-hover" );
125
+ }
126
+ }
127
+
128
+ this._on( {
129
+ change: "_toggleClasses",
130
+ focus: function() {
131
+ this._addClass( this.label, null, "ui-state-focus ui-visual-focus" );
132
+ },
133
+ blur: function() {
134
+ this._removeClass( this.label, null, "ui-state-focus ui-visual-focus" );
135
+ }
136
+ } );
137
+ },
138
+
139
+ _readType: function() {
140
+ var nodeName = this.element[ 0 ].nodeName.toLowerCase();
141
+ this.type = this.element[ 0 ].type;
142
+ if ( nodeName !== "input" || !/radio|checkbox/.test( this.type ) ) {
143
+ $.error( "Can't create checkboxradio on element.nodeName=" + nodeName +
144
+ " and element.type=" + this.type );
145
+ }
146
+ },
147
+
148
+ // Support jQuery Mobile enhanced option
149
+ _enhance: function() {
150
+ this._updateIcon( this.element[ 0 ].checked );
151
+ },
152
+
153
+ widget: function() {
154
+ return this.label;
155
+ },
156
+
157
+ _getRadioGroup: function() {
158
+ var group;
159
+ var name = this.element[ 0 ].name;
160
+ var nameSelector = "input[name='" + $.ui.escapeSelector( name ) + "']";
161
+
162
+ if ( !name ) {
163
+ return $( [] );
164
+ }
165
+
166
+ if ( this.form.length ) {
167
+ group = $( this.form[ 0 ].elements ).filter( nameSelector );
168
+ } else {
169
+
170
+ // Not inside a form, check all inputs that also are not inside a form
171
+ group = $( nameSelector ).filter( function() {
172
+ return $( this ).form().length === 0;
173
+ } );
174
+ }
175
+
176
+ return group.not( this.element );
177
+ },
178
+
179
+ _toggleClasses: function() {
180
+ var checked = this.element[ 0 ].checked;
181
+ this._toggleClass( this.label, "ui-checkboxradio-checked", "ui-state-active", checked );
182
+
183
+ if ( this.options.icon && this.type === "checkbox" ) {
184
+ this._toggleClass( this.icon, null, "ui-icon-check ui-state-checked", checked )
185
+ ._toggleClass( this.icon, null, "ui-icon-blank", !checked );
186
+ }
187
+
188
+ if ( this.type === "radio" ) {
189
+ this._getRadioGroup()
190
+ .each( function() {
191
+ var instance = $( this ).checkboxradio( "instance" );
192
+
193
+ if ( instance ) {
194
+ instance._removeClass( instance.label,
195
+ "ui-checkboxradio-checked", "ui-state-active" );
196
+ }
197
+ } );
198
+ }
199
+ },
200
+
201
+ _destroy: function() {
202
+ this._unbindFormResetHandler();
203
+
204
+ if ( this.icon ) {
205
+ this.icon.remove();
206
+ this.iconSpace.remove();
207
+ }
208
+ },
209
+
210
+ _setOption: function( key, value ) {
211
+
212
+ // We don't allow the value to be set to nothing
213
+ if ( key === "label" && !value ) {
214
+ return;
215
+ }
216
+
217
+ this._super( key, value );
218
+
219
+ if ( key === "disabled" ) {
220
+ this._toggleClass( this.label, null, "ui-state-disabled", value );
221
+ this.element[ 0 ].disabled = value;
222
+
223
+ // Don't refresh when setting disabled
224
+ return;
225
+ }
226
+ this.refresh();
227
+ },
228
+
229
+ _updateIcon: function( checked ) {
230
+ var toAdd = "ui-icon ui-icon-background ";
231
+
232
+ if ( this.options.icon ) {
233
+ if ( !this.icon ) {
234
+ this.icon = $( "<span>" );
235
+ this.iconSpace = $( "<span> </span>" );
236
+ this._addClass( this.iconSpace, "ui-checkboxradio-icon-space" );
237
+ }
238
+
239
+ if ( this.type === "checkbox" ) {
240
+ toAdd += checked ? "ui-icon-check ui-state-checked" : "ui-icon-blank";
241
+ this._removeClass( this.icon, null, checked ? "ui-icon-blank" : "ui-icon-check" );
242
+ } else {
243
+ toAdd += "ui-icon-blank";
244
+ }
245
+ this._addClass( this.icon, "ui-checkboxradio-icon", toAdd );
246
+ if ( !checked ) {
247
+ this._removeClass( this.icon, null, "ui-icon-check ui-state-checked" );
248
+ }
249
+ this.icon.prependTo( this.label ).after( this.iconSpace );
250
+ } else if ( this.icon !== undefined ) {
251
+ this.icon.remove();
252
+ this.iconSpace.remove();
253
+ delete this.icon;
254
+ }
255
+ },
256
+
257
+ _updateLabel: function() {
258
+
259
+ // Remove the contents of the label ( minus the icon, icon space, and input )
260
+ var contents = this.label.contents().not( this.element[ 0 ] );
261
+ if ( this.icon ) {
262
+ contents = contents.not( this.icon[ 0 ] );
263
+ }
264
+ if ( this.iconSpace ) {
265
+ contents = contents.not( this.iconSpace[ 0 ] );
266
+ }
267
+ contents.remove();
268
+
269
+ this.label.append( this.options.label );
270
+ },
271
+
272
+ refresh: function() {
273
+ var checked = this.element[ 0 ].checked,
274
+ isDisabled = this.element[ 0 ].disabled;
275
+
276
+ this._updateIcon( checked );
277
+ this._toggleClass( this.label, "ui-checkboxradio-checked", "ui-state-active", checked );
278
+ if ( this.options.label !== null ) {
279
+ this._updateLabel();
280
+ }
281
+
282
+ if ( isDisabled !== this.options.disabled ) {
283
+ this._setOptions( { "disabled": isDisabled } );
284
+ }
285
+ }
286
+
287
+ } ] );
288
+
289
+ return $.ui.checkboxradio;
290
+
291
+ } ) );