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,513 @@
1
+ //= require jquery-ui/version
2
+
3
+ /*!
4
+ * jQuery UI Position 1.13.1
5
+ * http://jqueryui.com
6
+ *
7
+ * Copyright jQuery Foundation and other contributors
8
+ * Released under the MIT license.
9
+ * http://jquery.org/license
10
+ *
11
+ * 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.1
5
+ * http://jqueryui.com
6
+ *
7
+ * Copyright jQuery Foundation and other contributors
8
+ * Released under the MIT license.
9
+ * http://jquery.org/license
10
+ */
11
+
12
+ //>>label: 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.1
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
+ } );