rails_admin 3.2.1 → 4.0.0.beta

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 (214) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +8 -6
  3. data/README.md +11 -11
  4. data/Rakefile +3 -11
  5. data/app/assets/builds/rails_admin.css +10 -0
  6. data/app/assets/builds/rails_admin.js +34 -0
  7. data/app/controllers/rails_admin/main_controller.rb +3 -3
  8. data/app/helpers/rails_admin/application_helper.rb +3 -15
  9. data/app/helpers/rails_admin/form_builder.rb +10 -9
  10. data/app/views/layouts/rails_admin/_head.html.erb +10 -27
  11. data/app/views/layouts/rails_admin/_head_custom.html.erb +3 -0
  12. data/app/views/layouts/rails_admin/_secondary_navigation.html.erb +1 -1
  13. data/app/views/rails_admin/main/_dashboard_history.html.erb +1 -1
  14. data/app/views/rails_admin/main/_delete_notice.html.erb +3 -3
  15. data/app/views/rails_admin/main/_form_boolean.html.erb +9 -13
  16. data/app/views/rails_admin/main/_submit_buttons.html.erb +4 -4
  17. data/app/views/rails_admin/main/bulk_delete.html.erb +2 -2
  18. data/app/views/rails_admin/main/dashboard.html.erb +3 -3
  19. data/app/views/rails_admin/main/delete.html.erb +2 -2
  20. data/app/views/rails_admin/main/export.html.erb +2 -2
  21. data/app/views/rails_admin/main/history.html.erb +2 -2
  22. data/app/views/rails_admin/main/index.html.erb +3 -3
  23. data/config/initializers/active_record_extensions.rb +1 -4
  24. data/lib/generators/rails_admin/install_generator.rb +37 -92
  25. data/lib/generators/rails_admin/templates/rails_admin.scss.erb +1 -1
  26. data/lib/rails_admin/abstract_model.rb +69 -191
  27. data/lib/rails_admin/adapters/active_record/association.rb +1 -1
  28. data/lib/rails_admin/adapters/active_record/property.rb +7 -0
  29. data/lib/rails_admin/adapters/active_record/reflection.rb +87 -0
  30. data/lib/rails_admin/adapters/active_record/repository.rb +216 -0
  31. data/lib/rails_admin/adapters/active_record/statement_builder.rb +148 -0
  32. data/lib/rails_admin/adapters/active_record/where_builder.rb +40 -0
  33. data/lib/rails_admin/adapters/active_record.rb +7 -356
  34. data/lib/rails_admin/adapters/mongoid/association.rb +1 -1
  35. data/lib/rails_admin/adapters/mongoid/extension.rb +16 -6
  36. data/lib/rails_admin/adapters/mongoid/property.rb +7 -0
  37. data/lib/rails_admin/adapters/mongoid/reflection.rb +58 -0
  38. data/lib/rails_admin/adapters/mongoid/repository.rb +237 -0
  39. data/lib/rails_admin/adapters/mongoid/statement_builder.rb +93 -0
  40. data/lib/rails_admin/adapters/mongoid.rb +7 -300
  41. data/lib/rails_admin/adapters/reflection.rb +105 -0
  42. data/lib/rails_admin/adapters/repository.rb +169 -0
  43. data/lib/rails_admin/adapters/statement_builder.rb +109 -0
  44. data/lib/rails_admin/adapters.rb +94 -0
  45. data/lib/rails_admin/config/actions/base.rb +8 -0
  46. data/lib/rails_admin/config/actions/bulk_delete.rb +4 -4
  47. data/lib/rails_admin/config/actions/dashboard.rb +1 -1
  48. data/lib/rails_admin/config/actions/edit.rb +3 -2
  49. data/lib/rails_admin/config/actions/index.rb +1 -1
  50. data/lib/rails_admin/config/actions/new.rb +3 -2
  51. data/lib/rails_admin/config/actions/show.rb +1 -1
  52. data/lib/rails_admin/config/configurable.rb +4 -3
  53. data/lib/rails_admin/config/fields/association.rb +9 -8
  54. data/lib/rails_admin/config/fields/base.rb +55 -37
  55. data/lib/rails_admin/config/fields/collection_association.rb +2 -2
  56. data/lib/rails_admin/config/fields/factories/carrierwave.rb +35 -20
  57. data/lib/rails_admin/config/fields/factories/dragonfly.rb +30 -18
  58. data/lib/rails_admin/config/fields/factories/enum.rb +14 -8
  59. data/lib/rails_admin/config/fields/factories/paperclip.rb +29 -19
  60. data/lib/rails_admin/config/fields/factories/shrine.rb +19 -8
  61. data/lib/rails_admin/config/fields/singular_association.rb +6 -1
  62. data/lib/rails_admin/config/fields/types/active_record_enum.rb +3 -7
  63. data/lib/rails_admin/config/fields/types/belongs_to_association.rb +8 -4
  64. data/lib/rails_admin/config/fields/types/bson_object_id.rb +1 -1
  65. data/lib/rails_admin/config/fields/types/datetime.rb +0 -4
  66. data/lib/rails_admin/config/fields/types/dragonfly.rb +1 -1
  67. data/lib/rails_admin/config/fields/types/enum.rb +11 -2
  68. data/lib/rails_admin/config/fields/types/multiple_file_upload.rb +0 -2
  69. data/lib/rails_admin/config/fields/types/polymorphic_association.rb +4 -4
  70. data/lib/rails_admin/config/fields/types/time.rb +1 -1
  71. data/lib/rails_admin/config/model.rb +27 -5
  72. data/lib/rails_admin/config/sections/list.rb +0 -8
  73. data/lib/rails_admin/config.rb +7 -21
  74. data/lib/rails_admin/criteria/path.rb +66 -0
  75. data/lib/rails_admin/criteria/period.rb +67 -0
  76. data/lib/rails_admin/engine.rb +11 -15
  77. data/lib/rails_admin/extensions/pundit/authorization_adapter.rb +2 -2
  78. data/lib/rails_admin/extensions/url_for_extension.rb +8 -0
  79. data/lib/rails_admin/support/asset_source.rb +42 -0
  80. data/lib/rails_admin/support/composite_keys_serializer.rb +28 -2
  81. data/lib/rails_admin/support/csv_converter.rb +3 -10
  82. data/lib/rails_admin/version.rb +8 -7
  83. data/lib/rails_admin.rb +7 -0
  84. data/lib/tasks/assets.rake +23 -0
  85. data/package.json +12 -7
  86. data/src/rails_admin/base.js +18 -15
  87. data/src/rails_admin/filter-box.js +7 -4
  88. data/src/rails_admin/filtering-multiselect.js +1 -1
  89. data/src/rails_admin/filtering-select.js +8 -8
  90. data/src/rails_admin/flatpickr.js +14 -0
  91. data/src/rails_admin/remote-form.js +74 -48
  92. data/src/rails_admin/styles/base/theming.scss +48 -25
  93. data/src/rails_admin/styles/base.scss +25 -1
  94. data/src/rails_admin/styles/filtering-select.scss +23 -62
  95. data/src/rails_admin/ui.js +1 -1
  96. data/src/rails_admin/vendor/jquery_nested_form.js +4 -4
  97. data/src/rails_admin/widgets.js +44 -11
  98. metadata +34 -130
  99. data/app/assets/javascripts/rails_admin/application.js.erb +0 -30
  100. data/app/assets/javascripts/rails_admin/custom/ui.js +0 -1
  101. data/app/assets/stylesheets/rails_admin/application.scss.erb +0 -35
  102. data/app/assets/stylesheets/rails_admin/custom/mixins.scss +0 -11
  103. data/app/assets/stylesheets/rails_admin/custom/theming.scss +0 -13
  104. data/app/assets/stylesheets/rails_admin/custom/variables.scss +0 -15
  105. data/lib/generators/rails_admin/importmap_formatter.rb +0 -28
  106. data/lib/generators/rails_admin/templates/rails_admin.vite.js +0 -2
  107. data/lib/generators/rails_admin/templates/rails_admin.webpacker.js +0 -2
  108. data/lib/rails_admin/adapters/active_record/object_extension.rb +0 -13
  109. data/lib/rails_admin/adapters/active_record.rb.bak +0 -348
  110. data/lib/rails_admin/adapters/mongoid/object_extension.rb +0 -29
  111. data/lib/rails_admin/support/es_module_processor.rb +0 -23
  112. data/vendor/assets/fonts/rails_admin/fa-solid-900.ttf +0 -0
  113. data/vendor/assets/javascripts/rails_admin/bootstrap.js +0 -5046
  114. data/vendor/assets/javascripts/rails_admin/flatpickr-with-locales.js +0 -11246
  115. data/vendor/assets/javascripts/rails_admin/jquery-ui/data.js +0 -41
  116. data/vendor/assets/javascripts/rails_admin/jquery-ui/effect.js +0 -1637
  117. data/vendor/assets/javascripts/rails_admin/jquery-ui/ie.js +0 -17
  118. data/vendor/assets/javascripts/rails_admin/jquery-ui/keycode.js +0 -47
  119. data/vendor/assets/javascripts/rails_admin/jquery-ui/position.js +0 -500
  120. data/vendor/assets/javascripts/rails_admin/jquery-ui/safe-active-element.js +0 -42
  121. data/vendor/assets/javascripts/rails_admin/jquery-ui/scroll-parent.js +0 -47
  122. data/vendor/assets/javascripts/rails_admin/jquery-ui/unique-id.js +0 -51
  123. data/vendor/assets/javascripts/rails_admin/jquery-ui/version.js +0 -17
  124. data/vendor/assets/javascripts/rails_admin/jquery-ui/widget.js +0 -735
  125. data/vendor/assets/javascripts/rails_admin/jquery-ui/widgets/autocomplete.js +0 -689
  126. data/vendor/assets/javascripts/rails_admin/jquery-ui/widgets/menu.js +0 -680
  127. data/vendor/assets/javascripts/rails_admin/jquery-ui/widgets/mouse.js +0 -230
  128. data/vendor/assets/javascripts/rails_admin/jquery-ui/widgets/sortable.js +0 -1561
  129. data/vendor/assets/javascripts/rails_admin/jquery3.js +0 -10881
  130. data/vendor/assets/javascripts/rails_admin/popper.js +0 -1974
  131. data/vendor/assets/stylesheets/rails_admin/bootstrap/_accordion.scss +0 -118
  132. data/vendor/assets/stylesheets/rails_admin/bootstrap/_alert.scss +0 -57
  133. data/vendor/assets/stylesheets/rails_admin/bootstrap/_badge.scss +0 -29
  134. data/vendor/assets/stylesheets/rails_admin/bootstrap/_breadcrumb.scss +0 -28
  135. data/vendor/assets/stylesheets/rails_admin/bootstrap/_button-group.scss +0 -139
  136. data/vendor/assets/stylesheets/rails_admin/bootstrap/_buttons.scss +0 -111
  137. data/vendor/assets/stylesheets/rails_admin/bootstrap/_card.scss +0 -216
  138. data/vendor/assets/stylesheets/rails_admin/bootstrap/_carousel.scss +0 -229
  139. data/vendor/assets/stylesheets/rails_admin/bootstrap/_close.scss +0 -40
  140. data/vendor/assets/stylesheets/rails_admin/bootstrap/_containers.scss +0 -41
  141. data/vendor/assets/stylesheets/rails_admin/bootstrap/_dropdown.scss +0 -240
  142. data/vendor/assets/stylesheets/rails_admin/bootstrap/_forms.scss +0 -9
  143. data/vendor/assets/stylesheets/rails_admin/bootstrap/_functions.scss +0 -302
  144. data/vendor/assets/stylesheets/rails_admin/bootstrap/_grid.scss +0 -33
  145. data/vendor/assets/stylesheets/rails_admin/bootstrap/_helpers.scss +0 -9
  146. data/vendor/assets/stylesheets/rails_admin/bootstrap/_images.scss +0 -42
  147. data/vendor/assets/stylesheets/rails_admin/bootstrap/_list-group.scss +0 -174
  148. data/vendor/assets/stylesheets/rails_admin/bootstrap/_mixins.scss +0 -43
  149. data/vendor/assets/stylesheets/rails_admin/bootstrap/_modal.scss +0 -209
  150. data/vendor/assets/stylesheets/rails_admin/bootstrap/_nav.scss +0 -139
  151. data/vendor/assets/stylesheets/rails_admin/bootstrap/_navbar.scss +0 -335
  152. data/vendor/assets/stylesheets/rails_admin/bootstrap/_offcanvas.scss +0 -83
  153. data/vendor/assets/stylesheets/rails_admin/bootstrap/_pagination.scss +0 -64
  154. data/vendor/assets/stylesheets/rails_admin/bootstrap/_placeholders.scss +0 -51
  155. data/vendor/assets/stylesheets/rails_admin/bootstrap/_popover.scss +0 -158
  156. data/vendor/assets/stylesheets/rails_admin/bootstrap/_progress.scss +0 -48
  157. data/vendor/assets/stylesheets/rails_admin/bootstrap/_reboot.scss +0 -625
  158. data/vendor/assets/stylesheets/rails_admin/bootstrap/_root.scss +0 -54
  159. data/vendor/assets/stylesheets/rails_admin/bootstrap/_spinners.scss +0 -69
  160. data/vendor/assets/stylesheets/rails_admin/bootstrap/_tables.scss +0 -155
  161. data/vendor/assets/stylesheets/rails_admin/bootstrap/_toasts.scss +0 -51
  162. data/vendor/assets/stylesheets/rails_admin/bootstrap/_tooltip.scss +0 -115
  163. data/vendor/assets/stylesheets/rails_admin/bootstrap/_transitions.scss +0 -27
  164. data/vendor/assets/stylesheets/rails_admin/bootstrap/_type.scss +0 -104
  165. data/vendor/assets/stylesheets/rails_admin/bootstrap/_utilities.scss +0 -630
  166. data/vendor/assets/stylesheets/rails_admin/bootstrap/_variables.scss +0 -1641
  167. data/vendor/assets/stylesheets/rails_admin/bootstrap/bootstrap.scss +0 -53
  168. data/vendor/assets/stylesheets/rails_admin/bootstrap/forms/_floating-labels.scss +0 -63
  169. data/vendor/assets/stylesheets/rails_admin/bootstrap/forms/_form-check.scss +0 -152
  170. data/vendor/assets/stylesheets/rails_admin/bootstrap/forms/_form-control.scss +0 -219
  171. data/vendor/assets/stylesheets/rails_admin/bootstrap/forms/_form-range.scss +0 -91
  172. data/vendor/assets/stylesheets/rails_admin/bootstrap/forms/_form-select.scss +0 -72
  173. data/vendor/assets/stylesheets/rails_admin/bootstrap/forms/_form-text.scss +0 -11
  174. data/vendor/assets/stylesheets/rails_admin/bootstrap/forms/_input-group.scss +0 -121
  175. data/vendor/assets/stylesheets/rails_admin/bootstrap/forms/_labels.scss +0 -36
  176. data/vendor/assets/stylesheets/rails_admin/bootstrap/forms/_validation.scss +0 -12
  177. data/vendor/assets/stylesheets/rails_admin/bootstrap/helpers/_clearfix.scss +0 -3
  178. data/vendor/assets/stylesheets/rails_admin/bootstrap/helpers/_colored-links.scss +0 -12
  179. data/vendor/assets/stylesheets/rails_admin/bootstrap/helpers/_position.scss +0 -30
  180. data/vendor/assets/stylesheets/rails_admin/bootstrap/helpers/_ratio.scss +0 -26
  181. data/vendor/assets/stylesheets/rails_admin/bootstrap/helpers/_stacks.scss +0 -15
  182. data/vendor/assets/stylesheets/rails_admin/bootstrap/helpers/_stretched-link.scss +0 -15
  183. data/vendor/assets/stylesheets/rails_admin/bootstrap/helpers/_text-truncation.scss +0 -7
  184. data/vendor/assets/stylesheets/rails_admin/bootstrap/helpers/_visually-hidden.scss +0 -8
  185. data/vendor/assets/stylesheets/rails_admin/bootstrap/helpers/_vr.scss +0 -8
  186. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_alert.scss +0 -11
  187. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_backdrop.scss +0 -14
  188. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_border-radius.scss +0 -78
  189. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_box-shadow.scss +0 -18
  190. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_breakpoints.scss +0 -127
  191. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_buttons.scss +0 -133
  192. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_caret.scss +0 -64
  193. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_clearfix.scss +0 -9
  194. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_color-scheme.scss +0 -7
  195. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_container.scss +0 -9
  196. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_deprecate.scss +0 -10
  197. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_forms.scss +0 -144
  198. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_gradients.scss +0 -47
  199. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_grid.scss +0 -151
  200. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_image.scss +0 -16
  201. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_list-group.scss +0 -24
  202. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_lists.scss +0 -7
  203. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_pagination.scss +0 -31
  204. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_reset-text.scss +0 -17
  205. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_resize.scss +0 -6
  206. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_table-variants.scss +0 -21
  207. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_text-truncate.scss +0 -8
  208. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_transition.scss +0 -26
  209. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_utilities.scss +0 -89
  210. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_visually-hidden.scss +0 -29
  211. data/vendor/assets/stylesheets/rails_admin/bootstrap/utilities/_api.scss +0 -47
  212. data/vendor/assets/stylesheets/rails_admin/bootstrap/vendor/_rfs.scss +0 -354
  213. data/vendor/assets/stylesheets/rails_admin/flatpickr.css +0 -791
  214. data/vendor/assets/stylesheets/rails_admin/font-awesome.scss +0 -6351
