decidim-budgets 0.30.2 → 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 (126) hide show
  1. checksums.yaml +4 -4
  2. data/app/cells/decidim/budgets/budget_list_item/show.erb +19 -9
  3. data/app/cells/decidim/budgets/budget_list_item/vote_action.erb +2 -2
  4. data/app/cells/decidim/budgets/budget_list_item_cell.rb +44 -10
  5. data/app/cells/decidim/budgets/budgets_list/card_list.erb +0 -2
  6. data/app/cells/decidim/budgets/budgets_list/main_list.erb +2 -2
  7. data/app/cells/decidim/budgets/budgets_list/show.erb +3 -3
  8. data/app/cells/decidim/budgets/budgets_list/voted.erb +12 -10
  9. data/app/cells/decidim/budgets/budgets_list_cell.rb +22 -0
  10. data/app/cells/decidim/budgets/project_budget_amount_cell.rb +14 -0
  11. data/app/cells/decidim/budgets/project_l/extra_data.erb +8 -2
  12. data/app/cells/decidim/budgets/project_l/metadata.erb +1 -1
  13. data/app/cells/decidim/budgets/project_l_cell.rb +2 -4
  14. data/app/cells/decidim/budgets/project_metadata_cell.rb +11 -19
  15. data/app/cells/decidim/budgets/project_selected_status_cell.rb +1 -11
  16. data/app/cells/decidim/budgets/project_vote_button/show.erb +5 -5
  17. data/app/cells/decidim/budgets/project_vote_button_cell.rb +14 -9
  18. data/app/cells/decidim/budgets/project_votes_count_cell.rb +8 -14
  19. data/app/commands/decidim/budgets/cancel_order.rb +5 -0
  20. data/app/controllers/decidim/budgets/admin/budgets_controller.rb +2 -2
  21. data/app/controllers/decidim/budgets/admin/projects_controller.rb +2 -2
  22. data/app/controllers/decidim/budgets/admin/proposals_imports_controller.rb +1 -1
  23. data/app/controllers/decidim/budgets/application_controller.rb +13 -1
  24. data/app/controllers/decidim/budgets/budgets_controller.rb +1 -3
  25. data/app/controllers/decidim/budgets/line_items_controller.rb +19 -0
  26. data/app/controllers/decidim/budgets/orders_controller.rb +20 -0
  27. data/app/controllers/decidim/budgets/projects_controller.rb +3 -1
  28. data/app/forms/decidim/budgets/admin/component_form.rb +4 -30
  29. data/app/helpers/decidim/budgets/application_helper.rb +1 -0
  30. data/app/helpers/decidim/budgets/projects_helper.rb +11 -7
  31. data/app/models/decidim/budgets/order.rb +2 -2
  32. data/app/packs/entrypoints/decidim_budgets.js +1 -0
  33. data/app/packs/src/decidim/budgets/admin/projects.js +2 -2
  34. data/app/packs/src/decidim/budgets/budgetSummaryBackdrop.js +41 -0
  35. data/app/packs/src/decidim/budgets/exit_handler.js +7 -2
  36. data/app/packs/src/decidim/budgets/progressFixed.js +1 -1
  37. data/app/packs/src/decidim/budgets/projects.js +1 -1
  38. data/app/packs/stylesheets/budgets.scss +57 -37
  39. data/app/permissions/decidim/budgets/permissions.rb +17 -13
  40. data/app/presenters/decidim/budgets/project_presenter.rb +2 -4
  41. data/app/views/decidim/budgets/admin/budgets/_actions.html.erb +65 -18
  42. data/app/views/decidim/budgets/admin/budgets/_budget-tr.html.erb +4 -4
  43. data/app/views/decidim/budgets/admin/budgets/_form.html.erb +1 -1
  44. data/app/views/decidim/budgets/admin/budgets/index.html.erb +14 -11
  45. data/app/views/decidim/budgets/admin/budgets/manage_trash.html.erb +2 -1
  46. data/app/views/decidim/budgets/admin/projects/_actions.html.erb +66 -22
  47. data/app/views/decidim/budgets/admin/projects/_bulk-actions.html.erb +15 -17
  48. data/app/views/decidim/budgets/admin/projects/_form.html.erb +1 -1
  49. data/app/views/decidim/budgets/admin/projects/_project-tr.html.erb +7 -7
  50. data/app/views/decidim/budgets/admin/projects/bulk_actions/_dropdown.html.erb +23 -30
  51. data/app/views/decidim/budgets/admin/projects/index.html.erb +2 -2
  52. data/app/views/decidim/budgets/admin/projects/manage_trash.html.erb +2 -1
  53. data/app/views/decidim/budgets/line_items/update_budget.js.erb +6 -5
  54. data/app/views/decidim/budgets/orders/status.html.erb +30 -30
  55. data/app/views/decidim/budgets/projects/_addition_selector.html.erb +1 -1
  56. data/app/views/decidim/budgets/projects/_budget_summary.html.erb +5 -1
  57. data/app/views/decidim/budgets/projects/_exit_modal.html.erb +1 -1
  58. data/app/views/decidim/budgets/projects/_project.html.erb +5 -1
  59. data/app/views/decidim/budgets/projects/_project_budget_button.html.erb +1 -9
  60. data/app/views/decidim/budgets/projects/_projects.html.erb +3 -1
  61. data/app/views/decidim/budgets/projects/index.html.erb +28 -6
  62. data/app/views/decidim/budgets/projects/order_progress_summary/_content.html.erb +30 -0
  63. data/app/views/decidim/budgets/projects/order_progress_summary/_content_responsive.html.erb +56 -0
  64. data/app/views/decidim/budgets/projects/order_progress_summary/_progress_box.html.erb +43 -0
  65. data/app/views/decidim/budgets/projects/order_progress_summary/_progress_box_buttons.html.erb +12 -0
  66. data/app/views/decidim/budgets/projects/order_progress_summary/_progress_box_sticky.html.erb +25 -0
  67. data/app/views/decidim/budgets/projects/show.html.erb +30 -17
  68. data/config/assets.rb +2 -2
  69. data/config/locales/ar.yml +0 -8
  70. data/config/locales/bg.yml +2 -18
  71. data/config/locales/ca-IT.yml +26 -14
  72. data/config/locales/ca.yml +26 -14
  73. data/config/locales/cs.yml +10 -18
  74. data/config/locales/de.yml +26 -14
  75. data/config/locales/el.yml +0 -7
  76. data/config/locales/en.yml +26 -14
  77. data/config/locales/es-MX.yml +26 -14
  78. data/config/locales/es-PY.yml +26 -14
  79. data/config/locales/es.yml +25 -13
  80. data/config/locales/eu.yml +26 -14
  81. data/config/locales/fi-plain.yml +26 -14
  82. data/config/locales/fi.yml +26 -14
  83. data/config/locales/fr-CA.yml +26 -14
  84. data/config/locales/fr.yml +26 -14
  85. data/config/locales/ga-IE.yml +0 -5
  86. data/config/locales/gl.yml +0 -7
  87. data/config/locales/hu.yml +2 -18
  88. data/config/locales/id-ID.yml +0 -7
  89. data/config/locales/is-IS.yml +0 -6
  90. data/config/locales/it.yml +0 -7
  91. data/config/locales/ja.yml +26 -14
  92. data/config/locales/kaa.yml +0 -1
  93. data/config/locales/ko.yml +0 -5
  94. data/config/locales/lb.yml +0 -7
  95. data/config/locales/lt.yml +2 -18
  96. data/config/locales/lv.yml +0 -7
  97. data/config/locales/nl.yml +0 -7
  98. data/config/locales/no.yml +0 -7
  99. data/config/locales/pl.yml +2 -18
  100. data/config/locales/pt-BR.yml +2 -18
  101. data/config/locales/pt.yml +0 -7
  102. data/config/locales/ro-RO.yml +7 -7
  103. data/config/locales/ru.yml +0 -7
  104. data/config/locales/sk.yml +0 -7
  105. data/config/locales/sq-AL.yml +0 -3
  106. data/config/locales/sv.yml +25 -13
  107. data/config/locales/tr-TR.yml +0 -8
  108. data/config/locales/uk.yml +0 -7
  109. data/config/locales/zh-CN.yml +0 -8
  110. data/config/locales/zh-TW.yml +0 -7
  111. data/db/migrate/20250912110212_move_voting_rules_to_radio_buttons.rb +22 -0
  112. data/lib/decidim/api/budget_type.rb +7 -0
  113. data/lib/decidim/api/project_type.rb +29 -1
  114. data/lib/decidim/budgets/budget_order_pdf.rb +73 -0
  115. data/lib/decidim/budgets/component.rb +26 -13
  116. data/lib/decidim/budgets/engine.rb +3 -11
  117. data/lib/decidim/budgets/seeds.rb +16 -5
  118. data/lib/decidim/budgets/test/factories.rb +3 -18
  119. data/lib/decidim/budgets/version.rb +1 -1
  120. data/lib/decidim/budgets/workflows/base.rb +0 -14
  121. data/lib/decidim/budgets.rb +1 -5
  122. metadata +22 -16
  123. data/app/queries/decidim/budgets/metrics/budget_followers_metric_measure.rb +0 -32
  124. data/app/queries/decidim/budgets/metrics/budget_participants_metric_measure.rb +0 -27
  125. data/app/views/decidim/budgets/projects/_order_progress_summary_content.html.erb +0 -122
  126. /data/app/views/decidim/budgets/projects/{_order_progress_progressbar_marks_right.html.erb → order_progress_summary/_progressbar_marks_right.html.erb} +0 -0
