super-sharp-tool 0.0.1

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 (344) hide show
  1. checksums.yaml +7 -0
  2. data/activeadmin-3.5.1/CHANGELOG.md +1153 -0
  3. data/activeadmin-3.5.1/CODE_OF_CONDUCT.md +74 -0
  4. data/activeadmin-3.5.1/CONTRIBUTING.md +187 -0
  5. data/activeadmin-3.5.1/LICENSE +20 -0
  6. data/activeadmin-3.5.1/README.md +117 -0
  7. data/activeadmin-3.5.1/app/assets/javascripts/active_admin/base.js +520 -0
  8. data/activeadmin-3.5.1/app/assets/stylesheets/active_admin/_base.scss +57 -0
  9. data/activeadmin-3.5.1/app/assets/stylesheets/active_admin/_forms.scss +315 -0
  10. data/activeadmin-3.5.1/app/assets/stylesheets/active_admin/_header.scss +188 -0
  11. data/activeadmin-3.5.1/app/assets/stylesheets/active_admin/_mixins.scss +1 -0
  12. data/activeadmin-3.5.1/app/assets/stylesheets/active_admin/_normalize.scss +349 -0
  13. data/activeadmin-3.5.1/app/assets/stylesheets/active_admin/_print.scss +287 -0
  14. data/activeadmin-3.5.1/app/assets/stylesheets/active_admin/_typography.scss +100 -0
  15. data/activeadmin-3.5.1/app/assets/stylesheets/active_admin/components/_batch_actions.scss +6 -0
  16. data/activeadmin-3.5.1/app/assets/stylesheets/active_admin/components/_blank_slates.scss +30 -0
  17. data/activeadmin-3.5.1/app/assets/stylesheets/active_admin/components/_breadcrumbs.scss +20 -0
  18. data/activeadmin-3.5.1/app/assets/stylesheets/active_admin/components/_buttons.scss +6 -0
  19. data/activeadmin-3.5.1/app/assets/stylesheets/active_admin/components/_columns.scss +3 -0
  20. data/activeadmin-3.5.1/app/assets/stylesheets/active_admin/components/_comments.scss +41 -0
  21. data/activeadmin-3.5.1/app/assets/stylesheets/active_admin/components/_date_picker.scss +148 -0
  22. data/activeadmin-3.5.1/app/assets/stylesheets/active_admin/components/_dropdown_menu.scss +154 -0
  23. data/activeadmin-3.5.1/app/assets/stylesheets/active_admin/components/_flash_messages.scss +37 -0
  24. data/activeadmin-3.5.1/app/assets/stylesheets/active_admin/components/_grid.scss +9 -0
  25. data/activeadmin-3.5.1/app/assets/stylesheets/active_admin/components/_index_list.scss +12 -0
  26. data/activeadmin-3.5.1/app/assets/stylesheets/active_admin/components/_links.scss +5 -0
  27. data/activeadmin-3.5.1/app/assets/stylesheets/active_admin/components/_modal_dialog.scss +34 -0
  28. data/activeadmin-3.5.1/app/assets/stylesheets/active_admin/components/_pagination.scss +58 -0
  29. data/activeadmin-3.5.1/app/assets/stylesheets/active_admin/components/_panels.scss +6 -0
  30. data/activeadmin-3.5.1/app/assets/stylesheets/active_admin/components/_scopes.scss +13 -0
  31. data/activeadmin-3.5.1/app/assets/stylesheets/active_admin/components/_status_tags.scss +12 -0
  32. data/activeadmin-3.5.1/app/assets/stylesheets/active_admin/components/_table_tools.scss +70 -0
  33. data/activeadmin-3.5.1/app/assets/stylesheets/active_admin/components/_tables.scss +112 -0
  34. data/activeadmin-3.5.1/app/assets/stylesheets/active_admin/components/_tabs.scss +68 -0
  35. data/activeadmin-3.5.1/app/assets/stylesheets/active_admin/components/_unsupported_browser.scss +16 -0
  36. data/activeadmin-3.5.1/app/assets/stylesheets/active_admin/mixins/_all.scss +8 -0
  37. data/activeadmin-3.5.1/app/assets/stylesheets/active_admin/mixins/_buttons.scss +65 -0
  38. data/activeadmin-3.5.1/app/assets/stylesheets/active_admin/mixins/_gradients.scss +28 -0
  39. data/activeadmin-3.5.1/app/assets/stylesheets/active_admin/mixins/_rounded.scss +22 -0
  40. data/activeadmin-3.5.1/app/assets/stylesheets/active_admin/mixins/_sections.scss +41 -0
  41. data/activeadmin-3.5.1/app/assets/stylesheets/active_admin/mixins/_shadows.scss +15 -0
  42. data/activeadmin-3.5.1/app/assets/stylesheets/active_admin/mixins/_typography.scss +3 -0
  43. data/activeadmin-3.5.1/app/assets/stylesheets/active_admin/mixins/_utilities.scss +17 -0
  44. data/activeadmin-3.5.1/app/assets/stylesheets/active_admin/mixins/_variables.scss +51 -0
  45. data/activeadmin-3.5.1/app/assets/stylesheets/active_admin/pages/_logged_out.scss +44 -0
  46. data/activeadmin-3.5.1/app/assets/stylesheets/active_admin/structure/_footer.scss +19 -0
  47. data/activeadmin-3.5.1/app/assets/stylesheets/active_admin/structure/_main_structure.scss +29 -0
  48. data/activeadmin-3.5.1/app/assets/stylesheets/active_admin/structure/_title_bar.scss +43 -0
  49. data/activeadmin-3.5.1/app/javascript/active_admin/base.js +28 -0
  50. data/activeadmin-3.5.1/app/javascript/active_admin/ext/jquery-ui.js +7 -0
  51. data/activeadmin-3.5.1/app/javascript/active_admin/ext/jquery.js +9 -0
  52. data/activeadmin-3.5.1/app/javascript/active_admin/initializers/batch-actions.js +61 -0
  53. data/activeadmin-3.5.1/app/javascript/active_admin/initializers/checkbox-toggler.js +3 -0
  54. data/activeadmin-3.5.1/app/javascript/active_admin/initializers/datepicker.js +19 -0
  55. data/activeadmin-3.5.1/app/javascript/active_admin/initializers/dropdown-menu.js +9 -0
  56. data/activeadmin-3.5.1/app/javascript/active_admin/initializers/filters.js +10 -0
  57. data/activeadmin-3.5.1/app/javascript/active_admin/initializers/has-many.js +98 -0
  58. data/activeadmin-3.5.1/app/javascript/active_admin/initializers/per-page.js +13 -0
  59. data/activeadmin-3.5.1/app/javascript/active_admin/initializers/table-checkbox-toggler.js +3 -0
  60. data/activeadmin-3.5.1/app/javascript/active_admin/initializers/tabs.js +6 -0
  61. data/activeadmin-3.5.1/app/javascript/active_admin/lib/checkbox-toggler.js +49 -0
  62. data/activeadmin-3.5.1/app/javascript/active_admin/lib/dropdown-menu.js +116 -0
  63. data/activeadmin-3.5.1/app/javascript/active_admin/lib/filters.js +39 -0
  64. data/activeadmin-3.5.1/app/javascript/active_admin/lib/modal-dialog.js +63 -0
  65. data/activeadmin-3.5.1/app/javascript/active_admin/lib/per-page.js +38 -0
  66. data/activeadmin-3.5.1/app/javascript/active_admin/lib/table-checkbox-toggler.js +38 -0
  67. data/activeadmin-3.5.1/app/javascript/active_admin/lib/utils.js +40 -0
  68. data/activeadmin-3.5.1/app/views/active_admin/devise/confirmations/new.html.erb +15 -0
  69. data/activeadmin-3.5.1/app/views/active_admin/devise/mailer/reset_password_instructions.html.erb +8 -0
  70. data/activeadmin-3.5.1/app/views/active_admin/devise/mailer/unlock_instructions.html.erb +7 -0
  71. data/activeadmin-3.5.1/app/views/active_admin/devise/passwords/edit.html.erb +18 -0
  72. data/activeadmin-3.5.1/app/views/active_admin/devise/passwords/new.html.erb +15 -0
  73. data/activeadmin-3.5.1/app/views/active_admin/devise/registrations/new.html.erb +21 -0
  74. data/activeadmin-3.5.1/app/views/active_admin/devise/sessions/new.html.erb +20 -0
  75. data/activeadmin-3.5.1/app/views/active_admin/devise/shared/_error_messages.html.erb +15 -0
  76. data/activeadmin-3.5.1/app/views/active_admin/devise/shared/_links.erb +33 -0
  77. data/activeadmin-3.5.1/app/views/active_admin/devise/unlocks/new.html.erb +15 -0
  78. data/activeadmin-3.5.1/app/views/active_admin/page/index.html.arb +2 -0
  79. data/activeadmin-3.5.1/app/views/active_admin/resource/edit.html.arb +2 -0
  80. data/activeadmin-3.5.1/app/views/active_admin/resource/index.html.arb +2 -0
  81. data/activeadmin-3.5.1/app/views/active_admin/resource/new.html.arb +2 -0
  82. data/activeadmin-3.5.1/app/views/active_admin/resource/show.html.arb +2 -0
  83. data/activeadmin-3.5.1/app/views/kaminari/active_admin/_first_page.html.erb +11 -0
  84. data/activeadmin-3.5.1/app/views/kaminari/active_admin/_gap.html.erb +8 -0
  85. data/activeadmin-3.5.1/app/views/kaminari/active_admin/_last_page.html.erb +11 -0
  86. data/activeadmin-3.5.1/app/views/kaminari/active_admin/_next_page.html.erb +11 -0
  87. data/activeadmin-3.5.1/app/views/kaminari/active_admin/_page.html.erb +12 -0
  88. data/activeadmin-3.5.1/app/views/kaminari/active_admin/_paginator.html.erb +25 -0
  89. data/activeadmin-3.5.1/app/views/kaminari/active_admin/_prev_page.html.erb +11 -0
  90. data/activeadmin-3.5.1/app/views/kaminari/active_admin_countless/_first_page.html.erb +11 -0
  91. data/activeadmin-3.5.1/app/views/kaminari/active_admin_countless/_gap.html.erb +8 -0
  92. data/activeadmin-3.5.1/app/views/kaminari/active_admin_countless/_next_page.html.erb +11 -0
  93. data/activeadmin-3.5.1/app/views/kaminari/active_admin_countless/_page.html.erb +12 -0
  94. data/activeadmin-3.5.1/app/views/kaminari/active_admin_countless/_paginator.html.erb +24 -0
  95. data/activeadmin-3.5.1/app/views/kaminari/active_admin_countless/_prev_page.html.erb +11 -0
  96. data/activeadmin-3.5.1/app/views/layouts/active_admin.html.arb +2 -0
  97. data/activeadmin-3.5.1/app/views/layouts/active_admin_logged_out.html.erb +50 -0
  98. data/activeadmin-3.5.1/config/locales/ar.yml +128 -0
  99. data/activeadmin-3.5.1/config/locales/az.yml +131 -0
  100. data/activeadmin-3.5.1/config/locales/bg.yml +112 -0
  101. data/activeadmin-3.5.1/config/locales/bs.yml +114 -0
  102. data/activeadmin-3.5.1/config/locales/ca.yml +98 -0
  103. data/activeadmin-3.5.1/config/locales/cs.yml +102 -0
  104. data/activeadmin-3.5.1/config/locales/da.yml +130 -0
  105. data/activeadmin-3.5.1/config/locales/de-CH.yml +94 -0
  106. data/activeadmin-3.5.1/config/locales/de.yml +154 -0
  107. data/activeadmin-3.5.1/config/locales/el.yml +119 -0
  108. data/activeadmin-3.5.1/config/locales/en-CA.yml +132 -0
  109. data/activeadmin-3.5.1/config/locales/en-GB.yml +132 -0
  110. data/activeadmin-3.5.1/config/locales/en.yml +154 -0
  111. data/activeadmin-3.5.1/config/locales/eo.yml +137 -0
  112. data/activeadmin-3.5.1/config/locales/es-MX.yml +90 -0
  113. data/activeadmin-3.5.1/config/locales/es.yml +154 -0
  114. data/activeadmin-3.5.1/config/locales/fa.yml +112 -0
  115. data/activeadmin-3.5.1/config/locales/fi.yml +105 -0
  116. data/activeadmin-3.5.1/config/locales/fr.yml +133 -0
  117. data/activeadmin-3.5.1/config/locales/he.yml +132 -0
  118. data/activeadmin-3.5.1/config/locales/hr.yml +116 -0
  119. data/activeadmin-3.5.1/config/locales/hu.yml +94 -0
  120. data/activeadmin-3.5.1/config/locales/id.yml +128 -0
  121. data/activeadmin-3.5.1/config/locales/it.yml +154 -0
  122. data/activeadmin-3.5.1/config/locales/ja.yml +133 -0
  123. data/activeadmin-3.5.1/config/locales/ko.yml +113 -0
  124. data/activeadmin-3.5.1/config/locales/lt.yml +134 -0
  125. data/activeadmin-3.5.1/config/locales/lv.yml +85 -0
  126. data/activeadmin-3.5.1/config/locales/mk.yml +126 -0
  127. data/activeadmin-3.5.1/config/locales/nb.yml +122 -0
  128. data/activeadmin-3.5.1/config/locales/nl.yml +136 -0
  129. data/activeadmin-3.5.1/config/locales/pl.yml +160 -0
  130. data/activeadmin-3.5.1/config/locales/pt-BR.yml +135 -0
  131. data/activeadmin-3.5.1/config/locales/pt-PT.yml +85 -0
  132. data/activeadmin-3.5.1/config/locales/ro.yml +90 -0
  133. data/activeadmin-3.5.1/config/locales/ru.yml +135 -0
  134. data/activeadmin-3.5.1/config/locales/sk.yml +160 -0
  135. data/activeadmin-3.5.1/config/locales/sv-SE.yml +154 -0
  136. data/activeadmin-3.5.1/config/locales/tr.yml +133 -0
  137. data/activeadmin-3.5.1/config/locales/uk.yml +132 -0
  138. data/activeadmin-3.5.1/config/locales/vi.yml +154 -0
  139. data/activeadmin-3.5.1/config/locales/zh-CN.yml +154 -0
  140. data/activeadmin-3.5.1/config/locales/zh-TW.yml +128 -0
  141. data/activeadmin-3.5.1/lib/active_admin/abstract_view_factory.rb +48 -0
  142. data/activeadmin-3.5.1/lib/active_admin/application.rb +234 -0
  143. data/activeadmin-3.5.1/lib/active_admin/application_settings.rb +43 -0
  144. data/activeadmin-3.5.1/lib/active_admin/asset_registration.rb +30 -0
  145. data/activeadmin-3.5.1/lib/active_admin/authorization_adapter.rb +132 -0
  146. data/activeadmin-3.5.1/lib/active_admin/base_controller/authorization.rb +129 -0
  147. data/activeadmin-3.5.1/lib/active_admin/base_controller/menu.rb +35 -0
  148. data/activeadmin-3.5.1/lib/active_admin/base_controller.rb +82 -0
  149. data/activeadmin-3.5.1/lib/active_admin/batch_actions/controller.rb +41 -0
  150. data/activeadmin-3.5.1/lib/active_admin/batch_actions/resource_extension.rb +157 -0
  151. data/activeadmin-3.5.1/lib/active_admin/batch_actions/views/batch_action_form.rb +39 -0
  152. data/activeadmin-3.5.1/lib/active_admin/batch_actions/views/batch_action_selector.rb +59 -0
  153. data/activeadmin-3.5.1/lib/active_admin/batch_actions/views/selection_cells.rb +39 -0
  154. data/activeadmin-3.5.1/lib/active_admin/batch_actions.rb +17 -0
  155. data/activeadmin-3.5.1/lib/active_admin/callbacks.rb +89 -0
  156. data/activeadmin-3.5.1/lib/active_admin/cancan_adapter.rb +37 -0
  157. data/activeadmin-3.5.1/lib/active_admin/collection_decorator.rb +32 -0
  158. data/activeadmin-3.5.1/lib/active_admin/component.rb +6 -0
  159. data/activeadmin-3.5.1/lib/active_admin/controller_action.rb +14 -0
  160. data/activeadmin-3.5.1/lib/active_admin/csv_builder.rb +144 -0
  161. data/activeadmin-3.5.1/lib/active_admin/dependency.rb +97 -0
  162. data/activeadmin-3.5.1/lib/active_admin/devise.rb +91 -0
  163. data/activeadmin-3.5.1/lib/active_admin/dsl.rb +161 -0
  164. data/activeadmin-3.5.1/lib/active_admin/dynamic_setting.rb +39 -0
  165. data/activeadmin-3.5.1/lib/active_admin/dynamic_settings_node.rb +29 -0
  166. data/activeadmin-3.5.1/lib/active_admin/engine.rb +29 -0
  167. data/activeadmin-3.5.1/lib/active_admin/error.rb +63 -0
  168. data/activeadmin-3.5.1/lib/active_admin/filters/active.rb +30 -0
  169. data/activeadmin-3.5.1/lib/active_admin/filters/active_filter.rb +124 -0
  170. data/activeadmin-3.5.1/lib/active_admin/filters/active_sidebar.rb +28 -0
  171. data/activeadmin-3.5.1/lib/active_admin/filters/dsl.rb +22 -0
  172. data/activeadmin-3.5.1/lib/active_admin/filters/forms.rb +86 -0
  173. data/activeadmin-3.5.1/lib/active_admin/filters/formtastic_addons.rb +75 -0
  174. data/activeadmin-3.5.1/lib/active_admin/filters/resource_extension.rb +180 -0
  175. data/activeadmin-3.5.1/lib/active_admin/filters.rb +12 -0
  176. data/activeadmin-3.5.1/lib/active_admin/form_builder.rb +186 -0
  177. data/activeadmin-3.5.1/lib/active_admin/generators/boilerplate.rb +54 -0
  178. data/activeadmin-3.5.1/lib/active_admin/helpers/collection.rb +21 -0
  179. data/activeadmin-3.5.1/lib/active_admin/helpers/i18n.rb +8 -0
  180. data/activeadmin-3.5.1/lib/active_admin/helpers/optional_display.rb +39 -0
  181. data/activeadmin-3.5.1/lib/active_admin/helpers/routes/url_helpers.rb +16 -0
  182. data/activeadmin-3.5.1/lib/active_admin/helpers/scope_chain.rb +25 -0
  183. data/activeadmin-3.5.1/lib/active_admin/inputs/datepicker_input.rb +28 -0
  184. data/activeadmin-3.5.1/lib/active_admin/inputs/filters/base/search_method_select.rb +76 -0
  185. data/activeadmin-3.5.1/lib/active_admin/inputs/filters/base.rb +45 -0
  186. data/activeadmin-3.5.1/lib/active_admin/inputs/filters/boolean_input.rb +25 -0
  187. data/activeadmin-3.5.1/lib/active_admin/inputs/filters/check_boxes_input.rb +51 -0
  188. data/activeadmin-3.5.1/lib/active_admin/inputs/filters/date_picker_input.rb +14 -0
  189. data/activeadmin-3.5.1/lib/active_admin/inputs/filters/date_range_input.rb +53 -0
  190. data/activeadmin-3.5.1/lib/active_admin/inputs/filters/numeric_input.rb +13 -0
  191. data/activeadmin-3.5.1/lib/active_admin/inputs/filters/select_input.rb +59 -0
  192. data/activeadmin-3.5.1/lib/active_admin/inputs/filters/string_input.rb +27 -0
  193. data/activeadmin-3.5.1/lib/active_admin/inputs/filters/text_input.rb +26 -0
  194. data/activeadmin-3.5.1/lib/active_admin/inputs.rb +22 -0
  195. data/activeadmin-3.5.1/lib/active_admin/localizers/resource_localizer.rb +36 -0
  196. data/activeadmin-3.5.1/lib/active_admin/localizers.rb +12 -0
  197. data/activeadmin-3.5.1/lib/active_admin/menu.rb +107 -0
  198. data/activeadmin-3.5.1/lib/active_admin/menu_collection.rb +92 -0
  199. data/activeadmin-3.5.1/lib/active_admin/menu_item.rb +70 -0
  200. data/activeadmin-3.5.1/lib/active_admin/namespace.rb +267 -0
  201. data/activeadmin-3.5.1/lib/active_admin/namespace_settings.rb +127 -0
  202. data/activeadmin-3.5.1/lib/active_admin/order_clause.rb +49 -0
  203. data/activeadmin-3.5.1/lib/active_admin/orm/active_record/comments/comment.rb +40 -0
  204. data/activeadmin-3.5.1/lib/active_admin/orm/active_record/comments/namespace_helper.rb +15 -0
  205. data/activeadmin-3.5.1/lib/active_admin/orm/active_record/comments/resource_helper.rb +18 -0
  206. data/activeadmin-3.5.1/lib/active_admin/orm/active_record/comments/show_page_helper.rb +24 -0
  207. data/activeadmin-3.5.1/lib/active_admin/orm/active_record/comments/views/active_admin_comments.rb +101 -0
  208. data/activeadmin-3.5.1/lib/active_admin/orm/active_record/comments/views.rb +3 -0
  209. data/activeadmin-3.5.1/lib/active_admin/orm/active_record/comments.rb +102 -0
  210. data/activeadmin-3.5.1/lib/active_admin/orm/active_record.rb +6 -0
  211. data/activeadmin-3.5.1/lib/active_admin/orm/mongoid.rb +2 -0
  212. data/activeadmin-3.5.1/lib/active_admin/page.rb +112 -0
  213. data/activeadmin-3.5.1/lib/active_admin/page_controller.rb +30 -0
  214. data/activeadmin-3.5.1/lib/active_admin/page_dsl.rb +33 -0
  215. data/activeadmin-3.5.1/lib/active_admin/page_presenter.rb +34 -0
  216. data/activeadmin-3.5.1/lib/active_admin/pundit_adapter.rb +123 -0
  217. data/activeadmin-3.5.1/lib/active_admin/resource/action_items.rb +121 -0
  218. data/activeadmin-3.5.1/lib/active_admin/resource/attributes.rb +55 -0
  219. data/activeadmin-3.5.1/lib/active_admin/resource/belongs_to.rb +53 -0
  220. data/activeadmin-3.5.1/lib/active_admin/resource/controllers.rb +20 -0
  221. data/activeadmin-3.5.1/lib/active_admin/resource/includes.rb +13 -0
  222. data/activeadmin-3.5.1/lib/active_admin/resource/menu.rb +68 -0
  223. data/activeadmin-3.5.1/lib/active_admin/resource/model.rb +16 -0
  224. data/activeadmin-3.5.1/lib/active_admin/resource/naming.rb +63 -0
  225. data/activeadmin-3.5.1/lib/active_admin/resource/ordering.rb +12 -0
  226. data/activeadmin-3.5.1/lib/active_admin/resource/page_presenters.rb +83 -0
  227. data/activeadmin-3.5.1/lib/active_admin/resource/pagination.rb +24 -0
  228. data/activeadmin-3.5.1/lib/active_admin/resource/routes.rb +146 -0
  229. data/activeadmin-3.5.1/lib/active_admin/resource/scope_to.rb +75 -0
  230. data/activeadmin-3.5.1/lib/active_admin/resource/scopes.rb +53 -0
  231. data/activeadmin-3.5.1/lib/active_admin/resource/sidebars.rb +29 -0
  232. data/activeadmin-3.5.1/lib/active_admin/resource.rb +227 -0
  233. data/activeadmin-3.5.1/lib/active_admin/resource_collection.rb +73 -0
  234. data/activeadmin-3.5.1/lib/active_admin/resource_controller/action_builder.rb +32 -0
  235. data/activeadmin-3.5.1/lib/active_admin/resource_controller/data_access.rb +348 -0
  236. data/activeadmin-3.5.1/lib/active_admin/resource_controller/decorators.rb +81 -0
  237. data/activeadmin-3.5.1/lib/active_admin/resource_controller/polymorphic_routes.rb +38 -0
  238. data/activeadmin-3.5.1/lib/active_admin/resource_controller/resource_class_methods.rb +27 -0
  239. data/activeadmin-3.5.1/lib/active_admin/resource_controller/scoping.rb +32 -0
  240. data/activeadmin-3.5.1/lib/active_admin/resource_controller/sidebars.rb +19 -0
  241. data/activeadmin-3.5.1/lib/active_admin/resource_controller/streaming.rb +45 -0
  242. data/activeadmin-3.5.1/lib/active_admin/resource_controller.rb +68 -0
  243. data/activeadmin-3.5.1/lib/active_admin/resource_dsl.rb +210 -0
  244. data/activeadmin-3.5.1/lib/active_admin/router.rb +115 -0
  245. data/activeadmin-3.5.1/lib/active_admin/scope.rb +65 -0
  246. data/activeadmin-3.5.1/lib/active_admin/settings_node.rb +20 -0
  247. data/activeadmin-3.5.1/lib/active_admin/sidebar_section.rb +40 -0
  248. data/activeadmin-3.5.1/lib/active_admin/version.rb +4 -0
  249. data/activeadmin-3.5.1/lib/active_admin/view_factory.rb +28 -0
  250. data/activeadmin-3.5.1/lib/active_admin/view_helpers/active_admin_application_helper.rb +13 -0
  251. data/activeadmin-3.5.1/lib/active_admin/view_helpers/auto_link_helper.rb +46 -0
  252. data/activeadmin-3.5.1/lib/active_admin/view_helpers/breadcrumb_helper.rb +34 -0
  253. data/activeadmin-3.5.1/lib/active_admin/view_helpers/display_helper.rb +119 -0
  254. data/activeadmin-3.5.1/lib/active_admin/view_helpers/download_format_links_helper.rb +60 -0
  255. data/activeadmin-3.5.1/lib/active_admin/view_helpers/fields_for.rb +51 -0
  256. data/activeadmin-3.5.1/lib/active_admin/view_helpers/flash_helper.rb +15 -0
  257. data/activeadmin-3.5.1/lib/active_admin/view_helpers/form_helper.rb +21 -0
  258. data/activeadmin-3.5.1/lib/active_admin/view_helpers/method_or_proc_helper.rb +101 -0
  259. data/activeadmin-3.5.1/lib/active_admin/view_helpers/scope_name_helper.rb +17 -0
  260. data/activeadmin-3.5.1/lib/active_admin/view_helpers/sidebar_helper.rb +16 -0
  261. data/activeadmin-3.5.1/lib/active_admin/view_helpers/title_helper.rb +12 -0
  262. data/activeadmin-3.5.1/lib/active_admin/view_helpers/view_factory_helper.rb +12 -0
  263. data/activeadmin-3.5.1/lib/active_admin/view_helpers.rb +21 -0
  264. data/activeadmin-3.5.1/lib/active_admin/views/action_items.rb +18 -0
  265. data/activeadmin-3.5.1/lib/active_admin/views/components/active_admin_form.rb +164 -0
  266. data/activeadmin-3.5.1/lib/active_admin/views/components/active_filters_sidebar_content.rb +59 -0
  267. data/activeadmin-3.5.1/lib/active_admin/views/components/attributes_table.rb +95 -0
  268. data/activeadmin-3.5.1/lib/active_admin/views/components/blank_slate.rb +18 -0
  269. data/activeadmin-3.5.1/lib/active_admin/views/components/columns.rb +162 -0
  270. data/activeadmin-3.5.1/lib/active_admin/views/components/dropdown_menu.rb +69 -0
  271. data/activeadmin-3.5.1/lib/active_admin/views/components/index_list.rb +70 -0
  272. data/activeadmin-3.5.1/lib/active_admin/views/components/menu.rb +33 -0
  273. data/activeadmin-3.5.1/lib/active_admin/views/components/menu_item.rb +59 -0
  274. data/activeadmin-3.5.1/lib/active_admin/views/components/paginated_collection.rb +164 -0
  275. data/activeadmin-3.5.1/lib/active_admin/views/components/panel.rb +39 -0
  276. data/activeadmin-3.5.1/lib/active_admin/views/components/scopes.rb +75 -0
  277. data/activeadmin-3.5.1/lib/active_admin/views/components/sidebar.rb +14 -0
  278. data/activeadmin-3.5.1/lib/active_admin/views/components/sidebar_section.rb +35 -0
  279. data/activeadmin-3.5.1/lib/active_admin/views/components/site_title.rb +55 -0
  280. data/activeadmin-3.5.1/lib/active_admin/views/components/status_tag.rb +76 -0
  281. data/activeadmin-3.5.1/lib/active_admin/views/components/table_for.rb +211 -0
  282. data/activeadmin-3.5.1/lib/active_admin/views/components/tabs.rb +41 -0
  283. data/activeadmin-3.5.1/lib/active_admin/views/components/unsupported_browser.rb +12 -0
  284. data/activeadmin-3.5.1/lib/active_admin/views/footer.rb +32 -0
  285. data/activeadmin-3.5.1/lib/active_admin/views/header.rb +20 -0
  286. data/activeadmin-3.5.1/lib/active_admin/views/index_as_block.rb +37 -0
  287. data/activeadmin-3.5.1/lib/active_admin/views/index_as_blog.rb +156 -0
  288. data/activeadmin-3.5.1/lib/active_admin/views/index_as_grid.rb +81 -0
  289. data/activeadmin-3.5.1/lib/active_admin/views/index_as_table.rb +401 -0
  290. data/activeadmin-3.5.1/lib/active_admin/views/pages/base.rb +134 -0
  291. data/activeadmin-3.5.1/lib/active_admin/views/pages/form.rb +65 -0
  292. data/activeadmin-3.5.1/lib/active_admin/views/pages/index.rb +166 -0
  293. data/activeadmin-3.5.1/lib/active_admin/views/pages/layout.rb +27 -0
  294. data/activeadmin-3.5.1/lib/active_admin/views/pages/page.rb +31 -0
  295. data/activeadmin-3.5.1/lib/active_admin/views/pages/show.rb +60 -0
  296. data/activeadmin-3.5.1/lib/active_admin/views/tabbed_navigation.rb +12 -0
  297. data/activeadmin-3.5.1/lib/active_admin/views/title_bar.rb +56 -0
  298. data/activeadmin-3.5.1/lib/active_admin/views.rb +9 -0
  299. data/activeadmin-3.5.1/lib/active_admin.rb +135 -0
  300. data/activeadmin-3.5.1/lib/activeadmin.rb +2 -0
  301. data/activeadmin-3.5.1/lib/generators/active_admin/assets/assets_generator.rb +15 -0
  302. data/activeadmin-3.5.1/lib/generators/active_admin/assets/templates/active_admin.js +1 -0
  303. data/activeadmin-3.5.1/lib/generators/active_admin/assets/templates/active_admin.scss +17 -0
  304. data/activeadmin-3.5.1/lib/generators/active_admin/devise/devise_generator.rb +69 -0
  305. data/activeadmin-3.5.1/lib/generators/active_admin/install/install_generator.rb +56 -0
  306. data/activeadmin-3.5.1/lib/generators/active_admin/install/templates/active_admin.rb.erb +352 -0
  307. data/activeadmin-3.5.1/lib/generators/active_admin/install/templates/admin_users.rb.erb +28 -0
  308. data/activeadmin-3.5.1/lib/generators/active_admin/install/templates/dashboard.rb +33 -0
  309. data/activeadmin-3.5.1/lib/generators/active_admin/install/templates/migrations/create_active_admin_comments.rb.erb +16 -0
  310. data/activeadmin-3.5.1/lib/generators/active_admin/page/USAGE +8 -0
  311. data/activeadmin-3.5.1/lib/generators/active_admin/page/page_generator.rb +13 -0
  312. data/activeadmin-3.5.1/lib/generators/active_admin/page/templates/page.rb +6 -0
  313. data/activeadmin-3.5.1/lib/generators/active_admin/resource/resource_generator.rb +21 -0
  314. data/activeadmin-3.5.1/lib/generators/active_admin/resource/templates/admin.rb.erb +46 -0
  315. data/activeadmin-3.5.1/lib/generators/active_admin/webpacker/plugins/jquery.js +7 -0
  316. data/activeadmin-3.5.1/lib/generators/active_admin/webpacker/templates/active_admin.js +5 -0
  317. data/activeadmin-3.5.1/lib/generators/active_admin/webpacker/templates/active_admin.scss +17 -0
  318. data/activeadmin-3.5.1/lib/generators/active_admin/webpacker/templates/print.scss +2 -0
  319. data/activeadmin-3.5.1/lib/generators/active_admin/webpacker/webpacker_generator.rb +27 -0
  320. data/activeadmin-3.5.1/vendor/assets/javascripts/jquery-ui/data.js +39 -0
  321. data/activeadmin-3.5.1/vendor/assets/javascripts/jquery-ui/disable-selection.js +51 -0
  322. data/activeadmin-3.5.1/vendor/assets/javascripts/jquery-ui/focusable.js +79 -0
  323. data/activeadmin-3.5.1/vendor/assets/javascripts/jquery-ui/form-reset-mixin.js +81 -0
  324. data/activeadmin-3.5.1/vendor/assets/javascripts/jquery-ui/keycode.js +51 -0
  325. data/activeadmin-3.5.1/vendor/assets/javascripts/jquery-ui/labels.js +70 -0
  326. data/activeadmin-3.5.1/vendor/assets/javascripts/jquery-ui/plugin.js +49 -0
  327. data/activeadmin-3.5.1/vendor/assets/javascripts/jquery-ui/position.js +513 -0
  328. data/activeadmin-3.5.1/vendor/assets/javascripts/jquery-ui/scroll-parent.js +50 -0
  329. data/activeadmin-3.5.1/vendor/assets/javascripts/jquery-ui/tabbable.js +41 -0
  330. data/activeadmin-3.5.1/vendor/assets/javascripts/jquery-ui/unique-id.js +54 -0
  331. data/activeadmin-3.5.1/vendor/assets/javascripts/jquery-ui/version.js +20 -0
  332. data/activeadmin-3.5.1/vendor/assets/javascripts/jquery-ui/widget.js +761 -0
  333. data/activeadmin-3.5.1/vendor/assets/javascripts/jquery-ui/widgets/button.js +454 -0
  334. data/activeadmin-3.5.1/vendor/assets/javascripts/jquery-ui/widgets/checkboxradio.js +294 -0
  335. data/activeadmin-3.5.1/vendor/assets/javascripts/jquery-ui/widgets/controlgroup.js +304 -0
  336. data/activeadmin-3.5.1/vendor/assets/javascripts/jquery-ui/widgets/datepicker.js +2240 -0
  337. data/activeadmin-3.5.1/vendor/assets/javascripts/jquery-ui/widgets/dialog.js +957 -0
  338. data/activeadmin-3.5.1/vendor/assets/javascripts/jquery-ui/widgets/draggable.js +1264 -0
  339. data/activeadmin-3.5.1/vendor/assets/javascripts/jquery-ui/widgets/mouse.js +226 -0
  340. data/activeadmin-3.5.1/vendor/assets/javascripts/jquery-ui/widgets/resizable.js +1281 -0
  341. data/activeadmin-3.5.1/vendor/assets/javascripts/jquery-ui/widgets/sortable.js +1614 -0
  342. data/activeadmin-3.5.1/vendor/assets/javascripts/jquery-ui/widgets/tabs.js +918 -0
  343. data/super-sharp-tool.gemspec +12 -0
  344. metadata +383 -0
