decidim-admin 0.30.1 → 0.31.0.rc1

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 (255) hide show
  1. checksums.yaml +4 -4
  2. data/app/commands/decidim/admin/update_organization.rb +18 -3
  3. data/app/controllers/concerns/decidim/admin/content_blocks/landing_page_content_blocks.rb +1 -1
  4. data/app/controllers/concerns/decidim/admin/filterable.rb +1 -1
  5. data/app/controllers/decidim/admin/area_types_controller.rb +2 -2
  6. data/app/controllers/decidim/admin/areas_controller.rb +2 -2
  7. data/app/controllers/decidim/admin/block_user_controller.rb +2 -2
  8. data/app/controllers/decidim/admin/component_permissions_controller.rb +1 -1
  9. data/app/controllers/decidim/admin/components_controller.rb +2 -2
  10. data/app/controllers/decidim/admin/concerns/has_attachment_collections.rb +2 -2
  11. data/app/controllers/decidim/admin/concerns/has_attachments.rb +2 -2
  12. data/app/controllers/decidim/admin/concerns/has_private_users.rb +3 -3
  13. data/app/controllers/decidim/admin/concerns/has_private_users_csv_import.rb +1 -1
  14. data/app/controllers/decidim/admin/conflicts_controller.rb +1 -1
  15. data/app/controllers/decidim/admin/dashboard_controller.rb +0 -9
  16. data/app/controllers/decidim/admin/impersonations_controller.rb +1 -1
  17. data/app/controllers/decidim/admin/imports_controller.rb +1 -1
  18. data/app/controllers/decidim/admin/managed_users/promotions_controller.rb +1 -1
  19. data/app/controllers/decidim/admin/newsletters_controller.rb +4 -4
  20. data/app/controllers/decidim/admin/organization_appearance_controller.rb +1 -3
  21. data/app/controllers/decidim/admin/organization_controller.rb +3 -5
  22. data/app/controllers/decidim/admin/organization_external_domain_allowlist_controller.rb +1 -1
  23. data/app/controllers/decidim/admin/organization_homepage_controller.rb +4 -0
  24. data/app/controllers/decidim/admin/participatory_space/user_role_controller.rb +2 -2
  25. data/app/controllers/decidim/admin/reminders_controller.rb +1 -1
  26. data/app/controllers/decidim/admin/resource_permissions_controller.rb +1 -1
  27. data/app/controllers/decidim/admin/scope_types_controller.rb +2 -2
  28. data/app/controllers/decidim/admin/scopes_controller.rb +2 -2
  29. data/app/controllers/decidim/admin/share_tokens_controller.rb +8 -8
  30. data/app/controllers/decidim/admin/static_page_topics_controller.rb +2 -2
  31. data/app/controllers/decidim/admin/static_pages_controller.rb +2 -2
  32. data/app/controllers/decidim/admin/statistics_controller.rb +34 -0
  33. data/app/controllers/decidim/admin/taxonomies_controller.rb +2 -2
  34. data/app/controllers/decidim/admin/taxonomy_filters_controller.rb +2 -2
  35. data/app/controllers/decidim/admin/taxonomy_items_controller.rb +2 -2
  36. data/app/controllers/decidim/admin/users_controller.rb +1 -1
  37. data/app/forms/decidim/admin/block_user_form.rb +1 -1
  38. data/app/forms/decidim/admin/block_users_form.rb +1 -1
  39. data/app/forms/decidim/admin/organization_form.rb +35 -6
  40. data/app/helpers/decidim/admin/filterable_helper.rb +27 -8
  41. data/app/helpers/decidim/admin/icon_link_helper.rb +2 -3
  42. data/app/helpers/decidim/admin/icon_with_tooltip_helper.rb +1 -2
  43. data/app/helpers/decidim/admin/imports_helper.rb +0 -5
  44. data/app/helpers/decidim/admin/menu_helper.rb +3 -2
  45. data/app/helpers/decidim/admin/moderations/reports_helper.rb +1 -1
  46. data/app/helpers/decidim/admin/resource_permissions_helper.rb +13 -13
  47. data/app/helpers/decidim/admin/settings_helper.rb +11 -3
  48. data/app/jobs/decidim/admin/newsletter_job.rb +1 -0
  49. data/app/packs/entrypoints/decidim_admin.js +2 -3
  50. data/app/packs/entrypoints/decidim_admin.scss +1 -1
  51. data/app/packs/entrypoints/decidim_admin_overrides.scss +1 -1
  52. data/app/packs/src/decidim/admin/admin_autocomplete.js +2 -2
  53. data/app/packs/src/decidim/admin/application.js +11 -10
  54. data/app/packs/src/decidim/admin/budget_rule_toggler.component.js +84 -34
  55. data/app/packs/src/decidim/admin/controllers/slug/controller.js +25 -0
  56. data/app/packs/src/decidim/admin/controllers/slug/slug.test.js +239 -0
  57. data/app/packs/src/decidim/admin/css_preview.js +1 -1
  58. data/app/packs/src/decidim/admin/draggable-list.js +1 -1
  59. data/app/packs/src/decidim/admin/draggable-table.js +1 -1
  60. data/app/packs/src/decidim/admin/dynamic_fields.component.js +13 -12
  61. data/app/packs/src/decidim/admin/external_domain_allowlist.js +1 -1
  62. data/app/packs/src/decidim/admin/form.js +21 -4
  63. data/app/packs/src/decidim/admin/global_moderations.js +2 -2
  64. data/app/packs/src/decidim/admin/managed_moderated_users.js +2 -2
  65. data/app/packs/src/decidim/admin/moderations.js +1 -1
  66. data/app/packs/src/decidim/admin/newsletters.js +1 -1
  67. data/app/packs/src/decidim/admin/officializations.js +1 -1
  68. data/app/packs/src/decidim/admin/participatory_space_search.js +2 -2
  69. data/app/packs/src/decidim/admin/proposal_infinite_edit.js +1 -1
  70. data/app/packs/src/decidim/admin/resources_permissions.js +1 -1
  71. data/app/packs/src/decidim/admin/sortable.js +1 -1
  72. data/app/packs/src/decidim/admin/sync_radio_buttons.js +1 -1
  73. data/app/packs/src/decidim/admin/tab_focus.js +1 -1
  74. data/app/packs/src/decidim/admin/text_copy.js +1 -1
  75. data/app/packs/src/decidim/admin/triadic_color_picker.js +1 -1
  76. data/app/packs/stylesheets/decidim/admin/_datepicker.scss +2 -2
  77. data/app/packs/stylesheets/decidim/admin/_dropdown.scss +12 -2
  78. data/app/packs/stylesheets/decidim/admin/_filters.scss +1 -57
  79. data/app/packs/stylesheets/decidim/admin/_forms.scss +1 -10
  80. data/app/packs/stylesheets/decidim/admin/_item_edit.scss +2 -10
  81. data/app/packs/stylesheets/decidim/admin/_item_show.scss +1 -5
  82. data/app/packs/stylesheets/decidim/admin/_legacy_foundation.scss +0 -412
  83. data/app/packs/stylesheets/decidim/admin/_main-nav.scss +75 -3
  84. data/app/packs/stylesheets/decidim/admin/_secondary-nav.scss +6 -10
  85. data/app/packs/stylesheets/decidim/admin/_select_picker.scss +1 -1
  86. data/app/packs/stylesheets/decidim/admin/_sidebar-menu.scss +2 -2
  87. data/app/packs/stylesheets/decidim/admin/_table-list.scss +25 -7
  88. data/app/packs/stylesheets/decidim/admin/_tabs.scss +4 -0
  89. data/app/packs/stylesheets/decidim/admin/_taxonomies.scss +6 -2
  90. data/app/packs/stylesheets/decidim/admin/application.scss +28 -29
  91. data/app/permissions/decidim/admin/permissions.rb +17 -5
  92. data/app/presenters/decidim/admin/dashboard_statistic_charts_presenter.rb +18 -0
  93. data/app/queries/decidim/admin/user_filter.rb +3 -3
  94. data/app/views/decidim/admin/area_types/index.html.erb +34 -11
  95. data/app/views/decidim/admin/areas/index.html.erb +32 -12
  96. data/app/views/decidim/admin/attachment_collections/index.html.erb +42 -14
  97. data/app/views/decidim/admin/attachments/index.html.erb +32 -13
  98. data/app/views/decidim/admin/block_user/bulk_new.html.erb +1 -1
  99. data/app/views/decidim/admin/block_user/new.html.erb +1 -1
  100. data/app/views/decidim/admin/components/_actions.html.erb +114 -54
  101. data/app/views/decidim/admin/components/_component_row.html.erb +5 -5
  102. data/app/views/decidim/admin/components/_components_table.html.erb +1 -1
  103. data/app/views/decidim/admin/components/_form.html.erb +4 -4
  104. data/app/views/decidim/admin/components/index.html.erb +12 -13
  105. data/app/views/decidim/admin/dashboard/show.html.erb +9 -21
  106. data/app/views/decidim/admin/exports/_dropdown.html.erb +16 -14
  107. data/app/views/decidim/admin/help_sections/_form.html.erb +1 -1
  108. data/app/views/decidim/admin/impersonatable_users/index.html.erb +68 -33
  109. data/app/views/decidim/admin/imports/_dropdown.html.erb +13 -11
  110. data/app/views/decidim/admin/imports/new.html.erb +13 -12
  111. data/app/views/decidim/admin/moderated_users/bulk_actions/_dropdown.html.erb +29 -32
  112. data/app/views/decidim/admin/moderated_users/index.html.erb +61 -21
  113. data/app/views/decidim/admin/moderations/_moderation-tr.html.erb +87 -32
  114. data/app/views/decidim/admin/moderations/_report.html.erb +2 -4
  115. data/app/views/decidim/admin/moderations/bulk_actions/_dropdown.html.erb +30 -34
  116. data/app/views/decidim/admin/moderations/index.html.erb +1 -1
  117. data/app/views/decidim/admin/moderations/reports/index.html.erb +1 -2
  118. data/app/views/decidim/admin/newsletters/index.html.erb +64 -21
  119. data/app/views/decidim/admin/officializations/index.html.erb +91 -32
  120. data/app/views/decidim/admin/organization/_form.html.erb +6 -92
  121. data/app/views/decidim/admin/organization/edit.html.erb +1 -5
  122. data/app/views/decidim/admin/organization/form/_admin_terms_of_service.html.erb +15 -0
  123. data/app/views/decidim/admin/organization/form/_basic_configuration.html.erb +31 -0
  124. data/app/views/decidim/admin/{organization_appearance → organization}/form/_colors.html.erb +9 -9
  125. data/app/views/decidim/admin/organization/form/_extra_features.html.erb +84 -0
  126. data/app/views/decidim/admin/{organization_appearance/form/_images.html.erb → organization/form/_logos.html.erb} +4 -4
  127. data/app/views/decidim/admin/organization/form/_welcome_notification.html.erb +25 -0
  128. data/app/views/decidim/admin/organization_external_domain_allowlist/_external_domain.html.erb +8 -6
  129. data/app/views/decidim/admin/participatory_space_private_users/index.html.erb +49 -22
  130. data/app/views/decidim/admin/resource_permissions/edit.html.erb +1 -1
  131. data/app/views/decidim/admin/scope_types/index.html.erb +31 -12
  132. data/app/views/decidim/admin/scopes/index.html.erb +40 -13
  133. data/app/views/decidim/admin/share_tokens/_form.html.erb +1 -1
  134. data/app/views/decidim/admin/share_tokens/edit.html.erb +1 -1
  135. data/app/views/decidim/admin/share_tokens/index.html.erb +69 -12
  136. data/app/views/decidim/admin/share_tokens/new.html.erb +1 -1
  137. data/app/views/decidim/admin/shared/_filters.html.erb +8 -10
  138. data/app/views/decidim/admin/shared/landing_page/_content_blocks.html.erb +14 -11
  139. data/app/views/decidim/admin/shared/landing_page_content_blocks/edit.html.erb +2 -4
  140. data/app/views/decidim/admin/static_page_topics/index.html.erb +31 -10
  141. data/app/views/decidim/admin/static_pages/_form.html.erb +1 -1
  142. data/app/views/decidim/admin/static_pages/_topic.html.erb +46 -16
  143. data/app/views/decidim/admin/statistics/_statistics.html.erb +13 -0
  144. data/app/views/decidim/admin/statistics/index.html.erb +6 -0
  145. data/app/views/decidim/admin/taxonomies/_form.html.erb +1 -1
  146. data/app/views/decidim/admin/taxonomies/_row.html.erb +24 -6
  147. data/app/views/decidim/admin/taxonomies/_table.html.erb +2 -2
  148. data/app/views/decidim/admin/taxonomies/_taxonomy_actions.html.erb +48 -15
  149. data/app/views/decidim/admin/taxonomies/edit.html.erb +10 -0
  150. data/app/views/decidim/admin/taxonomy_filters/_form.html.erb +1 -1
  151. data/app/views/decidim/admin/taxonomy_filters/_table.html.erb +52 -15
  152. data/app/views/decidim/admin/taxonomy_filters/new.html.erb +1 -1
  153. data/app/views/decidim/admin/taxonomy_filters_selector/_component_table.html.erb +38 -23
  154. data/app/views/decidim/admin/taxonomy_items/_form.html.erb +1 -1
  155. data/app/views/decidim/admin/users/index.html.erb +48 -24
  156. data/app/views/layouts/decidim/admin/_application.html.erb +3 -6
  157. data/app/views/layouts/decidim/admin/_header.html.erb +3 -1
  158. data/app/views/layouts/decidim/admin/_js_configuration.html.erb +11 -12
  159. data/app/views/layouts/decidim/admin/_sidebar_menu.html.erb +1 -1
  160. data/app/views/layouts/decidim/admin/_title_bar.html.erb +4 -4
  161. data/app/views/layouts/decidim/admin/_title_bar_responsive.html.erb +4 -4
  162. data/app/views/layouts/decidim/admin/insights.html.erb +6 -0
  163. data/config/assets.rb +2 -2
  164. data/config/locales/ar.yml +2 -86
  165. data/config/locales/bg.yml +4 -105
  166. data/config/locales/bs-BA.yml +0 -44
  167. data/config/locales/ca-IT.yml +59 -117
  168. data/config/locales/ca.yml +59 -117
  169. data/config/locales/cs.yml +51 -119
  170. data/config/locales/de.yml +63 -121
  171. data/config/locales/el.yml +5 -97
  172. data/config/locales/en.yml +61 -119
  173. data/config/locales/eo.yml +0 -4
  174. data/config/locales/es-MX.yml +60 -118
  175. data/config/locales/es-PY.yml +60 -118
  176. data/config/locales/es.yml +60 -118
  177. data/config/locales/eu.yml +65 -123
  178. data/config/locales/fi-plain.yml +62 -109
  179. data/config/locales/fi.yml +62 -109
  180. data/config/locales/fr-CA.yml +69 -120
  181. data/config/locales/fr.yml +69 -120
  182. data/config/locales/ga-IE.yml +4 -28
  183. data/config/locales/gl.yml +3 -89
  184. data/config/locales/he-IL.yml +0 -8
  185. data/config/locales/hu.yml +5 -100
  186. data/config/locales/id-ID.yml +0 -58
  187. data/config/locales/is-IS.yml +1 -36
  188. data/config/locales/it.yml +202 -96
  189. data/config/locales/ja.yml +61 -110
  190. data/config/locales/kaa.yml +0 -12
  191. data/config/locales/ko.yml +0 -76
  192. data/config/locales/lb.yml +5 -89
  193. data/config/locales/lt.yml +4 -99
  194. data/config/locales/lv.yml +2 -70
  195. data/config/locales/nl.yml +5 -90
  196. data/config/locales/no.yml +5 -89
  197. data/config/locales/pl.yml +5 -103
  198. data/config/locales/pt-BR.yml +130 -105
  199. data/config/locales/pt.yml +2 -90
  200. data/config/locales/ro-RO.yml +13 -97
  201. data/config/locales/ru.yml +2 -50
  202. data/config/locales/sk.yml +2 -68
  203. data/config/locales/sl.yml +1 -18
  204. data/config/locales/sq-AL.yml +0 -43
  205. data/config/locales/sr-CS.yml +1 -44
  206. data/config/locales/sv.yml +59 -120
  207. data/config/locales/th-TH.yml +0 -5
  208. data/config/locales/tr-TR.yml +6 -83
  209. data/config/locales/uk.yml +1 -45
  210. data/config/locales/val-ES.yml +0 -1
  211. data/config/locales/zh-CN.yml +0 -68
  212. data/config/locales/zh-TW.yml +4 -97
  213. data/config/routes.rb +1 -12
  214. data/lib/decidim/admin/engine.rb +5 -1
  215. data/lib/decidim/admin/form_builder.rb +1 -1
  216. data/lib/decidim/admin/menu.rb +32 -16
  217. data/lib/decidim/admin/test/filterable_examples.rb +8 -18
  218. data/lib/decidim/admin/test/invite_participatory_space_admins_shared_examples.rb +4 -4
  219. data/lib/decidim/admin/test/invite_participatory_space_collaborators_shared_examples.rb +2 -2
  220. data/lib/decidim/admin/test/invite_participatory_space_moderators_shared_examples.rb +9 -6
  221. data/lib/decidim/admin/test/invite_participatory_space_users_shared_context.rb +1 -0
  222. data/lib/decidim/admin/test/manage_attachment_collections_examples.rb +5 -1
  223. data/lib/decidim/admin/test/manage_attachments_examples.rb +5 -1
  224. data/lib/decidim/admin/test/manage_component_permissions_examples.rb +31 -4
  225. data/lib/decidim/admin/test/manage_moderations_examples.rb +12 -5
  226. data/lib/decidim/admin/test/manage_participatory_space_publications_examples.rb +12 -6
  227. data/lib/decidim/admin/test/manage_resource_soft_deletion_examples.rb +19 -4
  228. data/lib/decidim/admin/test/manage_taxonomy_filters_examples.rb +28 -8
  229. data/lib/decidim/admin/version.rb +1 -1
  230. metadata +22 -35
  231. data/app/commands/decidim/admin/process_user_group_verification_csv.rb +0 -44
  232. data/app/commands/decidim/admin/reject_user_group.rb +0 -42
  233. data/app/commands/decidim/admin/update_organization_appearance.rb +0 -39
  234. data/app/commands/decidim/admin/update_user_groups.rb +0 -44
  235. data/app/commands/decidim/admin/verify_user_group.rb +0 -43
  236. data/app/controllers/concerns/decidim/admin/user_groups/filterable.rb +0 -45
  237. data/app/controllers/concerns/decidim/admin/user_groups.rb +0 -24
  238. data/app/controllers/decidim/admin/metrics_controller.rb +0 -23
  239. data/app/controllers/decidim/admin/user_groups_controller.rb +0 -76
  240. data/app/controllers/decidim/admin/user_groups_csv_verifications_controller.rb +0 -36
  241. data/app/forms/decidim/admin/organization_appearance_form.rb +0 -88
  242. data/app/forms/decidim/admin/user_group_csv_verification_form.rb +0 -25
  243. data/app/jobs/decidim/admin/verify_user_group_from_csv_job.rb +0 -30
  244. data/app/packs/src/decidim/admin/welcome_notification.js +0 -32
  245. data/app/packs/stylesheets/decidim/admin/_bulk_actions.scss +0 -16
  246. data/app/presenters/decidim/admin/dashboard_metric_charts_presenter.rb +0 -33
  247. data/app/queries/decidim/admin/user_groups_evaluation.rb +0 -56
  248. data/app/views/decidim/admin/metrics/_metrics.html.erb +0 -16
  249. data/app/views/decidim/admin/metrics/index.html.erb +0 -7
  250. data/app/views/decidim/admin/organization_appearance/_form.html.erb +0 -100
  251. data/app/views/decidim/admin/organization_appearance/edit.html.erb +0 -18
  252. data/app/views/decidim/admin/organization_appearance/form/_header_snippets.html.erb +0 -17
  253. data/app/views/decidim/admin/user_groups/index.html.erb +0 -68
  254. data/app/views/decidim/admin/user_groups_csv_verifications/new.html.erb +0 -31
  255. /data/app/views/decidim/admin/{organization_appearance → organization}/form/_minimap.html.erb +0 -0