@@ -1,21 +1,68 @@
1
- <% if view == :deleted %>
2
- <% if allowed_to? :restore, :budget, trashable_deleted_resource: budget %>
3
- <%= icon_link_to "refresh-line", url_for(action: :restore, id: budget, controller: "budgets"), t("decidim.admin.actions.restore"), method: :patch, class: "action-icon--restore" %>
4
- <% end %>
5
- <% else %>
6
- <% if allowed_to? :update, :budget, budget: budget %>
7
- <%= icon_link_to "pencil-line", edit_budget_path(budget), t("actions.edit", scope: "decidim.budgets"), class: "action-icon--edit" %>
8
- <% else %>
9
- <%= icon "pencil-line", class: "action-icon action-icon--disabled", role: "img", aria_label: t("actions.edit", scope: "decidim.budgets") %>
10
- <% end %>
1
+ <button type="button" data-controller="dropdown" data-target="actions-post-<%= budget.id %>" aria-label="<%= t("decidim.admin.actions.actions_label", resource: translated_attribute(budget.title)) %>">
2
+ <%= icon "more-fill", class: "text-secondary" %>
3
+ </button>
11
4
 
12
- <%= icon_link_to "list-check", budget_projects_path(budget), t("actions.edit_projects", scope: "decidim.budgets"), class: "action-icon--edit-projects" %>
5
+ <div class="inline-block relative">
6
+ <ul id="actions-post-<%= budget.id %>" class="dropdown dropdown__action" aria-hidden="true">
7
+ <% if view == :deleted %>
8
+ <% if allowed_to? :restore, :budget, trashable_deleted_resource: budget %>
9
+ <li class="dropdown__item">
10
+ <%= link_to url_for(action: :restore, id: budget, controller: "budgets"), method: :patch, class: "dropdown__button" do %>
11
+ <%= icon "refresh-line" %>
12
+ <%= t("decidim.admin.actions.restore") %>
13
+ <% end %>
14
+ </li>
15
+ <% end %>
16
+ <% else %>
17
+ <% if allowed_to? :update, :budget, budget: budget %>
18
+ <li class="dropdown__item">
19
+ <%= link_to edit_budget_path(budget), class: "dropdown__button" do %>
20
+ <%= icon "pencil-line" %>
21
+ <%= t("actions.edit", scope: "decidim.budgets") %>
22
+ <% end %>
23
+ </li>
24
+ <% else %>
25
+ <li class="dropdown__item">
26
+ <span class="dropdown__button" role="img" aria-label="<%= t("actions.edit", scope: "decidim.budgets") %>">
27
+ <%= icon "pencil-line" %>
28
+ <%= t("actions.edit", scope: "decidim.budgets") %>
29
+ </span>
30
+ </li>
31
+ <% end %>
13
32
 