@@ -0,0 +1,918 @@
1
+ //= require jquery-ui/keycode
2
+ //= require jquery-ui/unique-id
3
+ //= require jquery-ui/version
4
+ //= require jquery-ui/widget
5
+
6
+ /*!
7
+ * jQuery UI Tabs 1.14.2
8
+ * https://jqueryui.com
9
+ *
10
+ * Copyright OpenJS Foundation and other contributors
11
+ * Released under the MIT license.
12
+ * https://jquery.org/license
13
+ */
14
+
15
+ //>>label: Tabs
16
+ //>>group: Widgets
17
+ //>>description: Transforms a set of container elements into a tab structure.
18
+ //>>docs: https://api.jqueryui.com/tabs/
19
+ //>>demos: https://jqueryui.com/tabs/
20
+ //>>css.structure: ../../themes/base/core.css
21
+ //>>css.structure: ../../themes/base/tabs.css
22
+ //>>css.theme: ../../themes/base/theme.css
23
+
24
+ ( function( factory ) {
25
+ "use strict";
26
+
27
+ if ( typeof define === "function" && define.amd ) {
28
+
29
+ // AMD. Register as an anonymous module.
30
+ define( [
31
+ "jquery",
32
+ "../keycode",
33
+ "../unique-id",
34
+ "../version",
35
+ "../widget"
36
+ ], factory );
37
+ } else {
38
+
39
+ // Browser globals
40
+ factory( jQuery );
41
+ }
42
+ } )( function( $ ) {
43
+ "use strict";
44
+
45
+ $.widget( "ui.tabs", {
46
+ version: "1.14.2",
47
+ delay: 300,
48
+ options: {
49
+ active: null,
50
+ classes: {
51
+ "ui-tabs": "ui-corner-all",
52
+ "ui-tabs-nav": "ui-corner-all",
53
+ "ui-tabs-panel": "ui-corner-bottom",
54
+ "ui-tabs-tab": "ui-corner-top"
55
+ },
56
+ collapsible: false,
57
+ event: "click",
58
+ heightStyle: "content",
59
+ hide: null,
60
+ show: null,
61
+
62
+ // Callbacks
63
+ activate: null,
64
+ beforeActivate: null,
65
+ beforeLoad: null,
66
+ load: null
67
+ },
68
+
69
+ _isLocal: function( anchor ) {
70
+ var anchorUrl = new URL( anchor.href ),
71
+ locationUrl = new URL( location.href );
72
+
73
+ return anchor.hash.length > 1 &&
74
+
75
+ // `href` may contain a hash but also username & password;
76
+ // we want to ignore them, so we check the three fields
77
+ // below instead.
78
+ anchorUrl.origin === locationUrl.origin &&
79
+ anchorUrl.pathname === locationUrl.pathname &&
80
+ anchorUrl.search === locationUrl.search;
81
+ },
82
+
83
+ _create: function() {
84
+ var that = this,
85
+ options = this.options;
86
+
87
+ this.running = false;
88
+
89
+ this._addClass( "ui-tabs", "ui-widget ui-widget-content" );
90
+ this._toggleClass( "ui-tabs-collapsible", null, options.collapsible );
91
+
92
+ this._processTabs();
93
+ options.active = this._initialActive();
94
+
95
+ // Take disabling tabs via class attribute from HTML
96
+ // into account and update option properly.
97
+ if ( Array.isArray( options.disabled ) ) {
98
+ options.disabled = $.uniqueSort( options.disabled.concat(
99
+ $.map( this.tabs.filter( ".ui-state-disabled" ), function( li ) {
100
+ return that.tabs.index( li );
101
+ } )
102
+ ) ).sort();
103
+ }
104
+
105
+ // Check for length avoids error when initializing empty list
106
+ if ( this.options.active !== false && this.anchors.length ) {
107
+ this.active = this._findActive( options.active );
108
+ } else {
109
+ this.active = $();
110
+ }
111
+
112
+ this._refresh();
113
+
114
+ if ( this.active.length ) {
115
+ this.load( options.active );
116
+ }
117
+ },
118
+
119
+ _initialActive: function() {
120
+ var active = this.options.active,
121
+ collapsible = this.options.collapsible,
122
+ locationHash = location.hash.substring( 1 ),
123
+ locationHashDecoded = decodeURIComponent( locationHash );
124
+
125
+ if ( active === null ) {
126
+
127
+ // check the fragment identifier in the URL
128
+ if ( locationHash ) {
129
+ this.tabs.each( function( i, tab ) {
130
+ if ( $( tab ).attr( "aria-controls" ) === locationHash ) {
131
+ active = i;
132
+ return false;
133
+ }
134
+ } );
135
+
136
+ // If not found, decode the hash & try again.
137
+ // See the comment in `_processTabs` under the `_isLocal` check
138
+ // for more information.
139
+ if ( active === null ) {
140
+ this.tabs.each( function( i, tab ) {
141
+ if ( $( tab ).attr( "aria-controls" ) === locationHashDecoded ) {
142
+ active = i;
143
+ return false;
144
+ }
145
+ } );
146
+ }
147
+ }
148
+
149
+ // Check for a tab marked active via a class
150
+ if ( active === null ) {
151
+ active = this.tabs.index( this.tabs.filter( ".ui-tabs-active" ) );
152
+ }
153
+
154
+ // No active tab, set to false
155
+ if ( active === null || active === -1 ) {
156
+ active = this.tabs.length ? 0 : false;
157
+ }
158
+ }
159
+
160
+ // Handle numbers: negative, out of range
161
+ if ( active !== false ) {
162
+ active = this.tabs.index( this.tabs.eq( active ) );
163
+ if ( active === -1 ) {
164
+ active = collapsible ? false : 0;
165
+ }
166
+ }
167
+
168
+ // Don't allow collapsible: false and active: false
169
+ if ( !collapsible && active === false && this.anchors.length ) {
170
+ active = 0;
171
+ }
172
+
173
+ return active;
174
+ },
175
+
176
+ _getCreateEventData: function() {
177
+ return {
178
+ tab: this.active,
179
+ panel: !this.active.length ? $() : this._getPanelForTab( this.active )
180
+ };
181
+ },
182
+
183
+ _tabKeydown: function( event ) {
184
+ var focusedTab = $( this.document[ 0 ].activeElement ).closest( "li" ),
185
+ selectedIndex = this.tabs.index( focusedTab ),
186
+ goingForward = true;
187
+
188
+ if ( this._handlePageNav( event ) ) {
189
+ return;
190
+ }
191
+
192
+ switch ( event.keyCode ) {
193
+ case $.ui.keyCode.RIGHT:
194
+ case $.ui.keyCode.DOWN:
195
+ selectedIndex++;
196
+ break;
197
+ case $.ui.keyCode.UP:
198
+ case $.ui.keyCode.LEFT:
199
+ goingForward = false;
200
+ selectedIndex--;
201
+ break;
202
+ case $.ui.keyCode.END:
203
+ selectedIndex = this.anchors.length - 1;
204
+ break;
205
+ case $.ui.keyCode.HOME:
206
+ selectedIndex = 0;
207
+ break;
208
+ case $.ui.keyCode.SPACE:
209
+
210
+ // Activate only, no collapsing
211
+ event.preventDefault();
212
+ clearTimeout( this.activating );
213
+ this._activate( selectedIndex );
214
+ return;
215
+ case $.ui.keyCode.ENTER:
216
+
217
+ // Toggle (cancel delayed activation, allow collapsing)
218
+ event.preventDefault();
219
+ clearTimeout( this.activating );
220
+
221
+ // Determine if we should collapse or activate
222
+ this._activate( selectedIndex === this.options.active ? false : selectedIndex );
223
+ return;
224
+ default:
225
+ return;
226
+ }
227
+
228
+ // Focus the appropriate tab, based on which key was pressed
229
+ event.preventDefault();
230
+ clearTimeout( this.activating );
231
+ selectedIndex = this._focusNextTab( selectedIndex, goingForward );
232
+
233
+ // Navigating with control/command key will prevent automatic activation
234
+ if ( !event.ctrlKey && !event.metaKey ) {
235
+
236
+ // Update aria-selected immediately so that AT think the tab is already selected.
237
+ // Otherwise AT may confuse the user by stating that they need to activate the tab,
238
+ // but the tab will already be activated by the time the announcement finishes.
239
+ focusedTab.attr( "aria-selected", "false" );
240
+ this.tabs.eq( selectedIndex ).attr( "aria-selected", "true" );
241
+
242
+ this.activating = this._delay( function() {
243
+ this.option( "active", selectedIndex );
244
+ }, this.delay );
245
+ }
246
+ },
247
+
248
+ _panelKeydown: function( event ) {
249
+ if ( this._handlePageNav( event ) ) {
250
+ return;
251
+ }
252
+
253
+ // Ctrl+up moves focus to the current tab
254
+ if ( event.ctrlKey && event.keyCode === $.ui.keyCode.UP ) {
255
+ event.preventDefault();
256
+ this.active.trigger( "focus" );
257
+ }
258
+ },
259
+
260
+ // Alt+page up/down moves focus to the previous/next tab (and activates)
261
+ _handlePageNav: function( event ) {
262
+ if ( event.altKey && event.keyCode === $.ui.keyCode.PAGE_UP ) {
263
+ this._activate( this._focusNextTab( this.options.active - 1, false ) );
264
+ return true;
265
+ }
266
+ if ( event.altKey && event.keyCode === $.ui.keyCode.PAGE_DOWN ) {
267
+ this._activate( this._focusNextTab( this.options.active + 1, true ) );
268
+ return true;
269
+ }
270
+ },
271
+
272
+ _findNextTab: function( index, goingForward ) {
273
+ var lastTabIndex = this.tabs.length - 1;
274
+
275
+ function constrain() {
276
+ if ( index > lastTabIndex ) {
277
+ index = 0;
278
+ }
279
+ if ( index < 0 ) {
280
+ index = lastTabIndex;
281
+ }
282
+ return index;
283
+ }
284
+
285
+ while ( $.inArray( constrain(), this.options.disabled ) !== -1 ) {
286
+ index = goingForward ? index + 1 : index - 1;
287
+ }
288
+
289
+ return index;
290
+ },
291
+
292
+ _focusNextTab: function( index, goingForward ) {
293
+ index = this._findNextTab( index, goingForward );
294
+ this.tabs.eq( index ).trigger( "focus" );
295
+ return index;
296
+ },
297
+
298
+ _setOption: function( key, value ) {
299
+ if ( key === "active" ) {
300
+
301
+ // _activate() will handle invalid values and update this.options
302
+ this._activate( value );
303
+ return;
304
+ }
305
+
306
+ this._super( key, value );
307
+
308
+ if ( key === "collapsible" ) {
309
+ this._toggleClass( "ui-tabs-collapsible", null, value );
310
+
311
+ // Setting collapsible: false while collapsed; open first panel
312
+ if ( !value && this.options.active === false ) {
313
+ this._activate( 0 );
314
+ }
315
+ }
316
+
317
+ if ( key === "event" ) {
318
+ this._setupEvents( value );
319
+ }
320
+
321
+ if ( key === "heightStyle" ) {
322
+ this._setupHeightStyle( value );
323
+ }
324
+ },
325
+
326
+ refresh: function() {
327
+ var options = this.options,
328
+ lis = this.tablist.children( ":has(a[href])" );
329
+
330
+ // Get disabled tabs from class attribute from HTML
331
+ // this will get converted to a boolean if needed in _refresh()
332
+ options.disabled = $.map( lis.filter( ".ui-state-disabled" ), function( tab ) {
333
+ return lis.index( tab );
334
+ } );
335
+
336
+ this._processTabs();
337
+
338
+ // Was collapsed or no tabs
339
+ if ( options.active === false || !this.anchors.length ) {
340
+ options.active = false;
341
+ this.active = $();
342
+
343
+ // was active, but active tab is gone
344
+ } else if ( this.active.length && !$.contains( this.tablist[ 0 ], this.active[ 0 ] ) ) {
345
+
346
+ // all remaining tabs are disabled
347
+ if ( this.tabs.length === options.disabled.length ) {
348
+ options.active = false;
349
+ this.active = $();
350
+
351
+ // activate previous tab
352
+ } else {
353
+ this._activate( this._findNextTab( Math.max( 0, options.active - 1 ), false ) );
354
+ }
355
+
356
+ // was active, active tab still exists
357
+ } else {
358
+
359
+ // make sure active index is correct
360
+ options.active = this.tabs.index( this.active );
361
+ }
362
+
363
+ this._refresh();
364
+ },
365
+
366
+ _refresh: function() {
367
+ this._setOptionDisabled( this.options.disabled );
368
+ this._setupEvents( this.options.event );
369
+ this._setupHeightStyle( this.options.heightStyle );
370
+
371
+ this.tabs.not( this.active ).attr( {
372
+ "aria-selected": "false",
373
+ "aria-expanded": "false",
374
+ tabIndex: -1
375
+ } );
376
+ this.panels.not( this._getPanelForTab( this.active ) )
377
+ .hide()
378
+ .attr( {
379
+ "aria-hidden": "true"
380
+ } );
381
+
382
+ // Make sure one tab is in the tab order
383
+ if ( !this.active.length ) {
384
+ this.tabs.eq( 0 ).attr( "tabIndex", 0 );
385
+ } else {
386
+ this.active
387
+ .attr( {
388
+ "aria-selected": "true",
389
+ "aria-expanded": "true",
390
+ tabIndex: 0
391
+ } );
392
+ this._addClass( this.active, "ui-tabs-active", "ui-state-active" );
393
+ this._getPanelForTab( this.active )
394
+ .show()
395
+ .attr( {
396
+ "aria-hidden": "false"
397
+ } );
398
+ }
399
+ },
400
+
401
+ _processTabs: function() {
402
+ var that = this,
403
+ prevTabs = this.tabs,
404
+ prevAnchors = this.anchors,
405
+ prevPanels = this.panels;
406
+
407
+ this.tablist = this._getList().attr( "role", "tablist" );
408
+ this._addClass( this.tablist, "ui-tabs-nav",
409
+ "ui-helper-reset ui-helper-clearfix ui-widget-header" );
410
+
411
+ // Prevent users from focusing disabled tabs via click
412
+ this.tablist
413
+ .on( "mousedown" + this.eventNamespace, "> li", function( event ) {
414
+ if ( $( this ).is( ".ui-state-disabled" ) ) {
415
+ event.preventDefault();
416
+ }
417
+ } );
418
+
419
+ this.tabs = this.tablist.find( "> li:has(a[href])" )
420
+ .attr( {
421
+ role: "tab",
422
+ tabIndex: -1
423
+ } );
424
+ this._addClass( this.tabs, "ui-tabs-tab", "ui-state-default" );
425
+
426
+ this.anchors = this.tabs.map( function() {
427
+ return $( "a", this )[ 0 ];
428
+ } )
429
+ .attr( {
430
+ tabIndex: -1
431
+ } );
432
+ this._addClass( this.anchors, "ui-tabs-anchor" );
433
+
434
+ this.panels = $();
435
+
436
+ this.anchors.each( function( i, anchor ) {
437
+ var selector, panel, panelId,
438
+ anchorId = $( anchor ).uniqueId().attr( "id" ),
439
+ tab = $( anchor ).closest( "li" ),
440
+ originalAriaControls = tab.attr( "aria-controls" );
441
+
442
+ // Inline tab
443
+ if ( that._isLocal( anchor ) ) {
444
+
445
+ // The "scrolling to a fragment" section of the HTML spec:
446
+ // https://html.spec.whatwg.org/#scrolling-to-a-fragment
447
+ // uses a concept of document's indicated part:
448
+ // https://html.spec.whatwg.org/#the-indicated-part-of-the-document
449
+ // Slightly below there's an algorithm to compute the indicated
450
+ // part:
451
+ // https://html.spec.whatwg.org/#the-indicated-part-of-the-document
452
+ // First, the algorithm tries the hash as-is, without decoding.
453
+ // Then, if one is not found, the same is attempted with a decoded
454
+ // hash. Replicate this logic.
455
+ selector = anchor.hash;
456
+ panelId = selector.substring( 1 );
457
+ panel = that.element.find( "#" + CSS.escape( panelId ) );
458
+ if ( !panel.length ) {
459
+ panelId = decodeURIComponent( panelId );
460
+ panel = that.element.find( "#" + CSS.escape( panelId ) );
461
+ }
462
+
463
+ // remote tab
464
+ } else {
465
+
466
+ // If the tab doesn't already have aria-controls,
467
+ // generate an id by using a throw-away element
468
+ panelId = tab.attr( "aria-controls" ) || $( {} ).uniqueId()[ 0 ].id;
469
+ selector = "#" + panelId;
470
+ panel = that.element.find( selector );
471
+ if ( !panel.length ) {
472
+ panel = that._createPanel( panelId );
473
+ panel.insertAfter( that.panels[ i - 1 ] || that.tablist );
474
+ }
475
+ panel.attr( "aria-live", "polite" );
476
+ }
477
+
478
+ if ( panel.length ) {
479
+ that.panels = that.panels.add( panel );
480
+ }
481
+ if ( originalAriaControls ) {
482
+ tab.data( "ui-tabs-aria-controls", originalAriaControls );
483
+ }
484
+ tab.attr( {
485
+ "aria-controls": panelId,
486
+ "aria-labelledby": anchorId
487
+ } );
488
+ panel.attr( "aria-labelledby", anchorId );
489
+ } );
490
+
491
+ this.panels.attr( "role", "tabpanel" );
492
+ this._addClass( this.panels, "ui-tabs-panel", "ui-widget-content" );
493
+
494
+ // Avoid memory leaks (#10056)
495
+ if ( prevTabs ) {
496
+ this._off( prevTabs.not( this.tabs ) );
497
+ this._off( prevAnchors.not( this.anchors ) );
498
+ this._off( prevPanels.not( this.panels ) );
499
+ }
500
+ },
501
+
502
+ // Allow overriding how to find the list for rare usage scenarios (#7715)
503
+ _getList: function() {
504
+ return this.tablist || this.element.find( "ol, ul" ).eq( 0 );
505
+ },
506
+
507
+ _createPanel: function( id ) {
508
+ return $( "<div>" )
509
+ .attr( "id", id )
510
+ .data( "ui-tabs-destroy", true );
511
+ },
512
+
513
+ _setOptionDisabled: function( disabled ) {
514
+ var currentItem, li, i;
515
+
516
+ if ( Array.isArray( disabled ) ) {
517
+ if ( !disabled.length ) {
518
+ disabled = false;
519
+ } else if ( disabled.length === this.anchors.length ) {
520
+ disabled = true;
521
+ }
522
+ }
523
+
524
+ // Disable tabs
525
+ for ( i = 0; ( li = this.tabs[ i ] ); i++ ) {
526
+ currentItem = $( li );
527
+ if ( disabled === true || $.inArray( i, disabled ) !== -1 ) {
528
+ currentItem.attr( "aria-disabled", "true" );
529
+ this._addClass( currentItem, null, "ui-state-disabled" );
530
+ } else {
531
+ currentItem.removeAttr( "aria-disabled" );
532
+ this._removeClass( currentItem, null, "ui-state-disabled" );
533
+ }
534
+ }
535
+
536
+ this.options.disabled = disabled;
537
+
538
+ this._toggleClass( this.widget(), this.widgetFullName + "-disabled", null,
539
+ disabled === true );
540
+ },
541
+
542
+ _setupEvents: function( event ) {
543
+ var events = {};
544
+ if ( event ) {
545
+ $.each( event.split( " " ), function( index, eventName ) {
546
+ events[ eventName ] = "_eventHandler";
547
+ } );
548
+ }
549
+
550
+ this._off( this.anchors.add( this.tabs ).add( this.panels ) );
551
+
552
+ // Always prevent the default action, even when disabled
553
+ this._on( true, this.anchors, {
554
+ click: function( event ) {
555
+ event.preventDefault();
556
+ }
557
+ } );
558
+ this._on( this.anchors, events );
559
+ this._on( this.tabs, { keydown: "_tabKeydown" } );
560
+ this._on( this.panels, { keydown: "_panelKeydown" } );
561
+
562
+ this._focusable( this.tabs );
563
+ this._hoverable( this.tabs );
564
+ },
565
+
566
+ _setupHeightStyle: function( heightStyle ) {
567
+ var maxHeight,
568
+ parent = this.element.parent();
569
+
570
+ if ( heightStyle === "fill" ) {
571
+ maxHeight = parent.height();
572
+ maxHeight -= this.element.outerHeight() - this.element.height();
573
+
574
+ this.element.siblings( ":visible" ).each( function() {
575
+ var elem = $( this ),
576
+ position = elem.css( "position" );
577
+
578
+ if ( position === "absolute" || position === "fixed" ) {
579
+ return;
580
+ }
581
+ maxHeight -= elem.outerHeight( true );
582
+ } );
583
+
584
+ this.element.children().not( this.panels ).each( function() {
585
+ maxHeight -= $( this ).outerHeight( true );
586
+ } );
587
+
588
+ this.panels.each( function() {
589
+ $( this ).height( Math.max( 0, maxHeight -
590
+ $( this ).innerHeight() + $( this ).height() ) );
591
+ } )
592
+ .css( "overflow", "auto" );
593
+ } else if ( heightStyle === "auto" ) {
594
+ maxHeight = 0;
595
+ this.panels.each( function() {
596
+ maxHeight = Math.max( maxHeight, $( this ).height( "" ).height() );
597
+ } ).height( maxHeight );
598
+ }
599
+ },
600
+
601
+ _eventHandler: function( event ) {
602
+ var options = this.options,
603
+ active = this.active,
604
+ anchor = $( event.currentTarget ),
605
+ tab = anchor.closest( "li" ),
606
+ clickedIsActive = tab[ 0 ] === active[ 0 ],
607
+ collapsing = clickedIsActive && options.collapsible,
608
+ toShow = collapsing ? $() : this._getPanelForTab( tab ),
609
+ toHide = !active.length ? $() : this._getPanelForTab( active ),
610
+ eventData = {
611
+ oldTab: active,
612
+ oldPanel: toHide,
613
+ newTab: collapsing ? $() : tab,
614
+ newPanel: toShow
615
+ };
616
+
617
+ event.preventDefault();
618
+
619
+ if ( tab.hasClass( "ui-state-disabled" ) ||
620
+
621
+ // tab is already loading
622
+ tab.hasClass( "ui-tabs-loading" ) ||
623
+
624
+ // can't switch durning an animation
625
+ this.running ||
626
+
627
+ // click on active header, but not collapsible
628
+ ( clickedIsActive && !options.collapsible ) ||
629
+
630
+ // allow canceling activation
631
+ ( this._trigger( "beforeActivate", event, eventData ) === false ) ) {
632
+ return;
633
+ }
634
+
635
+ options.active = collapsing ? false : this.tabs.index( tab );
636
+
637
+ this.active = clickedIsActive ? $() : tab;
638
+ if ( this.xhr ) {
639
+ this.xhr.abort();
640
+ }
641
+
642
+ if ( !toHide.length && !toShow.length ) {
643
+ $.error( "jQuery UI Tabs: Mismatching fragment identifier." );
644
+ }
645
+
646
+ if ( toShow.length ) {
647
+ this.load( this.tabs.index( tab ), event );
648
+ }
649
+ this._toggle( event, eventData );
650
+ },
651
+
652
+ // Handles show/hide for selecting tabs
653
+ _toggle: function( event, eventData ) {
654
+ var that = this,
655
+ toShow = eventData.newPanel,
656
+ toHide = eventData.oldPanel;
657
+
658
+ this.running = true;
659
+
660
+ function complete() {
661
+ that.running = false;
662
+ that._trigger( "activate", event, eventData );
663
+ }
664
+
665
+ function show() {
666
+ that._addClass( eventData.newTab.closest( "li" ), "ui-tabs-active", "ui-state-active" );
667
+
668
+ if ( toShow.length && that.options.show ) {
669
+ that._show( toShow, that.options.show, complete );
670
+ } else {
671
+ toShow.show();
672
+ complete();
673
+ }
674
+ }
675
+
676
+ // Start out by hiding, then showing, then completing
677
+ if ( toHide.length && this.options.hide ) {
678
+ this._hide( toHide, this.options.hide, function() {
679
+ that._removeClass( eventData.oldTab.closest( "li" ),
680
+ "ui-tabs-active", "ui-state-active" );
681
+ show();
682
+ } );
683
+ } else {
684
+ this._removeClass( eventData.oldTab.closest( "li" ),
685
+ "ui-tabs-active", "ui-state-active" );
686
+ toHide.hide();
687
+ show();
688
+ }
689
+
690
+ toHide.attr( "aria-hidden", "true" );
691
+ eventData.oldTab.attr( {
692
+ "aria-selected": "false",
693
+ "aria-expanded": "false"
694
+ } );
695
+
696
+ // If we're switching tabs, remove the old tab from the tab order.
697
+ // If we're opening from collapsed state, remove the previous tab from the tab order.
698
+ // If we're collapsing, then keep the collapsing tab in the tab order.
699
+ if ( toShow.length && toHide.length ) {
700
+ eventData.oldTab.attr( "tabIndex", -1 );
701
+ } else if ( toShow.length ) {
702
+ this.tabs.filter( function() {
703
+ return $( this ).attr( "tabIndex" ) === 0;
704
+ } )
705
+ .attr( "tabIndex", -1 );
706
+ }
707
+
708
+ toShow.attr( "aria-hidden", "false" );
709
+ eventData.newTab.attr( {
710
+ "aria-selected": "true",
711
+ "aria-expanded": "true",
712
+ tabIndex: 0
713
+ } );
714
+ },
715
+
716
+ _activate: function( index ) {
717
+ var anchor,
718
+ active = this._findActive( index );
719
+
720
+ // Trying to activate the already active panel
721
+ if ( active[ 0 ] === this.active[ 0 ] ) {
722
+ return;
723
+ }
724
+
725
+ // Trying to collapse, simulate a click on the current active header
726
+ if ( !active.length ) {
727
+ active = this.active;
728
+ }
729
+
730
+ anchor = active.find( ".ui-tabs-anchor" )[ 0 ];
731
+ this._eventHandler( {
732
+ target: anchor,
733
+ currentTarget: anchor,
734
+ preventDefault: $.noop
735
+ } );
736
+ },
737
+
738
+ _findActive: function( index ) {
739
+ return index === false ? $() : this.tabs.eq( index );
740
+ },
741
+
742
+ _getIndex: function( index ) {
743
+
744
+ // meta-function to give users option to provide a href string instead of a numerical index.
745
+ if ( typeof index === "string" ) {
746
+ index = this.anchors.index( this.anchors.filter( "[href$='" +
747
+ CSS.escape( index ) + "']" ) );
748
+ }
749
+
750
+ return index;
751
+ },
752
+
753
+ _destroy: function() {
754
+ if ( this.xhr ) {
755
+ this.xhr.abort();
756
+ }
757
+
758
+ this.tablist
759
+ .removeAttr( "role" )
760
+ .off( this.eventNamespace );
761
+
762
+ this.anchors
763
+ .removeAttr( "role tabIndex" )
764
+ .removeUniqueId();
765
+
766
+ this.tabs.add( this.panels ).each( function() {
767
+ if ( $.data( this, "ui-tabs-destroy" ) ) {
768
+ $( this ).remove();
769
+ } else {
770
+ $( this ).removeAttr( "role tabIndex " +
771
+ "aria-live aria-busy aria-selected aria-labelledby aria-hidden aria-expanded" );
772
+ }
773
+ } );
774
+
775
+ this.tabs.each( function() {
776
+ var li = $( this ),
777
+ prev = li.data( "ui-tabs-aria-controls" );
778
+ if ( prev ) {
779
+ li
780
+ .attr( "aria-controls", prev )
781
+ .removeData( "ui-tabs-aria-controls" );
782
+ } else {
783
+ li.removeAttr( "aria-controls" );
784
+ }
785
+ } );
786
+
787
+ this.panels.show();
788
+
789
+ if ( this.options.heightStyle !== "content" ) {
790
+ this.panels.css( "height", "" );
791
+ }
792
+ },
793
+
794
+ enable: function( index ) {
795
+ var disabled = this.options.disabled;
796
+ if ( disabled === false ) {
797
+ return;
798
+ }
799
+
800
+ if ( index === undefined ) {
801
+ disabled = false;
802
+ } else {
803
+ index = this._getIndex( index );
804
+ if ( Array.isArray( disabled ) ) {
805
+ disabled = $.map( disabled, function( num ) {
806
+ return num !== index ? num : null;
807
+ } );
808
+ } else {
809
+ disabled = $.map( this.tabs, function( li, num ) {
810
+ return num !== index ? num : null;
811
+ } );
812
+ }
813
+ }
814
+ this._setOptionDisabled( disabled );
815
+ },
816
+
817
+ disable: function( index ) {
818
+ var disabled = this.options.disabled;
819
+ if ( disabled === true ) {
820
+ return;
821
+ }
822
+
823
+ if ( index === undefined ) {
824
+ disabled = true;
825
+ } else {
826
+ index = this._getIndex( index );
827
+ if ( $.inArray( index, disabled ) !== -1 ) {
828
+ return;
829
+ }
830
+ if ( Array.isArray( disabled ) ) {
831
+ disabled = $.merge( [ index ], disabled ).sort();
832
+ } else {
833
+ disabled = [ index ];
834
+ }
835
+ }
836
+ this._setOptionDisabled( disabled );
837
+ },
838
+
839
+ load: function( index, event ) {
840
+ index = this._getIndex( index );
841
+ var that = this,
842
+ tab = this.tabs.eq( index ),
843
+ anchor = tab.find( ".ui-tabs-anchor" ),
844
+ panel = this._getPanelForTab( tab ),
845
+ eventData = {
846
+ tab: tab,
847
+ panel: panel
848
+ },
849
+ complete = function( jqXHR, status ) {
850
+ if ( status === "abort" ) {
851
+ that.panels.stop( false, true );
852
+ }
853
+
854
+ that._removeClass( tab, "ui-tabs-loading" );
855
+ panel.removeAttr( "aria-busy" );
856
+
857
+ if ( jqXHR === that.xhr ) {
858
+ delete that.xhr;
859
+ }
860
+ };
861
+
862
+ // Not remote
863
+ if ( this._isLocal( anchor[ 0 ] ) ) {
864
+ return;
865
+ }
866
+
867
+ this.xhr = $.ajax( this._ajaxSettings( anchor, event, eventData ) );
868
+
869
+ if ( this.xhr.statusText !== "canceled" ) {
870
+ this._addClass( tab, "ui-tabs-loading" );
871
+ panel.attr( "aria-busy", "true" );
872
+
873
+ this.xhr
874
+ .done( function( response, status, jqXHR ) {
875
+ panel.html( response );
876
+ that._trigger( "load", event, eventData );
877
+
878
+ complete( jqXHR, status );
879
+ } )
880
+ .fail( function( jqXHR, status ) {
881
+ complete( jqXHR, status );
882
+ } );
883
+ }
884
+ },
885
+
886
+ _ajaxSettings: function( anchor, event, eventData ) {
887
+ var that = this;
888
+ return {
889
+ url: anchor.attr( "href" ),
890
+ beforeSend: function( jqXHR, settings ) {
891
+ return that._trigger( "beforeLoad", event,
892
+ $.extend( { jqXHR: jqXHR, ajaxSettings: settings }, eventData ) );
893
+ }
894
+ };
895
+ },
896
+
897
+ _getPanelForTab: function( tab ) {
898
+ var id = $( tab ).attr( "aria-controls" );
899
+ return this.element.find( "#" + CSS.escape( id ) );
900
+ }
901
+ } );
902
+
903
+ // DEPRECATED
904
+ // TODO: Switch return back to widget declaration at top of file when this is removed
905
+ if ( $.uiBackCompat === true ) {
906
+
907
+ // Backcompat for ui-tab class (now ui-tabs-tab)
908
+ $.widget( "ui.tabs", $.ui.tabs, {
909
+ _processTabs: function() {
910
+ this._superApply( arguments );
911
+ this._addClass( this.tabs, "ui-tab" );
912
+ }
913
+ } );
914
+ }
915
+
916
+ return $.ui.tabs;
917
+
918
+ } );