activeadmin 3.2.3 → 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 -57
  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 +20 -16
  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,971 +0,0 @@
1
- //= require jquery-ui/widgets/button
2
- //= require jquery-ui/widgets/draggable
3
- //= require jquery-ui/widgets/mouse
4
- //= require jquery-ui/widgets/resizable
5
- //= require jquery-ui/focusable
6
- //= require jquery-ui/keycode
7
- //= require jquery-ui/position
8
- //= require jquery-ui/safe-active-element
9
- //= require jquery-ui/safe-blur
10
- //= require jquery-ui/tabbable
11
- //= require jquery-ui/unique-id
12
- //= require jquery-ui/version
13
- //= require jquery-ui/widget
14
-
15
- /*!
16
- * jQuery UI Dialog 1.13.3
17
- * https://jqueryui.com
18
- *
19
- * Copyright OpenJS Foundation and other contributors
20
- * Released under the MIT license.
21
- * https://jquery.org/license
22
- */
23
-
24
- //>>label: Dialog
25
- //>>group: Widgets
26
- //>>description: Displays customizable dialog windows.
27
- //>>docs: https://api.jqueryui.com/dialog/
28
- //>>demos: https://jqueryui.com/dialog/
29
- //>>css.structure: ../../themes/base/core.css
30
- //>>css.structure: ../../themes/base/dialog.css
31
- //>>css.theme: ../../themes/base/theme.css
32
-
33
- ( function( factory ) {
34
- "use strict";
35
-
36
- if ( typeof define === "function" && define.amd ) {
37
-
38
- // AMD. Register as an anonymous module.
39
- define( [
40
- "jquery",
41
- "./button",
42
- "./draggable",
43
- "./mouse",
44
- "./resizable",
45
- "../focusable",
46
- "../keycode",
47
- "../position",
48
- "../safe-active-element",
49
- "../safe-blur",
50
- "../tabbable",
51
- "../unique-id",
52
- "../version",
53
- "../widget"
54
- ], factory );
55
- } else {
56
-
57
- // Browser globals
58
- factory( jQuery );
59
- }
60
- } )( function( $ ) {
61
- "use strict";
62
-
63
- $.widget( "ui.dialog", {
64
- version: "1.13.3",
65
- options: {
66
- appendTo: "body",
67
- autoOpen: true,
68
- buttons: [],
69
- classes: {
70
- "ui-dialog": "ui-corner-all",
71
- "ui-dialog-titlebar": "ui-corner-all"
72
- },
73
- closeOnEscape: true,
74
- closeText: "Close",
75
- draggable: true,
76
- hide: null,
77
- height: "auto",
78
- maxHeight: null,
79
- maxWidth: null,
80
- minHeight: 150,
81
- minWidth: 150,
82
- modal: false,
83
- position: {
84
- my: "center",
85
- at: "center",
86
- of: window,
87
- collision: "fit",
88
-
89
- // Ensure the titlebar is always visible
90
- using: function( pos ) {
91
- var topOffset = $( this ).css( pos ).offset().top;
92
- if ( topOffset < 0 ) {
93
- $( this ).css( "top", pos.top - topOffset );
94
- }
95
- }
96
- },
97
- resizable: true,
98
- show: null,
99
- title: null,
100
- width: 300,
101
-
102
- // Callbacks
103
- beforeClose: null,
104
- close: null,
105
- drag: null,
106
- dragStart: null,
107
- dragStop: null,
108
- focus: null,
109
- open: null,
110
- resize: null,
111
- resizeStart: null,
112
- resizeStop: null
113
- },
114
-
115
- sizeRelatedOptions: {
116
- buttons: true,
117
- height: true,
118
- maxHeight: true,
119
- maxWidth: true,
120
- minHeight: true,
121
- minWidth: true,
122
- width: true
123
- },
124
-
125
- resizableRelatedOptions: {
126
- maxHeight: true,
127
- maxWidth: true,
128
- minHeight: true,
129
- minWidth: true
130
- },
131
-
132
- _create: function() {
133
- this.originalCss = {
134
- display: this.element[ 0 ].style.display,
135
- width: this.element[ 0 ].style.width,
136
- minHeight: this.element[ 0 ].style.minHeight,
137
- maxHeight: this.element[ 0 ].style.maxHeight,
138
- height: this.element[ 0 ].style.height
139
- };
140
- this.originalPosition = {
141
- parent: this.element.parent(),
142
- index: this.element.parent().children().index( this.element )
143
- };
144
- this.originalTitle = this.element.attr( "title" );
145
- if ( this.options.title == null && this.originalTitle != null ) {
146
- this.options.title = this.originalTitle;
147
- }
148
-
149
- // Dialogs can't be disabled
150
- if ( this.options.disabled ) {
151
- this.options.disabled = false;
152
- }
153
-
154
- this._createWrapper();
155
-
156
- this.element
157
- .show()
158
- .removeAttr( "title" )
159
- .appendTo( this.uiDialog );
160
-
161
- this._addClass( "ui-dialog-content", "ui-widget-content" );
162
-
163
- this._createTitlebar();
164
- this._createButtonPane();
165
-
166
- if ( this.options.draggable && $.fn.draggable ) {
167
- this._makeDraggable();
168
- }
169
- if ( this.options.resizable && $.fn.resizable ) {
170
- this._makeResizable();
171
- }
172
-
173
- this._isOpen = false;
174
-
175
- this._trackFocus();
176
- },
177
-
178
- _init: function() {
179
- if ( this.options.autoOpen ) {
180
- this.open();
181
- }
182
- },
183
-
184
- _appendTo: function() {
185
- var element = this.options.appendTo;
186
- if ( element && ( element.jquery || element.nodeType ) ) {
187
- return $( element );
188
- }
189
- return this.document.find( element || "body" ).eq( 0 );
190
- },
191
-
192
- _destroy: function() {
193
- var next,
194
- originalPosition = this.originalPosition;
195
-
196
- this._untrackInstance();
197
- this._destroyOverlay();
198
-
199
- this.element
200
- .removeUniqueId()
201
- .css( this.originalCss )
202
-
203
- // Without detaching first, the following becomes really slow
204
- .detach();
205
-
206
- this.uiDialog.remove();
207
-
208
- if ( this.originalTitle ) {
209
- this.element.attr( "title", this.originalTitle );
210
- }
211
-
212
- next = originalPosition.parent.children().eq( originalPosition.index );
213
-
214
- // Don't try to place the dialog next to itself (#8613)
215
- if ( next.length && next[ 0 ] !== this.element[ 0 ] ) {
216
- next.before( this.element );
217
- } else {
218
- originalPosition.parent.append( this.element );
219
- }
220
- },
221
-
222
- widget: function() {
223
- return this.uiDialog;
224
- },
225
-
226
- disable: $.noop,
227
- enable: $.noop,
228
-
229
- close: function( event ) {
230
- var that = this;
231
-
232
- if ( !this._isOpen || this._trigger( "beforeClose", event ) === false ) {
233
- return;
234
- }
235
-
236
- this._isOpen = false;
237
- this._focusedElement = null;
238
- this._destroyOverlay();
239
- this._untrackInstance();
240
-
241
- if ( !this.opener.filter( ":focusable" ).trigger( "focus" ).length ) {
242
-
243
- // Hiding a focused element doesn't trigger blur in WebKit
244
- // so in case we have nothing to focus on, explicitly blur the active element
245
- // https://bugs.webkit.org/show_bug.cgi?id=47182
246
- $.ui.safeBlur( $.ui.safeActiveElement( this.document[ 0 ] ) );
247
- }
248
-
249
- this._hide( this.uiDialog, this.options.hide, function() {
250
- that._trigger( "close", event );
251
- } );
252
- },
253
-
254
- isOpen: function() {
255
- return this._isOpen;
256
- },
257
-
258
- moveToTop: function() {
259
- this._moveToTop();
260
- },
261
-
262
- _moveToTop: function( event, silent ) {
263
- var moved = false,
264
- zIndices = this.uiDialog.siblings( ".ui-front:visible" ).map( function() {
265
- return +$( this ).css( "z-index" );
266
- } ).get(),
267
- zIndexMax = Math.max.apply( null, zIndices );
268
-
269
- if ( zIndexMax >= +this.uiDialog.css( "z-index" ) ) {
270
- this.uiDialog.css( "z-index", zIndexMax + 1 );
271
- moved = true;
272
- }
273
-
274
- if ( moved && !silent ) {
275
- this._trigger( "focus", event );
276
- }
277
- return moved;
278
- },
279
-
280
- open: function() {
281
- var that = this;
282
- if ( this._isOpen ) {
283
- if ( this._moveToTop() ) {
284
- this._focusTabbable();
285
- }
286
- return;
287
- }
288
-
289
- this._isOpen = true;
290
- this.opener = $( $.ui.safeActiveElement( this.document[ 0 ] ) );
291
-
292
- this._size();
293
- this._position();
294
- this._createOverlay();
295
- this._moveToTop( null, true );
296
-
297
- // Ensure the overlay is moved to the top with the dialog, but only when
298
- // opening. The overlay shouldn't move after the dialog is open so that
299
- // modeless dialogs opened after the modal dialog stack properly.
300
- if ( this.overlay ) {
301
- this.overlay.css( "z-index", this.uiDialog.css( "z-index" ) - 1 );
302
- }
303
-
304
- this._show( this.uiDialog, this.options.show, function() {
305
- that._focusTabbable();
306
- that._trigger( "focus" );
307
- } );
308
-
309
- // Track the dialog immediately upon opening in case a focus event
310
- // somehow occurs outside of the dialog before an element inside the
311
- // dialog is focused (#10152)
312
- this._makeFocusTarget();
313
-
314
- this._trigger( "open" );
315
- },
316
-
317
- _focusTabbable: function() {
318
-
319
- // Set focus to the first match:
320
- // 1. An element that was focused previously
321
- // 2. First element inside the dialog matching [autofocus]
322
- // 3. Tabbable element inside the content element
323
- // 4. Tabbable element inside the buttonpane
324
- // 5. The close button
325
- // 6. The dialog itself
326
- var hasFocus = this._focusedElement;
327
- if ( !hasFocus ) {
328
- hasFocus = this.element.find( "[autofocus]" );
329
- }
330
- if ( !hasFocus.length ) {
331
- hasFocus = this.element.find( ":tabbable" );
332
- }
333
- if ( !hasFocus.length ) {
334
- hasFocus = this.uiDialogButtonPane.find( ":tabbable" );
335
- }
336
- if ( !hasFocus.length ) {
337
- hasFocus = this.uiDialogTitlebarClose.filter( ":tabbable" );
338
- }
339
- if ( !hasFocus.length ) {
340
- hasFocus = this.uiDialog;
341
- }
342
- hasFocus.eq( 0 ).trigger( "focus" );
343
- },
344
-
345
- _restoreTabbableFocus: function() {
346
- var activeElement = $.ui.safeActiveElement( this.document[ 0 ] ),
347
- isActive = this.uiDialog[ 0 ] === activeElement ||
348
- $.contains( this.uiDialog[ 0 ], activeElement );
349
- if ( !isActive ) {
350
- this._focusTabbable();
351
- }
352
- },
353
-
354
- _keepFocus: function( event ) {
355
- event.preventDefault();
356
- this._restoreTabbableFocus();
357
-
358
- // support: IE
359
- // IE <= 8 doesn't prevent moving focus even with event.preventDefault()
360
- // so we check again later
361
- this._delay( this._restoreTabbableFocus );
362
- },
363
-
364
- _createWrapper: function() {
365
- this.uiDialog = $( "<div>" )
366
- .hide()
367
- .attr( {
368
-
369
- // Setting tabIndex makes the div focusable
370
- tabIndex: -1,
371
- role: "dialog"
372
- } )
373
- .appendTo( this._appendTo() );
374
-
375
- this._addClass( this.uiDialog, "ui-dialog", "ui-widget ui-widget-content ui-front" );
376
- this._on( this.uiDialog, {
377
- keydown: function( event ) {
378
- if ( this.options.closeOnEscape && !event.isDefaultPrevented() && event.keyCode &&
379
- event.keyCode === $.ui.keyCode.ESCAPE ) {
380
- event.preventDefault();
381
- this.close( event );
382
- return;
383
- }
384
-
385
- // Prevent tabbing out of dialogs
386
- if ( event.keyCode !== $.ui.keyCode.TAB || event.isDefaultPrevented() ) {
387
- return;
388
- }
389
- var tabbables = this.uiDialog.find( ":tabbable" ),
390
- first = tabbables.first(),
391
- last = tabbables.last();
392
-
393
- if ( ( event.target === last[ 0 ] || event.target === this.uiDialog[ 0 ] ) &&
394
- !event.shiftKey ) {
395
- this._delay( function() {
396
- first.trigger( "focus" );
397
- } );
398
- event.preventDefault();
399
- } else if ( ( event.target === first[ 0 ] ||
400
- event.target === this.uiDialog[ 0 ] ) && event.shiftKey ) {
401
- this._delay( function() {
402
- last.trigger( "focus" );
403
- } );
404
- event.preventDefault();
405
- }
406
- },
407
- mousedown: function( event ) {
408
- if ( this._moveToTop( event ) ) {
409
- this._focusTabbable();
410
- }
411
- }
412
- } );
413
-
414
- // We assume that any existing aria-describedby attribute means
415
- // that the dialog content is marked up properly
416
- // otherwise we brute force the content as the description
417
- if ( !this.element.find( "[aria-describedby]" ).length ) {
418
- this.uiDialog.attr( {
419
- "aria-describedby": this.element.uniqueId().attr( "id" )
420
- } );
421
- }
422
- },
423
-
424
- _createTitlebar: function() {
425
- var uiDialogTitle;
426
-
427
- this.uiDialogTitlebar = $( "<div>" );
428
- this._addClass( this.uiDialogTitlebar,
429
- "ui-dialog-titlebar", "ui-widget-header ui-helper-clearfix" );
430
- this._on( this.uiDialogTitlebar, {
431
- mousedown: function( event ) {
432
-
433
- // Don't prevent click on close button (#8838)
434
- // Focusing a dialog that is partially scrolled out of view
435
- // causes the browser to scroll it into view, preventing the click event
436
- if ( !$( event.target ).closest( ".ui-dialog-titlebar-close" ) ) {
437
-
438
- // Dialog isn't getting focus when dragging (#8063)
439
- this.uiDialog.trigger( "focus" );
440
- }
441
- }
442
- } );
443
-
444
- // Support: IE
445
- // Use type="button" to prevent enter keypresses in textboxes from closing the
446
- // dialog in IE (#9312)
447
- this.uiDialogTitlebarClose = $( "<button type='button'></button>" )
448
- .button( {
449
- label: $( "<a>" ).text( this.options.closeText ).html(),
450
- icon: "ui-icon-closethick",
451
- showLabel: false
452
- } )
453
- .appendTo( this.uiDialogTitlebar );
454
-
455
- this._addClass( this.uiDialogTitlebarClose, "ui-dialog-titlebar-close" );
456
- this._on( this.uiDialogTitlebarClose, {
457
- click: function( event ) {
458
- event.preventDefault();
459
- this.close( event );
460
- }
461
- } );
462
-
463
- uiDialogTitle = $( "<span>" ).uniqueId().prependTo( this.uiDialogTitlebar );
464
- this._addClass( uiDialogTitle, "ui-dialog-title" );
465
- this._title( uiDialogTitle );
466
-
467
- this.uiDialogTitlebar.prependTo( this.uiDialog );
468
-
469
- this.uiDialog.attr( {
470
- "aria-labelledby": uiDialogTitle.attr( "id" )
471
- } );
472
- },
473
-
474
- _title: function( title ) {
475
- if ( this.options.title ) {
476
- title.text( this.options.title );
477
- } else {
478
- title.html( "&#160;" );
479
- }
480
- },
481
-
482
- _createButtonPane: function() {
483
- this.uiDialogButtonPane = $( "<div>" );
484
- this._addClass( this.uiDialogButtonPane, "ui-dialog-buttonpane",
485
- "ui-widget-content ui-helper-clearfix" );
486
-
487
- this.uiButtonSet = $( "<div>" )
488
- .appendTo( this.uiDialogButtonPane );
489
- this._addClass( this.uiButtonSet, "ui-dialog-buttonset" );
490
-
491
- this._createButtons();
492
- },
493
-
494
- _createButtons: function() {
495
- var that = this,
496
- buttons = this.options.buttons;
497
-
498
- // If we already have a button pane, remove it
499
- this.uiDialogButtonPane.remove();
500
- this.uiButtonSet.empty();
501
-
502
- if ( $.isEmptyObject( buttons ) || ( Array.isArray( buttons ) && !buttons.length ) ) {
503
- this._removeClass( this.uiDialog, "ui-dialog-buttons" );
504
- return;
505
- }
506
-
507
- $.each( buttons, function( name, props ) {
508
- var click, buttonOptions;
509
- props = typeof props === "function" ?
510
- { click: props, text: name } :
511
- props;
512
-
513
- // Default to a non-submitting button
514
- props = $.extend( { type: "button" }, props );
515
-
516
- // Change the context for the click callback to be the main element
517
- click = props.click;
518
- buttonOptions = {
519
- icon: props.icon,
520
- iconPosition: props.iconPosition,
521
- showLabel: props.showLabel,
522
-
523
- // Deprecated options
524
- icons: props.icons,
525
- text: props.text
526
- };
527
-
528
- delete props.click;
529
- delete props.icon;
530
- delete props.iconPosition;
531
- delete props.showLabel;
532
-
533
- // Deprecated options
534
- delete props.icons;
535
- if ( typeof props.text === "boolean" ) {
536
- delete props.text;
537
- }
538
-
539
- $( "<button></button>", props )
540
- .button( buttonOptions )
541
- .appendTo( that.uiButtonSet )
542
- .on( "click", function() {
543
- click.apply( that.element[ 0 ], arguments );
544
- } );
545
- } );
546
- this._addClass( this.uiDialog, "ui-dialog-buttons" );
547
- this.uiDialogButtonPane.appendTo( this.uiDialog );
548
- },
549
-
550
- _makeDraggable: function() {
551
- var that = this,
552
- options = this.options;
553
-
554
- function filteredUi( ui ) {
555
- return {
556
- position: ui.position,
557
- offset: ui.offset
558
- };
559
- }
560
-
561
- this.uiDialog.draggable( {
562
- cancel: ".ui-dialog-content, .ui-dialog-titlebar-close",
563
- handle: ".ui-dialog-titlebar",
564
- containment: "document",
565
- start: function( event, ui ) {
566
- that._addClass( $( this ), "ui-dialog-dragging" );
567
- that._blockFrames();
568
- that._trigger( "dragStart", event, filteredUi( ui ) );
569
- },
570
- drag: function( event, ui ) {
571
- that._trigger( "drag", event, filteredUi( ui ) );
572
- },
573
- stop: function( event, ui ) {
574
- var left = ui.offset.left - that.document.scrollLeft(),
575
- top = ui.offset.top - that.document.scrollTop();
576
-
577
- options.position = {
578
- my: "left top",
579
- at: "left" + ( left >= 0 ? "+" : "" ) + left + " " +
580
- "top" + ( top >= 0 ? "+" : "" ) + top,
581
- of: that.window
582
- };
583
- that._removeClass( $( this ), "ui-dialog-dragging" );
584
- that._unblockFrames();
585
- that._trigger( "dragStop", event, filteredUi( ui ) );
586
- }
587
- } );
588
- },
589
-
590
- _makeResizable: function() {
591
- var that = this,
592
- options = this.options,
593
- handles = options.resizable,
594
-
595
- // .ui-resizable has position: relative defined in the stylesheet
596
- // but dialogs have to use absolute or fixed positioning
597
- position = this.uiDialog.css( "position" ),
598
- resizeHandles = typeof handles === "string" ?
599
- handles :
600
- "n,e,s,w,se,sw,ne,nw";
601
-
602
- function filteredUi( ui ) {
603
- return {
604
- originalPosition: ui.originalPosition,
605
- originalSize: ui.originalSize,
606
- position: ui.position,
607
- size: ui.size
608
- };
609
- }
610
-
611
- this.uiDialog.resizable( {
612
- cancel: ".ui-dialog-content",
613
- containment: "document",
614
- alsoResize: this.element,
615
- maxWidth: options.maxWidth,
616
- maxHeight: options.maxHeight,
617
- minWidth: options.minWidth,
618
- minHeight: this._minHeight(),
619
- handles: resizeHandles,
620
- start: function( event, ui ) {
621
- that._addClass( $( this ), "ui-dialog-resizing" );
622
- that._blockFrames();
623
- that._trigger( "resizeStart", event, filteredUi( ui ) );
624
- },
625
- resize: function( event, ui ) {
626
- that._trigger( "resize", event, filteredUi( ui ) );
627
- },
628
- stop: function( event, ui ) {
629
- var offset = that.uiDialog.offset(),
630
- left = offset.left - that.document.scrollLeft(),
631
- top = offset.top - that.document.scrollTop();
632
-
633
- options.height = that.uiDialog.height();
634
- options.width = that.uiDialog.width();
635
- options.position = {
636
- my: "left top",
637
- at: "left" + ( left >= 0 ? "+" : "" ) + left + " " +
638
- "top" + ( top >= 0 ? "+" : "" ) + top,
639
- of: that.window
640
- };
641
- that._removeClass( $( this ), "ui-dialog-resizing" );
642
- that._unblockFrames();
643
- that._trigger( "resizeStop", event, filteredUi( ui ) );
644
- }
645
- } )
646
- .css( "position", position );
647
- },
648
-
649
- _trackFocus: function() {
650
- this._on( this.widget(), {
651
- focusin: function( event ) {
652
- this._makeFocusTarget();
653
- this._focusedElement = $( event.target );
654
- }
655
- } );
656
- },
657
-
658
- _makeFocusTarget: function() {
659
- this._untrackInstance();
660
- this._trackingInstances().unshift( this );
661
- },
662
-
663
- _untrackInstance: function() {
664
- var instances = this._trackingInstances(),
665
- exists = $.inArray( this, instances );
666
- if ( exists !== -1 ) {
667
- instances.splice( exists, 1 );
668
- }
669
- },
670
-
671
- _trackingInstances: function() {
672
- var instances = this.document.data( "ui-dialog-instances" );
673
- if ( !instances ) {
674
- instances = [];
675
- this.document.data( "ui-dialog-instances", instances );
676
- }
677
- return instances;
678
- },
679
-
680
- _minHeight: function() {
681
- var options = this.options;
682
-
683
- return options.height === "auto" ?
684
- options.minHeight :
685
- Math.min( options.minHeight, options.height );
686
- },
687
-
688
- _position: function() {
689
-
690
- // Need to show the dialog to get the actual offset in the position plugin
691
- var isVisible = this.uiDialog.is( ":visible" );
692
- if ( !isVisible ) {
693
- this.uiDialog.show();
694
- }
695
- this.uiDialog.position( this.options.position );
696
- if ( !isVisible ) {
697
- this.uiDialog.hide();
698
- }
699
- },
700
-
701
- _setOptions: function( options ) {
702
- var that = this,
703
- resize = false,
704
- resizableOptions = {};
705
-
706
- $.each( options, function( key, value ) {
707
- that._setOption( key, value );
708
-
709
- if ( key in that.sizeRelatedOptions ) {
710
- resize = true;
711
- }
712
- if ( key in that.resizableRelatedOptions ) {
713
- resizableOptions[ key ] = value;
714
- }
715
- } );
716
-
717
- if ( resize ) {
718
- this._size();
719
- this._position();
720
- }
721
- if ( this.uiDialog.is( ":data(ui-resizable)" ) ) {
722
- this.uiDialog.resizable( "option", resizableOptions );
723
- }
724
- },
725
-
726
- _setOption: function( key, value ) {
727
- var isDraggable, isResizable,
728
- uiDialog = this.uiDialog;
729
-
730
- if ( key === "disabled" ) {
731
- return;
732
- }
733
-
734
- this._super( key, value );
735
-
736
- if ( key === "appendTo" ) {
737
- this.uiDialog.appendTo( this._appendTo() );
738
- }
739
-
740
- if ( key === "buttons" ) {
741
- this._createButtons();
742
- }
743
-
744
- if ( key === "closeText" ) {
745
- this.uiDialogTitlebarClose.button( {
746
-
747
- // Ensure that we always pass a string
748
- label: $( "<a>" ).text( "" + this.options.closeText ).html()
749
- } );
750
- }
751
-
752
- if ( key === "draggable" ) {
753
- isDraggable = uiDialog.is( ":data(ui-draggable)" );
754
- if ( isDraggable && !value ) {
755
- uiDialog.draggable( "destroy" );
756
- }
757
-
758
- if ( !isDraggable && value ) {
759
- this._makeDraggable();
760
- }
761
- }
762
-
763
- if ( key === "position" ) {
764
- this._position();
765
- }
766
-
767
- if ( key === "resizable" ) {
768
-
769
- // currently resizable, becoming non-resizable
770
- isResizable = uiDialog.is( ":data(ui-resizable)" );
771
- if ( isResizable && !value ) {
772
- uiDialog.resizable( "destroy" );
773
- }
774
-
775
- // Currently resizable, changing handles
776
- if ( isResizable && typeof value === "string" ) {
777
- uiDialog.resizable( "option", "handles", value );
778
- }
779
-
780
- // Currently non-resizable, becoming resizable
781
- if ( !isResizable && value !== false ) {
782
- this._makeResizable();
783
- }
784
- }
785
-
786
- if ( key === "title" ) {
787
- this._title( this.uiDialogTitlebar.find( ".ui-dialog-title" ) );
788
- }
789
- },
790
-
791
- _size: function() {
792
-
793
- // If the user has resized the dialog, the .ui-dialog and .ui-dialog-content
794
- // divs will both have width and height set, so we need to reset them
795
- var nonContentHeight, minContentHeight, maxContentHeight,
796
- options = this.options;
797
-
798
- // Reset content sizing
799
- this.element.show().css( {
800
- width: "auto",
801
- minHeight: 0,
802
- maxHeight: "none",
803
- height: 0
804
- } );
805
-
806
- if ( options.minWidth > options.width ) {
807
- options.width = options.minWidth;
808
- }
809
-
810
- // Reset wrapper sizing
811
- // determine the height of all the non-content elements
812
- nonContentHeight = this.uiDialog.css( {
813
- height: "auto",
814
- width: options.width
815
- } )
816
- .outerHeight();
817
- minContentHeight = Math.max( 0, options.minHeight - nonContentHeight );
818
- maxContentHeight = typeof options.maxHeight === "number" ?
819
- Math.max( 0, options.maxHeight - nonContentHeight ) :
820
- "none";
821
-
822
- if ( options.height === "auto" ) {
823
- this.element.css( {
824
- minHeight: minContentHeight,
825
- maxHeight: maxContentHeight,
826
- height: "auto"
827
- } );
828
- } else {
829
- this.element.height( Math.max( 0, options.height - nonContentHeight ) );
830
- }
831
-
832
- if ( this.uiDialog.is( ":data(ui-resizable)" ) ) {
833
- this.uiDialog.resizable( "option", "minHeight", this._minHeight() );
834
- }
835
- },
836
-
837
- _blockFrames: function() {
838
- this.iframeBlocks = this.document.find( "iframe" ).map( function() {
839
- var iframe = $( this );
840
-
841
- return $( "<div>" )
842
- .css( {
843
- position: "absolute",
844
- width: iframe.outerWidth(),
845
- height: iframe.outerHeight()
846
- } )
847
- .appendTo( iframe.parent() )
848
- .offset( iframe.offset() )[ 0 ];
849
- } );
850
- },
851
-
852
- _unblockFrames: function() {
853
- if ( this.iframeBlocks ) {
854
- this.iframeBlocks.remove();
855
- delete this.iframeBlocks;
856
- }
857
- },
858
-
859
- _allowInteraction: function( event ) {
860
- if ( $( event.target ).closest( ".ui-dialog" ).length ) {
861
- return true;
862
- }
863
-
864
- // TODO: Remove hack when datepicker implements
865
- // the .ui-front logic (#8989)
866
- return !!$( event.target ).closest( ".ui-datepicker" ).length;
867
- },
868
-
869
- _createOverlay: function() {
870
- if ( !this.options.modal ) {
871
- return;
872
- }
873
-
874
- var jqMinor = $.fn.jquery.substring( 0, 4 );
875
-
876
- // We use a delay in case the overlay is created from an
877
- // event that we're going to be cancelling (#2804)
878
- var isOpening = true;
879
- this._delay( function() {
880
- isOpening = false;
881
- } );
882
-
883
- if ( !this.document.data( "ui-dialog-overlays" ) ) {
884
-
885
- // Prevent use of anchors and inputs
886
- // This doesn't use `_on()` because it is a shared event handler
887
- // across all open modal dialogs.
888
- this.document.on( "focusin.ui-dialog", function( event ) {
889
- if ( isOpening ) {
890
- return;
891
- }
892
-
893
- var instance = this._trackingInstances()[ 0 ];
894
- if ( !instance._allowInteraction( event ) ) {
895
- event.preventDefault();
896
- instance._focusTabbable();
897
-
898
- // Support: jQuery >=3.4 <3.7 only
899
- // In jQuery 3.4-3.6, there are multiple issues with focus/blur
900
- // trigger chains or when triggering is done on a hidden element
901
- // at least once.
902
- // Trigger focus in a delay in addition if needed to avoid the issues.
903
- // See https://github.com/jquery/jquery/issues/4382
904
- // See https://github.com/jquery/jquery/issues/4856
905
- // See https://github.com/jquery/jquery/issues/4950
906
- if ( jqMinor === "3.4." || jqMinor === "3.5." || jqMinor === "3.6." ) {
907
- instance._delay( instance._restoreTabbableFocus );
908
- }
909
- }
910
- }.bind( this ) );
911
- }
912
-
913
- this.overlay = $( "<div>" )
914
- .appendTo( this._appendTo() );
915
-
916
- this._addClass( this.overlay, null, "ui-widget-overlay ui-front" );
917
- this._on( this.overlay, {
918
- mousedown: "_keepFocus"
919
- } );
920
- this.document.data( "ui-dialog-overlays",
921
- ( this.document.data( "ui-dialog-overlays" ) || 0 ) + 1 );
922
- },
923
-
924
- _destroyOverlay: function() {
925
- if ( !this.options.modal ) {
926
- return;
927
- }
928
-
929
- if ( this.overlay ) {
930
- var overlays = this.document.data( "ui-dialog-overlays" ) - 1;
931
-
932
- if ( !overlays ) {
933
- this.document.off( "focusin.ui-dialog" );
934
- this.document.removeData( "ui-dialog-overlays" );
935
- } else {
936
- this.document.data( "ui-dialog-overlays", overlays );
937
- }
938
-
939
- this.overlay.remove();
940
- this.overlay = null;
941
- }
942
- }
943
- } );
944
-
945
- // DEPRECATED
946
- // TODO: switch return back to widget declaration at top of file when this is removed
947
- if ( $.uiBackCompat !== false ) {
948
-
949
- // Backcompat for dialogClass option
950
- $.widget( "ui.dialog", $.ui.dialog, {
951
- options: {
952
- dialogClass: ""
953
- },
954
- _createWrapper: function() {
955
- this._super();
956
- this.uiDialog.addClass( this.options.dialogClass );
957
- },
958
- _setOption: function( key, value ) {
959
- if ( key === "dialogClass" ) {
960
- this.uiDialog
961
- .removeClass( this.options.dialogClass )
962
- .addClass( value );
963
- }
964
- this._superApply( arguments );
965
- }
966
- } );
967
- }
968
-
969
- return $.ui.dialog;
970
-
971
- } );