14
- <%= icon_link_to "eye-line", resource_locator(budget).path, t("actions.preview", scope: "decidim.budgets"), class: "action-icon--preview", target: :blank, data: { "external-link": false } %>
33
+ <hr>
15
34
 
16
- <% if allowed_to? :soft_delete, :budget, trashable_deleted_resource: budget %>
17
- <%= icon_link_to "delete-bin-line", soft_delete_budget_path(budget), t("actions.soft_delete", scope: "decidim.admin"), method: :patch, class: "action-icon--remove", data: { confirm: t("actions.confirm_delete_budget", scope: "decidim.budgets") } %>
18
- <% else %>
19
- <%= icon "delete-bin-line", class: "action-icon action-icon--disabled", role: "img", aria_label: t("actions.soft_delete", scope: "decidim.admin") %>
20
- <% end %>
21
- <% end %>
35
+ <li class="dropdown__item">
36
+ <%= link_to budget_projects_path(budget), class: "dropdown__button" do %>
37
+ <%= icon "list-check" %>
38
+ <%= t("actions.edit_projects", scope: "decidim.budgets") %>
39
+ <% end %>
40
+ </li>
41
+
42
+ <hr>
43
+
44
+ <li class="dropdown__item">
45
+ <%= link_to resource_locator(budget).path, target: :blank, data: { "external-link": false }, class: "dropdown__button" do %>
46
+ <%= icon "eye-line" %>
47
+ <%= t("actions.preview", scope: "decidim.budgets") %>
48
+ <% end %>
49
+ </li>
50
+
51
+ <hr>
52
+
53
+ <li class="dropdown__item">
54
+ <% if allowed_to? :soft_delete, :budget, trashable_deleted_resource: budget %>
55
+ <%= link_to soft_delete_budget_path(budget), method: :patch, data: { confirm: t("actions.confirm_delete_budget", scope: "decidim.budgets") }, class: "dropdown__button" do %>
56
+ <%= icon "delete-bin-line" %>
57
+ <%= t("actions.soft_delete", scope: "decidim.admin") %>
58
+ <% end %>
59
+ <% else %>
60
+ <span class="dropdown__button" role="img" aria-label="<%= t("actions.soft_delete", scope: "decidim.admin") %>">
61
+ <%= icon "delete-bin-line" %>
62
+ <%= t("actions.soft_delete", scope: "decidim.admin") %>
63
+ </span>
64
+ <% end %>
65
+ </li>
66
+ <% end %>
67
+ </ul>
68
+ </div>
@@ -1,18 +1,18 @@
1
1
  <tr data-id="<%= budget.id %>">
2
- <td>
2
+ <td data-label="<%= t("models.budget.fields.name", scope: "decidim.budgets") %>">
3
3
  <% if allowed_to? :update, :budget, budget: budget %>
4
4
  <%= link_to translated_attribute(budget.title), budget_projects_path(budget) %><br>
5
5
  <% else %>
6
6
  <%= translated_attribute(budget.title) %>
7
7
  <% end %>
8
8
  </td>
9
- <td>
9
+ <td data-label="<%= t("models.budget.fields.total_budget", scope: "decidim.budgets") %>">
10
10
  <%= number_to_currency budget.total_budget, unit: Decidim.currency_unit, precision: 0 %>
11
11
  </td>
12
- <td>
12
+ <td data-label="<%= t("models.budget.fields.projects_count", scope: "decidim.budgets") %>">
13
13
  <%= link_to budget.projects.count, budget_projects_path(budget) %>
14
14
  </td>
15
- <td class="table-list__actions">
15
+ <td class="table-list__actions" data-label="<%= t("actions.title", scope: "decidim.budgets") %>">
16
16
  <%= render partial: "decidim/budgets/admin/budgets/actions", locals: { budget:, view: } %>
17
17
  </td>
18
18
  </tr>
@@ -10,7 +10,7 @@
10
10
  </div>
11
11
 
12
12
  <div class="row column">