@@ -74,6 +74,17 @@ module Decidim
74
74
  end
75
75
  end
76
76
 
77
+ def self.register_admin_insights_menu!
78
+ Decidim.menu :admin_insights_menu do |menu|
79
+ menu.add_item :statistics,
80
+ I18n.t("menu.statistics", scope: "decidim.admin"),
81
+ decidim_admin.statistics_path,
82
+ icon_name: "bar-chart-box-line",
83
+ position: 1,
84
+ active: is_active_link?(decidim_admin.statistics_path)
85
+ end
86
+ end
87
+
77
88
  def self.register_admin_user_menu!
78
89
  Decidim.menu :admin_user_menu do |menu|
79
90
  menu.add_item :users,
@@ -81,11 +92,6 @@ module Decidim
81
92
  icon_name: "user-line",
82
93
  active: is_active_link?(decidim_admin.users_path),
83
94
  if: allowed_to?(:read, :admin_user)
84
- menu.add_item :user_groups,
85
- I18n.t("menu.user_groups", scope: "decidim.admin"), decidim_admin.user_groups_path,
86
- icon_name: "group-line",
87
- active: is_active_link?(decidim_admin.user_groups_path),
88
- if: current_organization.user_groups_enabled? && allowed_to?(:index, :user_group)
89
95
  menu.add_item :officializations,
