activeadmin 3.2.4 → 4.0.0.beta1

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of activeadmin might be problematic. Click here for more details.

Files changed (339) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +2 -69
  3. data/CONTRIBUTING.md +25 -108
  4. data/README.md +19 -32
  5. data/app/assets/config/active_admin_manifest.js +2 -0
  6. data/app/controllers/active_admin/base_controller/menu.rb +39 -0
  7. data/{lib → app/controllers}/active_admin/base_controller.rb +46 -18
  8. data/{lib → app/controllers}/active_admin/page_controller.rb +0 -4
  9. data/{lib → app/controllers}/active_admin/resource_controller/action_builder.rb +1 -1
  10. data/{lib → app/controllers}/active_admin/resource_controller/data_access.rb +2 -2
  11. data/{lib → app/controllers}/active_admin/resource_controller/scoping.rb +1 -1
  12. data/{lib → app/controllers}/active_admin/resource_controller/streaming.rb +2 -2
  13. data/app/controllers/active_admin/resource_controller.rb +102 -0
  14. data/app/helpers/active_admin/auto_link_helper.rb +66 -0
  15. data/app/helpers/active_admin/breadcrumb_helper.rb +41 -0
  16. data/app/helpers/active_admin/display_helper.rb +117 -0
  17. data/app/helpers/active_admin/form_helper.rb +95 -0
  18. data/app/helpers/active_admin/index_helper.rb +40 -0
  19. data/app/helpers/active_admin/layout_helper.rb +63 -0
  20. data/app/javascript/active_admin/features/batch_actions.js +89 -0
  21. data/app/javascript/active_admin/features/dark_mode_toggle.js +37 -0
  22. data/app/javascript/active_admin/features/filters.js +34 -0
  23. data/app/javascript/active_admin/features/has_many.js +28 -0
  24. data/app/javascript/active_admin/features/main_menu.js +12 -0
  25. data/app/javascript/active_admin/features/per_page.js +9 -0
  26. data/app/javascript/active_admin/utils/dom.js +17 -0
  27. data/app/javascript/active_admin.js +10 -0
  28. data/app/views/active_admin/_flash_messages.html.erb +22 -0
  29. data/app/views/active_admin/_html_head.html.erb +13 -0
  30. data/app/views/active_admin/_main_navigation.html.erb +28 -0
  31. data/app/views/active_admin/_page_header.html.erb +27 -0
  32. data/app/views/active_admin/_sidebar.html.erb +5 -0
  33. data/app/views/active_admin/_site_footer.html.erb +7 -0
  34. data/app/views/active_admin/_site_header.html.erb +30 -0
  35. data/app/views/active_admin/devise/confirmations/new.html.erb +5 -3
  36. data/app/views/active_admin/devise/passwords/edit.html.erb +5 -3
  37. data/app/views/active_admin/devise/passwords/new.html.erb +5 -4
  38. data/app/views/active_admin/devise/registrations/new.html.erb +6 -4
  39. data/app/views/active_admin/devise/sessions/new.html.erb +6 -4
  40. data/app/views/active_admin/devise/shared/_links.erb +3 -1
  41. data/app/views/active_admin/devise/unlocks/new.html.erb +6 -4
  42. data/app/views/{kaminari/active_admin_countless → active_admin/kaminari}/_gap.html.erb +3 -1
  43. data/app/views/active_admin/kaminari/_next_page.html.erb +16 -0
  44. data/app/views/active_admin/kaminari/_page.html.erb +14 -0
  45. data/app/views/{kaminari/active_admin_countless → active_admin/kaminari}/_paginator.html.erb +1 -2
  46. data/app/views/active_admin/kaminari/_prev_page.html.erb +16 -0
  47. data/app/views/active_admin/page/index.html.arb +5 -1
  48. data/app/views/active_admin/resource/_active_filters.html.erb +32 -0
  49. data/app/views/active_admin/resource/_batch_actions_dropdown.html.erb +19 -0
  50. data/app/views/active_admin/resource/_form.html.arb +16 -0
  51. data/app/views/active_admin/resource/_form_default.html.arb +12 -0
  52. data/app/views/active_admin/resource/_index_as_table_default.html.arb +9 -0
  53. data/app/views/active_admin/resource/_index_blank_slate.html.erb +14 -0
  54. data/app/views/active_admin/resource/_index_empty_results.html.erb +5 -0
  55. data/app/views/active_admin/resource/_index_table_actions_default.html.erb +9 -0
  56. data/app/views/active_admin/resource/_show_default.html.arb +3 -0
  57. data/app/views/active_admin/resource/edit.html.arb +1 -1
  58. data/app/views/active_admin/resource/index.html.arb +94 -1
  59. data/app/views/active_admin/resource/new.html.arb +1 -1
  60. data/app/views/active_admin/resource/show.html.arb +12 -1
  61. data/app/views/active_admin/shared/_action_items.html.erb +3 -0
  62. data/app/views/active_admin/shared/_download_format_links.html.erb +7 -0
  63. data/app/views/active_admin/shared/_resource_comments.html.erb +51 -0
  64. data/app/views/active_admin/shared/_sidebar_section.html.arb +7 -0
  65. data/app/views/active_admin/shared/_sidebar_sections.html.erb +5 -0
  66. data/app/views/layouts/active_admin.html.erb +20 -0
  67. data/app/views/layouts/active_admin_logged_out.html.erb +8 -45
  68. data/config/locales/ar.yml +0 -16
  69. data/config/locales/az.yml +0 -16
  70. data/config/locales/bg.yml +0 -9
  71. data/config/locales/bs.yml +0 -7
  72. data/config/locales/ca.yml +0 -9
  73. data/config/locales/cs.yml +0 -9
  74. data/config/locales/da.yml +0 -16
  75. data/config/locales/de-CH.yml +0 -10
  76. data/config/locales/de.yml +0 -16
  77. data/config/locales/el.yml +0 -13
  78. data/config/locales/en-CA.yml +0 -16
  79. data/config/locales/en-GB.yml +0 -16
  80. data/config/locales/en.yml +18 -28
  81. data/config/locales/eo.yml +0 -17
  82. data/config/locales/es-MX.yml +0 -9
  83. data/config/locales/es.yml +0 -16
  84. data/config/locales/fa.yml +0 -9
  85. data/config/locales/fi.yml +0 -9
  86. data/config/locales/fr.yml +32 -26
  87. data/config/locales/he.yml +0 -16
  88. data/config/locales/hr.yml +0 -9
  89. data/config/locales/hu.yml +0 -6
  90. data/config/locales/id.yml +0 -16
  91. data/config/locales/it.yml +0 -16
  92. data/config/locales/ja.yml +0 -16
  93. data/config/locales/ko.yml +0 -9
  94. data/config/locales/lt.yml +0 -16
  95. data/config/locales/lv.yml +0 -6
  96. data/config/locales/mk.yml +0 -15
  97. data/config/locales/nb.yml +0 -12
  98. data/config/locales/nl.yml +21 -29
  99. data/config/locales/pl.yml +0 -16
  100. data/config/locales/pt-BR.yml +0 -16
  101. data/config/locales/pt-PT.yml +0 -6
  102. data/config/locales/ro.yml +0 -6
  103. data/config/locales/ru.yml +0 -16
  104. data/config/locales/sk.yml +0 -16
  105. data/config/locales/sv-SE.yml +0 -16
  106. data/config/locales/tr.yml +0 -16
  107. data/config/locales/uk.yml +0 -16
  108. data/config/locales/vi.yml +0 -16
  109. data/config/locales/zh-CN.yml +0 -16
  110. data/config/locales/zh-TW.yml +0 -16
  111. data/lib/active_admin/application.rb +1 -9
  112. data/lib/active_admin/batch_actions/controller.rb +1 -4
  113. data/lib/active_admin/batch_actions/resource_extension.rb +6 -13
  114. data/lib/active_admin/batch_actions/views/batch_action_form.rb +0 -6
  115. data/lib/active_admin/batch_actions/views/selection_cells.rb +2 -2
  116. data/lib/active_admin/batch_actions.rb +0 -5
  117. data/lib/active_admin/callbacks.rb +6 -4
  118. data/lib/active_admin/component.rb +0 -1
  119. data/lib/active_admin/csv_builder.rb +1 -1
  120. data/lib/active_admin/devise.rb +3 -3
  121. data/lib/active_admin/dsl.rb +2 -2
  122. data/lib/active_admin/dynamic_settings_node.rb +4 -4
  123. data/lib/active_admin/engine.rb +19 -6
  124. data/lib/active_admin/filters/active.rb +6 -4
  125. data/lib/active_admin/filters/active_filter.rb +1 -3
  126. data/lib/active_admin/filters/forms.rb +1 -42
  127. data/lib/active_admin/filters/resource_extension.rb +17 -9
  128. data/lib/active_admin/filters.rb +0 -2
  129. data/lib/active_admin/form_builder.rb +15 -14
  130. data/lib/active_admin/inputs/filters/base/search_method_select.rb +8 -10
  131. data/lib/active_admin/inputs/filters/base.rb +1 -1
  132. data/lib/active_admin/inputs/filters/check_boxes_input.rb +1 -6
  133. data/lib/active_admin/inputs/filters/date_range_input.rb +4 -2
  134. data/lib/active_admin/inputs.rb +0 -3
  135. data/lib/active_admin/menu.rb +10 -7
  136. data/lib/active_admin/menu_collection.rb +1 -1
  137. data/lib/active_admin/menu_item.rb +24 -3
  138. data/lib/active_admin/namespace.rb +2 -44
  139. data/lib/active_admin/namespace_settings.rb +2 -35
  140. data/lib/active_admin/order_clause.rb +4 -1
  141. data/lib/active_admin/orm/active_record/comments/views/active_admin_comments.rb +3 -75
  142. data/lib/active_admin/orm/active_record/comments.rb +10 -5
  143. data/lib/active_admin/pundit_adapter.rb +1 -1
  144. data/lib/active_admin/resource/action_items.rb +15 -20
  145. data/lib/active_admin/resource/attributes.rb +1 -8
  146. data/lib/active_admin/resource/naming.rb +1 -2
  147. data/lib/active_admin/resource.rb +1 -0
  148. data/lib/active_admin/resource_dsl.rb +1 -1
  149. data/lib/active_admin/scope.rb +1 -1
  150. data/lib/active_admin/settings_node.rb +1 -1
  151. data/lib/active_admin/sidebar_section.rb +0 -5
  152. data/lib/active_admin/version.rb +1 -1
  153. data/lib/active_admin/view_helpers.rb +0 -12
  154. data/lib/active_admin/views/components/active_admin_form.rb +21 -29
  155. data/lib/active_admin/views/components/attributes_table.rb +4 -12
  156. data/lib/active_admin/views/components/index_list.rb +10 -23
  157. data/lib/active_admin/views/components/paginated_collection.rb +34 -39
  158. data/lib/active_admin/views/components/panel.rb +2 -10
  159. data/lib/active_admin/views/components/scopes.rb +12 -21
  160. data/lib/active_admin/views/components/status_tag.rb +22 -19
  161. data/lib/active_admin/views/components/table_for.rb +19 -24
  162. data/lib/active_admin/views/components/tabs.rb +10 -11
  163. data/lib/active_admin/views/index_as_table.rb +24 -97
  164. data/lib/active_admin.rb +7 -11
  165. data/lib/generators/active_admin/assets/assets_generator.rb +4 -4
  166. data/lib/generators/active_admin/assets/templates/active_admin.css +3 -0
  167. data/lib/generators/active_admin/assets/templates/tailwind.config.js +18 -0
  168. data/lib/generators/active_admin/install/install_generator.rb +2 -8
  169. data/lib/generators/active_admin/install/templates/active_admin.rb.erb +10 -87
  170. data/lib/generators/active_admin/install/templates/dashboard.rb +8 -25
  171. data/lib/generators/active_admin/page/page_generator.rb +0 -1
  172. data/lib/generators/active_admin/resource/resource_generator.rb +46 -7
  173. data/lib/generators/active_admin/resource/templates/resource.rb.erb +42 -0
  174. data/lib/generators/active_admin/views_generator.rb +18 -0
  175. metadata +67 -214
  176. data/app/assets/javascripts/active_admin/base.js +0 -521
  177. data/app/assets/stylesheets/active_admin/_base.scss +0 -57
  178. data/app/assets/stylesheets/active_admin/_forms.scss +0 -315
  179. data/app/assets/stylesheets/active_admin/_header.scss +0 -188
  180. data/app/assets/stylesheets/active_admin/_mixins.scss +0 -1
  181. data/app/assets/stylesheets/active_admin/_normalize.scss +0 -349
  182. data/app/assets/stylesheets/active_admin/_print.scss +0 -287
  183. data/app/assets/stylesheets/active_admin/_typography.scss +0 -100
  184. data/app/assets/stylesheets/active_admin/components/_batch_actions.scss +0 -6
  185. data/app/assets/stylesheets/active_admin/components/_blank_slates.scss +0 -30
  186. data/app/assets/stylesheets/active_admin/components/_breadcrumbs.scss +0 -20
  187. data/app/assets/stylesheets/active_admin/components/_buttons.scss +0 -6
  188. data/app/assets/stylesheets/active_admin/components/_columns.scss +0 -3
  189. data/app/assets/stylesheets/active_admin/components/_comments.scss +0 -41
  190. data/app/assets/stylesheets/active_admin/components/_date_picker.scss +0 -148
  191. data/app/assets/stylesheets/active_admin/components/_dropdown_menu.scss +0 -154
  192. data/app/assets/stylesheets/active_admin/components/_flash_messages.scss +0 -37
  193. data/app/assets/stylesheets/active_admin/components/_grid.scss +0 -9
  194. data/app/assets/stylesheets/active_admin/components/_index_list.scss +0 -12
  195. data/app/assets/stylesheets/active_admin/components/_links.scss +0 -5
  196. data/app/assets/stylesheets/active_admin/components/_modal_dialog.scss +0 -34
  197. data/app/assets/stylesheets/active_admin/components/_pagination.scss +0 -58
  198. data/app/assets/stylesheets/active_admin/components/_panels.scss +0 -6
  199. data/app/assets/stylesheets/active_admin/components/_scopes.scss +0 -13
  200. data/app/assets/stylesheets/active_admin/components/_status_tags.scss +0 -12
  201. data/app/assets/stylesheets/active_admin/components/_table_tools.scss +0 -70
  202. data/app/assets/stylesheets/active_admin/components/_tables.scss +0 -112
  203. data/app/assets/stylesheets/active_admin/components/_tabs.scss +0 -68
  204. data/app/assets/stylesheets/active_admin/components/_unsupported_browser.scss +0 -16
  205. data/app/assets/stylesheets/active_admin/mixins/_all.scss +0 -8
  206. data/app/assets/stylesheets/active_admin/mixins/_buttons.scss +0 -65
  207. data/app/assets/stylesheets/active_admin/mixins/_gradients.scss +0 -28
  208. data/app/assets/stylesheets/active_admin/mixins/_rounded.scss +0 -22
  209. data/app/assets/stylesheets/active_admin/mixins/_sections.scss +0 -41
  210. data/app/assets/stylesheets/active_admin/mixins/_shadows.scss +0 -15
  211. data/app/assets/stylesheets/active_admin/mixins/_typography.scss +0 -3
  212. data/app/assets/stylesheets/active_admin/mixins/_utilities.scss +0 -17
  213. data/app/assets/stylesheets/active_admin/mixins/_variables.scss +0 -51
  214. data/app/assets/stylesheets/active_admin/pages/_logged_out.scss +0 -44
  215. data/app/assets/stylesheets/active_admin/structure/_footer.scss +0 -19
  216. data/app/assets/stylesheets/active_admin/structure/_main_structure.scss +0 -29
  217. data/app/assets/stylesheets/active_admin/structure/_title_bar.scss +0 -43
  218. data/app/javascript/active_admin/base.js +0 -28
  219. data/app/javascript/active_admin/ext/jquery-ui.js +0 -7
  220. data/app/javascript/active_admin/ext/jquery.js +0 -9
  221. data/app/javascript/active_admin/initializers/batch-actions.js +0 -61
  222. data/app/javascript/active_admin/initializers/checkbox-toggler.js +0 -3
  223. data/app/javascript/active_admin/initializers/datepicker.js +0 -16
  224. data/app/javascript/active_admin/initializers/dropdown-menu.js +0 -9
  225. data/app/javascript/active_admin/initializers/filters.js +0 -10
  226. data/app/javascript/active_admin/initializers/has-many.js +0 -98
  227. data/app/javascript/active_admin/initializers/per-page.js +0 -13
  228. data/app/javascript/active_admin/initializers/table-checkbox-toggler.js +0 -3
  229. data/app/javascript/active_admin/initializers/tabs.js +0 -6
  230. data/app/javascript/active_admin/lib/checkbox-toggler.js +0 -49
  231. data/app/javascript/active_admin/lib/dropdown-menu.js +0 -116
  232. data/app/javascript/active_admin/lib/filters.js +0 -39
  233. data/app/javascript/active_admin/lib/modal-dialog.js +0 -63
  234. data/app/javascript/active_admin/lib/per-page.js +0 -38
  235. data/app/javascript/active_admin/lib/table-checkbox-toggler.js +0 -38
  236. data/app/javascript/active_admin/lib/utils.js +0 -40
  237. data/app/views/kaminari/active_admin/_first_page.html.erb +0 -11
  238. data/app/views/kaminari/active_admin/_gap.html.erb +0 -8
  239. data/app/views/kaminari/active_admin/_last_page.html.erb +0 -11
  240. data/app/views/kaminari/active_admin/_next_page.html.erb +0 -11
  241. data/app/views/kaminari/active_admin/_page.html.erb +0 -12
  242. data/app/views/kaminari/active_admin/_paginator.html.erb +0 -25
  243. data/app/views/kaminari/active_admin/_prev_page.html.erb +0 -11
  244. data/app/views/kaminari/active_admin_countless/_first_page.html.erb +0 -11
  245. data/app/views/kaminari/active_admin_countless/_next_page.html.erb +0 -11
  246. data/app/views/kaminari/active_admin_countless/_page.html.erb +0 -12
  247. data/app/views/kaminari/active_admin_countless/_prev_page.html.erb +0 -11
  248. data/app/views/layouts/active_admin.html.arb +0 -2
  249. data/lib/active_admin/abstract_view_factory.rb +0 -48
  250. data/lib/active_admin/asset_registration.rb +0 -30
  251. data/lib/active_admin/base_controller/menu.rb +0 -35
  252. data/lib/active_admin/batch_actions/views/batch_action_selector.rb +0 -59
  253. data/lib/active_admin/filters/active_sidebar.rb +0 -28
  254. data/lib/active_admin/generators/boilerplate.rb +0 -54
  255. data/lib/active_admin/helpers/collection.rb +0 -21
  256. data/lib/active_admin/helpers/i18n.rb +0 -8
  257. data/lib/active_admin/inputs/datepicker_input.rb +0 -28
  258. data/lib/active_admin/inputs/filters/date_picker_input.rb +0 -14
  259. data/lib/active_admin/orm/active_record/comments/show_page_helper.rb +0 -24
  260. data/lib/active_admin/orm/mongoid.rb +0 -2
  261. data/lib/active_admin/resource_controller/sidebars.rb +0 -19
  262. data/lib/active_admin/resource_controller.rb +0 -68
  263. data/lib/active_admin/view_factory.rb +0 -28
  264. data/lib/active_admin/view_helpers/active_admin_application_helper.rb +0 -13
  265. data/lib/active_admin/view_helpers/auto_link_helper.rb +0 -46
  266. data/lib/active_admin/view_helpers/breadcrumb_helper.rb +0 -34
  267. data/lib/active_admin/view_helpers/display_helper.rb +0 -119
  268. data/lib/active_admin/view_helpers/download_format_links_helper.rb +0 -60
  269. data/lib/active_admin/view_helpers/fields_for.rb +0 -51
  270. data/lib/active_admin/view_helpers/flash_helper.rb +0 -15
  271. data/lib/active_admin/view_helpers/form_helper.rb +0 -21
  272. data/lib/active_admin/view_helpers/scope_name_helper.rb +0 -17
  273. data/lib/active_admin/view_helpers/sidebar_helper.rb +0 -16
  274. data/lib/active_admin/view_helpers/title_helper.rb +0 -12
  275. data/lib/active_admin/view_helpers/view_factory_helper.rb +0 -12
  276. data/lib/active_admin/views/action_items.rb +0 -18
  277. data/lib/active_admin/views/components/active_filters_sidebar_content.rb +0 -59
  278. data/lib/active_admin/views/components/blank_slate.rb +0 -18
  279. data/lib/active_admin/views/components/columns.rb +0 -162
  280. data/lib/active_admin/views/components/dropdown_menu.rb +0 -69
  281. data/lib/active_admin/views/components/menu.rb +0 -33
  282. data/lib/active_admin/views/components/menu_item.rb +0 -59
  283. data/lib/active_admin/views/components/sidebar.rb +0 -14
  284. data/lib/active_admin/views/components/sidebar_section.rb +0 -35
  285. data/lib/active_admin/views/components/site_title.rb +0 -55
  286. data/lib/active_admin/views/components/unsupported_browser.rb +0 -12
  287. data/lib/active_admin/views/footer.rb +0 -32
  288. data/lib/active_admin/views/header.rb +0 -20
  289. data/lib/active_admin/views/index_as_block.rb +0 -37
  290. data/lib/active_admin/views/index_as_blog.rb +0 -156
  291. data/lib/active_admin/views/index_as_grid.rb +0 -81
  292. data/lib/active_admin/views/pages/base.rb +0 -134
  293. data/lib/active_admin/views/pages/form.rb +0 -65
  294. data/lib/active_admin/views/pages/index.rb +0 -166
  295. data/lib/active_admin/views/pages/layout.rb +0 -27
  296. data/lib/active_admin/views/pages/page.rb +0 -31
  297. data/lib/active_admin/views/pages/show.rb +0 -60
  298. data/lib/active_admin/views/tabbed_navigation.rb +0 -12
  299. data/lib/active_admin/views/title_bar.rb +0 -56
  300. data/lib/generators/active_admin/assets/templates/active_admin.js +0 -1
  301. data/lib/generators/active_admin/assets/templates/active_admin.scss +0 -17
  302. data/lib/generators/active_admin/resource/templates/admin.rb.erb +0 -46
  303. data/lib/generators/active_admin/webpacker/plugins/jquery.js +0 -7
  304. data/lib/generators/active_admin/webpacker/templates/active_admin.js +0 -5
  305. data/lib/generators/active_admin/webpacker/templates/active_admin.scss +0 -17
  306. data/lib/generators/active_admin/webpacker/templates/print.scss +0 -2
  307. data/lib/generators/active_admin/webpacker/webpacker_generator.rb +0 -27
  308. data/vendor/assets/javascripts/jquery-ui/data.js +0 -45
  309. data/vendor/assets/javascripts/jquery-ui/disable-selection.js +0 -51
  310. data/vendor/assets/javascripts/jquery-ui/focusable.js +0 -89
  311. data/vendor/assets/javascripts/jquery-ui/form-reset-mixin.js +0 -83
  312. data/vendor/assets/javascripts/jquery-ui/form.js +0 -25
  313. data/vendor/assets/javascripts/jquery-ui/ie.js +0 -20
  314. data/vendor/assets/javascripts/jquery-ui/keycode.js +0 -51
  315. data/vendor/assets/javascripts/jquery-ui/labels.js +0 -71
  316. data/vendor/assets/javascripts/jquery-ui/plugin.js +0 -49
  317. data/vendor/assets/javascripts/jquery-ui/position.js +0 -513
  318. data/vendor/assets/javascripts/jquery-ui/safe-active-element.js +0 -46
  319. data/vendor/assets/javascripts/jquery-ui/safe-blur.js +0 -27
  320. data/vendor/assets/javascripts/jquery-ui/scroll-parent.js +0 -50
  321. data/vendor/assets/javascripts/jquery-ui/tabbable.js +0 -41
  322. data/vendor/assets/javascripts/jquery-ui/unique-id.js +0 -54
  323. data/vendor/assets/javascripts/jquery-ui/version.js +0 -20
  324. data/vendor/assets/javascripts/jquery-ui/widget.js +0 -758
  325. data/vendor/assets/javascripts/jquery-ui/widgets/button.js +0 -454
  326. data/vendor/assets/javascripts/jquery-ui/widgets/checkboxradio.js +0 -294
  327. data/vendor/assets/javascripts/jquery-ui/widgets/controlgroup.js +0 -304
  328. data/vendor/assets/javascripts/jquery-ui/widgets/datepicker.js +0 -2243
  329. data/vendor/assets/javascripts/jquery-ui/widgets/dialog.js +0 -971
  330. data/vendor/assets/javascripts/jquery-ui/widgets/draggable.js +0 -1268
  331. data/vendor/assets/javascripts/jquery-ui/widgets/mouse.js +0 -241
  332. data/vendor/assets/javascripts/jquery-ui/widgets/resizable.js +0 -1228
  333. data/vendor/assets/javascripts/jquery-ui/widgets/sortable.js +0 -1622
  334. data/vendor/assets/javascripts/jquery-ui/widgets/tabs.js +0 -931
  335. /data/{lib → app/controllers}/active_admin/base_controller/authorization.rb +0 -0
  336. /data/{lib → app/controllers}/active_admin/resource_controller/decorators.rb +0 -0
  337. /data/{lib → app/controllers}/active_admin/resource_controller/polymorphic_routes.rb +0 -0
  338. /data/{lib → app/controllers}/active_admin/resource_controller/resource_class_methods.rb +0 -0
  339. /data/lib/{active_admin/orm/mongoid/.gitkeep → generators/active_admin/assets/templates/builds/.keep} +0 -0