13
- <%= form.translated :editor, :description, toolbar: :content, aria: { label: :description } %>
13
+ <%= form.translated :editor, :description, resource_mentionable: true, toolbar: :content, aria: { label: :description } %>
14
14
  </div>
15
15
 
16
16
  <div class="row column">
@@ -3,19 +3,22 @@
3
3
  <div class="item_show__header">
4
4
  <h1 class="item_show__header-title">
5
5
  <%= t(".title") %>
6
- <% if allowed_to? :export, :budget %>
7
- <%= export_dropdown %>
8
- <% end %>
9
- <% if allowed_to? :remind, :order %>
10
- <%= link_to t("actions.send_voting_reminders", scope: "decidim.budgets"), admin_reminders_path(current_component, name: "orders"), class: "button button__sm button__secondary" %>
11
- <% end %>
12
- <div id="js-other-actions-wrapper">
13
- <%= link_to t("actions.new_budget", scope: "decidim.budgets"), new_budget_path, class: "button button__sm button__secondary" if allowed_to? :create, :budget %>
6
+
7
+ <div class="flex items-center gap-x-4">
8
+ <% if allowed_to? :export, :budget %>
9
+ <%= export_dropdown %>
10
+ <% end %>
11
+ <% if allowed_to? :remind, :order %>
12
+ <%= link_to t("actions.send_voting_reminders", scope: "decidim.budgets"), admin_reminders_path(current_component, name: "orders"), class: "button button__sm button__transparent-secondary" %>
13
+ <% end %>
14
+ <div id="js-other-actions-wrapper">
15
+ <%= link_to t("actions.new_budget", scope: "decidim.budgets"), new_budget_path, class: "button button__sm button__secondary" if allowed_to? :create, :budget %>
16
+ </div>
17
+ <%= render partial: "decidim/admin/components/resource_action" %>
14
18
  </div>
15
- <%= render partial: "decidim/admin/components/resource_action" %>
16
19
  </h1>
17
20
  </div>
18
- <div class="table-scroll">
21
+ <div class="table-stacked">
19
22
  <table class="table-list">
20
23
  <%= render partial: "budgets-thead" %>
21
24
  <tbody>
@@ -28,7 +31,7 @@
28
31
  </div>
29
32
  <% if allowed_to? :manage_trash, :budget, participatory_space: current_participatory_space %>
30
33
  <div class="card-divider mt-4">
31
- <%= link_to manage_trash_budgets_path, class: "flex items-center underline text-secondary" do %>
34
+ <%= link_to manage_trash_budgets_path, class: "flex items-center text-secondary" do %>
32
35
  <%= icon "delete-bin-2-line", class: "mr-2 fill-current text-secondary", role: "img" %>
33
36
  <%= t("actions.view_deleted_budgets", scope: "decidim.budgets") %>
34
37
  <span class="ml-2">
@@ -1,11 +1,12 @@
1
1
  <% add_decidim_page_title(t(".title")) %>
2
+
2
3
  <div class="card">
3
4
  <div class="item_show__header">
4
5
  <h1 class="item_show__header-title">
5
6
  <%= t(".title") %>
6
7
  </h1>
7
8
  </div>
8
- <div class="table-scroll">
9
+ <div class="table-stacked">
9
10
  <table class="table-list">
10
11
  <%= render partial: "budgets-thead" %>
11
12
  <tbody>
@@ -1,27 +1,71 @@
1
- <% if view == :deleted %>
2
- <% if allowed_to? :restore, :project, trashable_deleted_resource: project %>
3
- <%= icon_link_to "refresh-line", restore_budget_project_path(project.budget, project), t("decidim.admin.actions.restore"), method: :patch, class: "action-icon--restore" %>
4
- <% end %>
5
- <% else %>
6
- <% if allowed_to? :update, :project, project: project %>
7
- <%= icon_link_to "pencil-line", resource_locator([budget, project]).edit, t("actions.edit", scope: "decidim.budgets"), class: "action-icon--edit" %>
8
- <% end %>
1
+ <button type="button" data-controller="dropdown" data-target="actions-post-<%= project.id %>" aria-label="<%= t("decidim.admin.actions.actions_label", resource: project.title) %>">
2
+ <%= icon "more-fill", class: "text-secondary" %>
3
+ </button>
9
4
 
10
- <% if allowed_to? :update, :project, project: project %>
11
- <%= icon_link_to "folder-line", project_attachment_collections_path(project), t("actions.attachment_collections", scope: "decidim.budgets"), class: "action-icon--attachment_collections" %>
12
- <% end %>
5
+ <div class="inline-block relative">
6
+ <ul id="actions-post-<%= project.id %>" class="dropdown dropdown__action" aria-hidden="true">
7
+ <% if view == :deleted %>
8
+ <% if allowed_to? :restore, :project, trashable_deleted_resource: project %>
9
+ <li class="dropdown__item">
10
+ <%= link_to restore_budget_project_path(project.budget, project), method: :patch, class: "dropdown__button" do %>
11
+ <%= icon "refresh-line" %>
12
+ <%= t("decidim.admin.actions.restore") %>
13
+ <% end %>
14
+ </li>
15
+ <% end %>
16
+ <% else %>
17
+ <% if allowed_to? :update, :project, project: project %>
18
+ <li class="dropdown__item">
19
+ <%= link_to resource_locator([budget, project]).edit, class: "dropdown__button" do %>
20
+ <%= icon "pencil-line" %>
21
+ <%= t("actions.edit", scope: "decidim.budgets") %>
22
+ <% end %>
23
+ </li>
13
24
 