90
96
  I18n.t("menu.participants", scope: "decidim.admin"), decidim_admin.officializations_path,
91
97
  icon_name: "service-line",
@@ -149,19 +155,16 @@ module Decidim
149
155
  icon_name: "pencil-line",
150
156
  if: allowed_to?(:update, :organization, organization: current_organization)
151
157
 
152
- menu.add_item :edit_organization_appearance,
153
- I18n.t("menu.appearance", scope: "decidim.admin"),
154
- decidim_admin.edit_organization_appearance_path,
155
- position: 1.1,
156
- icon_name: "tools-line",
157
- if: allowed_to?(:update, :organization, organization: current_organization)
158
-
159
158
  menu.add_item :edit_organization_homepage,
160
159
  I18n.t("menu.homepage", scope: "decidim.admin"),
161
160
  decidim_admin.edit_organization_homepage_path,
162
161
  position: 1.2,
163
- icon_name: "home-gear-line",
164
- if: allowed_to?(:update, :organization, organization: current_organization)
162
+ icon_name: "layout-masonry-line",
163
+ if: allowed_to?(:update, :organization, organization: current_organization),
164
+ active: [%w(
165
+ decidim/admin/organization_homepage
166
+ decidim/admin/organization_homepage_content_blocks
167
+ ), []]
165
168
 
