rails_admin 2.0.2 → 3.1.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 (522) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +15 -16
  3. data/README.md +44 -44
  4. data/Rakefile +15 -2
  5. data/app/assets/javascripts/rails_admin/application.js.erb +29 -0
  6. data/app/assets/stylesheets/rails_admin/application.scss.erb +35 -0
  7. data/app/assets/stylesheets/rails_admin/custom/mixins.scss +1 -1
  8. data/app/assets/stylesheets/rails_admin/custom/variables.scss +1 -1
  9. data/app/controllers/rails_admin/application_controller.rb +6 -3
  10. data/app/controllers/rails_admin/main_controller.rb +55 -50
  11. data/app/helpers/rails_admin/application_helper.rb +129 -63
  12. data/app/helpers/rails_admin/form_builder.rb +25 -13
  13. data/app/helpers/rails_admin/main_helper.rb +18 -41
  14. data/app/views/kaminari/ra-twitter-bootstrap/_gap.html.erb +5 -0
  15. data/app/views/kaminari/ra-twitter-bootstrap/_next_page.html.erb +9 -0
  16. data/app/views/kaminari/ra-twitter-bootstrap/_page.html.erb +9 -0
  17. data/app/views/kaminari/ra-twitter-bootstrap/_paginator.html.erb +15 -0
  18. data/app/views/kaminari/ra-twitter-bootstrap/_prev_page.html.erb +9 -0
  19. data/app/views/kaminari/ra-twitter-bootstrap/without_count/_next_page.html.erb +9 -0
  20. data/app/views/kaminari/ra-twitter-bootstrap/without_count/_paginator.html.erb +8 -0
  21. data/app/views/kaminari/ra-twitter-bootstrap/without_count/_prev_page.html.erb +9 -0
  22. data/app/views/layouts/rails_admin/_head.html.erb +29 -0
  23. data/app/views/layouts/rails_admin/_navigation.html.erb +17 -0
  24. data/app/views/layouts/rails_admin/_secondary_navigation.html.erb +26 -0
  25. data/app/views/layouts/rails_admin/_sidebar_navigation.html.erb +5 -0
  26. data/app/views/layouts/rails_admin/application.html.erb +27 -0
  27. data/app/views/layouts/rails_admin/content.html.erb +22 -0
  28. data/app/views/layouts/rails_admin/modal.js.erb +7 -0
  29. data/app/views/rails_admin/main/_dashboard_history.html.erb +45 -0
  30. data/app/views/rails_admin/main/_delete_notice.html.erb +35 -0
  31. data/app/views/rails_admin/main/_form_action_text.html.erb +8 -0
  32. data/app/views/rails_admin/main/_form_boolean.html.erb +14 -0
  33. data/app/views/rails_admin/main/{_form_ck_editor.html.haml → _form_ck_editor.html.erb} +3 -3
  34. data/app/views/rails_admin/main/_form_code_mirror.html.erb +9 -0
  35. data/app/views/rails_admin/main/_form_colorpicker.html.erb +5 -0
  36. data/app/views/rails_admin/main/_form_datetime.html.erb +10 -0
  37. data/app/views/rails_admin/main/_form_enumeration.html.erb +25 -0
  38. data/app/views/rails_admin/main/_form_field.html.erb +1 -0
  39. data/app/views/rails_admin/main/_form_file_upload.html.erb +17 -0
  40. data/app/views/rails_admin/main/_form_filtering_multiselect.html.erb +49 -0
  41. data/app/views/rails_admin/main/_form_filtering_select.html.erb +33 -0
  42. data/app/views/rails_admin/main/_form_froala.html.erb +8 -0
  43. data/app/views/rails_admin/main/_form_multiple_file_upload.html.erb +20 -0
  44. data/app/views/rails_admin/main/_form_nested_many.html.erb +21 -0
  45. data/app/views/rails_admin/main/_form_nested_one.html.erb +21 -0
  46. data/app/views/rails_admin/main/_form_polymorphic_association.html.erb +32 -0
  47. data/app/views/rails_admin/main/_form_simple_mde.html.erb +8 -0
  48. data/app/views/rails_admin/main/_form_text.html.erb +1 -0
  49. data/app/views/rails_admin/main/_form_wysihtml5.html.erb +8 -0
  50. data/app/views/rails_admin/main/_submit_buttons.html.erb +25 -0
  51. data/app/views/rails_admin/main/bulk_delete.html.erb +19 -0
  52. data/app/views/rails_admin/main/dashboard.html.erb +64 -0
  53. data/app/views/rails_admin/main/delete.html.erb +21 -0
  54. data/app/views/rails_admin/main/edit.html.erb +3 -0
  55. data/app/views/rails_admin/main/export.html.erb +149 -0
  56. data/app/views/rails_admin/main/history.html.erb +80 -0
  57. data/app/views/rails_admin/main/index.html.erb +184 -0
  58. data/app/views/rails_admin/main/new.html.erb +3 -0
  59. data/app/views/rails_admin/main/show.html.erb +30 -0
  60. data/config/initializers/active_record_extensions.rb +25 -0
  61. data/config/initializers/mongoid_extensions.rb +3 -1
  62. data/config/locales/rails_admin.en.yml +8 -4
  63. data/config/routes.rb +2 -0
  64. data/lib/generators/rails_admin/importmap_formatter.rb +28 -0
  65. data/lib/generators/rails_admin/install_generator.rb +117 -5
  66. data/lib/generators/rails_admin/templates/initializer.erb +2 -1
  67. data/lib/generators/rails_admin/templates/rails_admin.js +1 -0
  68. data/lib/generators/rails_admin/templates/rails_admin.scss.erb +1 -0
  69. data/lib/generators/rails_admin/templates/rails_admin.webpacker.js +2 -0
  70. data/lib/generators/rails_admin/utils.rb +2 -0
  71. data/lib/rails_admin/abstract_model.rb +35 -15
  72. data/lib/rails_admin/adapters/active_record/association.rb +31 -2
  73. data/lib/rails_admin/adapters/active_record/object_extension.rb +31 -0
  74. data/lib/rails_admin/adapters/active_record/property.rb +4 -2
  75. data/lib/rails_admin/adapters/active_record.rb +67 -29
  76. data/lib/rails_admin/adapters/composite_primary_keys/association.rb +45 -0
  77. data/lib/rails_admin/adapters/composite_primary_keys.rb +40 -0
  78. data/lib/rails_admin/adapters/mongoid/association.rb +52 -13
  79. data/lib/rails_admin/adapters/mongoid/bson.rb +6 -5
  80. data/lib/rails_admin/adapters/mongoid/extension.rb +2 -0
  81. data/lib/rails_admin/adapters/mongoid/object_extension.rb +34 -0
  82. data/lib/rails_admin/adapters/mongoid/property.rb +7 -5
  83. data/lib/rails_admin/adapters/mongoid.rb +33 -23
  84. data/lib/rails_admin/config/actions/base.rb +11 -4
  85. data/lib/rails_admin/config/actions/bulk_delete.rb +4 -2
  86. data/lib/rails_admin/config/actions/dashboard.rb +16 -9
  87. data/lib/rails_admin/config/actions/delete.rb +11 -9
  88. data/lib/rails_admin/config/actions/edit.rb +13 -7
  89. data/lib/rails_admin/config/actions/export.rb +6 -3
  90. data/lib/rails_admin/config/actions/history_index.rb +4 -2
  91. data/lib/rails_admin/config/actions/history_show.rb +4 -2
  92. data/lib/rails_admin/config/actions/index.rb +9 -8
  93. data/lib/rails_admin/config/actions/new.rb +18 -10
  94. data/lib/rails_admin/config/actions/show.rb +3 -1
  95. data/lib/rails_admin/config/actions/show_in_app.rb +9 -3
  96. data/lib/rails_admin/config/actions.rb +6 -4
  97. data/lib/rails_admin/config/configurable.rb +4 -2
  98. data/lib/rails_admin/config/const_load_suppressor.rb +78 -0
  99. data/lib/rails_admin/config/fields/association.rb +21 -11
  100. data/lib/rails_admin/config/fields/base.rb +86 -32
  101. data/lib/rails_admin/config/fields/factories/action_text.rb +2 -0
  102. data/lib/rails_admin/config/fields/factories/active_storage.rb +5 -1
  103. data/lib/rails_admin/config/fields/factories/association.rb +12 -13
  104. data/lib/rails_admin/config/fields/factories/carrierwave.rb +6 -2
  105. data/lib/rails_admin/config/fields/factories/devise.rb +6 -2
  106. data/lib/rails_admin/config/fields/factories/dragonfly.rb +6 -2
  107. data/lib/rails_admin/config/fields/factories/enum.rb +2 -0
  108. data/lib/rails_admin/config/fields/factories/paperclip.rb +6 -2
  109. data/lib/rails_admin/config/fields/factories/password.rb +2 -0
  110. data/lib/rails_admin/config/fields/factories/shrine.rb +3 -1
  111. data/lib/rails_admin/config/fields/group.rb +3 -2
  112. data/lib/rails_admin/config/fields/types/action_text.rb +7 -1
  113. data/lib/rails_admin/config/fields/types/active_record_enum.rb +4 -0
  114. data/lib/rails_admin/config/fields/types/active_storage.rb +23 -3
  115. data/lib/rails_admin/config/fields/types/all.rb +4 -0
  116. data/lib/rails_admin/config/fields/types/belongs_to_association.rb +9 -15
  117. data/lib/rails_admin/config/fields/types/boolean.rb +38 -8
  118. data/lib/rails_admin/config/fields/types/bson_object_id.rb +2 -0
  119. data/lib/rails_admin/config/fields/types/carrierwave.rb +3 -0
  120. data/lib/rails_admin/config/fields/types/citext.rb +15 -0
  121. data/lib/rails_admin/config/fields/types/ck_editor.rb +2 -0
  122. data/lib/rails_admin/config/fields/types/code_mirror.rb +2 -0
  123. data/lib/rails_admin/config/fields/types/color.rb +8 -2
  124. data/lib/rails_admin/config/fields/types/composite_keys_belongs_to_association.rb +31 -0
  125. data/lib/rails_admin/config/fields/types/date.rb +12 -6
  126. data/lib/rails_admin/config/fields/types/datetime.rb +36 -21
  127. data/lib/rails_admin/config/fields/types/decimal.rb +11 -2
  128. data/lib/rails_admin/config/fields/types/dragonfly.rb +5 -1
  129. data/lib/rails_admin/config/fields/types/enum.rb +16 -3
  130. data/lib/rails_admin/config/fields/types/file_upload.rb +11 -4
  131. data/lib/rails_admin/config/fields/types/float.rb +11 -2
  132. data/lib/rails_admin/config/fields/types/froala.rb +2 -0
  133. data/lib/rails_admin/config/fields/types/has_and_belongs_to_many_association.rb +2 -0
  134. data/lib/rails_admin/config/fields/types/has_many_association.rb +7 -5
  135. data/lib/rails_admin/config/fields/types/has_one_association.rb +12 -14
  136. data/lib/rails_admin/config/fields/types/hidden.rb +2 -0
  137. data/lib/rails_admin/config/fields/types/inet.rb +2 -0
  138. data/lib/rails_admin/config/fields/types/integer.rb +4 -6
  139. data/lib/rails_admin/config/fields/types/json.rb +2 -0
  140. data/lib/rails_admin/config/fields/types/multiple_active_storage.rb +30 -2
  141. data/lib/rails_admin/config/fields/types/multiple_carrierwave.rb +3 -0
  142. data/lib/rails_admin/config/fields/types/multiple_file_upload.rb +8 -4
  143. data/lib/rails_admin/config/fields/types/numeric.rb +24 -0
  144. data/lib/rails_admin/config/fields/types/paperclip.rb +2 -0
  145. data/lib/rails_admin/config/fields/types/password.rb +2 -0
  146. data/lib/rails_admin/config/fields/types/polymorphic_association.rb +5 -2
  147. data/lib/rails_admin/config/fields/types/serialized.rb +2 -0
  148. data/lib/rails_admin/config/fields/types/shrine.rb +15 -11
  149. data/lib/rails_admin/config/fields/types/simple_mde.rb +2 -0
  150. data/lib/rails_admin/config/fields/types/string.rb +3 -1
  151. data/lib/rails_admin/config/fields/types/string_like.rb +6 -0
  152. data/lib/rails_admin/config/fields/types/text.rb +2 -0
  153. data/lib/rails_admin/config/fields/types/time.rb +16 -4
  154. data/lib/rails_admin/config/fields/types/timestamp.rb +2 -4
  155. data/lib/rails_admin/config/fields/types/uuid.rb +2 -0
  156. data/lib/rails_admin/config/fields/types/wysihtml5.rb +2 -0
  157. data/lib/rails_admin/config/fields/types.rb +3 -1
  158. data/lib/rails_admin/config/fields.rb +6 -2
  159. data/lib/rails_admin/config/groupable.rb +2 -0
  160. data/lib/rails_admin/config/has_description.rb +2 -0
  161. data/lib/rails_admin/config/has_fields.rb +12 -7
  162. data/lib/rails_admin/config/has_groups.rb +2 -0
  163. data/lib/rails_admin/config/hideable.rb +3 -1
  164. data/lib/rails_admin/config/inspectable.rb +3 -3
  165. data/lib/rails_admin/config/lazy_model.rb +13 -7
  166. data/lib/rails_admin/config/model.rb +22 -10
  167. data/lib/rails_admin/config/proxyable/proxy.rb +2 -0
  168. data/lib/rails_admin/config/proxyable.rb +2 -0
  169. data/lib/rails_admin/config/sections/base.rb +4 -3
  170. data/lib/rails_admin/config/sections/create.rb +2 -0
  171. data/lib/rails_admin/config/sections/edit.rb +2 -0
  172. data/lib/rails_admin/config/sections/export.rb +2 -0
  173. data/lib/rails_admin/config/sections/list.rb +14 -19
  174. data/lib/rails_admin/config/sections/modal.rb +2 -0
  175. data/lib/rails_admin/config/sections/nested.rb +2 -0
  176. data/lib/rails_admin/config/sections/show.rb +2 -0
  177. data/lib/rails_admin/config/sections/update.rb +2 -0
  178. data/lib/rails_admin/config/sections.rb +3 -1
  179. data/lib/rails_admin/config.rb +80 -47
  180. data/lib/rails_admin/engine.rb +43 -32
  181. data/lib/rails_admin/extension.rb +8 -14
  182. data/lib/rails_admin/extensions/cancancan/authorization_adapter.rb +25 -6
  183. data/lib/rails_admin/extensions/cancancan.rb +2 -0
  184. data/lib/rails_admin/extensions/controller_extension.rb +2 -0
  185. data/lib/rails_admin/extensions/paper_trail/auditing_adapter.rb +62 -35
  186. data/lib/rails_admin/extensions/paper_trail.rb +2 -0
  187. data/lib/rails_admin/extensions/pundit/authorization_adapter.rb +8 -7
  188. data/lib/rails_admin/extensions/pundit.rb +2 -0
  189. data/lib/rails_admin/support/csv_converter.rb +14 -15
  190. data/lib/rails_admin/support/datetime.rb +50 -85
  191. data/lib/rails_admin/support/es_module_processor.rb +23 -0
  192. data/lib/rails_admin/support/hash_helper.rb +8 -5
  193. data/lib/rails_admin/version.rb +41 -2
  194. data/lib/rails_admin.rb +7 -5
  195. data/lib/tasks/rails_admin.rake +19 -8
  196. data/package.json +30 -0
  197. data/src/rails_admin/base.js +29 -0
  198. data/src/rails_admin/filter-box.js +360 -0
  199. data/src/rails_admin/filtering-multiselect.js +389 -0
  200. data/src/rails_admin/filtering-select.js +308 -0
  201. data/src/rails_admin/i18n.js +18 -0
  202. data/src/rails_admin/jquery.js +3 -0
  203. data/src/rails_admin/nested-form-hooks.js +110 -0
  204. data/src/rails_admin/remote-form.js +193 -0
  205. data/src/rails_admin/sidescroll.js +20 -0
  206. data/src/rails_admin/styles/base/theming.scss +342 -0
  207. data/src/rails_admin/styles/base/variables.scss +3 -0
  208. data/src/rails_admin/styles/base.scss +27 -0
  209. data/src/rails_admin/styles/filtering-multiselect.scss +53 -0
  210. data/src/rails_admin/styles/filtering-select.scss +70 -0
  211. data/src/rails_admin/styles/widgets.scss +26 -0
  212. data/src/rails_admin/ui.js +176 -0
  213. data/src/rails_admin/vendor/jquery_nested_form.js +122 -0
  214. data/src/rails_admin/widgets.js +507 -0
  215. data/vendor/assets/fonts/rails_admin/fa-solid-900.ttf +0 -0
  216. data/vendor/assets/fonts/rails_admin/fa-solid-900.woff2 +0 -0
  217. data/vendor/assets/javascripts/rails_admin/bootstrap.js +5046 -0
  218. data/vendor/assets/javascripts/rails_admin/flatpickr-with-locales.js +11246 -0
  219. data/vendor/assets/javascripts/rails_admin/jquery-ui/data.js +41 -0
  220. data/vendor/assets/javascripts/rails_admin/jquery-ui/effect.js +1637 -0
  221. data/vendor/assets/javascripts/rails_admin/jquery-ui/ie.js +17 -0
  222. data/vendor/assets/javascripts/rails_admin/jquery-ui/keycode.js +47 -0
  223. data/vendor/assets/javascripts/rails_admin/jquery-ui/position.js +500 -0
  224. data/vendor/assets/javascripts/rails_admin/jquery-ui/safe-active-element.js +42 -0
  225. data/vendor/assets/javascripts/rails_admin/jquery-ui/scroll-parent.js +47 -0
  226. data/vendor/assets/javascripts/rails_admin/jquery-ui/unique-id.js +51 -0
  227. data/vendor/assets/javascripts/rails_admin/jquery-ui/version.js +17 -0
  228. data/vendor/assets/javascripts/rails_admin/jquery-ui/widget.js +735 -0
  229. data/vendor/assets/javascripts/rails_admin/jquery-ui/widgets/autocomplete.js +689 -0
  230. data/vendor/assets/javascripts/rails_admin/jquery-ui/widgets/menu.js +680 -0
  231. data/vendor/assets/javascripts/rails_admin/jquery-ui/widgets/mouse.js +230 -0
  232. data/vendor/assets/javascripts/rails_admin/jquery-ui/widgets/sortable.js +1561 -0
  233. data/vendor/assets/javascripts/rails_admin/jquery3.js +10881 -0
  234. data/vendor/assets/javascripts/rails_admin/popper.js +1974 -0
  235. data/vendor/assets/stylesheets/rails_admin/bootstrap/_accordion.scss +118 -0
  236. data/vendor/assets/stylesheets/rails_admin/bootstrap/_alert.scss +57 -0
  237. data/vendor/assets/stylesheets/rails_admin/bootstrap/_badge.scss +29 -0
  238. data/vendor/assets/stylesheets/rails_admin/bootstrap/_breadcrumb.scss +28 -0
  239. data/vendor/assets/stylesheets/rails_admin/bootstrap/_button-group.scss +139 -0
  240. data/vendor/assets/stylesheets/rails_admin/bootstrap/_buttons.scss +64 -110
  241. data/vendor/assets/stylesheets/rails_admin/bootstrap/_card.scss +216 -0
  242. data/vendor/assets/stylesheets/rails_admin/bootstrap/_carousel.scss +162 -176
  243. data/vendor/assets/stylesheets/rails_admin/bootstrap/_close.scss +31 -26
  244. data/vendor/assets/stylesheets/rails_admin/bootstrap/_containers.scss +41 -0
  245. data/vendor/assets/stylesheets/rails_admin/bootstrap/_dropdown.scss +240 -0
  246. data/vendor/assets/stylesheets/rails_admin/bootstrap/_forms.scss +9 -538
  247. data/vendor/assets/stylesheets/rails_admin/bootstrap/_functions.scss +302 -0
  248. data/vendor/assets/stylesheets/rails_admin/bootstrap/_grid.scss +18 -69
  249. data/vendor/assets/stylesheets/rails_admin/bootstrap/_helpers.scss +9 -0
  250. data/vendor/assets/stylesheets/rails_admin/bootstrap/_images.scss +42 -0
  251. data/vendor/assets/stylesheets/rails_admin/bootstrap/_list-group.scss +127 -84
  252. data/vendor/assets/stylesheets/rails_admin/bootstrap/_mixins.scss +26 -22
  253. data/vendor/assets/stylesheets/rails_admin/bootstrap/_modal.scss +209 -0
  254. data/vendor/assets/stylesheets/rails_admin/bootstrap/_nav.scss +139 -0
  255. data/vendor/assets/stylesheets/rails_admin/bootstrap/_navbar.scss +218 -542
  256. data/vendor/assets/stylesheets/rails_admin/bootstrap/_offcanvas.scss +83 -0
  257. data/vendor/assets/stylesheets/rails_admin/bootstrap/_pagination.scss +46 -70
  258. data/vendor/assets/stylesheets/rails_admin/bootstrap/_placeholders.scss +51 -0
  259. data/vendor/assets/stylesheets/rails_admin/bootstrap/_popover.scss +158 -0
  260. data/vendor/assets/stylesheets/rails_admin/bootstrap/_progress.scss +48 -0
  261. data/vendor/assets/stylesheets/rails_admin/bootstrap/_reboot.scss +625 -0
  262. data/vendor/assets/stylesheets/rails_admin/bootstrap/_root.scss +54 -0
  263. data/vendor/assets/stylesheets/rails_admin/bootstrap/_spinners.scss +69 -0
  264. data/vendor/assets/stylesheets/rails_admin/bootstrap/_tables.scss +100 -178
  265. data/vendor/assets/stylesheets/rails_admin/bootstrap/_toasts.scss +51 -0
  266. data/vendor/assets/stylesheets/rails_admin/bootstrap/_tooltip.scss +97 -77
  267. data/vendor/assets/stylesheets/rails_admin/bootstrap/_transitions.scss +27 -0
  268. data/vendor/assets/stylesheets/rails_admin/bootstrap/_type.scss +54 -254
  269. data/vendor/assets/stylesheets/rails_admin/bootstrap/_utilities.scss +628 -55
  270. data/vendor/assets/stylesheets/rails_admin/bootstrap/_variables.scss +1572 -781
  271. data/vendor/assets/stylesheets/rails_admin/bootstrap/bootstrap.scss +38 -35
  272. data/vendor/assets/stylesheets/rails_admin/bootstrap/forms/_floating-labels.scss +63 -0
  273. data/vendor/assets/stylesheets/rails_admin/bootstrap/forms/_form-check.scss +152 -0
  274. data/vendor/assets/stylesheets/rails_admin/bootstrap/forms/_form-control.scss +219 -0
  275. data/vendor/assets/stylesheets/rails_admin/bootstrap/forms/_form-range.scss +91 -0
  276. data/vendor/assets/stylesheets/rails_admin/bootstrap/forms/_form-select.scss +72 -0
  277. data/vendor/assets/stylesheets/rails_admin/bootstrap/forms/_form-text.scss +11 -0
  278. data/vendor/assets/stylesheets/rails_admin/bootstrap/forms/_input-group.scss +121 -0
  279. data/vendor/assets/stylesheets/rails_admin/bootstrap/forms/_labels.scss +36 -0
  280. data/vendor/assets/stylesheets/rails_admin/bootstrap/forms/_validation.scss +12 -0
  281. data/vendor/assets/stylesheets/rails_admin/bootstrap/helpers/_clearfix.scss +3 -0
  282. data/vendor/assets/stylesheets/rails_admin/bootstrap/helpers/_colored-links.scss +12 -0
  283. data/vendor/assets/stylesheets/rails_admin/bootstrap/helpers/_position.scss +30 -0
  284. data/vendor/assets/stylesheets/rails_admin/bootstrap/helpers/_ratio.scss +26 -0
  285. data/vendor/assets/stylesheets/rails_admin/bootstrap/helpers/_stacks.scss +15 -0
  286. data/vendor/assets/stylesheets/rails_admin/bootstrap/helpers/_stretched-link.scss +15 -0
  287. data/vendor/assets/stylesheets/rails_admin/bootstrap/helpers/_text-truncation.scss +7 -0
  288. data/vendor/assets/stylesheets/rails_admin/bootstrap/helpers/_visually-hidden.scss +8 -0
  289. data/vendor/assets/stylesheets/rails_admin/bootstrap/helpers/_vr.scss +8 -0
  290. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_alert.scss +11 -0
  291. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_backdrop.scss +14 -0
  292. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_border-radius.scss +72 -12
  293. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_box-shadow.scss +18 -0
  294. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_breakpoints.scss +127 -0
  295. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_buttons.scss +113 -30
  296. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_caret.scss +64 -0
  297. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_clearfix.scss +5 -18
  298. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_color-scheme.scss +7 -0
  299. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_container.scss +9 -0
  300. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_deprecate.scss +10 -0
  301. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_forms.scss +130 -70
  302. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_gradients.scss +27 -38
  303. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_grid.scss +127 -98
  304. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_image.scss +6 -24
  305. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_list-group.scss +13 -20
  306. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_lists.scss +7 -0
  307. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_pagination.scss +24 -16
  308. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_reset-text.scss +17 -0
  309. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_resize.scss +1 -1
  310. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_table-variants.scss +21 -0
  311. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/{_text-overflow.scss → _text-truncate.scss} +2 -2
  312. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_transition.scss +26 -0
  313. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_utilities.scss +89 -0
  314. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_visually-hidden.scss +29 -0
  315. data/vendor/assets/stylesheets/rails_admin/bootstrap/utilities/_api.scss +47 -0
  316. data/vendor/assets/stylesheets/rails_admin/bootstrap/vendor/_rfs.scss +354 -0
  317. data/vendor/assets/stylesheets/rails_admin/flatpickr.css +791 -0
  318. data/vendor/assets/stylesheets/rails_admin/font-awesome.scss +6291 -2282
  319. metadata +182 -330
  320. data/app/assets/images/rails_admin/aristo/images/bg_fallback.png +0 -0
  321. data/app/assets/images/rails_admin/aristo/images/icon_sprite.png +0 -0
  322. data/app/assets/images/rails_admin/aristo/images/progress_bar.gif +0 -0
  323. data/app/assets/images/rails_admin/aristo/images/slider_handles.png +0 -0
  324. data/app/assets/images/rails_admin/aristo/images/ui-icons_222222_256x240.png +0 -0
  325. data/app/assets/images/rails_admin/aristo/images/ui-icons_454545_256x240.png +0 -0
  326. data/app/assets/images/rails_admin/bullet_black.png +0 -0
  327. data/app/assets/images/rails_admin/bullet_white.png +0 -0
  328. data/app/assets/images/rails_admin/calendar.png +0 -0
  329. data/app/assets/images/rails_admin/clock.png +0 -0
  330. data/app/assets/images/rails_admin/logo.png +0 -0
  331. data/app/assets/images/rails_admin/magnifier.png +0 -0
  332. data/app/assets/images/rails_admin/multiselect/icon_sprite.png +0 -0
  333. data/app/assets/images/rails_admin/multiselect/ui-icon-circle-triangle-n-dark.png +0 -0
  334. data/app/assets/images/rails_admin/multiselect/ui-icon-circle-triangle-n-light.png +0 -0
  335. data/app/assets/images/rails_admin/multiselect/ui-icon-circle-triangle-s-dark.png +0 -0
  336. data/app/assets/images/rails_admin/multiselect/ui-icon-circle-triangle-s-light.png +0 -0
  337. data/app/assets/javascripts/rails_admin/jquery-ui.js.erb +0 -8
  338. data/app/assets/javascripts/rails_admin/ra.filter-box.js +0 -226
  339. data/app/assets/javascripts/rails_admin/ra.filtering-multiselect.js +0 -331
  340. data/app/assets/javascripts/rails_admin/ra.filtering-select.js +0 -294
  341. data/app/assets/javascripts/rails_admin/ra.i18n.js +0 -28
  342. data/app/assets/javascripts/rails_admin/ra.nested-form-hooks.js +0 -59
  343. data/app/assets/javascripts/rails_admin/ra.remote-form.js +0 -155
  344. data/app/assets/javascripts/rails_admin/ra.sidescroll.js +0 -31
  345. data/app/assets/javascripts/rails_admin/ra.widgets.js +0 -379
  346. data/app/assets/javascripts/rails_admin/rails_admin.js +0 -20
  347. data/app/assets/javascripts/rails_admin/ui.js +0 -135
  348. data/app/assets/stylesheets/rails_admin/aristo/images/bg_fallback.png +0 -0
  349. data/app/assets/stylesheets/rails_admin/aristo/images/icon_sprite.png +0 -0
  350. data/app/assets/stylesheets/rails_admin/aristo/images/progress_bar.gif +0 -0
  351. data/app/assets/stylesheets/rails_admin/aristo/images/slider_handles.png +0 -0
  352. data/app/assets/stylesheets/rails_admin/aristo/images/ui-icons_222222_256x240.png +0 -0
  353. data/app/assets/stylesheets/rails_admin/aristo/images/ui-icons_454545_256x240.png +0 -0
  354. data/app/assets/stylesheets/rails_admin/aristo/jquery-ui-1.8.7.custom.scss +0 -733
  355. data/app/assets/stylesheets/rails_admin/base/font-awesome-4-compability.scss +0 -153
  356. data/app/assets/stylesheets/rails_admin/base/theming.scss +0 -341
  357. data/app/assets/stylesheets/rails_admin/base/variables.scss +0 -1
  358. data/app/assets/stylesheets/rails_admin/ra.filtering-multiselect.scss +0 -88
  359. data/app/assets/stylesheets/rails_admin/ra.sidescroll.scss +0 -29
  360. data/app/assets/stylesheets/rails_admin/ra.widgets.scss +0 -17
  361. data/app/assets/stylesheets/rails_admin/rails_admin.scss.erb +0 -110
  362. data/app/assets/stylesheets/rails_admin/themes/cerulean/mixins.scss +0 -0
  363. data/app/assets/stylesheets/rails_admin/themes/cerulean/theming.scss +0 -133
  364. data/app/assets/stylesheets/rails_admin/themes/cerulean/variables.scss +0 -857
  365. data/app/assets/stylesheets/rails_admin/themes/default/mixins.scss +0 -8
  366. data/app/assets/stylesheets/rails_admin/themes/default/theming.scss +0 -11
  367. data/app/assets/stylesheets/rails_admin/themes/default/variables.scss +0 -12
  368. data/app/views/kaminari/ra-twitter-bootstrap/_gap.html.haml +0 -2
  369. data/app/views/kaminari/ra-twitter-bootstrap/_next_page.html.haml +0 -4
  370. data/app/views/kaminari/ra-twitter-bootstrap/_page.html.haml +0 -4
  371. data/app/views/kaminari/ra-twitter-bootstrap/_paginator.html.haml +0 -9
  372. data/app/views/kaminari/ra-twitter-bootstrap/_prev_page.html.haml +0 -4
  373. data/app/views/kaminari/ra-twitter-bootstrap/without_count/_next_page.html.haml +0 -4
  374. data/app/views/kaminari/ra-twitter-bootstrap/without_count/_paginator.html.haml +0 -4
  375. data/app/views/kaminari/ra-twitter-bootstrap/without_count/_prev_page.html.haml +0 -4
  376. data/app/views/layouts/rails_admin/_head.html.haml +0 -7
  377. data/app/views/layouts/rails_admin/_navigation.html.haml +0 -12
  378. data/app/views/layouts/rails_admin/_secondary_navigation.html.haml +0 -10
  379. data/app/views/layouts/rails_admin/_sidebar_navigation.html.haml +0 -3
  380. data/app/views/layouts/rails_admin/application.html.haml +0 -16
  381. data/app/views/layouts/rails_admin/pjax.html.haml +0 -12
  382. data/app/views/rails_admin/main/_dashboard_history.html.haml +0 -21
  383. data/app/views/rails_admin/main/_delete_notice.html.haml +0 -24
  384. data/app/views/rails_admin/main/_form_action_text.html.haml +0 -7
  385. data/app/views/rails_admin/main/_form_boolean.html.haml +0 -3
  386. data/app/views/rails_admin/main/_form_code_mirror.html.haml +0 -9
  387. data/app/views/rails_admin/main/_form_colorpicker.html.haml +0 -1
  388. data/app/views/rails_admin/main/_form_datetime.html.haml +0 -5
  389. data/app/views/rails_admin/main/_form_enumeration.html.haml +0 -18
  390. data/app/views/rails_admin/main/_form_field.html.haml +0 -1
  391. data/app/views/rails_admin/main/_form_file_upload.html.haml +0 -17
  392. data/app/views/rails_admin/main/_form_filtering_multiselect.html.haml +0 -48
  393. data/app/views/rails_admin/main/_form_filtering_select.html.haml +0 -37
  394. data/app/views/rails_admin/main/_form_froala.html.haml +0 -8
  395. data/app/views/rails_admin/main/_form_multiple_file_upload.html.haml +0 -16
  396. data/app/views/rails_admin/main/_form_nested_many.html.haml +0 -15
  397. data/app/views/rails_admin/main/_form_nested_one.html.haml +0 -17
  398. data/app/views/rails_admin/main/_form_polymorphic_association.html.haml +0 -26
  399. data/app/views/rails_admin/main/_form_simple_mde.haml +0 -8
  400. data/app/views/rails_admin/main/_form_text.html.haml +0 -1
  401. data/app/views/rails_admin/main/_form_wysihtml5.html.haml +0 -8
  402. data/app/views/rails_admin/main/_submit_buttons.html.haml +0 -16
  403. data/app/views/rails_admin/main/bulk_delete.html.haml +0 -11
  404. data/app/views/rails_admin/main/dashboard.html.haml +0 -34
  405. data/app/views/rails_admin/main/delete.html.haml +0 -18
  406. data/app/views/rails_admin/main/edit.html.haml +0 -2
  407. data/app/views/rails_admin/main/export.html.haml +0 -92
  408. data/app/views/rails_admin/main/history.html.haml +0 -51
  409. data/app/views/rails_admin/main/index.html.haml +0 -126
  410. data/app/views/rails_admin/main/new.html.haml +0 -2
  411. data/app/views/rails_admin/main/show.html.haml +0 -15
  412. data/config/initializers/devise_patch.rb +0 -9
  413. data/config/initializers/haml.rb +0 -5
  414. data/lib/rails_admin/adapters/active_record/abstract_object.rb +0 -32
  415. data/lib/rails_admin/adapters/mongoid/abstract_object.rb +0 -42
  416. data/lib/rails_admin/bootstrap-sass/compass_functions.rb +0 -28
  417. data/lib/rails_admin/bootstrap-sass/sass_functions.rb +0 -16
  418. data/lib/rails_admin/bootstrap-sass.rb +0 -49
  419. data/lib/rails_admin/extensions/history/auditing_adapter.rb +0 -37
  420. data/lib/rails_admin/extensions/history/history.rb +0 -44
  421. data/lib/rails_admin/extensions/history.rb +0 -3
  422. data/lib/rails_admin/support/i18n.rb +0 -43
  423. data/vendor/assets/fonts/rails_admin/FontAwesome.otf +0 -0
  424. data/vendor/assets/fonts/rails_admin/fontawesome-webfont.eot +0 -0
  425. data/vendor/assets/fonts/rails_admin/fontawesome-webfont.svg +0 -2671
  426. data/vendor/assets/fonts/rails_admin/fontawesome-webfont.ttf +0 -0
  427. data/vendor/assets/fonts/rails_admin/fontawesome-webfont.woff +0 -0
  428. data/vendor/assets/fonts/rails_admin/fontawesome-webfont.woff2 +0 -0
  429. data/vendor/assets/images/rails_admin/bootstrap/glyphicons-halflings-white.png +0 -0
  430. data/vendor/assets/images/rails_admin/bootstrap/glyphicons-halflings.png +0 -0
  431. data/vendor/assets/images/rails_admin/colorpicker/colorpicker_background.png +0 -0
  432. data/vendor/assets/images/rails_admin/colorpicker/colorpicker_hex.png +0 -0
  433. data/vendor/assets/images/rails_admin/colorpicker/colorpicker_hsb_b.png +0 -0
  434. data/vendor/assets/images/rails_admin/colorpicker/colorpicker_hsb_h.png +0 -0
  435. data/vendor/assets/images/rails_admin/colorpicker/colorpicker_hsb_s.png +0 -0
  436. data/vendor/assets/images/rails_admin/colorpicker/colorpicker_indic.gif +0 -0
  437. data/vendor/assets/images/rails_admin/colorpicker/colorpicker_overlay.png +0 -0
  438. data/vendor/assets/images/rails_admin/colorpicker/colorpicker_rgb_b.png +0 -0
  439. data/vendor/assets/images/rails_admin/colorpicker/colorpicker_rgb_g.png +0 -0
  440. data/vendor/assets/images/rails_admin/colorpicker/colorpicker_rgb_r.png +0 -0
  441. data/vendor/assets/images/rails_admin/colorpicker/colorpicker_select.gif +0 -0
  442. data/vendor/assets/images/rails_admin/colorpicker/colorpicker_submit.png +0 -0
  443. data/vendor/assets/images/rails_admin/colorpicker/custom_background.png +0 -0
  444. data/vendor/assets/images/rails_admin/colorpicker/custom_hex.png +0 -0
  445. data/vendor/assets/images/rails_admin/colorpicker/custom_hsb_b.png +0 -0
  446. data/vendor/assets/images/rails_admin/colorpicker/custom_hsb_h.png +0 -0
  447. data/vendor/assets/images/rails_admin/colorpicker/custom_hsb_s.png +0 -0
  448. data/vendor/assets/images/rails_admin/colorpicker/custom_indic.gif +0 -0
  449. data/vendor/assets/images/rails_admin/colorpicker/custom_rgb_b.png +0 -0
  450. data/vendor/assets/images/rails_admin/colorpicker/custom_rgb_g.png +0 -0
  451. data/vendor/assets/images/rails_admin/colorpicker/custom_rgb_r.png +0 -0
  452. data/vendor/assets/images/rails_admin/colorpicker/custom_submit.png +0 -0
  453. data/vendor/assets/images/rails_admin/colorpicker/select.png +0 -0
  454. data/vendor/assets/images/rails_admin/colorpicker/select2.png +0 -0
  455. data/vendor/assets/images/rails_admin/colorpicker/slider.png +0 -0
  456. data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-affix.js +0 -142
  457. data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-alert.js +0 -92
  458. data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-button.js +0 -110
  459. data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-carousel.js +0 -223
  460. data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-collapse.js +0 -170
  461. data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-dropdown.js +0 -151
  462. data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-modal.js +0 -280
  463. data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-popover.js +0 -113
  464. data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-scrollspy.js +0 -170
  465. data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-tab.js +0 -128
  466. data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-tooltip.js +0 -457
  467. data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-transition.js +0 -59
  468. data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap-typeahead.js +0 -1782
  469. data/vendor/assets/javascripts/rails_admin/bootstrap/bootstrap.js +0 -13
  470. data/vendor/assets/javascripts/rails_admin/bootstrap-datetimepicker.js +0 -2444
  471. data/vendor/assets/javascripts/rails_admin/jquery.colorpicker.js +0 -484
  472. data/vendor/assets/javascripts/rails_admin/jquery.pjax.js +0 -741
  473. data/vendor/assets/javascripts/rails_admin/moment-with-locales.js +0 -16165
  474. data/vendor/assets/stylesheets/rails_admin/_bootstrap-datetimepicker.scss +0 -343
  475. data/vendor/assets/stylesheets/rails_admin/bootstrap/_alerts.scss +0 -68
  476. data/vendor/assets/stylesheets/rails_admin/bootstrap/_badges.scss +0 -57
  477. data/vendor/assets/stylesheets/rails_admin/bootstrap/_breadcrumbs.scss +0 -26
  478. data/vendor/assets/stylesheets/rails_admin/bootstrap/_button-groups.scss +0 -240
  479. data/vendor/assets/stylesheets/rails_admin/bootstrap/_code.scss +0 -68
  480. data/vendor/assets/stylesheets/rails_admin/bootstrap/_component-animations.scss +0 -35
  481. data/vendor/assets/stylesheets/rails_admin/bootstrap/_dropdowns.scss +0 -215
  482. data/vendor/assets/stylesheets/rails_admin/bootstrap/_glyphicons.scss +0 -237
  483. data/vendor/assets/stylesheets/rails_admin/bootstrap/_input-groups.scss +0 -166
  484. data/vendor/assets/stylesheets/rails_admin/bootstrap/_jumbotron.scss +0 -48
  485. data/vendor/assets/stylesheets/rails_admin/bootstrap/_labels.scss +0 -66
  486. data/vendor/assets/stylesheets/rails_admin/bootstrap/_media.scss +0 -56
  487. data/vendor/assets/stylesheets/rails_admin/bootstrap/_modals.scss +0 -150
  488. data/vendor/assets/stylesheets/rails_admin/bootstrap/_navs.scss +0 -242
  489. data/vendor/assets/stylesheets/rails_admin/bootstrap/_normalize.scss +0 -425
  490. data/vendor/assets/stylesheets/rails_admin/bootstrap/_pager.scss +0 -55
  491. data/vendor/assets/stylesheets/rails_admin/bootstrap/_panels.scss +0 -243
  492. data/vendor/assets/stylesheets/rails_admin/bootstrap/_popovers.scss +0 -133
  493. data/vendor/assets/stylesheets/rails_admin/bootstrap/_print.scss +0 -101
  494. data/vendor/assets/stylesheets/rails_admin/bootstrap/_progress-bars.scss +0 -105
  495. data/vendor/assets/stylesheets/rails_admin/bootstrap/_responsive-embed.scss +0 -34
  496. data/vendor/assets/stylesheets/rails_admin/bootstrap/_responsive-utilities.scss +0 -174
  497. data/vendor/assets/stylesheets/rails_admin/bootstrap/_scaffolding.scss +0 -150
  498. data/vendor/assets/stylesheets/rails_admin/bootstrap/_theme.scss +0 -258
  499. data/vendor/assets/stylesheets/rails_admin/bootstrap/_thumbnails.scss +0 -38
  500. data/vendor/assets/stylesheets/rails_admin/bootstrap/_wells.scss +0 -29
  501. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_alerts.scss +0 -14
  502. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_background-variant.scss +0 -11
  503. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_center-block.scss +0 -7
  504. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_grid-framework.scss +0 -81
  505. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_hide-text.scss +0 -21
  506. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_labels.scss +0 -12
  507. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_nav-divider.scss +0 -10
  508. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_nav-vertical-align.scss +0 -9
  509. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_opacity.scss +0 -8
  510. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_panels.scss +0 -24
  511. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_progress-bar.scss +0 -10
  512. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_reset-filter.scss +0 -8
  513. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_responsive-visibility.scss +0 -21
  514. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_size.scss +0 -10
  515. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_tab-focus.scss +0 -9
  516. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_table-row.scss +0 -28
  517. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_text-emphasis.scss +0 -11
  518. data/vendor/assets/stylesheets/rails_admin/bootstrap/mixins/_vendor-prefixes.scss +0 -219
  519. data/vendor/assets/stylesheets/rails_admin/bootstrap-datetimepicker-build.scss +0 -16
  520. data/vendor/assets/stylesheets/rails_admin/jquery.colorpicker.scss +0 -182
  521. /data/{app/assets/stylesheets/rails_admin → src/rails_admin/styles}/base/README.txt +0 -0
  522. /data/{app/assets/stylesheets/rails_admin → src/rails_admin/styles}/base/mixins.scss +0 -0