14
- <% if allowed_to? :update, :project, project: project %>
15
- <%= icon_link_to "attachment-line", project_attachments_path(project), t("actions.attachments", scope: "decidim.budgets"), class: "action-icon--attachments" %>
16
- <% end %>
25
+ <hr>
17
26
 
18
- <%= icon_link_to "eye-line", resource_locator([budget, project]).path, t("actions.preview", scope: "decidim.budgets"), target: :blank, class: "action-icon--preview", data: { "external-link": false } %>
27
+ <li class="dropdown__item">
28
+ <%= link_to project_attachment_collections_path(project), class: "dropdown__button" do %>
29
+ <%= icon "folder-line" %>
30
+ <%= t("actions.attachment_collections", scope: "decidim.admin") %>
31
+ <% end %>
32
+ </li>
33
+ <li class="dropdown__item">
34
+ <%= link_to project_attachments_path(project), class: "dropdown__button" do %>
35
+ <%= icon "attachment-line" %>
36
+ <%= t("actions.attachments", scope: "decidim.admin") %>
37
+ <% end %>
38
+ </li>
19
39
 
20
- <%= resource_permissions_link(project) %>
40
+ <hr>
41
+ <% end %>
21
42
 
22
- <% if allowed_to? :soft_delete, :project, trashable_deleted_resource: project %>
23
- <%= icon_link_to "delete-bin-line", soft_delete_budget_project_path(project.budget, project), t("actions.soft_delete", scope: "decidim.admin"), method: :patch, class: "action-icon--delete", data: { confirm: t("actions.confirm_delete_project", scope: "decidim.budgets") } %>
24
- <% else %>
25
- <%= icon "delete-bin-line", class: "action-icon action-icon--disabled", role: "img", aria_label: t("actions.destroy", scope: "decidim.admin") %>
26
- <% end %>
27
- <% end %>
43
+ <li class="dropdown__item">
44
+ <%= link_to resource_locator([budget, project]).path, target: :blank, data: { "external-link": false }, class: "dropdown__button" do %>
45
+ <%= icon "eye-line" %>
46
+ <%= t("actions.preview", scope: "decidim.budgets") %>
47
+ <% end %>
48
+ </li>
49
+
50
+ <hr>
51
+
52
+ <li class="dropdown__item">
53
+ <% if allowed_to? :soft_delete, :project, trashable_deleted_resource: project %>
54
+ <%= link_to soft_delete_budget_project_path(project.budget, project), method: :patch, data: { confirm: t("actions.confirm_delete_project", scope: "decidim.budgets") }, class: "dropdown__button" do %>
55
+ <%= icon "delete-bin-line" %>
56
+ <%= t("actions.soft_delete", scope: "decidim.admin") %>
57
+ <% end %>
58
+ <% else %>
59
+ <div class="dropdown__button-disabled">
60
+ <%= with_tooltip t("tooltips.deleted_projects_info", scope: "decidim.admin") do %>
61
+ <%= icon "delete-bin-line", class: "text-gray" %>
62
+ <span>
63
+ <%= t("actions.soft_delete", scope: "decidim.admin") %>
64
+ </span>
65
+ <% end %>
66
+ </div>
67
+ <% end %>
68
+ </li>
69
+ <% end %>
70
+ </ul>
71
+ </div>
@@ -1,22 +1,20 @@
1
- <div class="flex items-center gap-x-4">
2
- <div class="bulk-actions-budgets">
3
- <%= render partial: "decidim/budgets/admin/projects/bulk_actions/dropdown" %>
1
+ <div class="flex align-middle gap-x-4 ml-auto">
2
+ <%= render partial: "decidim/budgets/admin/projects/bulk_actions/dropdown" %>
4
3
 
5
- <%= render partial: "decidim/budgets/admin/projects/bulk_actions/change-selected" %>
6
- <%= render partial: "decidim/budgets/admin/projects/bulk_actions/budget-change" %>
4
+ <%= render partial: "decidim/budgets/admin/projects/bulk_actions/change-selected" %>
5
+ <%= render partial: "decidim/budgets/admin/projects/bulk_actions/budget-change" %>
7
6
 
8
- <% if allowed_to? :export, :budget %>
9
- <%= export_dropdowns(query, current_component, budget.id) %>
10
- <% end %>
11
- <% if allowed_to? :import_proposals, :project %>
12
- <%= import_dropdown do %>
13
- <%= link_to new_budget_proposals_import_path(budget) do %>
14
- <li class="imports--component">
15
- <%= t("actions.import", scope: "decidim.budgets", name: t("models.project.name", scope: "decidim.budgets.admin")) %>
16
- </li>
7
+ <% if allowed_to? :export, :budget %>
8
+ <%= export_dropdowns(query, current_component, budget.id) %>
9
+ <% end %>
10
+ <% if allowed_to? :import_proposals, :project %>
11
+ <%= import_dropdown do %>
12
+ <li class="dropdown__item">
13
+ <%= link_to new_budget_proposals_import_path(budget), class: "dropdown__button" do %>
14
+ <%= t("actions.import", scope: "decidim.budgets", name: t("models.project.name", scope: "decidim.budgets.admin")) %>
17
15
  <% end %>
18
- <% end %>
16
+ </li>
19
17
  <% end %>