166
169
  menu.add_item :taxonomies,
167
170
  I18n.t("menu.taxonomies", scope: "decidim.admin"),
@@ -237,8 +240,6 @@ module Decidim
237
240
  position: 5,
238
241
  active: [%w(
239
242
  decidim/admin/users
240
- decidim/admin/user_groups
241
- decidim/admin/user_groups_csv_verifications
242
243
  decidim/admin/officializations
243
244
  decidim/admin/impersonatable_users
244
245
  decidim/admin/conflicts
@@ -291,6 +292,21 @@ module Decidim
291
292
  position: 10,
292
293
  active: [%w(decidim/admin/logs), []],
293
294
  if: allowed_to?(:read, :admin_log)
295
+ menu.add_item :insights,
296
+ I18n.t("menu.insights", scope: "decidim.admin"),
297
+ decidim_admin.statistics_path,
298
+ icon_name: "line-chart",
299
+ position: 11,
300
+ if: allowed_to?(:read, :statistics),
301
+ active: [
302
+ %w(
303
+ decidim/admin/statistics
304
+ decidim/demographics/admin/settings
305
+ decidim/demographics/admin/questions
306
+ decidim/demographics/admin/responses
307
+ decidim/demographics/admin/publish_responses
308
+ ), []
309
+ ]
294
310
  end
295
311
  end
296
312
  end
@@ -9,9 +9,9 @@ shared_context "with filterable context" do
9
9
 
10
10
  def apply_filter(options, filter)
11
11
  within(".filters__section") do
12
- find_link("Filter").hover
13
- find_link(options).hover
14
- within ".submenu > .is-active > .submenu" do
12
+ find_link("Filter").click
13
+ find_link(options).click
14
+ within ".dropdown .dropdown__right[aria-hidden='false']" do
15
15
  click_on(filter)
16
16
  end
17
17
  end
@@ -19,11 +19,11 @@ shared_context "with filterable context" do
19
19
 
20
20
  def apply_sub_filter(option1, option2, filter)
21
21
  within(".filters__section") do
22
- find_link("Filter").hover
23
- find_link(option1).hover
24
- within ".submenu > .is-active > .submenu" do
25
- find_link(option2).hover
26
- within ".submenu > .is-active > .submenu" do
22
+ find_link("Filter").click
23
+ find_link(option1).click
24
+ within ".dropdown .dropdown__right[aria-hidden='false']" do
25
+ find_link(option2).click
26
+ within ".dropdown .dropdown__right[aria-hidden='false']" do
27
27
  click_on(filter)
28
28
  end
29
29
  end
@@ -202,14 +202,4 @@ shared_examples "a collection filtered by taxonomies" do
202
202
  let(:in_filter) { resource_with_taxonomy21_title }
203
203
  let(:not_in_filter) { [resource_with_taxonomy11_title, resource_with_taxonomy12_title, resource_with_taxonomy22_title] }
204
204
  end
205
-
206
- it_behaves_like "a filtered collection", options: "Taxonomy", filter: "Root1" do
207
- let(:in_filter) { [resource_with_taxonomy11_title, resource_with_taxonomy12_title] }
208
- let(:not_in_filter) { [resource_with_taxonomy21_title, resource_with_taxonomy22_title] }
209
- end
210
-
211
- it_behaves_like "a filtered collection", options: "Taxonomy", filter: "Root2" do
212
- let(:in_filter) { [resource_with_taxonomy21_title, resource_with_taxonomy22_title] }
213
- let(:not_in_filter) { [resource_with_taxonomy11_title, resource_with_taxonomy12_title] }
214
- end
215
205
  end
@@ -60,7 +60,7 @@ shared_examples "inviting participatory space admins" do |check_private_space: t
60
60
 
61
61
  click_on space_sidebar_label
62
62
 
63
- within "div.table-scroll" do
63
+ within ".table-list" do
64
64
  expect(page).to have_i18n_content(participatory_space.title)
65
65
  within "tr", text: translated(participatory_space.title) do
66
66
  click_on translated(participatory_space.title)
@@ -89,7 +89,7 @@ shared_examples "inviting participatory space admins" do |check_private_space: t
89
89
 
90
90
  click_on space_sidebar_label
91
91
 
92
- within "div.table-scroll" do
92
+ within ".table-list" do
93
93
  expect(page).to have_i18n_content(participatory_space.title)
94
94
  within "tr", text: translated(participatory_space.title) do
95
95
  click_on translated(participatory_space.title)
@@ -129,7 +129,7 @@ shared_examples "inviting participatory space admins" do |check_private_space: t
129
129
 
130
130
  click_on space_sidebar_label
131
131
 
132
- within "div.table-scroll" do
132
+ within ".table-list" do
133
133
  expect(page).to have_i18n_content(participatory_space.title)
134
134
  expect(page).to have_i18n_content(participatory_space.title)
135
135
  within "tr", text: translated(participatory_space.title) do
@@ -153,7 +153,7 @@ shared_examples "inviting participatory space admins" do |check_private_space: t
153
153
 
154
154
  click_on space_sidebar_label
155
155
 
156
- within "div.table-scroll" do
156
+ within ".table-list" do
157
157
  expect(page).to have_i18n_content(participatory_space.title)
158
158
  expect(page).to have_i18n_content(participatory_space.title)
159
159
  within "tr", text: translated(participatory_space.title) do
@@ -29,7 +29,7 @@ shared_examples "inviting participatory space collaborators" do
29
29
 
30
30
  click_on space_sidebar_label
31
31
 
32
- within "div.table-scroll" do
32
+ within ".table-list" do
33
33
  expect(page).to have_i18n_content(participatory_space.title)
34
34
  end
35
35
  end
@@ -53,7 +53,7 @@ shared_examples "inviting participatory space collaborators" do
53
53
 
54
54
  click_on space_sidebar_label
55
55
 
56
- within "div.table-scroll" do
56
+ within ".table-list" do
57
57
  expect(page).to have_i18n_content(participatory_space.title)
58
58
  end
59
59
  end
@@ -27,9 +27,11 @@ shared_examples "inviting participatory space moderators" do
27
27
 
28
28
  click_on space_sidebar_label
29
29
 
30
- within "div.table-scroll" do
31
- expect(page).to have_i18n_content(participatory_space.title)
32
- click_on "Moderate"
30
+ within ".table-list" do
31
+ within("tr", text: translated(participatory_space.title)) do
32
+ find("button[data-controller='dropdown']").click
33
+ click_on "Manage moderations"
34
+ end
33
35
  end
34
36
 
35
37
  within "div.process-title-content-breadcrumb-container-left" do
@@ -56,10 +58,11 @@ shared_examples "inviting participatory space moderators" do
56
58
 
57
59
  click_on space_sidebar_label
58
60
 
59
- within "div.table-scroll" do
61
+ within ".table-list" do
60
62
  expect(page).to have_i18n_content(participatory_space.title)
61
- within "tr", text: translated(participatory_space.title) do
62
- click_on "Moderate"
63
+ within("tr", text: translated(participatory_space.title)) do
64
+ find("button[data-controller='dropdown']").click
65
+ click_on "Manage moderations"
63
66
  end
64
67
  end
65
68
 
@@ -28,6 +28,7 @@ shared_context "when inviting participatory space users" do
28
28
  visit participatory_space_user_roles_path
29
29
 
30
30
  within "tr", text: username do
31
+ find("button[data-controller='dropdown']").click
31
32
  click_on "Edit"
32
33
  end
33
34
  end
@@ -16,6 +16,7 @@ shared_examples "manage attachment collections examples" do
16
16
 
17
17
  it "can view an attachment collection details" do
18
18
  within "#attachment_collections table" do
19
+ find("button[data-controller='dropdown']").click
19
20
  click_on "Edit"
20
21
  end
21
22
 
@@ -56,6 +57,7 @@ shared_examples "manage attachment collections examples" do
56
57
  it "can update an attachment collection" do
57
58
  within "#attachment_collections" do
58
59
  within "tr", text: translated(attachment_collection.name) do
60
+ find("button[data-controller='dropdown']").click
59
61
  click_on "Edit"
60
62
  end
61
63
  end
@@ -90,6 +92,7 @@ shared_examples "manage attachment collections examples" do
90
92
 
91
93
  it "can delete the attachment collection" do
92
94
  within "tr", text: translated(attachment_collection2.name) do
95
+ find("button[data-controller='dropdown']").click
93
96
  accept_confirm { click_on "Delete" }
94
97
  end
95
98
 
@@ -110,7 +113,8 @@ shared_examples "manage attachment collections examples" do
110
113
 
111
114
  it "cannot delete it" do
112
115
  within "tr", text: translated(attachment_collection.name) do
113
- expect(page).to have_no_css("a.action-icon--remove")
116
+ find("button[data-controller='dropdown']").click
117
+ expect(page).to have_no_css(".button", text: "Delete")
114
118
  end
115
119
  end
116
120
  end
@@ -18,7 +18,8 @@ shared_examples "manage attachments examples" do
18
18
  end
19
19
 
20
20
  it "can view an attachment details" do
21
- within "#attachments table" do
21
+ within "tr", text: translated(attachment.title) do
22
+ find("button[data-controller='dropdown']").click
22
23
  click_on "Edit"
23
24
  end
24
25
 
@@ -152,6 +153,7 @@ shared_examples "manage attachments examples" do
152
153
  within "#attachments" do
153
154
  within "tr", text: translated(attachment.title) do
154
155
  expect(page).to have_text(translated(attachment_collection.name, locale: :en))
156
+ find("button[data-controller='dropdown']").click
155
157
  click_on "Edit"
156
158
  end
157
159
  end
@@ -171,6 +173,7 @@ shared_examples "manage attachments examples" do
171
173
 
172
174
  it "can delete an attachment from a process" do
173
175
  within "tr", text: translated(attachment.title) do
176
+ find("button[data-controller='dropdown']").click
174
177
  accept_confirm { click_on "Delete" }
175
178
  end
176
179
 
@@ -182,6 +185,7 @@ shared_examples "manage attachments examples" do
182
185
  it "can update an attachment" do
183
186
  within "#attachments" do
184
187
  within "tr", text: translated(attachment.title) do
188
+ find("button[data-controller='dropdown']").click
185
189
  click_on "Edit"
186
190
  end
187
191
  end
@@ -2,6 +2,29 @@
2
2
 
3
3
  require "spec_helper"
4
4
 
5
+ shared_examples "access permissions form" do
6
+ it "can view the permissions" do
7
+ within "tr", text: row_text do
8
+ find("button[data-controller='dropdown']").click
9
+ click_on "Manage permissions"
10
+ end
11
+ expect(page).to have_content("Edit permissions")
12
+ end
13
+ end
14
+
15
+ shared_examples "access component permissions form" do
16
+ let(:participatory_space_engine) { Decidim::EngineRouter.admin_proxy(participatory_space) }
17
+ before do
18
+ switch_to_host(organization.host)
19
+ login_as user, scope: :user
20
+ visit participatory_space_engine.components_path(participatory_space)
21
+ end
22
+
23
+ include_examples "access permissions form" do
24
+ let!(:row_text) { translated(component.name) }
25
+ end
26
+ end
27
+
5
28
  shared_examples "Managing component permissions" do
6
29
  let(:organization) do
7
30
  create(
@@ -23,7 +46,8 @@ shared_examples "Managing component permissions" do
23
46
  context "when setting permissions" do
24
47
  before do
25
48
  within ".component-#{component.id}" do
26
- click_on "Permissions"
49
+ find("button[data-controller='dropdown']").click
50
+ click_on "Manage permissions"
27
51
  end
28
52
  end
29
53
 
@@ -54,7 +78,8 @@ shared_examples "Managing component permissions" do
54
78
  before do
55
79
  allow_any_instance_of(Decidim::Admin::PermissionsForm).to receive(:valid?).and_return(false)
56
80
  within ".component-#{component.id}" do
57
- click_on "Permissions"
81
+ find("button[data-controller='dropdown']").click
82
+ click_on "Manage permissions"
58
83
  end
59
84
  within "#components form" do
60
85
  within ".foo-permission" do
@@ -85,7 +110,8 @@ shared_examples "Managing component permissions" do
85
110
  )
86
111
 
87
112
  within ".component-#{component.id}" do
88
- click_on "Permissions"
113
+ find("button[data-controller='dropdown']").click
114
+ click_on "Manage permissions"
89
115
  end
90
116
  end
91
117
 
@@ -120,7 +146,8 @@ shared_examples "Managing component permissions" do
120
146
  )
121
147
 
122
148
  within ".component-#{component.id}" do
123
- click_on "Permissions"
149
+ find("button[data-controller='dropdown']").click
150
+ click_on "Manage permissions"
124
151
  end
125
152
  end
126
153
 
@@ -82,7 +82,8 @@ shared_examples "manage moderations" do
82
82
 
83
83
  it "user can un-report a resource" do
84
84
  within "tr[data-id=\"#{moderation.id}\"]" do
85
- click_on "Unreport"
85
+ find("button[data-controller='dropdown']").click
86
+ click_on "Undo the report"
86
87
  end
87
88
 
88
89
  expect(page).to have_admin_callout("Resource successfully unreported")
@@ -90,6 +91,7 @@ shared_examples "manage moderations" do
90
91
 
91
92
  it "user can hide a resource" do
92
93
  within "tr[data-id=\"#{moderation.id}\"]" do
94
+ find("button[data-controller='dropdown']").click
93
95
  click_on "Hide"
94
96
  end
95
97
 
@@ -114,8 +116,8 @@ shared_examples "manage moderations" do
114
116
  it "user can filter by reportable type" do
115
117
  reportable_type = moderation.reportable.class.name.demodulize
116
118
  within ".filters__section" do
117
- find(:xpath, "//a[contains(text(), 'Filter')]").hover
118
- find(:xpath, "//a[contains(text(), 'Type')]").hover
119
+ click_on "Filter"
120
+ click_on "Type"
119
121
  click_on reportable_type
120
122
  end
121
123
  expect(page).to have_css("tbody tr", count: moderations.length)
@@ -124,7 +126,7 @@ shared_examples "manage moderations" do
124
126
  it "user can filter by reported content" do
125
127
  search = moderation.reportable.id
126
128
  within ".filters__section" do
127
- fill_in("Search Moderation by reportable id or content.", with: search)
129
+ fill_in("Search moderation by reportable id or content", with: search)
128
130
  within(".input-group-button") { click_on(class: "text-secondary") }
129
131
  end
130
132
  expect(page).to have_css("tbody tr", count: 1)
@@ -132,6 +134,7 @@ shared_examples "manage moderations" do
132
134
 
133
135
  it "user can see moderation details" do
134
136
  within "tr[data-id=\"#{moderation.id}\"]" do
137
+ find("button[data-controller='dropdown']").click
135
138
  click_on "Expand"
136
139
  end
137
140
 
@@ -188,7 +191,10 @@ shared_examples "manage moderations" do
188
191
  end
189
192
 
190
193
  it "user cannot unreport them" do
191
- expect(page).to have_no_css(".action-icon--unreport")
194
+ within "tr[data-id=\"#{hidden_moderations.first.id}\"]" do
195
+ find("button[data-controller='dropdown']").click
196
+ expect(page).to have_no_css("a", text: "Undo the report")
197
+ end
192
198
  end
193
199
 
194
200
  it "user can review them" do
@@ -231,6 +237,7 @@ shared_examples "manage moderations" do
231
237
  it "user can hide them" do
232
238
  moderation_id = moderations.first.id
233
239
  within "tr[data-id=\"#{moderation_id}\"]" do
240
+ find("button[data-controller='dropdown']").click
234
241
  click_on "Hide"
235
242
  end
236
243
 
@@ -1,10 +1,10 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- shared_examples "manage participatory space publications" do |_options|
3
+ shared_examples "manage participatory space publications" do
4
4
  before do
5
- participatory_space.update(title: { en: title })
6
5
  switch_to_host(organization.host)
7
6
  login_as user, scope: :user
7
+ visit admin_page_path
8
8
  end
9
9
 
10
10
  context "when the participatory space is unpublished" do
@@ -12,16 +12,19 @@ shared_examples "manage participatory space publications" do |_options|
12
12
  participatory_space.unpublish!
13
13
  participatory_space.reload
14
14
  visit admin_page_path
15
+
16
+ within("tr", text: translated_attribute(participatory_space.title)) do
17
+ find("button[data-controller='dropdown']").click
18
+ find("a", text: "Publish", visible: true).click
19
+ end
15
20
  end
16
21
 
17
22
  it "publishes it" do
18
- click_on "Publish"
19
-
20
23
  expect(page).to have_content("successfully")
21
24
 
22
25
  visit public_collection_path
23
26
 
24
- expect(page).to have_content title
27
+ expect(page).to have_content(translated_attribute(participatory_space.title))
25
28
  end
26
29
  end
27
30
 
@@ -42,7 +45,10 @@ shared_examples "manage participatory space publications" do |_options|
42
45
  it "unpublishes it" do
43
46
  # we cannot use "a 404 page" shared example as we want to check it
44
47
  # inside an example
45
- click_on "Unpublish"
48
+ within("tr", text: translated_attribute(participatory_space.title)) do
49
+ find("button[data-controller='dropdown']").click
50
+ click_on "Unpublish"
51
+ end
46
52
 
47
53
  expect(page).to have_content("successfully")
48
54
 
@@ -18,7 +18,13 @@ shared_examples "manage soft deletable component or space" do |resource_name|
18
18
  expect(page).to have_content(title[:en])
19
19
  end
20
20
 
21
- accept_confirm { click_on "Soft delete" }
21
+ accept_confirm do
22
+ within("tr", text: title[:en]) do
23
+ # To remove once all the actions are migrated to dropdowns
24
+ find("button[data-controller='dropdown']").click
25
+ click_on "Move to trash"
26
+ end
27
+ end
22
28
 
23
29
  expect(page).to have_admin_callout("successfully")
24
30
 
@@ -34,7 +40,11 @@ shared_examples "manage soft deletable component or space" do |resource_name|
34
40
  end
35
41
 
36
42
  it "does not allow to move it to the trash" do
37
- expect(page).to have_no_content("Soft delete")
43
+ within("tr", text: title[:en]) do
44
+ # To remove once all the actions are migrated to dropdowns
45
+ find("button[data-controller='dropdown']").click
46
+ have_css(".dropdown__button-disabled span", text: "Move to trash")
47
+ end
38
48
  end
39
49
  end
40
50
 
@@ -67,7 +77,8 @@ shared_examples "manage soft deletable resource" do |resource_name|
67
77
  expect(page).to have_content(title[:en])
68
78
 
69
79
  within(resource_row) do
70
- accept_confirm { click_on "Soft delete" }
80
+ find("button[data-controller='dropdown']").click
81
+ accept_confirm { click_on "Move to trash" }
71
82
  end
72
83
 
73
84
  expect(page).to have_admin_callout("successfully")
@@ -101,7 +112,11 @@ shared_examples "manage trashed resource" do |resource_name|
101
112
  end
102
113
 
103
114
  it "restores the #{resource_name} from the trash" do
104
- click_on "Restore"
115
+ # To remove once all the actions are migrated to dropdowns
116
+ within("tr", text: title[:en]) do
117
+ find("button[data-controller='dropdown']").click
118
+ click_on "Restore"
119
+ end
105
120
 
106
121
  expect(page).to have_admin_callout("successfully")
107
122
  visit trash_path
@@ -16,8 +16,12 @@ shared_examples "manage taxonomy filters in settings" do
16
16
  let!(:another_taxonomy_filter) do
17
17
  create(:taxonomy_filter, internal_name: { en: "Another filter" }, participatory_space_manifests: [participatory_space.manifest.name], root_taxonomy:)
18
18
  end
19
+
19
20
  before do
20
- click_on "Configure"
21
+ within "tr", text: translated_attribute(component.name) do
22
+ find("button[data-controller='dropdown']").click
23
+ click_on "Configure"
24
+ end
21
25
  end
22
26
 
23
27
  it "can be added to settings" do
@@ -36,8 +40,9 @@ shared_examples "manage taxonomy filters in settings" do
36
40
  within ".js-current-filters" do
37
41
  expect(page).to have_css("td", text: "Internal taxonomy filter name")
38
42
  expect(page).to have_css("td", text: "Public taxonomy filter name")
39
- expect(page).to have_link("Edit")
43
+ expect(page).to have_css("button[data-controller='dropdown']", count: 1)
40
44
  end
45
+
41
46
  expect(component.reload.settings.taxonomy_filters).to eq([taxonomy_filter.id.to_s])
42
47
 
43
48
  click_on "Add filter"
@@ -52,12 +57,15 @@ shared_examples "manage taxonomy filters in settings" do
52
57
  expect(page).to have_css("td", text: "Internal taxonomy filter name")
53
58
  expect(page).to have_css("td", text: "Public taxonomy filter name")
54
59
  expect(page).to have_css("td", text: "Another filter")
55
- expect(page).to have_link("Edit", count: 2)
60
+ expect(page).to have_css("button[data-controller='dropdown']", count: 2)
56
61
  end
57
62
  expect(component.reload.settings.taxonomy_filters).to contain_exactly(taxonomy_filter.id.to_s, another_taxonomy_filter.id.to_s)
58
63
 
59
64
  click_on "Update"
60
- click_on "Configure"
65
+ within "tr", text: translated(component.name) do
66
+ find("button[data-controller='dropdown']").click
67
+ click_on "Configure"
68
+ end
61
69
  within ".js-current-filters" do
62
70
  expect(page).to have_css("td", text: "Internal taxonomy filter name")
63
71
  expect(page).to have_css("td", text: "Public taxonomy filter name")
@@ -69,7 +77,10 @@ shared_examples "manage taxonomy filters in settings" do
69
77
  let(:taxonomy_filter_item) { nil }
70
78
  let(:taxonomy_filter) { nil }
71
79
  before do
72
- click_on "Configure"
80
+ within "tr", text: translated(component.name) do
81
+ find("button[data-controller='dropdown']").click
82
+ click_on "Configure"
83
+ end
73
84
  end
74
85
 
75
86
  it "shows a configuration message" do
@@ -83,12 +94,16 @@ shared_examples "manage taxonomy filters in settings" do
83
94
 
84
95
  before do
85
96
  component.update!(settings: { taxonomy_filters: [another_taxonomy_filter.id.to_s, taxonomy_filter.id.to_s] })
86
- click_on "Configure"
97
+ within "tr", text: translated(component.name) do
98
+ find("button[data-controller='dropdown']").click
99
+ click_on "Configure"
100
+ end
87
101
  end
88
102
 
89
103
  it "can be removed from settings" do
90
104
  within ".js-current-filters" do
91
105
  within "tr", text: "Internal taxonomy filter name" do
106
+ find("button[data-controller='dropdown']").click
92
107
  click_on "Edit"
93
108
  end
94
109
  end
@@ -113,11 +128,16 @@ shared_examples "manage taxonomy filters in settings" do
113
128
  expect(page).to have_css("td", text: "Another taxonomy filter name")
114
129
  expect(page).to have_css("td", text: "Internal taxonomy filter name")
115
130
  expect(page).to have_css("td", text: "Public taxonomy filter name")
116
- expect(page).to have_link("Edit", count: 2)
131
+ within "table" do
132
+ expect(page).to have_css("button[data-controller='dropdown']", count: 2)
133
+ end
117
134
  end
118
135
 
119
136
  click_on "Update"
120
- click_on "Configure"
137
+ within "tr", text: translated(component.name) do
138
+ find("button[data-controller='dropdown']").click
139
+ click_on "Configure"
140
+ end
121
141
  within ".js-current-filters" do
122
142
  expect(page).to have_css("td", text: "Internal taxonomy filter name")
123
143
  expect(page).to have_css("td", text: "Public taxonomy filter name")
@@ -4,7 +4,7 @@ module Decidim
4
4
  # This holds the decidim-admin version.
5
5
  module Admin
6
6
  def self.version
7
- "0.30.1"
7
+ "0.31.0.rc1"
8
8
  end
9
9
  end
10
10
  end