activeadmin 3.4.0 → 4.0.0.beta18

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (357) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +4 -102
  3. data/CONTRIBUTING.md +32 -117
  4. data/README.md +17 -30
  5. data/UPGRADING.md +241 -0
  6. data/app/assets/config/active_admin_manifest.js +2 -0
  7. data/{lib → app/controllers}/active_admin/base_controller/authorization.rb +1 -1
  8. data/app/controllers/active_admin/base_controller/menu.rb +39 -0
  9. data/{lib → app/controllers}/active_admin/base_controller.rb +46 -18
  10. data/{lib → app/controllers}/active_admin/page_controller.rb +0 -4
  11. data/{lib → app/controllers}/active_admin/resource_controller/action_builder.rb +1 -1
  12. data/{lib → app/controllers}/active_admin/resource_controller/data_access.rb +11 -6
  13. data/{lib → app/controllers}/active_admin/resource_controller/scoping.rb +1 -1
  14. data/{lib → app/controllers}/active_admin/resource_controller/streaming.rb +4 -4
  15. data/app/controllers/active_admin/resource_controller.rb +102 -0
  16. data/app/helpers/active_admin/auto_link_helper.rb +66 -0
  17. data/app/helpers/active_admin/breadcrumb_helper.rb +41 -0
  18. data/app/helpers/active_admin/display_helper.rb +117 -0
  19. data/app/helpers/active_admin/form_helper.rb +95 -0
  20. data/app/helpers/active_admin/index_helper.rb +40 -0
  21. data/app/helpers/active_admin/layout_helper.rb +63 -0
  22. data/app/javascript/active_admin/features/batch_actions.js +95 -0
  23. data/app/javascript/active_admin/features/dark_mode_toggle.js +37 -0
  24. data/app/javascript/active_admin/features/filters.js +34 -0
  25. data/app/javascript/active_admin/features/has_many.js +28 -0
  26. data/app/javascript/active_admin/features/main_menu.js +12 -0
  27. data/app/javascript/active_admin/features/per_page.js +9 -0
  28. data/app/javascript/active_admin/utils/dom.js +17 -0
  29. data/app/javascript/active_admin.js +10 -0
  30. data/app/views/active_admin/_flash_messages.html.erb +22 -0
  31. data/app/views/active_admin/_html_head.html.erb +13 -0
  32. data/app/views/active_admin/_main_navigation.html.erb +28 -0
  33. data/app/views/active_admin/_page_header.html.erb +27 -0
  34. data/app/views/active_admin/_sidebar.html.erb +5 -0
  35. data/app/views/active_admin/_site_footer.html.erb +7 -0
  36. data/app/views/active_admin/_site_header.html.erb +30 -0
  37. data/app/views/active_admin/devise/confirmations/new.html.erb +5 -3
  38. data/app/views/active_admin/devise/passwords/edit.html.erb +5 -3
  39. data/app/views/active_admin/devise/passwords/new.html.erb +5 -4
  40. data/app/views/active_admin/devise/registrations/new.html.erb +6 -4
  41. data/app/views/active_admin/devise/sessions/new.html.erb +6 -4
  42. data/app/views/active_admin/devise/shared/_links.erb +3 -1
  43. data/app/views/active_admin/devise/unlocks/new.html.erb +6 -4
  44. data/app/views/{kaminari/active_admin_countless → active_admin/kaminari}/_gap.html.erb +3 -1
  45. data/app/views/active_admin/kaminari/_next_page.html.erb +16 -0
  46. data/app/views/active_admin/kaminari/_page.html.erb +14 -0
  47. data/app/views/{kaminari/active_admin_countless → active_admin/kaminari}/_paginator.html.erb +1 -2
  48. data/app/views/active_admin/kaminari/_prev_page.html.erb +16 -0
  49. data/app/views/active_admin/page/index.html.arb +5 -2
  50. data/app/views/active_admin/resource/_active_filters.html.erb +32 -0
  51. data/app/views/active_admin/resource/_batch_actions_dropdown.html.erb +19 -0
  52. data/app/views/active_admin/resource/_form.html.arb +15 -0
  53. data/app/views/active_admin/resource/_form_default.html.arb +11 -0
  54. data/app/views/active_admin/resource/_index_as_table_default.html.arb +8 -0
  55. data/app/views/active_admin/resource/_index_blank_slate.html.erb +14 -0
  56. data/app/views/active_admin/resource/_index_empty_results.html.erb +5 -0
  57. data/app/views/active_admin/resource/_index_table_actions_default.html.erb +9 -0
  58. data/app/views/active_admin/resource/_show_default.html.arb +2 -0
  59. data/app/views/active_admin/resource/edit.html.arb +1 -2
  60. data/app/views/active_admin/resource/index.html.arb +94 -2
  61. data/app/views/active_admin/resource/new.html.arb +1 -2
  62. data/app/views/active_admin/resource/show.html.arb +12 -2
  63. data/app/views/active_admin/shared/_action_items.html.erb +3 -0
  64. data/app/views/active_admin/shared/_download_format_links.html.erb +7 -0
  65. data/app/views/active_admin/shared/_resource_comments.html.erb +51 -0
  66. data/app/views/active_admin/shared/_sidebar_section.html.arb +6 -0
  67. data/app/views/active_admin/shared/_sidebar_sections.html.erb +5 -0
  68. data/app/views/layouts/active_admin.html.erb +20 -0
  69. data/app/views/layouts/active_admin_logged_out.html.erb +8 -45
  70. data/config/importmap.rb +5 -0
  71. data/config/locales/ar.yml +136 -116
  72. data/config/locales/az.yml +103 -118
  73. data/config/locales/bg.yml +91 -99
  74. data/config/locales/bs.yml +95 -101
  75. data/config/locales/ca.yml +131 -86
  76. data/config/locales/cs.yml +82 -90
  77. data/config/locales/da.yml +102 -117
  78. data/config/locales/de.yml +130 -141
  79. data/config/locales/el.yml +94 -106
  80. data/config/locales/en-CA.yml +104 -119
  81. data/config/locales/en-GB.yml +104 -119
  82. data/config/locales/en.yml +134 -140
  83. data/config/locales/eo.yml +107 -123
  84. data/config/locales/es-MX.yml +70 -78
  85. data/config/locales/es.yml +129 -138
  86. data/config/locales/fa.yml +91 -99
  87. data/config/locales/fi.yml +84 -92
  88. data/config/locales/fr.yml +135 -120
  89. data/config/locales/he.yml +103 -118
  90. data/config/locales/hr.yml +95 -103
  91. data/config/locales/hu.yml +76 -81
  92. data/config/locales/id.yml +97 -112
  93. data/config/locales/it.yml +134 -140
  94. data/config/locales/ja.yml +109 -120
  95. data/config/locales/ko.yml +136 -101
  96. data/config/locales/lt.yml +106 -121
  97. data/config/locales/lv.yml +70 -75
  98. data/config/locales/mk.yml +100 -114
  99. data/config/locales/nb.yml +98 -109
  100. data/config/locales/nl.yml +113 -122
  101. data/config/locales/pl.yml +137 -146
  102. data/config/locales/pt-BR.yml +134 -121
  103. data/config/locales/pt-PT.yml +71 -76
  104. data/config/locales/ro.yml +74 -79
  105. data/config/locales/ru.yml +142 -122
  106. data/config/locales/sk.yml +131 -146
  107. data/config/locales/sv-SE.yml +126 -141
  108. data/config/locales/tr.yml +105 -120
  109. data/config/locales/uk.yml +140 -119
  110. data/config/locales/vi.yml +125 -140
  111. data/config/locales/zh-CN.yml +135 -141
  112. data/config/locales/zh-TW.yml +136 -116
  113. data/lib/active_admin/application.rb +6 -14
  114. data/lib/active_admin/application_settings.rb +1 -1
  115. data/lib/active_admin/async_count.rb +23 -0
  116. data/lib/active_admin/batch_actions/controller.rb +1 -4
  117. data/lib/active_admin/batch_actions/resource_extension.rb +8 -15
  118. data/lib/active_admin/batch_actions/views/batch_action_form.rb +1 -7
  119. data/lib/active_admin/batch_actions/views/selection_cells.rb +3 -3
  120. data/lib/active_admin/batch_actions.rb +4 -9
  121. data/lib/active_admin/callbacks.rb +6 -4
  122. data/lib/active_admin/collection_decorator.rb +1 -1
  123. data/lib/active_admin/component.rb +0 -1
  124. data/lib/active_admin/csv_builder.rb +2 -2
  125. data/lib/active_admin/devise.rb +3 -3
  126. data/lib/active_admin/dsl.rb +3 -3
  127. data/lib/active_admin/dynamic_settings_node.rb +6 -6
  128. data/lib/active_admin/engine.rb +23 -7
  129. data/lib/active_admin/filters/active.rb +8 -6
  130. data/lib/active_admin/filters/active_filter.rb +2 -10
  131. data/lib/active_admin/filters/forms.rb +1 -45
  132. data/lib/active_admin/filters/resource_extension.rb +18 -10
  133. data/lib/active_admin/filters.rb +5 -7
  134. data/lib/active_admin/form_builder.rb +14 -17
  135. data/lib/active_admin/helpers/optional_display.rb +1 -1
  136. data/lib/active_admin/inputs/filters/base/search_method_select.rb +10 -12
  137. data/lib/active_admin/inputs/filters/base.rb +1 -1
  138. data/lib/active_admin/inputs/filters/check_boxes_input.rb +1 -6
  139. data/lib/active_admin/inputs/filters/date_range_input.rb +4 -2
  140. data/lib/active_admin/inputs.rb +0 -3
  141. data/lib/active_admin/localizers.rb +1 -1
  142. data/lib/active_admin/menu.rb +10 -7
  143. data/lib/active_admin/menu_collection.rb +1 -1
  144. data/lib/active_admin/menu_item.rb +24 -3
  145. data/lib/active_admin/namespace.rb +3 -45
  146. data/lib/active_admin/namespace_settings.rb +3 -36
  147. data/lib/active_admin/order_clause.rb +4 -1
  148. data/lib/active_admin/orm/active_record/comments/views/active_admin_comments.rb +4 -76
  149. data/lib/active_admin/orm/active_record/comments/views.rb +2 -2
  150. data/lib/active_admin/orm/active_record/comments.rb +13 -8
  151. data/lib/active_admin/orm/active_record.rb +1 -1
  152. data/lib/active_admin/pundit_adapter.rb +3 -3
  153. data/lib/active_admin/resource/action_items.rb +18 -23
  154. data/lib/active_admin/resource/naming.rb +2 -3
  155. data/lib/active_admin/resource/page_presenters.rb +2 -2
  156. data/lib/active_admin/resource/sidebars.rb +1 -1
  157. data/lib/active_admin/resource.rb +17 -16
  158. data/lib/active_admin/resource_collection.rb +1 -1
  159. data/lib/active_admin/resource_dsl.rb +3 -3
  160. data/lib/active_admin/scope.rb +11 -1
  161. data/lib/active_admin/settings_node.rb +1 -1
  162. data/lib/active_admin/sidebar_section.rb +0 -5
  163. data/lib/active_admin/version.rb +1 -1
  164. data/lib/active_admin/view_helpers/method_or_proc_helper.rb +1 -1
  165. data/lib/active_admin/view_helpers.rb +0 -12
  166. data/lib/active_admin/views/components/active_admin_form.rb +21 -29
  167. data/lib/active_admin/views/components/attributes_table.rb +14 -16
  168. data/lib/active_admin/views/components/index_list.rb +10 -23
  169. data/lib/active_admin/views/components/paginated_collection.rb +34 -39
  170. data/lib/active_admin/views/components/panel.rb +3 -11
  171. data/lib/active_admin/views/components/scopes.rb +39 -26
  172. data/lib/active_admin/views/components/status_tag.rb +22 -19
  173. data/lib/active_admin/views/components/table_for.rb +25 -25
  174. data/lib/active_admin/views/index_as_table.rb +39 -101
  175. data/lib/active_admin.rb +16 -15
  176. data/lib/activeadmin.rb +1 -1
  177. data/lib/generators/active_admin/assets/assets_generator.rb +4 -4
  178. data/lib/generators/active_admin/assets/templates/active_admin.css +3 -0
  179. data/lib/generators/active_admin/assets/templates/tailwind.config.js +21 -0
  180. data/lib/generators/active_admin/devise/devise_generator.rb +2 -2
  181. data/lib/generators/active_admin/install/install_generator.rb +2 -8
  182. data/lib/generators/active_admin/install/templates/active_admin.rb.erb +10 -87
  183. data/lib/generators/active_admin/install/templates/dashboard.rb +8 -25
  184. data/lib/generators/active_admin/page/page_generator.rb +0 -1
  185. data/lib/generators/active_admin/resource/resource_generator.rb +50 -7
  186. data/lib/generators/active_admin/resource/templates/resource.rb.erb +42 -0
  187. data/lib/generators/active_admin/views_generator.rb +18 -0
  188. data/plugin.js +414 -0
  189. data/vendor/bundle/offense.rb +1 -0
  190. data/vendor/javascript/flowbite.js +1 -0
  191. data/vendor/javascript/rails_ujs_esm.js +1 -0
  192. metadata +80 -207
  193. data/app/assets/javascripts/active_admin/base.js +0 -517
  194. data/app/assets/stylesheets/active_admin/_base.scss +0 -57
  195. data/app/assets/stylesheets/active_admin/_forms.scss +0 -315
  196. data/app/assets/stylesheets/active_admin/_header.scss +0 -188
  197. data/app/assets/stylesheets/active_admin/_mixins.scss +0 -1
  198. data/app/assets/stylesheets/active_admin/_normalize.scss +0 -349
  199. data/app/assets/stylesheets/active_admin/_print.scss +0 -287
  200. data/app/assets/stylesheets/active_admin/_typography.scss +0 -100
  201. data/app/assets/stylesheets/active_admin/components/_batch_actions.scss +0 -6
  202. data/app/assets/stylesheets/active_admin/components/_blank_slates.scss +0 -30
  203. data/app/assets/stylesheets/active_admin/components/_breadcrumbs.scss +0 -20
  204. data/app/assets/stylesheets/active_admin/components/_buttons.scss +0 -6
  205. data/app/assets/stylesheets/active_admin/components/_columns.scss +0 -3
  206. data/app/assets/stylesheets/active_admin/components/_comments.scss +0 -41
  207. data/app/assets/stylesheets/active_admin/components/_date_picker.scss +0 -148
  208. data/app/assets/stylesheets/active_admin/components/_dropdown_menu.scss +0 -154
  209. data/app/assets/stylesheets/active_admin/components/_flash_messages.scss +0 -37
  210. data/app/assets/stylesheets/active_admin/components/_grid.scss +0 -9
  211. data/app/assets/stylesheets/active_admin/components/_index_list.scss +0 -12
  212. data/app/assets/stylesheets/active_admin/components/_links.scss +0 -5
  213. data/app/assets/stylesheets/active_admin/components/_modal_dialog.scss +0 -34
  214. data/app/assets/stylesheets/active_admin/components/_pagination.scss +0 -58
  215. data/app/assets/stylesheets/active_admin/components/_panels.scss +0 -6
  216. data/app/assets/stylesheets/active_admin/components/_scopes.scss +0 -13
  217. data/app/assets/stylesheets/active_admin/components/_status_tags.scss +0 -12
  218. data/app/assets/stylesheets/active_admin/components/_table_tools.scss +0 -70
  219. data/app/assets/stylesheets/active_admin/components/_tables.scss +0 -112
  220. data/app/assets/stylesheets/active_admin/components/_tabs.scss +0 -68
  221. data/app/assets/stylesheets/active_admin/components/_unsupported_browser.scss +0 -16
  222. data/app/assets/stylesheets/active_admin/mixins/_all.scss +0 -8
  223. data/app/assets/stylesheets/active_admin/mixins/_buttons.scss +0 -65
  224. data/app/assets/stylesheets/active_admin/mixins/_gradients.scss +0 -28
  225. data/app/assets/stylesheets/active_admin/mixins/_rounded.scss +0 -22
  226. data/app/assets/stylesheets/active_admin/mixins/_sections.scss +0 -41
  227. data/app/assets/stylesheets/active_admin/mixins/_shadows.scss +0 -15
  228. data/app/assets/stylesheets/active_admin/mixins/_typography.scss +0 -3
  229. data/app/assets/stylesheets/active_admin/mixins/_utilities.scss +0 -17
  230. data/app/assets/stylesheets/active_admin/mixins/_variables.scss +0 -51
  231. data/app/assets/stylesheets/active_admin/pages/_logged_out.scss +0 -44
  232. data/app/assets/stylesheets/active_admin/structure/_footer.scss +0 -19
  233. data/app/assets/stylesheets/active_admin/structure/_main_structure.scss +0 -29
  234. data/app/assets/stylesheets/active_admin/structure/_title_bar.scss +0 -43
  235. data/app/javascript/active_admin/base.js +0 -28
  236. data/app/javascript/active_admin/ext/jquery-ui.js +0 -7
  237. data/app/javascript/active_admin/ext/jquery.js +0 -9
  238. data/app/javascript/active_admin/initializers/batch-actions.js +0 -61
  239. data/app/javascript/active_admin/initializers/checkbox-toggler.js +0 -3
  240. data/app/javascript/active_admin/initializers/datepicker.js +0 -16
  241. data/app/javascript/active_admin/initializers/dropdown-menu.js +0 -9
  242. data/app/javascript/active_admin/initializers/filters.js +0 -10
  243. data/app/javascript/active_admin/initializers/has-many.js +0 -98
  244. data/app/javascript/active_admin/initializers/per-page.js +0 -13
  245. data/app/javascript/active_admin/initializers/table-checkbox-toggler.js +0 -3
  246. data/app/javascript/active_admin/initializers/tabs.js +0 -6
  247. data/app/javascript/active_admin/lib/checkbox-toggler.js +0 -49
  248. data/app/javascript/active_admin/lib/dropdown-menu.js +0 -116
  249. data/app/javascript/active_admin/lib/filters.js +0 -39
  250. data/app/javascript/active_admin/lib/modal-dialog.js +0 -63
  251. data/app/javascript/active_admin/lib/per-page.js +0 -38
  252. data/app/javascript/active_admin/lib/table-checkbox-toggler.js +0 -38
  253. data/app/javascript/active_admin/lib/utils.js +0 -40
  254. data/app/views/kaminari/active_admin/_first_page.html.erb +0 -11
  255. data/app/views/kaminari/active_admin/_gap.html.erb +0 -8
  256. data/app/views/kaminari/active_admin/_last_page.html.erb +0 -11
  257. data/app/views/kaminari/active_admin/_next_page.html.erb +0 -11
  258. data/app/views/kaminari/active_admin/_page.html.erb +0 -12
  259. data/app/views/kaminari/active_admin/_paginator.html.erb +0 -25
  260. data/app/views/kaminari/active_admin/_prev_page.html.erb +0 -11
  261. data/app/views/kaminari/active_admin_countless/_first_page.html.erb +0 -11
  262. data/app/views/kaminari/active_admin_countless/_next_page.html.erb +0 -11
  263. data/app/views/kaminari/active_admin_countless/_page.html.erb +0 -12
  264. data/app/views/kaminari/active_admin_countless/_prev_page.html.erb +0 -11
  265. data/app/views/layouts/active_admin.html.arb +0 -2
  266. data/config/locales/de-CH.yml +0 -94
  267. data/lib/active_admin/abstract_view_factory.rb +0 -48
  268. data/lib/active_admin/asset_registration.rb +0 -30
  269. data/lib/active_admin/base_controller/menu.rb +0 -35
  270. data/lib/active_admin/batch_actions/views/batch_action_selector.rb +0 -59
  271. data/lib/active_admin/filters/active_sidebar.rb +0 -28
  272. data/lib/active_admin/generators/boilerplate.rb +0 -54
  273. data/lib/active_admin/helpers/collection.rb +0 -21
  274. data/lib/active_admin/helpers/i18n.rb +0 -8
  275. data/lib/active_admin/inputs/datepicker_input.rb +0 -28
  276. data/lib/active_admin/inputs/filters/date_picker_input.rb +0 -14
  277. data/lib/active_admin/orm/active_record/comments/show_page_helper.rb +0 -24
  278. data/lib/active_admin/orm/mongoid.rb +0 -2
  279. data/lib/active_admin/resource_controller/sidebars.rb +0 -19
  280. data/lib/active_admin/resource_controller.rb +0 -68
  281. data/lib/active_admin/view_factory.rb +0 -28
  282. data/lib/active_admin/view_helpers/active_admin_application_helper.rb +0 -13
  283. data/lib/active_admin/view_helpers/auto_link_helper.rb +0 -46
  284. data/lib/active_admin/view_helpers/breadcrumb_helper.rb +0 -34
  285. data/lib/active_admin/view_helpers/display_helper.rb +0 -119
  286. data/lib/active_admin/view_helpers/download_format_links_helper.rb +0 -60
  287. data/lib/active_admin/view_helpers/fields_for.rb +0 -51
  288. data/lib/active_admin/view_helpers/flash_helper.rb +0 -15
  289. data/lib/active_admin/view_helpers/form_helper.rb +0 -21
  290. data/lib/active_admin/view_helpers/scope_name_helper.rb +0 -17
  291. data/lib/active_admin/view_helpers/sidebar_helper.rb +0 -16
  292. data/lib/active_admin/view_helpers/title_helper.rb +0 -12
  293. data/lib/active_admin/view_helpers/view_factory_helper.rb +0 -12
  294. data/lib/active_admin/views/action_items.rb +0 -18
  295. data/lib/active_admin/views/components/active_filters_sidebar_content.rb +0 -59
  296. data/lib/active_admin/views/components/blank_slate.rb +0 -18
  297. data/lib/active_admin/views/components/columns.rb +0 -162
  298. data/lib/active_admin/views/components/dropdown_menu.rb +0 -69
  299. data/lib/active_admin/views/components/menu.rb +0 -33
  300. data/lib/active_admin/views/components/menu_item.rb +0 -59
  301. data/lib/active_admin/views/components/sidebar.rb +0 -14
  302. data/lib/active_admin/views/components/sidebar_section.rb +0 -35
  303. data/lib/active_admin/views/components/site_title.rb +0 -55
  304. data/lib/active_admin/views/components/tabs.rb +0 -41
  305. data/lib/active_admin/views/components/unsupported_browser.rb +0 -12
  306. data/lib/active_admin/views/footer.rb +0 -32
  307. data/lib/active_admin/views/header.rb +0 -20
  308. data/lib/active_admin/views/index_as_block.rb +0 -37
  309. data/lib/active_admin/views/index_as_blog.rb +0 -156
  310. data/lib/active_admin/views/index_as_grid.rb +0 -81
  311. data/lib/active_admin/views/pages/base.rb +0 -134
  312. data/lib/active_admin/views/pages/form.rb +0 -65
  313. data/lib/active_admin/views/pages/index.rb +0 -166
  314. data/lib/active_admin/views/pages/layout.rb +0 -27
  315. data/lib/active_admin/views/pages/page.rb +0 -31
  316. data/lib/active_admin/views/pages/show.rb +0 -60
  317. data/lib/active_admin/views/tabbed_navigation.rb +0 -12
  318. data/lib/active_admin/views/title_bar.rb +0 -56
  319. data/lib/generators/active_admin/assets/templates/active_admin.js +0 -1
  320. data/lib/generators/active_admin/assets/templates/active_admin.scss +0 -17
  321. data/lib/generators/active_admin/resource/templates/admin.rb.erb +0 -46
  322. data/lib/generators/active_admin/webpacker/plugins/jquery.js +0 -7
  323. data/lib/generators/active_admin/webpacker/templates/active_admin.js +0 -5
  324. data/lib/generators/active_admin/webpacker/templates/active_admin.scss +0 -17
  325. data/lib/generators/active_admin/webpacker/templates/print.scss +0 -2
  326. data/lib/generators/active_admin/webpacker/webpacker_generator.rb +0 -27
  327. data/vendor/assets/javascripts/jquery-ui/data.js +0 -45
  328. data/vendor/assets/javascripts/jquery-ui/disable-selection.js +0 -51
  329. data/vendor/assets/javascripts/jquery-ui/focusable.js +0 -89
  330. data/vendor/assets/javascripts/jquery-ui/form-reset-mixin.js +0 -83
  331. data/vendor/assets/javascripts/jquery-ui/form.js +0 -25
  332. data/vendor/assets/javascripts/jquery-ui/ie.js +0 -20
  333. data/vendor/assets/javascripts/jquery-ui/keycode.js +0 -51
  334. data/vendor/assets/javascripts/jquery-ui/labels.js +0 -71
  335. data/vendor/assets/javascripts/jquery-ui/plugin.js +0 -49
  336. data/vendor/assets/javascripts/jquery-ui/position.js +0 -513
  337. data/vendor/assets/javascripts/jquery-ui/safe-active-element.js +0 -46
  338. data/vendor/assets/javascripts/jquery-ui/safe-blur.js +0 -27
  339. data/vendor/assets/javascripts/jquery-ui/scroll-parent.js +0 -50
  340. data/vendor/assets/javascripts/jquery-ui/tabbable.js +0 -41
  341. data/vendor/assets/javascripts/jquery-ui/unique-id.js +0 -54
  342. data/vendor/assets/javascripts/jquery-ui/version.js +0 -20
  343. data/vendor/assets/javascripts/jquery-ui/widget.js +0 -758
  344. data/vendor/assets/javascripts/jquery-ui/widgets/button.js +0 -454
  345. data/vendor/assets/javascripts/jquery-ui/widgets/checkboxradio.js +0 -294
  346. data/vendor/assets/javascripts/jquery-ui/widgets/controlgroup.js +0 -304
  347. data/vendor/assets/javascripts/jquery-ui/widgets/datepicker.js +0 -2243
  348. data/vendor/assets/javascripts/jquery-ui/widgets/dialog.js +0 -971
  349. data/vendor/assets/javascripts/jquery-ui/widgets/draggable.js +0 -1268
  350. data/vendor/assets/javascripts/jquery-ui/widgets/mouse.js +0 -241
  351. data/vendor/assets/javascripts/jquery-ui/widgets/resizable.js +0 -1228
  352. data/vendor/assets/javascripts/jquery-ui/widgets/sortable.js +0 -1622
  353. data/vendor/assets/javascripts/jquery-ui/widgets/tabs.js +0 -931
  354. /data/{lib → app/controllers}/active_admin/resource_controller/decorators.rb +0 -0
  355. /data/{lib → app/controllers}/active_admin/resource_controller/polymorphic_routes.rb +0 -0
  356. /data/{lib → app/controllers}/active_admin/resource_controller/resource_class_methods.rb +0 -0
  357. /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
- } );