20
- <%= link_to t("actions.new_project", scope: "decidim.budgets"), new_budget_project_path, class: "button button__sm button__secondary new" if allowed_to? :create, :project %>
21
- </div>
18
+ <% end %>
19
+ <%= link_to t("actions.new_project", scope: "decidim.budgets"), new_budget_project_path, class: "button button__sm button__secondary new" if allowed_to? :create, :project %>
22
20
  </div>
@@ -27,7 +27,7 @@
27
27
  <% end %>
28
28
  <% end %>
29
29
 
30
- <% if Decidim::Budgets.enable_proposal_linking %>
30
+ <% if Decidim.module_installed?(:proposals) %>
31
31
  <div class="row column">
32
32
  <%= render partial: "decidim/proposals/proposals/proposals_picker", locals: { form:, field: :proposals } %>
33
33
  </div>
@@ -2,23 +2,23 @@
2
2
  <td>
3
3
  <%= check_box_tag "project_ids_s[]", project.id, false, class: "js-check-all-resources js-project-list-check js-resource-id-#{project.id}" %><br>
4
4
  </td>
5
- <td>
5
+ <td data-label="<%= t("models.project.fields.id", scope: "decidim.budgets") %>">
6
6
  <%= project.id %><br>
7
7
  </td>
8
- <td class="!text-left">
8
+ <td class="!text-left" data-label="<%= t("models.project.fields.title", scope: "decidim.budgets") %>">
9
9
  <% if allowed_to? :update, :project, project: project %>
10
10
  <%= link_to translated_attribute(project.title), resource_locator([budget, project]).edit %><br>
11
11
  <% else %>
12
12
  <%= translated_attribute(project.title) %><br>
13
13
  <% end %>
14
14
  </td>
15
- <td>
15
+ <td data-label="<%= t("models.project.fields.taxonomies", scope: "decidim.budgets") %>">
16
16
  <%= project.taxonomies.map { |taxonomy| decidim_sanitize_translated(taxonomy.name) }.join(", ") %>
17
17
  </td>
18
- <td>
18
+ <td data-label="<%= t("index.confirmed_orders_count") %>">
19
19
  <%= project.confirmed_orders_count %>
20
20
  </td>
21
- <td>
21
+ <td data-label="<%= t("projects.index.selected", scope: "decidim.budgets.admin") %>">
22
22
  <% if project.selected? %>
23
23
  <%= content_tag :strong, t("yes", scope: "decidim.budgets.admin.projects.index.selected_options"), class: "label success" %>
24
24
  <% else %>
@@ -26,11 +26,11 @@
26
26
  <% end %>
27
27
  </td>
28
28
  <% if maps_enabled? && Decidim::Map.available?(:static, :geocoding) %>
29
- <td>
29
+ <td data-label="<%= t("models.project.fields.map", scope: "decidim.budgets") %>">
30
30
  <%= static_map_link(project, {}, { class: "static-map__admin" }) %>
31
31
  </td>
32
32
  <% end %>
33
- <td class="table-list__actions">
33
+ <td class="table-list__actions" data-label="<%= t("actions.title", scope: "decidim.budgets") %>">
34
34
  <%= render partial: "decidim/budgets/admin/projects/actions", locals: { project:, view: } %>
35
35
  </td>
36
36
  </tr>
@@ -1,39 +1,32 @@
1
- <div id="js-bulk-actions-wrapper">
1
+ <div id="js-bulk-actions-wrapper" class="relative">
2
2
  <button
3
3
  id="js-bulk-actions-button"
4
- class="button button__sm button__secondary"
4
+ class="button button__sm button__transparent-secondary"
5
5
  type="button"
6
- data-toggle="js-bulk-actions-dropdown">
6
+ data-controller="dropdown"
7
+ data-target="js-bulk-actions-dropdown">
7
8
  <%= t("decidim.budgets.admin.projects.index.actions") %>
8
- <%= icon "arrow-down-s-line", class: "dropdown-filter-icon" %>
9
+ <%= icon "arrow-down-s-line" %>
10
+ <%= icon "arrow-down-s-line" %>
9
11
  </button>
10
12
 
11
- <div
12
- id="js-bulk-actions-dropdown"
13
- class="dropdown-pane"
14
- data-position="bottom"
15
- data-alignment="right"
16
- data-dropdown="dropdown"
17
- data-auto-focus="false"
18
- data-events="resize">
19
- <ul>
20
- <% if current_component_taxonomy_filters&.any? %>
21
- <li>
22
- <button type="button" data-action="taxonomy-change-projects">
23
- <%= t("decidim.budgets.admin.projects.index.change_taxonomies") %>
24
- </button>
25
- </li>
26
- <% end %>
27
- <li>
28
- <button type="button" data-action="change-selected-projects">
29
- <%= t("decidim.budgets.admin.projects.index.change_selected") %>
13
+ <ul id="js-bulk-actions-dropdown" class="dropdown dropdown__bottom" aria-hidden="true">
14
+ <% if current_component_taxonomy_filters&.any? %>
15
+ <li class="dropdown__item">
16
+ <button type="button" class="dropdown__button" data-action="taxonomy-change-projects">
17
+ <%= t("decidim.budgets.admin.projects.index.change_taxonomies") %>
30
18
  </button>
31
19
  </li>