@@ -1,513 +0,0 @@
1
- //= require jquery-ui/version
2
-
3
- /*!
4
- * jQuery UI Position 1.13.3
5
- * https://jqueryui.com
6
- *
7
- * Copyright OpenJS Foundation and other contributors
8
- * Released under the MIT license.
9
- * https://jquery.org/license
10
- *
11
- * https://api.jqueryui.com/position/
12
- */
13
-
14
- //>>label: Position
15
- //>>group: Core
16
- //>>description: Positions elements relative to other elements.
17
- //>>docs: https://api.jqueryui.com/position/
18
- //>>demos: https://jqueryui.com/position/
19
-
20
- ( function( factory ) {
21
- "use strict";
22
-
23
- if ( typeof define === "function" && define.amd ) {
24
-
25
- // AMD. Register as an anonymous module.
26
- define( [ "jquery", "./version" ], factory );
27
- } else {
28
-
29
- // Browser globals
30
- factory( jQuery );
31
- }
32
- } )( function( $ ) {
33
- "use strict";
34
-
35
- ( function() {
36
- var cachedScrollbarWidth,
37
- max = Math.max,
38
- abs = Math.abs,
39
- rhorizontal = /left|center|right/,
40
- rvertical = /top|center|bottom/,
41
- roffset = /[\+\-]\d+(\.[\d]+)?%?/,
42
- rposition = /^\w+/,
43
- rpercent = /%$/,
44
- _position = $.fn.position;
45
-
46
- function getOffsets( offsets, width, height ) {
47
- return [
48
- parseFloat( offsets[ 0 ] ) * ( rpercent.test( offsets[ 0 ] ) ? width / 100 : 1 ),
49
- parseFloat( offsets[ 1 ] ) * ( rpercent.test( offsets[ 1 ] ) ? height / 100 : 1 )
50
- ];
51
- }
52
-
53
- function parseCss( element, property ) {
54
- return parseInt( $.css( element, property ), 10 ) || 0;
55
- }
56
-
57
- function isWindow( obj ) {
58
- return obj != null && obj === obj.window;
59
- }
60
-
61
- function getDimensions( elem ) {
62
- var raw = elem[ 0 ];
63
- if ( raw.nodeType === 9 ) {
64
- return {
65
- width: elem.width(),
66
- height: elem.height(),
67
- offset: { top: 0, left: 0 }
68
- };
69
- }
70
- if ( isWindow( raw ) ) {
71
- return {
72
- width: elem.width(),
73
- height: elem.height(),
74
- offset: { top: elem.scrollTop(), left: elem.scrollLeft() }
75
- };
76
- }
77
- if ( raw.preventDefault ) {
78
- return {
79
- width: 0,
80
- height: 0,
81
- offset: { top: raw.pageY, left: raw.pageX }
82
- };
83
- }
84
- return {
85
- width: elem.outerWidth(),
86
- height: elem.outerHeight(),
87
- offset: elem.offset()
88
- };
89
- }
90
-
91
- $.position = {
92
- scrollbarWidth: function() {
93
- if ( cachedScrollbarWidth !== undefined ) {
94
- return cachedScrollbarWidth;
95
- }
96
- var w1, w2,
97
- div = $( "<div style=" +
98
- "'display:block;position:absolute;width:200px;height:200px;overflow:hidden;'>" +
99
- "<div style='height:300px;width:auto;'></div></div>" ),
100
- innerDiv = div.children()[ 0 ];
101
-
102
- $( "body" ).append( div );
103
- w1 = innerDiv.offsetWidth;
104
- div.css( "overflow", "scroll" );
105
-
106
- w2 = innerDiv.offsetWidth;
107
-
108
- if ( w1 === w2 ) {
109
- w2 = div[ 0 ].clientWidth;
110
- }
111
-
112
- div.remove();
113
-
114
- return ( cachedScrollbarWidth = w1 - w2 );
115
- },
116
- getScrollInfo: function( within ) {
117
- var overflowX = within.isWindow || within.isDocument ? "" :
118
- within.element.css( "overflow-x" ),
119
- overflowY = within.isWindow || within.isDocument ? "" :
120
- within.element.css( "overflow-y" ),
121
- hasOverflowX = overflowX === "scroll" ||
122
- ( overflowX === "auto" && within.width < within.element[ 0 ].scrollWidth ),
123
- hasOverflowY = overflowY === "scroll" ||
124
- ( overflowY === "auto" && within.height < within.element[ 0 ].scrollHeight );
125
- return {
126
- width: hasOverflowY ? $.position.scrollbarWidth() : 0,
127
- height: hasOverflowX ? $.position.scrollbarWidth() : 0
128
- };
129
- },
130
- getWithinInfo: function( element ) {
131
- var withinElement = $( element || window ),
132
- isElemWindow = isWindow( withinElement[ 0 ] ),
133
- isDocument = !!withinElement[ 0 ] && withinElement[ 0 ].nodeType === 9,
134
- hasOffset = !isElemWindow && !isDocument;
135
- return {
136
- element: withinElement,
137
- isWindow: isElemWindow,
138
- isDocument: isDocument,
139
- offset: hasOffset ? $( element ).offset() : { left: 0, top: 0 },
140
- scrollLeft: withinElement.scrollLeft(),
141
- scrollTop: withinElement.scrollTop(),
142
- width: withinElement.outerWidth(),
143
- height: withinElement.outerHeight()
144
- };
145
- }
146
- };
147
-
148
- $.fn.position = function( options ) {
149
- if ( !options || !options.of ) {
150
- return _position.apply( this, arguments );
151
- }
152
-
153
- // Make a copy, we don't want to modify arguments
154
- options = $.extend( {}, options );
155
-
156
- var atOffset, targetWidth, targetHeight, targetOffset, basePosition, dimensions,
157
-
158
- // Make sure string options are treated as CSS selectors
159
- target = typeof options.of === "string" ?
160
- $( document ).find( options.of ) :
161
- $( options.of ),
162
-
163
- within = $.position.getWithinInfo( options.within ),
164
- scrollInfo = $.position.getScrollInfo( within ),
165
- collision = ( options.collision || "flip" ).split( " " ),
166
- offsets = {};
167
-
168
- dimensions = getDimensions( target );
169
- if ( target[ 0 ].preventDefault ) {
170
-
171
- // Force left top to allow flipping
172
- options.at = "left top";
173
- }
174
- targetWidth = dimensions.width;
175
- targetHeight = dimensions.height;
176
- targetOffset = dimensions.offset;
177
-
178
- // Clone to reuse original targetOffset later
179
- basePosition = $.extend( {}, targetOffset );
180
-
181
- // Force my and at to have valid horizontal and vertical positions
182
- // if a value is missing or invalid, it will be converted to center
183
- $.each( [ "my", "at" ], function() {
184
- var pos = ( options[ this ] || "" ).split( " " ),
185
- horizontalOffset,
186
- verticalOffset;
187
-
188
- if ( pos.length === 1 ) {
189
- pos = rhorizontal.test( pos[ 0 ] ) ?
190
- pos.concat( [ "center" ] ) :
191
- rvertical.test( pos[ 0 ] ) ?
192
- [ "center" ].concat( pos ) :
193
- [ "center", "center" ];
194
- }
195
- pos[ 0 ] = rhorizontal.test( pos[ 0 ] ) ? pos[ 0 ] : "center";
196
- pos[ 1 ] = rvertical.test( pos[ 1 ] ) ? pos[ 1 ] : "center";
197
-
198
- // Calculate offsets
199
- horizontalOffset = roffset.exec( pos[ 0 ] );
200
- verticalOffset = roffset.exec( pos[ 1 ] );
201
- offsets[ this ] = [
202
- horizontalOffset ? horizontalOffset[ 0 ] : 0,
203
- verticalOffset ? verticalOffset[ 0 ] : 0
204
- ];
205
-
206
- // Reduce to just the positions without the offsets
207
- options[ this ] = [
208
- rposition.exec( pos[ 0 ] )[ 0 ],
209
- rposition.exec( pos[ 1 ] )[ 0 ]
210
- ];
211
- } );
212
-
213
- // Normalize collision option
214
- if ( collision.length === 1 ) {
215
- collision[ 1 ] = collision[ 0 ];
216
- }
217
-
218
- if ( options.at[ 0 ] === "right" ) {
219
- basePosition.left += targetWidth;
220
- } else if ( options.at[ 0 ] === "center" ) {
221
- basePosition.left += targetWidth / 2;
222
- }
223
-
224
- if ( options.at[ 1 ] === "bottom" ) {
225
- basePosition.top += targetHeight;
226
- } else if ( options.at[ 1 ] === "center" ) {
227
- basePosition.top += targetHeight / 2;
228
- }
229
-
230
- atOffset = getOffsets( offsets.at, targetWidth, targetHeight );
231
- basePosition.left += atOffset[ 0 ];
232
- basePosition.top += atOffset[ 1 ];
233
-
234
- return this.each( function() {
235
- var collisionPosition, using,
236
- elem = $( this ),
237
- elemWidth = elem.outerWidth(),
238
- elemHeight = elem.outerHeight(),
239
- marginLeft = parseCss( this, "marginLeft" ),
240
- marginTop = parseCss( this, "marginTop" ),
241
- collisionWidth = elemWidth + marginLeft + parseCss( this, "marginRight" ) +
242
- scrollInfo.width,
243
- collisionHeight = elemHeight + marginTop + parseCss( this, "marginBottom" ) +
244
- scrollInfo.height,
245
- position = $.extend( {}, basePosition ),
246
- myOffset = getOffsets( offsets.my, elem.outerWidth(), elem.outerHeight() );
247
-
248
- if ( options.my[ 0 ] === "right" ) {
249
- position.left -= elemWidth;
250
- } else if ( options.my[ 0 ] === "center" ) {
251
- position.left -= elemWidth / 2;
252
- }
253
-
254
- if ( options.my[ 1 ] === "bottom" ) {
255
- position.top -= elemHeight;
256
- } else if ( options.my[ 1 ] === "center" ) {
257
- position.top -= elemHeight / 2;
258
- }
259
-
260
- position.left += myOffset[ 0 ];
261
- position.top += myOffset[ 1 ];
262
-
263
- collisionPosition = {
264
- marginLeft: marginLeft,
265
- marginTop: marginTop
266
- };
267
-
268
- $.each( [ "left", "top" ], function( i, dir ) {
269
- if ( $.ui.position[ collision[ i ] ] ) {
270
- $.ui.position[ collision[ i ] ][ dir ]( position, {
271
- targetWidth: targetWidth,
272
- targetHeight: targetHeight,
273
- elemWidth: elemWidth,
274
- elemHeight: elemHeight,
275
- collisionPosition: collisionPosition,
276
- collisionWidth: collisionWidth,
277
- collisionHeight: collisionHeight,
278
- offset: [ atOffset[ 0 ] + myOffset[ 0 ], atOffset [ 1 ] + myOffset[ 1 ] ],
279
- my: options.my,
280
- at: options.at,
281
- within: within,
282
- elem: elem
283
- } );
284
- }
285
- } );
286
-
287
- if ( options.using ) {
288
-
289
- // Adds feedback as second argument to using callback, if present
290
- using = function( props ) {
291
- var left = targetOffset.left - position.left,
292
- right = left + targetWidth - elemWidth,
293
- top = targetOffset.top - position.top,
294
- bottom = top + targetHeight - elemHeight,
295
- feedback = {
296
- target: {
297
- element: target,
298
- left: targetOffset.left,
299
- top: targetOffset.top,
300
- width: targetWidth,
301
- height: targetHeight
302
- },
303
- element: {
304
- element: elem,
305
- left: position.left,
306
- top: position.top,
307
- width: elemWidth,
308
- height: elemHeight
309
- },
310
- horizontal: right < 0 ? "left" : left > 0 ? "right" : "center",
311
- vertical: bottom < 0 ? "top" : top > 0 ? "bottom" : "middle"
312
- };
313
- if ( targetWidth < elemWidth && abs( left + right ) < targetWidth ) {
314
- feedback.horizontal = "center";
315
- }
316
- if ( targetHeight < elemHeight && abs( top + bottom ) < targetHeight ) {
317
- feedback.vertical = "middle";
318
- }
319
- if ( max( abs( left ), abs( right ) ) > max( abs( top ), abs( bottom ) ) ) {
320
- feedback.important = "horizontal";
321
- } else {
322
- feedback.important = "vertical";
323
- }
324
- options.using.call( this, props, feedback );
325
- };
326
- }
327
-
328
- elem.offset( $.extend( position, { using: using } ) );
329
- } );
330
- };
331
-
332
- $.ui.position = {
333
- fit: {
334
- left: function( position, data ) {
335
- var within = data.within,
336
- withinOffset = within.isWindow ? within.scrollLeft : within.offset.left,
337
- outerWidth = within.width,
338
- collisionPosLeft = position.left - data.collisionPosition.marginLeft,
339
- overLeft = withinOffset - collisionPosLeft,
340
- overRight = collisionPosLeft + data.collisionWidth - outerWidth - withinOffset,
341
- newOverRight;
342
-
343
- // Element is wider than within
344
- if ( data.collisionWidth > outerWidth ) {
345
-
346
- // Element is initially over the left side of within
347
- if ( overLeft > 0 && overRight <= 0 ) {
348
- newOverRight = position.left + overLeft + data.collisionWidth - outerWidth -
349
- withinOffset;
350
- position.left += overLeft - newOverRight;
351
-
352
- // Element is initially over right side of within
353
- } else if ( overRight > 0 && overLeft <= 0 ) {
354
- position.left = withinOffset;
355
-
356
- // Element is initially over both left and right sides of within
357
- } else {
358
- if ( overLeft > overRight ) {
359
- position.left = withinOffset + outerWidth - data.collisionWidth;
360
- } else {
361
- position.left = withinOffset;
362
- }
363
- }
364
-
365
- // Too far left -> align with left edge
366
- } else if ( overLeft > 0 ) {
367
- position.left += overLeft;
368
-
369
- // Too far right -> align with right edge
370
- } else if ( overRight > 0 ) {
371
- position.left -= overRight;
372
-
373
- // Adjust based on position and margin
374
- } else {
375
- position.left = max( position.left - collisionPosLeft, position.left );
376
- }
377
- },
378
- top: function( position, data ) {
379
- var within = data.within,
380
- withinOffset = within.isWindow ? within.scrollTop : within.offset.top,
381
- outerHeight = data.within.height,
382
- collisionPosTop = position.top - data.collisionPosition.marginTop,
383
- overTop = withinOffset - collisionPosTop,
384
- overBottom = collisionPosTop + data.collisionHeight - outerHeight - withinOffset,
385
- newOverBottom;
386
-
387
- // Element is taller than within
388
- if ( data.collisionHeight > outerHeight ) {
389
-
390
- // Element is initially over the top of within
391
- if ( overTop > 0 && overBottom <= 0 ) {
392
- newOverBottom = position.top + overTop + data.collisionHeight - outerHeight -
393
- withinOffset;
394
- position.top += overTop - newOverBottom;
395
-
396
- // Element is initially over bottom of within
397
- } else if ( overBottom > 0 && overTop <= 0 ) {
398
- position.top = withinOffset;
399
-
400
- // Element is initially over both top and bottom of within
401
- } else {
402
- if ( overTop > overBottom ) {
403
- position.top = withinOffset + outerHeight - data.collisionHeight;
404
- } else {
405
- position.top = withinOffset;
406
- }
407
- }
408
-
409
- // Too far up -> align with top
410
- } else if ( overTop > 0 ) {
411
- position.top += overTop;
412
-
413
- // Too far down -> align with bottom edge
414
- } else if ( overBottom > 0 ) {
415
- position.top -= overBottom;
416
-
417
- // Adjust based on position and margin
418
- } else {
419
- position.top = max( position.top - collisionPosTop, position.top );
420
- }
421
- }
422
- },
423
- flip: {
424
- left: function( position, data ) {
425
- var within = data.within,
426
- withinOffset = within.offset.left + within.scrollLeft,
427
- outerWidth = within.width,
428
- offsetLeft = within.isWindow ? within.scrollLeft : within.offset.left,
429
- collisionPosLeft = position.left - data.collisionPosition.marginLeft,
430
- overLeft = collisionPosLeft - offsetLeft,
431
- overRight = collisionPosLeft + data.collisionWidth - outerWidth - offsetLeft,
432
- myOffset = data.my[ 0 ] === "left" ?
433
- -data.elemWidth :
434
- data.my[ 0 ] === "right" ?
435
- data.elemWidth :
436
- 0,
437
- atOffset = data.at[ 0 ] === "left" ?
438
- data.targetWidth :
439
- data.at[ 0 ] === "right" ?
440
- -data.targetWidth :
441
- 0,
442
- offset = -2 * data.offset[ 0 ],
443
- newOverRight,
444
- newOverLeft;
445
-
446
- if ( overLeft < 0 ) {
447
- newOverRight = position.left + myOffset + atOffset + offset + data.collisionWidth -
448
- outerWidth - withinOffset;
449
- if ( newOverRight < 0 || newOverRight < abs( overLeft ) ) {
450
- position.left += myOffset + atOffset + offset;
451
- }
452
- } else if ( overRight > 0 ) {
453
- newOverLeft = position.left - data.collisionPosition.marginLeft + myOffset +
454
- atOffset + offset - offsetLeft;
455
- if ( newOverLeft > 0 || abs( newOverLeft ) < overRight ) {
456
- position.left += myOffset + atOffset + offset;
457
- }
458
- }
459
- },
460
- top: function( position, data ) {
461
- var within = data.within,
462
- withinOffset = within.offset.top + within.scrollTop,
463
- outerHeight = within.height,
464
- offsetTop = within.isWindow ? within.scrollTop : within.offset.top,
465
- collisionPosTop = position.top - data.collisionPosition.marginTop,
466
- overTop = collisionPosTop - offsetTop,
467
- overBottom = collisionPosTop + data.collisionHeight - outerHeight - offsetTop,
468
- top = data.my[ 1 ] === "top",
469
- myOffset = top ?
470
- -data.elemHeight :
471
- data.my[ 1 ] === "bottom" ?
472
- data.elemHeight :
473
- 0,
474
- atOffset = data.at[ 1 ] === "top" ?
475
- data.targetHeight :
476
- data.at[ 1 ] === "bottom" ?
477
- -data.targetHeight :
478
- 0,
479
- offset = -2 * data.offset[ 1 ],
480
- newOverTop,
481
- newOverBottom;
482
- if ( overTop < 0 ) {
483
- newOverBottom = position.top + myOffset + atOffset + offset + data.collisionHeight -
484
- outerHeight - withinOffset;
485
- if ( newOverBottom < 0 || newOverBottom < abs( overTop ) ) {
486
- position.top += myOffset + atOffset + offset;
487
- }
488
- } else if ( overBottom > 0 ) {
489
- newOverTop = position.top - data.collisionPosition.marginTop + myOffset + atOffset +
490
- offset - offsetTop;
491
- if ( newOverTop > 0 || abs( newOverTop ) < overBottom ) {
492
- position.top += myOffset + atOffset + offset;
493
- }
494
- }
495
- }
496
- },
497
- flipfit: {
498
- left: function() {
499
- $.ui.position.flip.left.apply( this, arguments );
500
- $.ui.position.fit.left.apply( this, arguments );
501
- },
502
- top: function() {
503
- $.ui.position.flip.top.apply( this, arguments );
504
- $.ui.position.fit.top.apply( this, arguments );
505
- }
506
- }
507
- };
508
-
509
- } )();
510
-
511
- return $.ui.position;
512
-
513
- } );
@@ -1,46 +0,0 @@
1
- //= require jquery-ui/version
2
-
3
- ( function( factory ) {
4
- "use strict";
5
-
6
- if ( typeof define === "function" && define.amd ) {
7
-
8
- // AMD. Register as an anonymous module.
9
- define( [ "jquery", "./version" ], factory );
10
- } else {
11
-
12
- // Browser globals
13
- factory( jQuery );
14
- }
15
- } )( function( $ ) {
16
- "use strict";
17
-
18
- return $.ui.safeActiveElement = function( document ) {
19
- var activeElement;
20
-
21
- // Support: IE 9 only
22
- // IE9 throws an "Unspecified error" accessing document.activeElement from an <iframe>
23
- try {
24
- activeElement = document.activeElement;
25
- } catch ( error ) {
26
- activeElement = document.body;
27
- }
28
-
29
- // Support: IE 9 - 11 only
30
- // IE may return null instead of an element
31
- // Interestingly, this only seems to occur when NOT in an iframe
32
- if ( !activeElement ) {
33
- activeElement = document.body;
34
- }
35
-
36
- // Support: IE 11 only
37
- // IE11 returns a seemingly empty object in some cases when accessing
38
- // document.activeElement from an <iframe>
39
- if ( !activeElement.nodeName ) {
40
- activeElement = document.body;
41
- }
42
-
43
- return activeElement;
44
- };
45
-
46
- } );
@@ -1,27 +0,0 @@
1
- //= require jquery-ui/version
2
-
3
- ( function( factory ) {
4
- "use strict";
5
-
6
- if ( typeof define === "function" && define.amd ) {
7
-
8
- // AMD. Register as an anonymous module.
9
- define( [ "jquery", "./version" ], factory );
10
- } else {
11
-
12
- // Browser globals
13
- factory( jQuery );
14
- }
15
- } )( function( $ ) {
16
- "use strict";
17
-
18
- return $.ui.safeBlur = function( element ) {
19
-
20
- // Support: IE9 - 10 only
21
- // If the <body> is blurred, IE will switch windows, see #9420
22
- if ( element && element.nodeName.toLowerCase() !== "body" ) {
23
- $( element ).trigger( "blur" );
24
- }
25
- };
26
-
27
- } );
@@ -1,50 +0,0 @@
1
- //= require jquery-ui/version
2
-
3
- /*!
4
- * jQuery UI Scroll Parent 1.13.3
5
- * https://jqueryui.com
6
- *
7
- * Copyright OpenJS Foundation and other contributors
8
- * Released under the MIT license.
9
- * https://jquery.org/license
10
- */
11
-
12
- //>>label: scrollParent
13
- //>>group: Core
14
- //>>description: Get the closest ancestor element that is scrollable.
15
- //>>docs: https://api.jqueryui.com/scrollParent/
16
-
17
- ( function( factory ) {
18
- "use strict";
19
-
20
- if ( typeof define === "function" && define.amd ) {
21
-
22
- // AMD. Register as an anonymous module.
23
- define( [ "jquery", "./version" ], factory );
24
- } else {
25
-
26
- // Browser globals
27
- factory( jQuery );
28
- }
29
- } )( function( $ ) {
30
- "use strict";
31
-
32
- return $.fn.scrollParent = function( includeHidden ) {
33
- var position = this.css( "position" ),
34
- excludeStaticParent = position === "absolute",
35
- overflowRegex = includeHidden ? /(auto|scroll|hidden)/ : /(auto|scroll)/,
36
- scrollParent = this.parents().filter( function() {
37
- var parent = $( this );
38
- if ( excludeStaticParent && parent.css( "position" ) === "static" ) {
39
- return false;
40
- }
41
- return overflowRegex.test( parent.css( "overflow" ) + parent.css( "overflow-y" ) +
42
- parent.css( "overflow-x" ) );
43
- } ).eq( 0 );
44
-
45
- return position === "fixed" || !scrollParent.length ?
46
- $( this[ 0 ].ownerDocument || document ) :
47
- scrollParent;
48
- };
49
-
50
- } );
@@ -1,41 +0,0 @@
1
- //= require jquery-ui/version
2
- //= require jquery-ui/focusable
3
-
4
- /*!
5
- * jQuery UI Tabbable 1.13.3
6
- * https://jqueryui.com
7
- *
8
- * Copyright OpenJS Foundation and other contributors
9
- * Released under the MIT license.
10
- * https://jquery.org/license
11
- */
12
-
13
- //>>label: :tabbable Selector
14
- //>>group: Core
15
- //>>description: Selects elements which can be tabbed to.
16
- //>>docs: https://api.jqueryui.com/tabbable-selector/
17
-
18
- ( function( factory ) {
19
- "use strict";
20
-
21
- if ( typeof define === "function" && define.amd ) {
22
-
23
- // AMD. Register as an anonymous module.
24
- define( [ "jquery", "./version", "./focusable" ], factory );
25
- } else {
26
-
27
- // Browser globals
28
- factory( jQuery );
29
- }
30
- } )( function( $ ) {
31
- "use strict";
32
-
33
- return $.extend( $.expr.pseudos, {
34
- tabbable: function( element ) {
35
- var tabIndex = $.attr( element, "tabindex" ),
36
- hasTabindex = tabIndex != null;
37
- return ( !hasTabindex || tabIndex >= 0 ) && $.ui.focusable( element, hasTabindex );
38
- }
39
- } );
40
-
41
- } );