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,513 @@
1
+ //= require jquery-ui/version
2
+
3
+ /*!
4
+ * jQuery UI Position 1.13.2
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
+ * http://api.jqueryui.com/position/
12
+ */
13
+
14
+ //>>label: Position
15
+ //>>group: Core
16
+ //>>description: Positions elements relative to other elements.
17
+ //>>docs: http://api.jqueryui.com/position/
18
+ //>>demos: http://jqueryui.com/position/
19
+
20
+ ( function( factory ) {
21
+ "use strict";
22
+
23
+ if ( typeof define === "function" && define.amd ) {
24
+
25
+ // AMD. Register as an anonymous module.
26
+ define( [ "jquery", "./version" ], factory );
27
+ } else {
28
+
29
+ // Browser globals
30
+ factory( jQuery );
31
+ }
32
+ } )( function( $ ) {
33
+ "use strict";
34
+
35
+ ( function() {
36
+ var cachedScrollbarWidth,
37
+ max = Math.max,
38
+ abs = Math.abs,
39
+ rhorizontal = /left|center|right/,
40
+ rvertical = /top|center|bottom/,
41
+ roffset = /[\+\-]\d+(\.[\d]+)?%?/,
42
+ rposition = /^\w+/,
43
+ rpercent = /%$/,
44
+ _position = $.fn.position;
45
+
46
+ function getOffsets( offsets, width, height ) {
47
+ return [
48
+ parseFloat( offsets[ 0 ] ) * ( rpercent.test( offsets[ 0 ] ) ? width / 100 : 1 ),
49
+ parseFloat( offsets[ 1 ] ) * ( rpercent.test( offsets[ 1 ] ) ? height / 100 : 1 )
50
+ ];
51
+ }
52
+
53
+ function parseCss( element, property ) {
54
+ return parseInt( $.css( element, property ), 10 ) || 0;
55
+ }
56
+
57
+ function isWindow( obj ) {
58
+ return obj != null && obj === obj.window;
59
+ }
60
+
61
+ function getDimensions( elem ) {
62
+ var raw = elem[ 0 ];
63
+ if ( raw.nodeType === 9 ) {
64
+ return {
65
+ width: elem.width(),
66
+ height: elem.height(),
67
+ offset: { top: 0, left: 0 }
68
+ };
69
+ }
70
+ if ( isWindow( raw ) ) {
71
+ return {
72
+ width: elem.width(),
73
+ height: elem.height(),
74
+ offset: { top: elem.scrollTop(), left: elem.scrollLeft() }
75
+ };
76
+ }
77
+ if ( raw.preventDefault ) {
78
+ return {
79
+ width: 0,
80
+ height: 0,
81
+ offset: { top: raw.pageY, left: raw.pageX }
82
+ };
83
+ }
84
+ return {
85
+ width: elem.outerWidth(),
86
+ height: elem.outerHeight(),
87
+ offset: elem.offset()
88
+ };
89
+ }
90
+
91
+ $.position = {
92
+ scrollbarWidth: function() {
93
+ if ( cachedScrollbarWidth !== undefined ) {
94
+ return cachedScrollbarWidth;
95
+ }
96
+ var w1, w2,
97
+ div = $( "<div style=" +
98
+ "'display:block;position:absolute;width:200px;height:200px;overflow:hidden;'>" +
99
+ "<div style='height:300px;width:auto;'></div></div>" ),
100
+ innerDiv = div.children()[ 0 ];
101
+
102
+ $( "body" ).append( div );
103
+ w1 = innerDiv.offsetWidth;
104
+ div.css( "overflow", "scroll" );
105
+
106
+ w2 = innerDiv.offsetWidth;
107
+
108
+ if ( w1 === w2 ) {
109
+ w2 = div[ 0 ].clientWidth;
110
+ }
111
+
112
+ div.remove();
113
+
114
+ return ( cachedScrollbarWidth = w1 - w2 );
115
+ },
116
+ getScrollInfo: function( within ) {
117
+ var overflowX = within.isWindow || within.isDocument ? "" :
118
+ within.element.css( "overflow-x" ),
119
+ overflowY = within.isWindow || within.isDocument ? "" :
120
+ within.element.css( "overflow-y" ),
121
+ hasOverflowX = overflowX === "scroll" ||
122
+ ( overflowX === "auto" && within.width < within.element[ 0 ].scrollWidth ),
123
+ hasOverflowY = overflowY === "scroll" ||
124
+ ( overflowY === "auto" && within.height < within.element[ 0 ].scrollHeight );
125
+ return {
126
+ width: hasOverflowY ? $.position.scrollbarWidth() : 0,
127
+ height: hasOverflowX ? $.position.scrollbarWidth() : 0
128
+ };
129
+ },
130
+ getWithinInfo: function( element ) {
131
+ var withinElement = $( element || window ),
132
+ isElemWindow = isWindow( withinElement[ 0 ] ),
133
+ isDocument = !!withinElement[ 0 ] && withinElement[ 0 ].nodeType === 9,
134
+ hasOffset = !isElemWindow && !isDocument;
135
+ return {
136
+ element: withinElement,
137
+ isWindow: isElemWindow,
138
+ isDocument: isDocument,
139
+ offset: hasOffset ? $( element ).offset() : { left: 0, top: 0 },
140
+ scrollLeft: withinElement.scrollLeft(),
141
+ scrollTop: withinElement.scrollTop(),
142
+ width: withinElement.outerWidth(),
143
+ height: withinElement.outerHeight()
144
+ };
145
+ }
146
+ };
147
+
148
+ $.fn.position = function( options ) {
149
+ if ( !options || !options.of ) {
150
+ return _position.apply( this, arguments );
151
+ }
152
+
153
+ // Make a copy, we don't want to modify arguments
154
+ options = $.extend( {}, options );
155
+
156
+ var atOffset, targetWidth, targetHeight, targetOffset, basePosition, dimensions,
157
+
158
+ // Make sure string options are treated as CSS selectors
159
+ target = typeof options.of === "string" ?
160
+ $( document ).find( options.of ) :
161
+ $( options.of ),
162
+
163
+ within = $.position.getWithinInfo( options.within ),
164
+ scrollInfo = $.position.getScrollInfo( within ),
165
+ collision = ( options.collision || "flip" ).split( " " ),
166
+ offsets = {};
167
+
168
+ dimensions = getDimensions( target );
169
+ if ( target[ 0 ].preventDefault ) {
170
+
171
+ // Force left top to allow flipping
172
+ options.at = "left top";
173
+ }
174
+ targetWidth = dimensions.width;
175
+ targetHeight = dimensions.height;
176
+ targetOffset = dimensions.offset;
177
+
178
+ // Clone to reuse original targetOffset later
179
+ basePosition = $.extend( {}, targetOffset );
180
+
181
+ // Force my and at to have valid horizontal and vertical positions
182
+ // if a value is missing or invalid, it will be converted to center
183
+ $.each( [ "my", "at" ], function() {
184
+ var pos = ( options[ this ] || "" ).split( " " ),
185
+ horizontalOffset,
186
+ verticalOffset;
187
+
188
+ if ( pos.length === 1 ) {
189
+ pos = rhorizontal.test( pos[ 0 ] ) ?
190
+ pos.concat( [ "center" ] ) :
191
+ rvertical.test( pos[ 0 ] ) ?
192
+ [ "center" ].concat( pos ) :
193
+ [ "center", "center" ];
194
+ }
195
+ pos[ 0 ] = rhorizontal.test( pos[ 0 ] ) ? pos[ 0 ] : "center";
196
+ pos[ 1 ] = rvertical.test( pos[ 1 ] ) ? pos[ 1 ] : "center";
197
+
198
+ // Calculate offsets
199
+ horizontalOffset = roffset.exec( pos[ 0 ] );
200
+ verticalOffset = roffset.exec( pos[ 1 ] );
201
+ offsets[ this ] = [
202
+ horizontalOffset ? horizontalOffset[ 0 ] : 0,
203
+ verticalOffset ? verticalOffset[ 0 ] : 0
204
+ ];
205
+
206
+ // Reduce to just the positions without the offsets
207
+ options[ this ] = [
208
+ rposition.exec( pos[ 0 ] )[ 0 ],
209
+ rposition.exec( pos[ 1 ] )[ 0 ]
210
+ ];
211
+ } );
212
+
213
+ // Normalize collision option
214
+ if ( collision.length === 1 ) {
215
+ collision[ 1 ] = collision[ 0 ];
216
+ }
217
+
218
+ if ( options.at[ 0 ] === "right" ) {
219
+ basePosition.left += targetWidth;
220
+ } else if ( options.at[ 0 ] === "center" ) {
221
+ basePosition.left += targetWidth / 2;
222
+ }
223
+
224
+ if ( options.at[ 1 ] === "bottom" ) {
225
+ basePosition.top += targetHeight;
226
+ } else if ( options.at[ 1 ] === "center" ) {
227
+ basePosition.top += targetHeight / 2;
228
+ }
229
+
230
+ atOffset = getOffsets( offsets.at, targetWidth, targetHeight );
231
+ basePosition.left += atOffset[ 0 ];
232
+ basePosition.top += atOffset[ 1 ];
233
+
234
+ return this.each( function() {
235
+ var collisionPosition, using,
236
+ elem = $( this ),
237
+ elemWidth = elem.outerWidth(),
238
+ elemHeight = elem.outerHeight(),
239
+ marginLeft = parseCss( this, "marginLeft" ),
240
+ marginTop = parseCss( this, "marginTop" ),
241
+ collisionWidth = elemWidth + marginLeft + parseCss( this, "marginRight" ) +
242
+ scrollInfo.width,
243
+ collisionHeight = elemHeight + marginTop + parseCss( this, "marginBottom" ) +
244
+ scrollInfo.height,
245
+ position = $.extend( {}, basePosition ),
246
+ myOffset = getOffsets( offsets.my, elem.outerWidth(), elem.outerHeight() );
247
+
248
+ if ( options.my[ 0 ] === "right" ) {
249
+ position.left -= elemWidth;
250
+ } else if ( options.my[ 0 ] === "center" ) {
251
+ position.left -= elemWidth / 2;
252
+ }
253
+
254
+ if ( options.my[ 1 ] === "bottom" ) {
255
+ position.top -= elemHeight;
256
+ } else if ( options.my[ 1 ] === "center" ) {
257
+ position.top -= elemHeight / 2;
258
+ }
259
+
260
+ position.left += myOffset[ 0 ];
261
+ position.top += myOffset[ 1 ];
262
+
263
+ collisionPosition = {
264
+ marginLeft: marginLeft,
265
+ marginTop: marginTop
266
+ };
267
+
268
+ $.each( [ "left", "top" ], function( i, dir ) {
269
+ if ( $.ui.position[ collision[ i ] ] ) {
270
+ $.ui.position[ collision[ i ] ][ dir ]( position, {
271
+ targetWidth: targetWidth,
272
+ targetHeight: targetHeight,
273
+ elemWidth: elemWidth,
274
+ elemHeight: elemHeight,
275
+ collisionPosition: collisionPosition,
276
+ collisionWidth: collisionWidth,
277
+ collisionHeight: collisionHeight,
278
+ offset: [ atOffset[ 0 ] + myOffset[ 0 ], atOffset [ 1 ] + myOffset[ 1 ] ],
279
+ my: options.my,
280
+ at: options.at,
281
+ within: within,
282
+ elem: elem
283
+ } );
284
+ }
285
+ } );
286
+
287
+ if ( options.using ) {
288
+
289
+ // Adds feedback as second argument to using callback, if present
290
+ using = function( props ) {
291
+ var left = targetOffset.left - position.left,
292
+ right = left + targetWidth - elemWidth,
293
+ top = targetOffset.top - position.top,
294
+ bottom = top + targetHeight - elemHeight,
295
+ feedback = {
296
+ target: {
297
+ element: target,
298
+ left: targetOffset.left,
299
+ top: targetOffset.top,
300
+ width: targetWidth,
301
+ height: targetHeight
302
+ },
303
+ element: {
304
+ element: elem,
305
+ left: position.left,
306
+ top: position.top,
307
+ width: elemWidth,
308
+ height: elemHeight
309
+ },
310
+ horizontal: right < 0 ? "left" : left > 0 ? "right" : "center",
311
+ vertical: bottom < 0 ? "top" : top > 0 ? "bottom" : "middle"
312
+ };
313
+ if ( targetWidth < elemWidth && abs( left + right ) < targetWidth ) {
314
+ feedback.horizontal = "center";
315
+ }
316
+ if ( targetHeight < elemHeight && abs( top + bottom ) < targetHeight ) {
317
+ feedback.vertical = "middle";
318
+ }
319
+ if ( max( abs( left ), abs( right ) ) > max( abs( top ), abs( bottom ) ) ) {
320
+ feedback.important = "horizontal";
321
+ } else {
322
+ feedback.important = "vertical";
323
+ }
324
+ options.using.call( this, props, feedback );
325
+ };
326
+ }
327
+
328
+ elem.offset( $.extend( position, { using: using } ) );
329
+ } );
330
+ };
331
+
332
+ $.ui.position = {
333
+ fit: {
334
+ left: function( position, data ) {
335
+ var within = data.within,
336
+ withinOffset = within.isWindow ? within.scrollLeft : within.offset.left,
337
+ outerWidth = within.width,
338
+ collisionPosLeft = position.left - data.collisionPosition.marginLeft,
339
+ overLeft = withinOffset - collisionPosLeft,
340
+ overRight = collisionPosLeft + data.collisionWidth - outerWidth - withinOffset,
341
+ newOverRight;
342
+
343
+ // Element is wider than within
344
+ if ( data.collisionWidth > outerWidth ) {
345
+
346
+ // Element is initially over the left side of within
347
+ if ( overLeft > 0 && overRight <= 0 ) {
348
+ newOverRight = position.left + overLeft + data.collisionWidth - outerWidth -
349
+ withinOffset;
350
+ position.left += overLeft - newOverRight;
351
+
352
+ // Element is initially over right side of within
353
+ } else if ( overRight > 0 && overLeft <= 0 ) {
354
+ position.left = withinOffset;
355
+
356
+ // Element is initially over both left and right sides of within
357
+ } else {
358
+ if ( overLeft > overRight ) {
359
+ position.left = withinOffset + outerWidth - data.collisionWidth;
360
+ } else {
361
+ position.left = withinOffset;
362
+ }
363
+ }
364
+
365
+ // Too far left -> align with left edge
366
+ } else if ( overLeft > 0 ) {
367
+ position.left += overLeft;
368
+
369
+ // Too far right -> align with right edge
370
+ } else if ( overRight > 0 ) {
371
+ position.left -= overRight;
372
+
373
+ // Adjust based on position and margin
374
+ } else {
375
+ position.left = max( position.left - collisionPosLeft, position.left );
376
+ }
377
+ },
378
+ top: function( position, data ) {
379
+ var within = data.within,
380
+ withinOffset = within.isWindow ? within.scrollTop : within.offset.top,
381
+ outerHeight = data.within.height,
382
+ collisionPosTop = position.top - data.collisionPosition.marginTop,
383
+ overTop = withinOffset - collisionPosTop,
384
+ overBottom = collisionPosTop + data.collisionHeight - outerHeight - withinOffset,
385
+ newOverBottom;
386
+
387
+ // Element is taller than within
388
+ if ( data.collisionHeight > outerHeight ) {
389
+
390
+ // Element is initially over the top of within
391
+ if ( overTop > 0 && overBottom <= 0 ) {
392
+ newOverBottom = position.top + overTop + data.collisionHeight - outerHeight -
393
+ withinOffset;
394
+ position.top += overTop - newOverBottom;
395
+
396
+ // Element is initially over bottom of within
397
+ } else if ( overBottom > 0 && overTop <= 0 ) {
398
+ position.top = withinOffset;
399
+
400
+ // Element is initially over both top and bottom of within
401
+ } else {
402
+ if ( overTop > overBottom ) {
403
+ position.top = withinOffset + outerHeight - data.collisionHeight;
404
+ } else {
405
+ position.top = withinOffset;
406
+ }
407
+ }
408
+
409
+ // Too far up -> align with top
410
+ } else if ( overTop > 0 ) {
411
+ position.top += overTop;
412
+
413
+ // Too far down -> align with bottom edge
414
+ } else if ( overBottom > 0 ) {
415
+ position.top -= overBottom;
416
+
417
+ // Adjust based on position and margin
418
+ } else {
419
+ position.top = max( position.top - collisionPosTop, position.top );
420
+ }
421
+ }
422
+ },
423
+ flip: {
424
+ left: function( position, data ) {
425
+ var within = data.within,
426
+ withinOffset = within.offset.left + within.scrollLeft,
427
+ outerWidth = within.width,
428
+ offsetLeft = within.isWindow ? within.scrollLeft : within.offset.left,
429
+ collisionPosLeft = position.left - data.collisionPosition.marginLeft,
430
+ overLeft = collisionPosLeft - offsetLeft,
431
+ overRight = collisionPosLeft + data.collisionWidth - outerWidth - offsetLeft,
432
+ myOffset = data.my[ 0 ] === "left" ?
433
+ -data.elemWidth :
434
+ data.my[ 0 ] === "right" ?
435
+ data.elemWidth :
436
+ 0,
437
+ atOffset = data.at[ 0 ] === "left" ?
438
+ data.targetWidth :
439
+ data.at[ 0 ] === "right" ?
440
+ -data.targetWidth :
441
+ 0,
442
+ offset = -2 * data.offset[ 0 ],
443
+ newOverRight,
444
+ newOverLeft;
445
+
446
+ if ( overLeft < 0 ) {
447
+ newOverRight = position.left + myOffset + atOffset + offset + data.collisionWidth -
448
+ outerWidth - withinOffset;
449
+ if ( newOverRight < 0 || newOverRight < abs( overLeft ) ) {
450
+ position.left += myOffset + atOffset + offset;
451
+ }
452
+ } else if ( overRight > 0 ) {
453
+ newOverLeft = position.left - data.collisionPosition.marginLeft + myOffset +
454
+ atOffset + offset - offsetLeft;
455
+ if ( newOverLeft > 0 || abs( newOverLeft ) < overRight ) {
456
+ position.left += myOffset + atOffset + offset;
457
+ }
458
+ }
459
+ },
460
+ top: function( position, data ) {
461
+ var within = data.within,
462
+ withinOffset = within.offset.top + within.scrollTop,
463
+ outerHeight = within.height,
464
+ offsetTop = within.isWindow ? within.scrollTop : within.offset.top,
465
+ collisionPosTop = position.top - data.collisionPosition.marginTop,
466
+ overTop = collisionPosTop - offsetTop,
467
+ overBottom = collisionPosTop + data.collisionHeight - outerHeight - offsetTop,
468
+ top = data.my[ 1 ] === "top",
469
+ myOffset = top ?
470
+ -data.elemHeight :
471
+ data.my[ 1 ] === "bottom" ?
472
+ data.elemHeight :
473
+ 0,
474
+ atOffset = data.at[ 1 ] === "top" ?
475
+ data.targetHeight :
476
+ data.at[ 1 ] === "bottom" ?
477
+ -data.targetHeight :
478
+ 0,
479
+ offset = -2 * data.offset[ 1 ],
480
+ newOverTop,
481
+ newOverBottom;
482
+ if ( overTop < 0 ) {
483
+ newOverBottom = position.top + myOffset + atOffset + offset + data.collisionHeight -
484
+ outerHeight - withinOffset;
485
+ if ( newOverBottom < 0 || newOverBottom < abs( overTop ) ) {
486
+ position.top += myOffset + atOffset + offset;
487
+ }
488
+ } else if ( overBottom > 0 ) {
489
+ newOverTop = position.top - data.collisionPosition.marginTop + myOffset + atOffset +
490
+ offset - offsetTop;
491
+ if ( newOverTop > 0 || abs( newOverTop ) < overBottom ) {
492
+ position.top += myOffset + atOffset + offset;
493
+ }
494
+ }
495
+ }
496
+ },
497
+ flipfit: {
498
+ left: function() {
499
+ $.ui.position.flip.left.apply( this, arguments );
500
+ $.ui.position.fit.left.apply( this, arguments );
501
+ },
502
+ top: function() {
503
+ $.ui.position.flip.top.apply( this, arguments );
504
+ $.ui.position.fit.top.apply( this, arguments );
505
+ }
506
+ }
507
+ };
508
+
509
+ } )();
510
+
511
+ return $.ui.position;
512
+
513
+ } );
@@ -0,0 +1,46 @@
1
+ //= require jquery-ui/version
2
+
3
+ ( function( factory ) {
4
+ "use strict";
5
+
6
+ if ( typeof define === "function" && define.amd ) {
7
+
8
+ // AMD. Register as an anonymous module.
9
+ define( [ "jquery", "./version" ], factory );
10
+ } else {
11
+
12
+ // Browser globals
13
+ factory( jQuery );
14
+ }
15
+ } )( function( $ ) {
16
+ "use strict";
17
+
18
+ return $.ui.safeActiveElement = function( document ) {
19
+ var activeElement;
20
+
21
+ // Support: IE 9 only
22
+ // IE9 throws an "Unspecified error" accessing document.activeElement from an <iframe>
23
+ try {
24
+ activeElement = document.activeElement;
25
+ } catch ( error ) {
26
+ activeElement = document.body;
27
+ }
28
+
29
+ // Support: IE 9 - 11 only
30
+ // IE may return null instead of an element
31
+ // Interestingly, this only seems to occur when NOT in an iframe
32
+ if ( !activeElement ) {
33
+ activeElement = document.body;
34
+ }
35
+
36
+ // Support: IE 11 only
37
+ // IE11 returns a seemingly empty object in some cases when accessing
38
+ // document.activeElement from an <iframe>
39
+ if ( !activeElement.nodeName ) {
40
+ activeElement = document.body;
41
+ }
42
+
43
+ return activeElement;
44
+ };
45
+
46
+ } );
@@ -0,0 +1,27 @@
1
+ //= require jquery-ui/version
2
+
3
+ ( function( factory ) {
4
+ "use strict";
5
+
6
+ if ( typeof define === "function" && define.amd ) {
7
+
8
+ // AMD. Register as an anonymous module.
9
+ define( [ "jquery", "./version" ], factory );
10
+ } else {
11
+
12
+ // Browser globals
13
+ factory( jQuery );
14
+ }
15
+ } )( function( $ ) {
16
+ "use strict";
17
+
18
+ return $.ui.safeBlur = function( element ) {
19
+
20
+ // Support: IE9 - 10 only
21
+ // If the <body> is blurred, IE will switch windows, see #9420
22
+ if ( element && element.nodeName.toLowerCase() !== "body" ) {
23
+ $( element ).trigger( "blur" );
24
+ }
25
+ };
26
+
27
+ } );
@@ -0,0 +1,50 @@
1
+ //= require jquery-ui/version
2
+
3
+ /*!
4
+ * jQuery UI Scroll Parent 1.13.2
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: scrollParent
13
+ //>>group: Core
14
+ //>>description: Get the closest ancestor element that is scrollable.
15
+ //>>docs: http://api.jqueryui.com/scrollParent/
16
+
17
+ ( function( factory ) {
18
+ "use strict";
19
+
20
+ if ( typeof define === "function" && define.amd ) {
21
+
22
+ // AMD. Register as an anonymous module.
23
+ define( [ "jquery", "./version" ], factory );
24
+ } else {
25
+
26
+ // Browser globals
27
+ factory( jQuery );
28
+ }
29
+ } )( function( $ ) {
30
+ "use strict";
31
+
32
+ return $.fn.scrollParent = function( includeHidden ) {
33
+ var position = this.css( "position" ),
34
+ excludeStaticParent = position === "absolute",
35
+ overflowRegex = includeHidden ? /(auto|scroll|hidden)/ : /(auto|scroll)/,
36
+ scrollParent = this.parents().filter( function() {
37
+ var parent = $( this );
38
+ if ( excludeStaticParent && parent.css( "position" ) === "static" ) {
39
+ return false;
40
+ }
41
+ return overflowRegex.test( parent.css( "overflow" ) + parent.css( "overflow-y" ) +
42
+ parent.css( "overflow-x" ) );
43
+ } ).eq( 0 );
44
+
45
+ return position === "fixed" || !scrollParent.length ?
46
+ $( this[ 0 ].ownerDocument || document ) :
47
+ scrollParent;
48
+ };
49
+
50
+ } );
@@ -0,0 +1,41 @@
1
+ //= require jquery-ui/version
2
+ //= require jquery-ui/focusable
3
+
4
+ /*!
5
+ * jQuery UI Tabbable 1.13.2
6
+ * http://jqueryui.com
7
+ *
8
+ * Copyright jQuery Foundation and other contributors
9
+ * Released under the MIT license.
10
+ * http://jquery.org/license
11
+ */
12
+
13
+ //>>label: :tabbable Selector
14
+ //>>group: Core
15
+ //>>description: Selects elements which can be tabbed to.
16
+ //>>docs: http://api.jqueryui.com/tabbable-selector/
17
+
18
+ ( function( factory ) {
19
+ "use strict";
20
+
21
+ if ( typeof define === "function" && define.amd ) {
22
+
23
+ // AMD. Register as an anonymous module.
24
+ define( [ "jquery", "./version", "./focusable" ], factory );
25
+ } else {
26
+
27
+ // Browser globals
28
+ factory( jQuery );
29
+ }
30
+ } )( function( $ ) {
31
+ "use strict";
32
+
33
+ return $.extend( $.expr.pseudos, {
34
+ tabbable: function( element ) {
35
+ var tabIndex = $.attr( element, "tabindex" ),
36
+ hasTabindex = tabIndex != null;
37
+ return ( !hasTabindex || tabIndex >= 0 ) && $.ui.focusable( element, hasTabindex );
38
+ }
39
+ } );
40
+
41
+ } );