32
- <li>
33
- <button type="button" data-action="budget-change-projects">
34
- <%= t("decidim.budgets.admin.projects.index.change_budget") %>
35
- </button>
36
- </li>
37
- </ul>
38
- </div>
20
+ <% end %>
21
+ <li class="dropdown__item">
22
+ <button type="button" class="dropdown__button" data-action="change-selected-projects">
23
+ <%= t("decidim.budgets.admin.projects.index.change_selected") %>
24
+ </button>
25
+ </li>
26
+ <li class="dropdown__item">
27
+ <button type="button" class="dropdown__button" data-action="budget-change-projects">
28
+ <%= t("decidim.budgets.admin.projects.index.change_budget") %>
29
+ </button>
30
+ </li>
31
+ </ul>
39
32
  </div>
@@ -13,7 +13,7 @@
13
13
  <%= render partial: "decidim/budgets/admin/projects/bulk_actions/taxonomy_change" %>
14
14
  </div>
15
15
  <%= admin_filter_selector(:projects) %>
16
- <div class="table-scroll">
16
+ <div class="table-stacked">
17
17
  <table class="table-list">
18
18
  <%= render partial: "projects-thead" %>
19
19
  <tbody>
@@ -25,7 +25,7 @@
25
25
  </table>
26
26
  <% if allowed_to? :manage_trash, :project, participatory_space: current_participatory_space %>
27
27
  <div class="card mt-4">
28
- <%= link_to manage_trash_budget_projects_path(budget), class: "flex items-center underline text-secondary" do %>
28
+ <%= link_to manage_trash_budget_projects_path(budget), class: "flex items-center text-secondary" do %>
29
29
  <%= icon "delete-bin-2-line", class: "mr-2 fill-current text-secondary", role: "img" %>
30
30
  <%= t("actions.view_deleted_projects", scope: "decidim.budgets") %>
31
31
  <span class="ml-2">
@@ -1,4 +1,5 @@
1
1
  <% add_decidim_page_title(t(".title")) %>
2
+
2
3
  <div class="card">
3
4
  <div class="item_show__header">
4
5
  <h1 class="item_show__header-title">
@@ -11,7 +12,7 @@
11
12
  </h1>
12
13
  </div>
13
14
  <%= admin_filter_selector(:projects) %>
14
- <div class="table-scroll">
15
+ <div class="table-stacked">
15
16
  <table class="table-list">
16
17
  <%= render partial: "projects-thead" %>
17
18
  <tbody>
@@ -1,5 +1,5 @@
1
1
  var $orderSelectedProjectsCount = $('#order-selected-projects-count');
2
- var $orderProgress = document.querySelectorAll('[id^=order-progress] .budget-summary__content');
2
+ var $orderProgress = document.querySelectorAll('[data-order-progress-responsive]');
3
3
  var $projectItem = $('#project-<%= project.id %>-item');
4
4
  var $projectBudgetButton = $('#project-<%= project.id %>-budget-button');
5
5
  var $budgetConfirm = $('#budget-confirm');
@@ -8,12 +8,13 @@ $orderProgress.forEach((orderProgress) => {
8
8
  var $orderTotalBudget = $(orderProgress).find("[id^=order-total-budget]");
9
9
  $orderTotalBudget.html('<%= j(render partial: "decidim/budgets/projects/order_total_budget").strip.html_safe %>');
10
10
 
11
- if(orderProgress.dataset.orderProgressResponsive) {
12
- morphdom(orderProgress, '<%= j(render partial: "decidim/budgets/projects/order_progress_summary_content", locals: { include_heading: true, responsive: true }).strip.html_safe %>');
11
+ if(orderProgress.dataset.orderProgressResponsive === "true") {
12
+ morphdom(orderProgress, '<%= j(render partial: "decidim/budgets/projects/order_progress_summary/content_responsive", locals: { focus_mode_origin: @focus_mode_origin }).strip.html_safe %>');
13
13
  } else {
14
- morphdom(orderProgress, '<%= j(render partial: "decidim/budgets/projects/order_progress_summary_content", locals: { include_heading: true, responsive: false }).strip.html_safe %>');
14
+ morphdom(orderProgress, '<%= j(render partial: "decidim/budgets/projects/order_progress_summary/content").strip.html_safe %>');
15
15
  }
16
- })
16
+ });
17
+
17
18
  morphdom($budgetConfirm[0], '<%= j(render partial: "decidim/budgets/projects/budget_confirm").strip.html_safe %>')