@@ -1,17 +0,0 @@
1
- //= require rails_admin/jquery-ui/version
2
-
3
- ( function( factory ) {
4
- if ( typeof define === "function" && define.amd ) {
5
-
6
- // AMD. Register as an anonymous module.
7
- define( [ "jquery", "./version" ], factory );
8
- } else {
9
-
10
- // Browser globals
11
- factory( jQuery );
12
- }
13
- } ( function( $ ) {
14
-
15
- // This file is deprecated
16
- return $.ui.ie = !!/msie [\w.]+/.exec( navigator.userAgent.toLowerCase() );
17
- } ) );
@@ -1,47 +0,0 @@
1
- //= require rails_admin/jquery-ui/version
2
-
3
- /*!
4
- * jQuery UI Keycode 1.12.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: Keycode
13
- //>>group: Core
14
- //>>description: Provide keycodes as keynames
15
- //>>docs: http://api.jqueryui.com/jQuery.ui.keyCode/
16
-
17
- ( function( factory ) {
18
- if ( typeof define === "function" && define.amd ) {
19
-
20
- // AMD. Register as an anonymous module.
21
- define( [ "jquery", "./version" ], factory );
22
- } else {
23
-
24
- // Browser globals
25
- factory( jQuery );
26
- }
27
- } ( function( $ ) {
28
- return $.ui.keyCode = {
29
- BACKSPACE: 8,
30
- COMMA: 188,
31
- DELETE: 46,
32
- DOWN: 40,
33
- END: 35,
34
- ENTER: 13,
35
- ESCAPE: 27,
36
- HOME: 36,
37
- LEFT: 37,
38
- PAGE_DOWN: 34,
39
- PAGE_UP: 33,
40
- PERIOD: 190,
41
- RIGHT: 39,
42
- SPACE: 32,
43
- TAB: 9,
44
- UP: 38
45
- };
46
-
47
- } ) );
@@ -1,500 +0,0 @@
1
- //= require rails_admin/jquery-ui/version
2
-
3
- /*!
4
- * jQuery UI Position 1.12.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
- if ( typeof define === "function" && define.amd ) {
22
-
23
- // AMD. Register as an anonymous module.
24
- define( [ "jquery", "./version" ], factory );
25
- } else {
26
-
27
- // Browser globals
28
- factory( jQuery );
29
- }
30
- }( function( $ ) {
31
- ( function() {
32
- var cachedScrollbarWidth,
33
- max = Math.max,
34
- abs = Math.abs,
35
- rhorizontal = /left|center|right/,
36
- rvertical = /top|center|bottom/,
37
- roffset = /[\+\-]\d+(\.[\d]+)?%?/,
38
- rposition = /^\w+/,
39
- rpercent = /%$/,
40
- _position = $.fn.position;
41
-
42
- function getOffsets( offsets, width, height ) {
43
- return [
44
- parseFloat( offsets[ 0 ] ) * ( rpercent.test( offsets[ 0 ] ) ? width / 100 : 1 ),
45
- parseFloat( offsets[ 1 ] ) * ( rpercent.test( offsets[ 1 ] ) ? height / 100 : 1 )
46
- ];
47
- }
48
-
49
- function parseCss( element, property ) {
50
- return parseInt( $.css( element, property ), 10 ) || 0;
51
- }
52
-
53
- function getDimensions( elem ) {
54
- var raw = elem[ 0 ];
55
- if ( raw.nodeType === 9 ) {
56
- return {
57
- width: elem.width(),
58
- height: elem.height(),
59
- offset: { top: 0, left: 0 }
60
- };
61
- }
62
- if ( $.isWindow( raw ) ) {
63
- return {
64
- width: elem.width(),
65
- height: elem.height(),
66
- offset: { top: elem.scrollTop(), left: elem.scrollLeft() }
67
- };
68
- }
69
- if ( raw.preventDefault ) {
70
- return {
71
- width: 0,
72
- height: 0,
73
- offset: { top: raw.pageY, left: raw.pageX }
74
- };
75
- }
76
- return {
77
- width: elem.outerWidth(),
78
- height: elem.outerHeight(),
79
- offset: elem.offset()
80
- };
81
- }
82
-
83
- $.position = {
84
- scrollbarWidth: function() {
85
- if ( cachedScrollbarWidth !== undefined ) {
86
- return cachedScrollbarWidth;
87
- }
88
- var w1, w2,
89
- div = $( "<div " +
90
- "style='display:block;position:absolute;width:50px;height:50px;overflow:hidden;'>" +
91
- "<div style='height:100px;width:auto;'></div></div>" ),
92
- innerDiv = div.children()[ 0 ];
93
-
94
- $( "body" ).append( div );
95
- w1 = innerDiv.offsetWidth;
96
- div.css( "overflow", "scroll" );
97
-
98
- w2 = innerDiv.offsetWidth;
99
-
100
- if ( w1 === w2 ) {
101
- w2 = div[ 0 ].clientWidth;
102
- }
103
-
104
- div.remove();
105
-
106
- return ( cachedScrollbarWidth = w1 - w2 );
107
- },
108
- getScrollInfo: function( within ) {
109
- var overflowX = within.isWindow || within.isDocument ? "" :
110
- within.element.css( "overflow-x" ),
111
- overflowY = within.isWindow || within.isDocument ? "" :
112
- within.element.css( "overflow-y" ),
113
- hasOverflowX = overflowX === "scroll" ||
114
- ( overflowX === "auto" && within.width < within.element[ 0 ].scrollWidth ),
115
- hasOverflowY = overflowY === "scroll" ||
116
- ( overflowY === "auto" && within.height < within.element[ 0 ].scrollHeight );
117
- return {
118
- width: hasOverflowY ? $.position.scrollbarWidth() : 0,
119
- height: hasOverflowX ? $.position.scrollbarWidth() : 0
120
- };
121
- },
122
- getWithinInfo: function( element ) {
123
- var withinElement = $( element || window ),
124
- isWindow = $.isWindow( withinElement[ 0 ] ),
125
- isDocument = !!withinElement[ 0 ] && withinElement[ 0 ].nodeType === 9,
126
- hasOffset = !isWindow && !isDocument;
127
- return {
128
- element: withinElement,
129
- isWindow: isWindow,
130
- isDocument: isDocument,
131
- offset: hasOffset ? $( element ).offset() : { left: 0, top: 0 },
132
- scrollLeft: withinElement.scrollLeft(),
133
- scrollTop: withinElement.scrollTop(),
134
- width: withinElement.outerWidth(),
135
- height: withinElement.outerHeight()
136
- };
137
- }
138
- };
139
-
140
- $.fn.position = function( options ) {
141
- if ( !options || !options.of ) {
142
- return _position.apply( this, arguments );
143
- }
144
-
145
- // Make a copy, we don't want to modify arguments
146
- options = $.extend( {}, options );
147
-
148
- var atOffset, targetWidth, targetHeight, targetOffset, basePosition, dimensions,
149
- target = $( options.of ),
150
- within = $.position.getWithinInfo( options.within ),
151
- scrollInfo = $.position.getScrollInfo( within ),
152
- collision = ( options.collision || "flip" ).split( " " ),
153
- offsets = {};
154
-
155
- dimensions = getDimensions( target );
156
- if ( target[ 0 ].preventDefault ) {
157
-
158
- // Force left top to allow flipping
159
- options.at = "left top";
160
- }
161
- targetWidth = dimensions.width;
162
- targetHeight = dimensions.height;
163
- targetOffset = dimensions.offset;
164
-
165
- // Clone to reuse original targetOffset later
166
- basePosition = $.extend( {}, targetOffset );
167
-
168
- // Force my and at to have valid horizontal and vertical positions
169
- // if a value is missing or invalid, it will be converted to center
170
- $.each( [ "my", "at" ], function() {
171
- var pos = ( options[ this ] || "" ).split( " " ),
172
- horizontalOffset,
173
- verticalOffset;
174
-
175
- if ( pos.length === 1 ) {
176
- pos = rhorizontal.test( pos[ 0 ] ) ?
177
- pos.concat( [ "center" ] ) :
178
- rvertical.test( pos[ 0 ] ) ?
179
- [ "center" ].concat( pos ) :
180
- [ "center", "center" ];
181
- }
182
- pos[ 0 ] = rhorizontal.test( pos[ 0 ] ) ? pos[ 0 ] : "center";
183
- pos[ 1 ] = rvertical.test( pos[ 1 ] ) ? pos[ 1 ] : "center";
184
-
185
- // Calculate offsets
186
- horizontalOffset = roffset.exec( pos[ 0 ] );
187
- verticalOffset = roffset.exec( pos[ 1 ] );
188
- offsets[ this ] = [
189
- horizontalOffset ? horizontalOffset[ 0 ] : 0,
190
- verticalOffset ? verticalOffset[ 0 ] : 0
191
- ];
192
-
193
- // Reduce to just the positions without the offsets
194
- options[ this ] = [
195
- rposition.exec( pos[ 0 ] )[ 0 ],
196
- rposition.exec( pos[ 1 ] )[ 0 ]
197
- ];
198
- } );
199
-
200
- // Normalize collision option
201
- if ( collision.length === 1 ) {
202
- collision[ 1 ] = collision[ 0 ];
203
- }
204
-
205
- if ( options.at[ 0 ] === "right" ) {
206
- basePosition.left += targetWidth;
207
- } else if ( options.at[ 0 ] === "center" ) {
208
- basePosition.left += targetWidth / 2;
209
- }
210
-
211
- if ( options.at[ 1 ] === "bottom" ) {
212
- basePosition.top += targetHeight;
213
- } else if ( options.at[ 1 ] === "center" ) {
214
- basePosition.top += targetHeight / 2;
215
- }
216
-
217
- atOffset = getOffsets( offsets.at, targetWidth, targetHeight );
218
- basePosition.left += atOffset[ 0 ];
219
- basePosition.top += atOffset[ 1 ];
220
-
221
- return this.each( function() {
222
- var collisionPosition, using,
223
- elem = $( this ),
224
- elemWidth = elem.outerWidth(),
225
- elemHeight = elem.outerHeight(),
226
- marginLeft = parseCss( this, "marginLeft" ),
227
- marginTop = parseCss( this, "marginTop" ),
228
- collisionWidth = elemWidth + marginLeft + parseCss( this, "marginRight" ) +
229
- scrollInfo.width,
230
- collisionHeight = elemHeight + marginTop + parseCss( this, "marginBottom" ) +
231
- scrollInfo.height,
232
- position = $.extend( {}, basePosition ),
233
- myOffset = getOffsets( offsets.my, elem.outerWidth(), elem.outerHeight() );
234
-
235
- if ( options.my[ 0 ] === "right" ) {
236
- position.left -= elemWidth;
237
- } else if ( options.my[ 0 ] === "center" ) {
238
- position.left -= elemWidth / 2;
239
- }
240
-
241
- if ( options.my[ 1 ] === "bottom" ) {
242
- position.top -= elemHeight;
243
- } else if ( options.my[ 1 ] === "center" ) {
244
- position.top -= elemHeight / 2;
245
- }
246
-
247
- position.left += myOffset[ 0 ];
248
- position.top += myOffset[ 1 ];
249
-
250
- collisionPosition = {
251
- marginLeft: marginLeft,
252
- marginTop: marginTop
253
- };
254
-
255
- $.each( [ "left", "top" ], function( i, dir ) {
256
- if ( $.ui.position[ collision[ i ] ] ) {
257
- $.ui.position[ collision[ i ] ][ dir ]( position, {
258
- targetWidth: targetWidth,
259
- targetHeight: targetHeight,
260
- elemWidth: elemWidth,
261
- elemHeight: elemHeight,
262
- collisionPosition: collisionPosition,
263
- collisionWidth: collisionWidth,
264
- collisionHeight: collisionHeight,
265
- offset: [ atOffset[ 0 ] + myOffset[ 0 ], atOffset [ 1 ] + myOffset[ 1 ] ],
266
- my: options.my,
267
- at: options.at,
268
- within: within,
269
- elem: elem
270
- } );
271
- }
272
- } );
273
-
274
- if ( options.using ) {
275
-
276
- // Adds feedback as second argument to using callback, if present
277
- using = function( props ) {
278
- var left = targetOffset.left - position.left,
279
- right = left + targetWidth - elemWidth,
280
- top = targetOffset.top - position.top,
281
- bottom = top + targetHeight - elemHeight,
282
- feedback = {
283
- target: {
284
- element: target,
285
- left: targetOffset.left,
286
- top: targetOffset.top,
287
- width: targetWidth,
288
- height: targetHeight
289
- },
290
- element: {
291
- element: elem,
292
- left: position.left,
293
- top: position.top,
294
- width: elemWidth,
295
- height: elemHeight
296
- },
297
- horizontal: right < 0 ? "left" : left > 0 ? "right" : "center",
298
- vertical: bottom < 0 ? "top" : top > 0 ? "bottom" : "middle"
299
- };
300
- if ( targetWidth < elemWidth && abs( left + right ) < targetWidth ) {
301
- feedback.horizontal = "center";
302
- }
303
- if ( targetHeight < elemHeight && abs( top + bottom ) < targetHeight ) {
304
- feedback.vertical = "middle";
305
- }
306
- if ( max( abs( left ), abs( right ) ) > max( abs( top ), abs( bottom ) ) ) {
307
- feedback.important = "horizontal";
308
- } else {
309
- feedback.important = "vertical";
310
- }
311
- options.using.call( this, props, feedback );
312
- };
313
- }
314
-
315
- elem.offset( $.extend( position, { using: using } ) );
316
- } );
317
- };
318
-
319
- $.ui.position = {
320
- fit: {
321
- left: function( position, data ) {
322
- var within = data.within,
323
- withinOffset = within.isWindow ? within.scrollLeft : within.offset.left,
324
- outerWidth = within.width,
325
- collisionPosLeft = position.left - data.collisionPosition.marginLeft,
326
- overLeft = withinOffset - collisionPosLeft,
327
- overRight = collisionPosLeft + data.collisionWidth - outerWidth - withinOffset,
328
- newOverRight;
329
-
330
- // Element is wider than within
331
- if ( data.collisionWidth > outerWidth ) {
332
-
333
- // Element is initially over the left side of within
334
- if ( overLeft > 0 && overRight <= 0 ) {
335
- newOverRight = position.left + overLeft + data.collisionWidth - outerWidth -
336
- withinOffset;
337
- position.left += overLeft - newOverRight;
338
-
339
- // Element is initially over right side of within
340
- } else if ( overRight > 0 && overLeft <= 0 ) {
341
- position.left = withinOffset;
342
-
343
- // Element is initially over both left and right sides of within
344
- } else {
345
- if ( overLeft > overRight ) {
346
- position.left = withinOffset + outerWidth - data.collisionWidth;
347
- } else {
348
- position.left = withinOffset;
349
- }
350
- }
351
-
352
- // Too far left -> align with left edge
353
- } else if ( overLeft > 0 ) {
354
- position.left += overLeft;
355
-
356
- // Too far right -> align with right edge
357
- } else if ( overRight > 0 ) {
358
- position.left -= overRight;
359
-
360
- // Adjust based on position and margin
361
- } else {
362
- position.left = max( position.left - collisionPosLeft, position.left );
363
- }
364
- },
365
- top: function( position, data ) {
366
- var within = data.within,
367
- withinOffset = within.isWindow ? within.scrollTop : within.offset.top,
368
- outerHeight = data.within.height,
369
- collisionPosTop = position.top - data.collisionPosition.marginTop,
370
- overTop = withinOffset - collisionPosTop,
371
- overBottom = collisionPosTop + data.collisionHeight - outerHeight - withinOffset,
372
- newOverBottom;
373
-
374
- // Element is taller than within
375
- if ( data.collisionHeight > outerHeight ) {
376
-
377
- // Element is initially over the top of within
378
- if ( overTop > 0 && overBottom <= 0 ) {
379
- newOverBottom = position.top + overTop + data.collisionHeight - outerHeight -
380
- withinOffset;
381
- position.top += overTop - newOverBottom;
382
-
383
- // Element is initially over bottom of within
384
- } else if ( overBottom > 0 && overTop <= 0 ) {
385
- position.top = withinOffset;
386
-
387
- // Element is initially over both top and bottom of within
388
- } else {
389
- if ( overTop > overBottom ) {
390
- position.top = withinOffset + outerHeight - data.collisionHeight;
391
- } else {
392
- position.top = withinOffset;
393
- }
394
- }
395
-
396
- // Too far up -> align with top
397
- } else if ( overTop > 0 ) {
398
- position.top += overTop;
399
-
400
- // Too far down -> align with bottom edge
401
- } else if ( overBottom > 0 ) {
402
- position.top -= overBottom;
403
-
404
- // Adjust based on position and margin
405
- } else {
406
- position.top = max( position.top - collisionPosTop, position.top );
407
- }
408
- }
409
- },
410
- flip: {
411
- left: function( position, data ) {
412
- var within = data.within,
413
- withinOffset = within.offset.left + within.scrollLeft,
414
- outerWidth = within.width,
415
- offsetLeft = within.isWindow ? within.scrollLeft : within.offset.left,
416
- collisionPosLeft = position.left - data.collisionPosition.marginLeft,
417
- overLeft = collisionPosLeft - offsetLeft,
418
- overRight = collisionPosLeft + data.collisionWidth - outerWidth - offsetLeft,
419
- myOffset = data.my[ 0 ] === "left" ?
420
- -data.elemWidth :
421
- data.my[ 0 ] === "right" ?
422
- data.elemWidth :
423
- 0,
424
- atOffset = data.at[ 0 ] === "left" ?
425
- data.targetWidth :
426
- data.at[ 0 ] === "right" ?
427
- -data.targetWidth :
428
- 0,
429
- offset = -2 * data.offset[ 0 ],
430
- newOverRight,
431
- newOverLeft;
432
-
433
- if ( overLeft < 0 ) {
434
- newOverRight = position.left + myOffset + atOffset + offset + data.collisionWidth -
435
- outerWidth - withinOffset;
436
- if ( newOverRight < 0 || newOverRight < abs( overLeft ) ) {
437
- position.left += myOffset + atOffset + offset;
438
- }
439
- } else if ( overRight > 0 ) {
440
- newOverLeft = position.left - data.collisionPosition.marginLeft + myOffset +
441
- atOffset + offset - offsetLeft;
442
- if ( newOverLeft > 0 || abs( newOverLeft ) < overRight ) {
443
- position.left += myOffset + atOffset + offset;
444
- }
445
- }
446
- },
447
- top: function( position, data ) {
448
- var within = data.within,
449
- withinOffset = within.offset.top + within.scrollTop,
450
- outerHeight = within.height,
451
- offsetTop = within.isWindow ? within.scrollTop : within.offset.top,
452
- collisionPosTop = position.top - data.collisionPosition.marginTop,
453
- overTop = collisionPosTop - offsetTop,
454
- overBottom = collisionPosTop + data.collisionHeight - outerHeight - offsetTop,
455
- top = data.my[ 1 ] === "top",
456
- myOffset = top ?
457
- -data.elemHeight :
458
- data.my[ 1 ] === "bottom" ?
459
- data.elemHeight :
460
- 0,
461
- atOffset = data.at[ 1 ] === "top" ?
462
- data.targetHeight :
463
- data.at[ 1 ] === "bottom" ?
464
- -data.targetHeight :
465
- 0,
466
- offset = -2 * data.offset[ 1 ],
467
- newOverTop,
468
- newOverBottom;
469
- if ( overTop < 0 ) {
470
- newOverBottom = position.top + myOffset + atOffset + offset + data.collisionHeight -
471
- outerHeight - withinOffset;
472
- if ( newOverBottom < 0 || newOverBottom < abs( overTop ) ) {
473
- position.top += myOffset + atOffset + offset;
474
- }
475
- } else if ( overBottom > 0 ) {
476
- newOverTop = position.top - data.collisionPosition.marginTop + myOffset + atOffset +
477
- offset - offsetTop;
478
- if ( newOverTop > 0 || abs( newOverTop ) < overBottom ) {
479
- position.top += myOffset + atOffset + offset;
480
- }
481
- }
482
- }
483
- },
484
- flipfit: {
485
- left: function() {
486
- $.ui.position.flip.left.apply( this, arguments );
487
- $.ui.position.fit.left.apply( this, arguments );
488
- },
489
- top: function() {
490
- $.ui.position.flip.top.apply( this, arguments );
491
- $.ui.position.fit.top.apply( this, arguments );
492
- }
493
- }
494
- };
495
-
496
- } )();
497
-
498
- return $.ui.position;
499
-
500
- } ) );
@@ -1,42 +0,0 @@
1
- //= require rails_admin/jquery-ui/version
2
-
3
- ( function( factory ) {
4
- if ( typeof define === "function" && define.amd ) {
5
-
6
- // AMD. Register as an anonymous module.
7
- define( [ "jquery", "./version" ], factory );
8
- } else {
9
-
10
- // Browser globals
11
- factory( jQuery );
12
- }
13
- } ( function( $ ) {
14
- return $.ui.safeActiveElement = function( document ) {
15
- var activeElement;
16
-
17
- // Support: IE 9 only
18
- // IE9 throws an "Unspecified error" accessing document.activeElement from an <iframe>
19
- try {
20
- activeElement = document.activeElement;
21
- } catch ( error ) {
22
- activeElement = document.body;
23
- }
24
-
25
- // Support: IE 9 - 11 only
26
- // IE may return null instead of an element
27
- // Interestingly, this only seems to occur when NOT in an iframe
28
- if ( !activeElement ) {
29
- activeElement = document.body;
30
- }
31
-
32
- // Support: IE 11 only
33
- // IE11 returns a seemingly empty object in some cases when accessing
34
- // document.activeElement from an <iframe>
35
- if ( !activeElement.nodeName ) {
36
- activeElement = document.body;
37
- }
38
-
39
- return activeElement;
40
- };
41
-
42
- } ) );
@@ -1,47 +0,0 @@
1
- //= require rails_admin/jquery-ui/version
2
-
3
- /*!
4
- * jQuery UI Scroll Parent 1.12.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
- if ( typeof define === "function" && define.amd ) {
19
-
20
- // AMD. Register as an anonymous module.
21
- define( [ "jquery", "./version" ], factory );
22
- } else {
23
-
24
- // Browser globals
25
- factory( jQuery );
26
- }
27
- } ( function( $ ) {
28
-
29
- return $.fn.scrollParent = function( includeHidden ) {
30
- var position = this.css( "position" ),
31
- excludeStaticParent = position === "absolute",
32
- overflowRegex = includeHidden ? /(auto|scroll|hidden)/ : /(auto|scroll)/,
33
- scrollParent = this.parents().filter( function() {
34
- var parent = $( this );
35
- if ( excludeStaticParent && parent.css( "position" ) === "static" ) {
36
- return false;
37
- }
38
- return overflowRegex.test( parent.css( "overflow" ) + parent.css( "overflow-y" ) +
39
- parent.css( "overflow-x" ) );
40
- } ).eq( 0 );
41
-
42
- return position === "fixed" || !scrollParent.length ?
43
- $( this[ 0 ].ownerDocument || document ) :
44
- scrollParent;
45
- };
46
-
47
- } ) );
@@ -1,51 +0,0 @@
1
- //= require rails_admin/jquery-ui/version
2
-
3
- /*!
4
- * jQuery UI Unique ID 1.12.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: uniqueId
13
- //>>group: Core
14
- //>>description: Functions to generate and remove uniqueId's
15
- //>>docs: http://api.jqueryui.com/uniqueId/
16
-
17
- ( function( factory ) {
18
- if ( typeof define === "function" && define.amd ) {
19
-
20
- // AMD. Register as an anonymous module.
21
- define( [ "jquery", "./version" ], factory );
22
- } else {
23
-
24
- // Browser globals
25
- factory( jQuery );
26
- }
27
- } ( function( $ ) {
28
-
29
- return $.fn.extend( {
30
- uniqueId: ( function() {
31
- var uuid = 0;
32
-
33
- return function() {
34
- return this.each( function() {
35
- if ( !this.id ) {
36
- this.id = "ui-id-" + ( ++uuid );
37
- }
38
- } );
39
- };
40
- } )(),
41
-
42
- removeUniqueId: function() {
43
- return this.each( function() {
44
- if ( /^ui-id-\d+$/.test( this.id ) ) {
45
- $( this ).removeAttr( "id" );
46
- }
47
- } );
48
- }
49
- } );
50
-
51
- } ) );