@@ -1,741 +0,0 @@
1
- // jquery.pjax.js
2
- // copyright chris wanstrath
3
- // https://github.com/defunkt/jquery-pjax
4
-
5
- (function($){
6
-
7
- // When called on a container with a selector, fetches the href with
8
- // ajax into the container or with the data-pjax attribute on the link
9
- // itself.
10
- //
11
- // Tries to make sure the back button and ctrl+click work the way
12
- // you'd expect.
13
- //
14
- // Exported as $.fn.pjax
15
- //
16
- // Accepts a jQuery ajax options object that may include these
17
- // pjax specific options:
18
- //
19
- //
20
- // container - Where to stick the response body. Usually a String selector.
21
- // $(container).html(xhr.responseBody)
22
- // (default: current jquery context)
23
- // push - Whether to pushState the URL. Defaults to true (of course).
24
- // replace - Want to use replaceState instead? That's cool.
25
- //
26
- // For convenience the second parameter can be either the container or
27
- // the options object.
28
- //
29
- // Returns the jQuery object
30
- function fnPjax(selector, container, options) {
31
- var context = this
32
- return this.on('click.pjax', selector, function(event) {
33
- var opts = $.extend({}, optionsFor(container, options))
34
- if (!opts.container)
35
- opts.container = $(this).attr('data-pjax') || context
36
- handleClick(event, opts)
37
- })
38
- }
39
-
40
- // Public: pjax on click handler
41
- //
42
- // Exported as $.pjax.click.
43
- //
44
- // event - "click" jQuery.Event
45
- // options - pjax options
46
- //
47
- // Examples
48
- //
49
- // $(document).on('click', 'a', $.pjax.click)
50
- // // is the same as
51
- // $(document).pjax('a')
52
- //
53
- // $(document).on('click', 'a', function(event) {
54
- // var container = $(this).closest('[data-pjax-container]')
55
- // $.pjax.click(event, container)
56
- // })
57
- //
58
- // Returns nothing.
59
- function handleClick(event, container, options) {
60
- options = optionsFor(container, options)
61
-
62
- var link = event.currentTarget
63
-
64
- if (link.tagName.toUpperCase() !== 'A')
65
- throw "$.fn.pjax or $.pjax.click requires an anchor element"
66
-
67
- // Middle click, cmd click, and ctrl click should open
68
- // links in a new tab as normal.
69
- if ( event.which > 1 || event.metaKey || event.ctrlKey || event.shiftKey || event.altKey )
70
- return
71
-
72
- // Ignore cross origin links
73
- if ( location.protocol !== link.protocol || location.host !== link.host )
74
- return
75
-
76
- // Ignore anchors on the same page
77
- if (link.hash && link.href.replace(link.hash, '') ===
78
- location.href.replace(location.hash, ''))
79
- return
80
-
81
- // Ignore empty anchor "foo.html#"
82
- if (link.href === location.href + '#')
83
- return
84
-
85
- var defaults = {
86
- url: link.href,
87
- container: $(link).attr('data-pjax'),
88
- target: link,
89
- fragment: null
90
- }
91
-
92
- pjax($.extend({}, defaults, options))
93
-
94
- event.preventDefault()
95
- }
96
-
97
- // Public: pjax on form submit handler
98
- //
99
- // Exported as $.pjax.submit
100
- //
101
- // event - "click" jQuery.Event
102
- // options - pjax options
103
- //
104
- // Examples
105
- //
106
- // $(document).on('submit', 'form', function(event) {
107
- // var container = $(this).closest('[data-pjax-container]')
108
- // $.pjax.submit(event, container)
109
- // })
110
- //
111
- // Returns nothing.
112
- function handleSubmit(event, container, options) {
113
- options = optionsFor(container, options)
114
-
115
- var form = event.currentTarget
116
-
117
- if (form.tagName.toUpperCase() !== 'FORM')
118
- throw "$.pjax.submit requires a form element"
119
-
120
- var defaults = {
121
- type: form.method,
122
- url: form.action,
123
- data: $(form).serializeArray(),
124
- container: $(form).attr('data-pjax'),
125
- target: form,
126
- fragment: null
127
- }
128
-
129
- pjax($.extend({}, defaults, options))
130
-
131
- event.preventDefault()
132
- }
133
-
134
- // Loads a URL with ajax, puts the response body inside a container,
135
- // then pushState()'s the loaded URL.
136
- //
137
- // Works just like $.ajax in that it accepts a jQuery ajax
138
- // settings object (with keys like url, type, data, etc).
139
- //
140
- // Accepts these extra keys:
141
- //
142
- // container - Where to stick the response body.
143
- // $(container).html(xhr.responseBody)
144
- // push - Whether to pushState the URL. Defaults to true (of course).
145
- // replace - Want to use replaceState instead? That's cool.
146
- //
147
- // Use it just like $.ajax:
148
- //
149
- // var xhr = $.pjax({ url: this.href, container: '#main' })
150
- // console.log( xhr.readyState )
151
- //
152
- // Returns whatever $.ajax returns.
153
- function pjax(options) {
154
- options = $.extend(true, {}, $.ajaxSettings, pjax.defaults, options)
155
-
156
- if ($.isFunction(options.url)) {
157
- options.url = options.url()
158
- }
159
-
160
- var target = options.target
161
-
162
- var hash = parseURL(options.url).hash
163
-
164
- var context = options.context = findContainerFor(options.container)
165
-
166
- // We want the browser to maintain two separate internal caches: one
167
- // for pjax'd partial page loads and one for normal page loads.
168
- // Without adding this secret parameter, some browsers will often
169
- // confuse the two.
170
- if (!options.data) options.data = {}
171
- options.data._pjax = context.selector
172
-
173
- function fire(type, args) {
174
- var event = $.Event(type, { relatedTarget: target })
175
- context.trigger(event, args)
176
- return !event.isDefaultPrevented()
177
- }
178
-
179
- var timeoutTimer
180
-
181
- options.beforeSend = function(xhr, settings) {
182
- // No timeout for non-GET requests
183
- // Its not safe to request the resource again with a fallback method.
184
- if (settings.type !== 'GET') {
185
- settings.timeout = 0
186
- }
187
-
188
- xhr.setRequestHeader('X-PJAX', 'true')
189
- xhr.setRequestHeader('X-PJAX-Container', context.selector)
190
-
191
- if (!fire('pjax:beforeSend', [xhr, settings]))
192
- return false
193
-
194
- if (settings.timeout > 0) {
195
- timeoutTimer = setTimeout(function() {
196
- if (fire('pjax:timeout', [xhr, options]))
197
- xhr.abort('timeout')
198
- }, settings.timeout)
199
-
200
- // Clear timeout setting so jquerys internal timeout isn't invoked
201
- settings.timeout = 0
202
- }
203
-
204
- options.requestUrl = parseURL(settings.url).href
205
- }
206
-
207
- options.complete = function(xhr, textStatus) {
208
- if (timeoutTimer)
209
- clearTimeout(timeoutTimer)
210
-
211
- fire('pjax:complete', [xhr, textStatus, options])
212
-
213
- fire('pjax:end', [xhr, options])
214
- }
215
-
216
- options.error = function(xhr, textStatus, errorThrown) {
217
- var container = extractContainer("", xhr, options)
218
-
219
- var allowed = fire('pjax:error', [xhr, textStatus, errorThrown, options])
220
- if (options.type == 'GET' && textStatus !== 'abort' && allowed) {
221
- locationReplace(container.url)
222
- }
223
- }
224
-
225
- options.success = function(data, status, xhr) {
226
- var container = extractContainer(data, xhr, options)
227
-
228
- if (!container.contents) {
229
- locationReplace(container.url)
230
- return
231
- }
232
-
233
- pjax.state = {
234
- id: options.id || uniqueId(),
235
- url: container.url,
236
- title: container.title,
237
- container: context.selector,
238
- fragment: options.fragment,
239
- timeout: options.timeout
240
- }
241
-
242
- if (options.push || options.replace) {
243
- window.history.replaceState(pjax.state, container.title, container.url)
244
- }
245
-
246
- if (container.title) document.title = container.title
247
- context.html(container.contents)
248
-
249
- // Scroll to top by default
250
- if (typeof options.scrollTo === 'number')
251
- $(window).scrollTop(options.scrollTo)
252
-
253
- // Google Analytics support
254
- if ( (options.replace || options.push) && window._gaq )
255
- _gaq.push(['_trackPageview'])
256
-
257
- // If the URL has a hash in it, make sure the browser
258
- // knows to navigate to the hash.
259
- if ( hash !== '' ) {
260
- // Avoid using simple hash set here. Will add another history
261
- // entry. Replace the url with replaceState and scroll to target
262
- // by hand.
263
- //
264
- // window.location.hash = hash
265
- var url = parseURL(container.url)
266
- url.hash = hash
267
-
268
- pjax.state.url = url.href
269
- window.history.replaceState(pjax.state, container.title, url.href)
270
-
271
- var target = $(url.hash)
272
- if (target.length) $(window).scrollTop(target.offset().top)
273
- }
274
-
275
- fire('pjax:success', [data, status, xhr, options])
276
- }
277
-
278
-
279
- // Initialize pjax.state for the initial page load. Assume we're
280
- // using the container and options of the link we're loading for the
281
- // back button to the initial page. This ensures good back button
282
- // behavior.
283
- if (!pjax.state) {
284
- pjax.state = {
285
- id: uniqueId(),
286
- url: window.location.href,
287
- title: document.title,
288
- container: context.selector,
289
- fragment: options.fragment,
290
- timeout: options.timeout
291
- }
292
- window.history.replaceState(pjax.state, document.title)
293
- }
294
-
295
- // Cancel the current request if we're already pjaxing
296
- var xhr = pjax.xhr
297
- if ( xhr && xhr.readyState < 4) {
298
- xhr.onreadystatechange = $.noop
299
- xhr.abort()
300
- }
301
-
302
- pjax.options = options
303
- var xhr = pjax.xhr = $.ajax(options)
304
-
305
- if (xhr.readyState > 0) {
306
- if (options.push && !options.replace) {
307
- // Cache current container element before replacing it
308
- cachePush(pjax.state.id, context.clone().contents())
309
-
310
- window.history.pushState(null, "", stripPjaxParam(options.requestUrl))
311
- }
312
-
313
- fire('pjax:start', [xhr, options])
314
- fire('pjax:send', [xhr, options])
315
- }
316
-
317
- return pjax.xhr
318
- }
319
-
320
- // Public: Reload current page with pjax.
321
- //
322
- // Returns whatever $.pjax returns.
323
- function pjaxReload(container, options) {
324
- var defaults = {
325
- url: window.location.href,
326
- push: false,
327
- replace: true,
328
- scrollTo: false
329
- }
330
-
331
- return pjax($.extend(defaults, optionsFor(container, options)))
332
- }
333
-
334
- // Internal: Hard replace current state with url.
335
- //
336
- // Work for around WebKit
337
- // https://bugs.webkit.org/show_bug.cgi?id=93506
338
- //
339
- // Returns nothing.
340
- function locationReplace(url) {
341
- window.history.replaceState(null, "", "#")
342
- window.location.replace(url)
343
- }
344
-
345
- // popstate handler takes care of the back and forward buttons
346
- //
347
- // You probably shouldn't use pjax on pages with other pushState
348
- // stuff yet.
349
- function onPjaxPopstate(event) {
350
- var state = event.state
351
-
352
- if (state && state.container) {
353
- var container = $(state.container)
354
- if (container.length) {
355
- var contents = cacheMapping[state.id]
356
-
357
- if (pjax.state) {
358
- // Since state ids always increase, we can deduce the history
359
- // direction from the previous state.
360
- var direction = pjax.state.id < state.id ? 'forward' : 'back'
361
-
362
- // Cache current container before replacement and inform the
363
- // cache which direction the history shifted.
364
- cachePop(direction, pjax.state.id, container.clone().contents())
365
- } else {
366
- // Page was reloaded but we have an existing history entry.
367
- // Set it to our initial state.
368
- pjax.state = state;
369
- return;
370
- }
371
-
372
- var popstateEvent = $.Event('pjax:popstate', {
373
- state: state,
374
- direction: direction
375
- })
376
- container.trigger(popstateEvent)
377
-
378
- var options = {
379
- id: state.id,
380
- url: state.url,
381
- container: container,
382
- push: false,
383
- fragment: state.fragment,
384
- timeout: state.timeout,
385
- scrollTo: false
386
- }
387
-
388
- if (contents) {
389
- container.trigger('pjax:start', [null, options])
390
-
391
- if (state.title) document.title = state.title
392
- container.html(contents)
393
- pjax.state = state
394
-
395
- container.trigger('pjax:end', [null, options])
396
- } else {
397
- pjax(options)
398
- }
399
-
400
- // Force reflow/relayout before the browser tries to restore the
401
- // scroll position.
402
- container[0].offsetHeight
403
- } else {
404
- locationReplace(location.href)
405
- }
406
- }
407
- }
408
-
409
- // Fallback version of main pjax function for browsers that don't
410
- // support pushState.
411
- //
412
- // Returns nothing since it retriggers a hard form submission.
413
- function fallbackPjax(options) {
414
- var url = $.isFunction(options.url) ? options.url() : options.url,
415
- method = options.type ? options.type.toUpperCase() : 'GET'
416
-
417
- var form = $('<form>', {
418
- method: method === 'GET' ? 'GET' : 'POST',
419
- action: url,
420
- style: 'display:none'
421
- })
422
-
423
- if (method !== 'GET' && method !== 'POST') {
424
- form.append($('<input>', {
425
- type: 'hidden',
426
- name: '_method',
427
- value: method.toLowerCase()
428
- }))
429
- }
430
-
431
- var data = options.data
432
- if (typeof data === 'string') {
433
- $.each(data.split('&'), function(index, value) {
434
- var pair = value.split('=')
435
- form.append($('<input>', {type: 'hidden', name: pair[0], value: pair[1]}))
436
- })
437
- } else if (typeof data === 'object') {
438
- for (var key in data)
439
- form.append($('<input>', {type: 'hidden', name: key, value: data[key]}))
440
- }
441
-
442
- $(document.body).append(form)
443
- form.submit()
444
- }
445
-
446
- // Internal: Generate unique id for state object.
447
- //
448
- // Use a timestamp instead of a counter since ids should still be
449
- // unique across page loads.
450
- //
451
- // Returns Number.
452
- function uniqueId() {
453
- return (new Date).getTime()
454
- }
455
-
456
- // Internal: Strips _pjax param from url
457
- //
458
- // url - String
459
- //
460
- // Returns String.
461
- function stripPjaxParam(url) {
462
- return url
463
- .replace(/\?_pjax=[^&]+&?/, '?')
464
- .replace(/_pjax=[^&]+&?/, '')
465
- .replace(/[\?&]$/, '')
466
- }
467
-
468
- // Internal: Parse URL components and returns a Locationish object.
469
- //
470
- // url - String URL
471
- //
472
- // Returns HTMLAnchorElement that acts like Location.
473
- function parseURL(url) {
474
- var a = document.createElement('a')
475
- a.href = url
476
- return a
477
- }
478
-
479
- // Internal: Build options Object for arguments.
480
- //
481
- // For convenience the first parameter can be either the container or
482
- // the options object.
483
- //
484
- // Examples
485
- //
486
- // optionsFor('#container')
487
- // // => {container: '#container'}
488
- //
489
- // optionsFor('#container', {push: true})
490
- // // => {container: '#container', push: true}
491
- //
492
- // optionsFor({container: '#container', push: true})
493
- // // => {container: '#container', push: true}
494
- //
495
- // Returns options Object.
496
- function optionsFor(container, options) {
497
- // Both container and options
498
- if ( container && options )
499
- options.container = container
500
-
501
- // First argument is options Object
502
- else if ( $.isPlainObject(container) )
503
- options = container
504
-
505
- // Only container
506
- else
507
- options = {container: container}
508
-
509
- // Find and validate container
510
- if (options.container)
511
- options.container = findContainerFor(options.container)
512
-
513
- return options
514
- }
515
-
516
- // Internal: Find container element for a variety of inputs.
517
- //
518
- // Because we can't persist elements using the history API, we must be
519
- // able to find a String selector that will consistently find the Element.
520
- //
521
- // container - A selector String, jQuery object, or DOM Element.
522
- //
523
- // Returns a jQuery object whose context is `document` and has a selector.
524
- function findContainerFor(container) {
525
- container = $(container)
526
-
527
- if ( !container.length ) {
528
- throw "no pjax container for " + container.selector
529
- } else if ( container.selector !== '' && container.context === document ) {
530
- return container
531
- } else if ( container.attr('id') ) {
532
- return $('#' + container.attr('id'))
533
- } else {
534
- throw "cant get selector for pjax container!"
535
- }
536
- }
537
-
538
- // Internal: Filter and find all elements matching the selector.
539
- //
540
- // Where $.fn.find only matches descendants, findAll will test all the
541
- // top level elements in the jQuery object as well.
542
- //
543
- // elems - jQuery object of Elements
544
- // selector - String selector to match
545
- //
546
- // Returns a jQuery object.
547
- function findAll(elems, selector) {
548
- return elems.filter(selector).add(elems.find(selector));
549
- }
550
-
551
- // Internal: Extracts container and metadata from response.
552
- //
553
- // 1. Extracts X-PJAX-URL header if set
554
- // 2. Extracts inline <title> tags
555
- // 3. Builds response Element and extracts fragment if set
556
- //
557
- // data - String response data
558
- // xhr - XHR response
559
- // options - pjax options Object
560
- //
561
- // Returns an Object with url, title, and contents keys.
562
- function extractContainer(data, xhr, options) {
563
- var obj = {}
564
-
565
- // Prefer X-PJAX-URL header if it was set, otherwise fallback to
566
- // using the original requested url.
567
- obj.url = stripPjaxParam(xhr.getResponseHeader('X-PJAX-URL') || options.requestUrl)
568
-
569
- // Attempt to parse response html into elements
570
- if (/<html/i.test(data)) {
571
- var $head = $(data.match(/<head[^>]*>([\s\S.]*)<\/head>/i)[0])
572
- var $body = $(data.match(/<body[^>]*>([\s\S.]*)<\/body>/i)[0])
573
- } else {
574
- var $head = $body = $(data)
575
- }
576
-
577
- // If response data is empty, return fast
578
- if ($body.length === 0)
579
- return obj
580
-
581
- // If there's a <title> tag in the header, use it as
582
- // the page's title.
583
- obj.title = findAll($head, 'title').last().text()
584
-
585
- if (options.fragment) {
586
- // If they specified a fragment, look for it in the response
587
- // and pull it out.
588
- if (options.fragment === 'body') {
589
- var $fragment = $body
590
- } else {
591
- var $fragment = findAll($body, options.fragment).first()
592
- }
593
-
594
- if ($fragment.length) {
595
- obj.contents = $fragment.contents()
596
-
597
- // If there's no title, look for data-title and title attributes
598
- // on the fragment
599
- if (!obj.title)
600
- obj.title = $fragment.attr('title') || $fragment.data('title')
601
- }
602
-
603
- } else if (!/<html/i.test(data)) {
604
- obj.contents = $body
605
- }
606
-
607
- // Clean up any <title> tags
608
- if (obj.contents) {
609
- // Remove any parent title elements
610
- obj.contents = obj.contents.not('title')
611
-
612
- // Then scrub any titles from their descendents
613
- obj.contents.find('title').remove()
614
- }
615
-
616
- // Trim any whitespace off the title
617
- if (obj.title) obj.title = $.trim(obj.title)
618
-
619
- return obj
620
- }
621
-
622
- // Internal: History DOM caching class.
623
- var cacheMapping = {}
624
- var cacheForwardStack = []
625
- var cacheBackStack = []
626
-
627
- // Push previous state id and container contents into the history
628
- // cache. Should be called in conjunction with `pushState` to save the
629
- // previous container contents.
630
- //
631
- // id - State ID Number
632
- // value - DOM Element to cache
633
- //
634
- // Returns nothing.
635
- function cachePush(id, value) {
636
- cacheMapping[id] = value
637
- cacheBackStack.push(id)
638
-
639
- // Remove all entires in forward history stack after pushing
640
- // a new page.
641
- while (cacheForwardStack.length)
642
- delete cacheMapping[cacheForwardStack.shift()]
643
-
644
- // Trim back history stack to max cache length.
645
- while (cacheBackStack.length > pjax.defaults.maxCacheLength)
646
- delete cacheMapping[cacheBackStack.shift()]
647
- }
648
-
649
- // Shifts cache from directional history cache. Should be
650
- // called on `popstate` with the previous state id and container
651
- // contents.
652
- //
653
- // direction - "forward" or "back" String
654
- // id - State ID Number
655
- // value - DOM Element to cache
656
- //
657
- // Returns nothing.
658
- function cachePop(direction, id, value) {
659
- var pushStack, popStack
660
- cacheMapping[id] = value
661
-
662
- if (direction === 'forward') {
663
- pushStack = cacheBackStack
664
- popStack = cacheForwardStack
665
- } else {
666
- pushStack = cacheForwardStack
667
- popStack = cacheBackStack
668
- }
669
-
670
- pushStack.push(id)
671
- if (id = popStack.pop())
672
- delete cacheMapping[id]
673
- }
674
-
675
- // Install pjax functions on $.pjax to enable pushState behavior.
676
- //
677
- // Does nothing if already enabled.
678
- //
679
- // Examples
680
- //
681
- // $.pjax.enable()
682
- //
683
- // Returns nothing.
684
- function enable() {
685
- $.fn.pjax = fnPjax
686
- $.pjax = pjax
687
- $.pjax.enable = $.noop
688
- $.pjax.disable = disable
689
- $.pjax.click = handleClick
690
- $.pjax.submit = handleSubmit
691
- $.pjax.reload = pjaxReload
692
- $.pjax.defaults = {
693
- timeout: 650,
694
- push: true,
695
- replace: false,
696
- type: 'GET',
697
- dataType: 'html',
698
- scrollTo: 0,
699
- maxCacheLength: 20
700
- }
701
- $(window).bind('popstate.pjax', onPjaxPopstate)
702
- }
703
-
704
- // Disable pushState behavior.
705
- //
706
- // This is the case when a browser doesn't support pushState. It is
707
- // sometimes useful to disable pushState for debugging on a modern
708
- // browser.
709
- //
710
- // Examples
711
- //
712
- // $.pjax.disable()
713
- //
714
- // Returns nothing.
715
- function disable() {
716
- $.fn.pjax = function() { return this }
717
- $.pjax = fallbackPjax
718
- $.pjax.enable = enable
719
- $.pjax.disable = $.noop
720
- $.pjax.click = $.noop
721
- $.pjax.submit = $.noop
722
- $.pjax.reload = function() { window.location.reload() }
723
-
724
- $(window).unbind('popstate.pjax', onPjaxPopstate)
725
- }
726
-
727
-
728
- // Add the state property to jQuery's event object so we can use it in
729
- // $(window).bind('popstate')
730
- if ( $.inArray('state', $.event.props) < 0 )
731
- $.event.props.push('state')
732
-
733
- // Is pjax supported by this browser?
734
- $.support.pjax =
735
- window.history && window.history.pushState && window.history.replaceState &&
736
- // pushState isn't reliable on iOS until 5.
737
- !navigator.userAgent.match(/((iPod|iPhone|iPad).+\bOS\s+[1-4]|WebApps\/.+CFNetwork)/)
738
-
739
- $.support.pjax ? enable() : disable()
740
-
741
- })(jQuery);