18
19
  if ($orderSelectedProjectsCount.length > 0) {
19
20
  morphdom($orderSelectedProjectsCount[0], '<%= j(render partial: "decidim/budgets/projects/projects_count", locals: { count: current_order.projects.size }).strip.html_safe %>')
@@ -1,44 +1,37 @@
1
- <%= render layout: "layouts/decidim/shared/layout_center" do %>
2
- <div class="flex flex-col gap-4 items-center text-center my-12">
3
- <div class="success-image">
4
- <svg class="animation-success__checkmark" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 52 52">
5
- <circle class="animation-success__checkmark__circle" cx="26" cy="26" r="25" fill="none" />
6
- <path class="animation-success__checkmark__check" fill="none" d="M14.1 27.2l7.1 7.2 16.7-16.8" />
7
- </svg>
8
- </div>
1
+ <% add_decidim_page_title t("title", scope: "decidim.budgets.order.status") %>
2
+
3
+ <% if @focus_mode %>
4
+ <% content_for :focus_mode, true %>
5
+ <% end %>
6
+
7
+ <%= render layout: "layouts/decidim/shared/layout_center", locals: { columns: 6 } do %>
8
+ <div class="flex flex-col gap-4 items-center text-center mt-12 mb-6">
9
+ <%= success_animation %>
9
10
 
10
11
  <h1 class="h1 inline-block">
11
12
  <%= t("title", scope: "decidim.budgets.order.status") %>
12
13
  </h1>
13
14
 
14
- <p>
15
- <%= t(
16
- "votes_count",
17
- scope: "decidim.budgets.order.status",
18
- count: current_order.total_projects,
19
- budget_name: translated_attribute(current_order.budget.title)
20
- ) %>
21
- </p>
15
+ <p class="text-xl">
16
+ <%= t("votes_count", scope: "decidim.budgets.order.status", count: current_order.total_projects, budget_name: translated_attribute(current_order.budget.title)) %>
22
17
 
23
- <% if pending_to_vote_budgets.present? %>
24
- <p class="text-bold">
25
- <%= t("pending_to_vote_budgets", scope: "decidim.budgets.order.status", count: pending_to_vote_budgets.count) %>
26
- </p>
27
- <% end %>
28
- </div>
18
+ <br>
29
19
 
30
- <div class="form__wrapper-block flex-col-reverse md:flex-row justify-between">
31
- <button class="button button__sm md:button__lg button__text-secondary">
32
- <span><%= t("share_vote", scope: "decidim.budgets.order.status") %></span>
33
- <%= icon "share-line", class: "fill-current" %>
34
- </button>
20
+ <% if pending_to_vote_budgets.present? %>
21
+ <span class="font-semibold">
22
+ <%= t("pending_to_vote_budgets", scope: "decidim.budgets.order.status", count: pending_to_vote_budgets.count) %>
23
+ </span>
24
+ <% end %>
25
+ </p>
26
+ </div>
35
27
 
36
- <button class="button button__sm md:button__lg button__transparent-secondary">
28
+ <div class="form__wrapper-block flex-col-reverse xl:flex-row justify-center xl:px-12">
29
+ <%= link_to export_pdf_budget_order_path(current_order.budget), class: "button button__sm lg:button__lg button__transparent-secondary xl:w-1/2" do %>
37
30
  <span><%= t("download_vote", scope: "decidim.budgets.order.status") %></span>
38
31
  <%= icon "download-line", class: "fill-current" %>
39
- </button>
32
+ <% end %>
40
33
 
41
- <%= link_to budgets_path, class: "button button__sm md:button__lg button__secondary" do %>
34
+ <%= link_to budgets_path, class: "button button__sm lg:button__lg button__secondary xl:w-1/2" do %>
42
35
  <span>
43
36
  <% if pending_to_vote_budgets.present? %>
44
37
  <%= t("continue_voting", scope: "decidim.budgets.order.status") %>
@@ -49,4 +42,11 @@
49
42
  <%= icon "arrow-right-line", class: "fill-current" %>
50
43
  <% end %>
51
44
  </div>
45
+
46
+ <div class="text-center">
47
+ <%= cell "decidim/share_text_widget",
48
+ current_order.budget,
49
+ button_classes: "button button__sm lg:button__lg button__text-secondary",
50
+ button_text: t("share_vote", scope: "decidim.budgets.order.status") %>
51
+ </div>
52
52
  <% end %>
@@ -1,4 +1,4 @@
1
- <%= filter_form_for filter, url_for, data: { filters: "", component: "accordion" } do |form| %>
1
+ <%= filter_form_for filter, url_for, data: { filters: "", controller: "accordion form-filter" } do |form| %>
2
2
  <%= form.collection_radio_buttons(
3
3
  :addition_type,
4
4
  filter_addition_type_values,
@@ -1,3 +1,7 @@
1
1
  <div id="order-progress<%= "-responsive" if responsive %>" class="budget-summary <%= responsive ? "block md:hidden" : "hidden md:block" %>" data-progress-reference data-safe-url="<%= budget_url(budget) %>">
2
- <%= render partial: "order_progress_summary_content", locals: { responsive: , include_heading: } %>
2
+ <% if responsive %>
3
+ <%= render partial: "decidim/budgets/projects/order_progress_summary/content_responsive", locals: { focus_mode_origin: focus_mode_origin } %>
4
+ <% else %>
5
+ <%= render partial: "decidim/budgets/projects/order_progress_summary/content" %>
6
+ <% end %>
3
7
  </div>
@@ -10,10 +10,10 @@
10
10
  </p>
11
11
  </div>
12
12
  <div data-dialog-actions>
13
+ <%= link_to t("exit", scope: "decidim.budgets.projects.exit_modal"), budget_projects_path, id: "exit-notification-link", class: "button button__sm md:button__lg button__transparent-secondary" %>
13
14
  <button data-dialog-close="exit-notification" class="button button__sm md:button__lg button__secondary">
14
15
  <%= t("cancel", scope: "decidim.budgets.projects.exit_modal") %>
15
16
  </button>
16
- <%= link_to t("exit", scope: "decidim.budgets.projects.exit_modal"), budget_projects_path, id: "exit-notification-link", class: "button button__sm md:button__lg button__secondary" %>
17
17
  </div>
18
18
  <% end %>
19
19
  <% end %>
@@ -1,2 +1,6 @@
1
1
  <% show_only_added ||= params.dig(:filter, :addition_type) == "added" %>
2
- <%= card_for project, render_extra_data: true, link_whole_card: false, wrapper_class: "project-item", show_only_added: %>
2
+
3
+ <%= card_for project, render_extra_data: true,
4
+ link_whole_card: false,
5
+ wrapper_class: "project-item",
6
+ show_only_added: %>