decidim-core 0.31.2 → 0.31.4

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 (101) hide show
  1. checksums.yaml +4 -4
  2. data/app/cells/decidim/content_blocks/highlighted_elements_with_cell_for_list_cell.rb +5 -1
  3. data/app/cells/decidim/nav_links/show.erb +3 -3
  4. data/app/cells/decidim/participatory_space_private_user/show.erb +6 -6
  5. data/app/cells/decidim/participatory_space_private_user_cell.rb +0 -4
  6. data/app/cells/decidim/report_button/already_reported_modal.erb +1 -1
  7. data/app/cells/decidim/report_button/flag_modal.erb +1 -1
  8. data/app/cells/decidim/report_user_button/already_reported_modal.erb +1 -1
  9. data/app/cells/decidim/report_user_button/flag_modal.erb +1 -1
  10. data/app/cells/decidim/share_text_widget/modal.erb +1 -1
  11. data/app/cells/decidim/upload_modal/files.erb +5 -1
  12. data/app/cells/decidim/upload_modal_cell.rb +10 -1
  13. data/app/commands/decidim/multiple_attachments_methods.rb +20 -3
  14. data/app/helpers/decidim/mailer_helper.rb +36 -0
  15. data/app/helpers/decidim/menu_helper.rb +2 -1
  16. data/app/helpers/decidim/newsletters_helper.rb +4 -22
  17. data/app/jobs/decidim/find_and_update_descendants_job.rb +8 -2
  18. data/app/jobs/decidim/update_search_indexes_job.rb +2 -2
  19. data/app/mailers/decidim/application_mailer.rb +4 -0
  20. data/app/packs/src/decidim/a11y.js +29 -0
  21. data/app/packs/src/decidim/a11y.test.js +81 -0
  22. data/app/packs/src/decidim/confirm.js +8 -1
  23. data/app/packs/src/decidim/confirm.test.js +225 -0
  24. data/app/packs/src/decidim/controllers/accordion/accordion.test.js +118 -0
  25. data/app/packs/src/decidim/controllers/accordion/controller.js +24 -0
  26. data/app/packs/src/decidim/controllers/dropdown/controller.js +26 -0
  27. data/app/packs/src/decidim/controllers/dropdown/dropdown.test.js +187 -0
  28. data/app/packs/src/decidim/controllers/form_validator/form_validator.js +3 -2
  29. data/app/packs/src/decidim/controllers/form_validator/form_validator.test.js +5 -0
  30. data/app/packs/src/decidim/controllers/language_change/controller.js +1 -0
  31. data/app/packs/src/decidim/controllers/language_change/language_change.test.js +13 -0
  32. data/app/packs/src/decidim/datepicker/datepicker_functions.js +26 -0
  33. data/app/packs/src/decidim/datepicker/generate_datepicker.js +2 -1
  34. data/app/packs/src/decidim/datepicker/generate_timepicker.js +3 -2
  35. data/app/packs/src/decidim/datepicker/test/datepicker_functions_adjust_picker_position.test.js +234 -0
  36. data/app/packs/src/decidim/editor/extensions/image/index.js +49 -11
  37. data/app/packs/src/decidim/editor/extensions/image/node_view.js +9 -1
  38. data/app/packs/src/decidim/editor/extensions/link/bubble_menu.js +34 -6
  39. data/app/packs/src/decidim/editor/extensions/link/index.js +45 -12
  40. data/app/packs/src/decidim/editor/test/extensions/image_links.test.js +161 -0
  41. data/app/packs/src/decidim/refactor/moved/focus_guard.js +4 -4
  42. data/app/packs/stylesheets/decidim/_cards.scss +12 -4
  43. data/app/packs/stylesheets/decidim/_flash.scss +1 -1
  44. data/app/packs/stylesheets/decidim/_rich_text.scss +17 -0
  45. data/app/packs/stylesheets/decidim/editor.scss +10 -0
  46. data/app/presenters/decidim/menu_item_presenter.rb +7 -1
  47. data/app/views/decidim/devise/invitations/edit.html.erb +3 -3
  48. data/app/views/decidim/devise/registrations/new.html.erb +1 -0
  49. data/app/views/decidim/devise/shared/_tos_fields.html.erb +3 -3
  50. data/app/views/decidim/notification_mailer/event_received.html.erb +3 -3
  51. data/app/views/decidim/pages/_tabbed.html.erb +3 -3
  52. data/app/views/decidim/shared/_filters.html.erb +5 -5
  53. data/app/views/decidim/shared/filters/_check_boxes_tree.html.erb +1 -1
  54. data/app/views/decidim/shared/filters/_collection.html.erb +1 -1
  55. data/config/initializers/devise.rb +6 -0
  56. data/config/locales/ar.yml +3 -3
  57. data/config/locales/bg.yml +0 -4
  58. data/config/locales/ca-IT.yml +7 -6
  59. data/config/locales/ca.yml +7 -6
  60. data/config/locales/cs.yml +5 -8
  61. data/config/locales/de.yml +31 -8
  62. data/config/locales/el.yml +0 -2
  63. data/config/locales/en.yml +5 -4
  64. data/config/locales/es-MX.yml +10 -9
  65. data/config/locales/es-PY.yml +10 -9
  66. data/config/locales/es.yml +12 -11
  67. data/config/locales/eu.yml +7 -5
  68. data/config/locales/fi-plain.yml +10 -4
  69. data/config/locales/fi.yml +11 -5
  70. data/config/locales/fr-CA.yml +7 -5
  71. data/config/locales/fr.yml +8 -7
  72. data/config/locales/gl.yml +0 -2
  73. data/config/locales/hu.yml +4 -8
  74. data/config/locales/id-ID.yml +0 -2
  75. data/config/locales/it.yml +1 -3
  76. data/config/locales/ja.yml +7 -8
  77. data/config/locales/lb.yml +0 -2
  78. data/config/locales/lt.yml +1 -3
  79. data/config/locales/lv.yml +0 -2
  80. data/config/locales/nl.yml +0 -2
  81. data/config/locales/no.yml +0 -2
  82. data/config/locales/pl.yml +0 -4
  83. data/config/locales/pt-BR.yml +4 -5
  84. data/config/locales/pt.yml +0 -2
  85. data/config/locales/ro-RO.yml +1 -5
  86. data/config/locales/ru.yml +0 -2
  87. data/config/locales/sk.yml +0 -4
  88. data/config/locales/sv.yml +8 -7
  89. data/config/locales/tr-TR.yml +17 -5
  90. data/config/locales/zh-CN.yml +0 -2
  91. data/config/locales/zh-TW.yml +1 -3
  92. data/lib/decidim/assets/tailwind/tailwind.config.js.erb +1 -1
  93. data/lib/decidim/content_parsers/blob_parser.rb +3 -3
  94. data/lib/decidim/content_renderers/blob_renderer.rb +2 -2
  95. data/lib/decidim/core/test/shared_examples/participatory_space_members_shared_examples.rb +121 -0
  96. data/lib/decidim/core/version.rb +1 -1
  97. data/lib/decidim/form_builder.rb +58 -36
  98. data/lib/decidim/maintenance/taxonomy_importer.rb +1 -1
  99. data/lib/decidim/participatory_space_user.rb +1 -1
  100. data/lib/decidim/searchable.rb +4 -4
  101. metadata +14 -6
@@ -18,8 +18,8 @@ module Decidim
18
18
  #
19
19
  # @see BaseRenderer Examples of how to use a content renderer
20
20
  class BlobRenderer < BaseRenderer
21
- # Matches a global id representing a Decidim::User
22
- GLOBAL_ID_REGEX = %r{(gid://[\w-]+/ActiveStorage::Blob/\d+)(/([\w=-]+))?}
21
+ # Matches a global id representing an ActiveStorage::Blob (optionally with a variant key)
22
+ GLOBAL_ID_REGEX = %r{(gid://[\w-]+/ActiveStorage::Blob/\d+)(/([\w=-]+))?(?:[^\s"'<>]*)}
23
23
 
24
24
  # Replaces found Global IDs matching an existing blob with a URL to
25
25
  # that blob. The Global IDs representing an invalid ActiveStorage::Blob
@@ -0,0 +1,121 @@
1
+ # frozen_string_literal: true
2
+
3
+ shared_examples "participatory space members" do
4
+ let(:blocks_manifests) { [] }
5
+ let(:organization) { create(:organization) }
6
+ let(:user) { create(:user, organization: participatory_space.organization) }
7
+ let(:unpublished_user) { create(:user, organization: participatory_space.organization) }
8
+
9
+ before do
10
+ switch_to_host(organization.host)
11
+ end
12
+
13
+ context "when there are no members and directly accessing from URL" do
14
+ it_behaves_like "a 404 page" do
15
+ let(:target_path) { members_path }
16
+ end
17
+ end
18
+
19
+ context "when there are no members and accessing from the space homepage" do
20
+ context "and the main data content block is disabled" do
21
+ it "the menu nav is not shown" do
22
+ visit participatory_space_homepage_path
23
+
24
+ expect(page).to have_no_css(".participatory-space__nav-container")
25
+ end
26
+ end
27
+
28
+ context "and the main data content block is enabled" do
29
+ let(:blocks_manifests) { ["main_data"] }
30
+
31
+ it "the menu link is not shown" do
32
+ visit participatory_space_homepage_path
33
+
34
+ expect(page).to have_no_content("Members")
35
+ end
36
+ end
37
+ end
38
+
39
+ context "when the participatory space does not exist" do
40
+ it_behaves_like "a 404 page" do
41
+ let(:target_path) { unexisting_participatory_space_members_path }
42
+ end
43
+ end
44
+
45
+ context "when there are some members and all are unpublished" do
46
+ before do
47
+ create(:member, user:, participatory_space:, published: false)
48
+ end
49
+
50
+ context "and directly accessing from URL" do
51
+ it_behaves_like "a 404 page" do
52
+ let(:target_path) { members_path }
53
+ end
54
+ end
55
+
56
+ context "and accessing from the homepage" do
57
+ context "and the main data content block is disabled" do
58
+ it "the menu nav is not shown" do
59
+ visit participatory_space_homepage_path
60
+
61
+ expect(page).to have_no_css(".participatory-space__nav-container")
62
+ end
63
+ end
64
+
65
+ context "and the main data content block is enabled" do
66
+ let(:blocks_manifests) { ["main_data"] }
67
+
68
+ it "the menu link is not shown" do
69
+ visit participatory_space_homepage_path
70
+
71
+ expect(page).to have_no_content("Members")
72
+ end
73
+ end
74
+ end
75
+ end
76
+
77
+ context "when there are some published members" do
78
+ let!(:member) { create(:member, user:, participatory_space:, published: true) }
79
+ let!(:unpublished_member) { create(:member, user: unpublished_user, participatory_space:, published: false) }
80
+
81
+ before do
82
+ visit members_path
83
+ end
84
+
85
+ context "and accessing from the space homepage" do
86
+ context "and the main data content block is disabled" do
87
+ it "the menu nav is not shown" do
88
+ visit participatory_space_homepage_path
89
+
90
+ expect(page).to have_no_css(".participatory-space__nav-container")
91
+ end
92
+ end
93
+
94
+ context "and the main data content block is enabled" do
95
+ let(:blocks_manifests) { ["main_data"] }
96
+
97
+ it "the menu link is shown" do
98
+ visit participatory_space_homepage_path
99
+
100
+ within ".participatory-space__nav-container" do
101
+ expect(page).to have_content("Members")
102
+ click_on "Members"
103
+ end
104
+
105
+ expect(page).to have_current_path members_path
106
+ end
107
+ end
108
+
109
+ it "lists all the members" do
110
+ within ".layout-main__section" do
111
+ expect(page).to have_css(".profile__user", count: 1)
112
+ expect(page).to have_no_content(Decidim::ParticipatorySpace::MemberPresenter.new(unpublished_member).name)
113
+ end
114
+
115
+ click_on(member.name)
116
+
117
+ expect(page).to have_content("Profile")
118
+ end
119
+ end
120
+ end
121
+ end
@@ -4,7 +4,7 @@ module Decidim
4
4
  # This holds the decidim-core version.
5
5
  module Core
6
6
  def self.version
7
- "0.31.2"
7
+ "0.31.4"
8
8
  end
9
9
  end
10
10
  end
@@ -45,14 +45,6 @@ module Decidim
45
45
  end
46
46
  # rubocop:enable Metrics/ParameterLists
47
47
 
48
- def create_language_selector(locales, tabs_id, name)
49
- if locales.count > 4
50
- language_selector_select(locales, tabs_id, name)
51
- else
52
- language_tabs(locales, tabs_id, name)
53
- end
54
- end
55
-
56
48
  # Public: Generates a form field for each locale.
57
49
  #
58
50
  # type - The form field's type, like `text_area` or `text_field`
@@ -65,23 +57,11 @@ module Decidim
65
57
 
66
58
  tabs_id = sanitize_tabs_selector(options[:tabs_id] || "#{object_name}-#{name}-tabs")
67
59
 
68
- label_tabs = content_tag(:div, class: "label--tabs") do
69
- field_label = label_i18n(name, options[:label] || label_for(name), required: options[:required])
60
+ error_on_locale = locales.find { |locale| error?(name_with_locale(name, locale)) }
70
61
 
71
- language_selector = "".html_safe
72
- language_selector = create_language_selector(locales, tabs_id, name) if options[:label] != false
62
+ label_tabs = translated_labels(name, options, tabs_id, error_on_locale)
73
63
 
74
- safe_join [field_label, language_selector]
75
- end
76
-
77
- tabs_content = content_tag(:div, class: "tabs-content", data: { tabs_content: tabs_id }) do
78
- locales.each_with_index.inject("".html_safe) do |string, (locale, index)|
79
- tab_content_id = "#{tabs_id}-#{name}-panel-#{index}"
80
- string + content_tag(:div, class: tab_element_class_for("panel", index), id: tab_content_id, "aria-hidden": tab_attr_aria_hidden_for(index)) do
81
- send(type, name_with_locale(name, locale), options.merge(label: false))
82
- end
83
- end
84
- end
64
+ tabs_content = translated_tabs(type, name, options, tabs_id, error_on_locale)
85
65
 
86
66
  safe_join [label_tabs, tabs_content]
87
67
  end
@@ -452,6 +432,44 @@ module Decidim
452
432
 
453
433
  private
454
434
 
435
+ def translated_tabs(type, name, options, tabs_id, error_on_locale = nil)
436
+ content_tag(:div, class: "tabs-content", data: { tabs_content: tabs_id }) do
437
+ locales.each_with_index.inject("".html_safe) do |string, (locale, index)|
438
+ tab_content_id = sanitize_tabs_selector "#{tabs_id}-#{name}-panel-#{index}"
439
+
440
+ aria_hidden = (error_on_locale.present? ? !locale.eql?(error_on_locale) : index.positive?).to_s
441
+ css_class = if error_on_locale.present?
442
+ tab_element_class_for("panel", locale.eql?(error_on_locale) ? 0 : 1)
443
+ else
444
+ tab_element_class_for("panel", index)
445
+ end
446
+
447
+ string + content_tag(:div, class: css_class, id: tab_content_id, "aria-hidden": aria_hidden) do
448
+ send(type, name_with_locale(name, locale), options.merge(label: false))
449
+ end
450
+ end
451
+ end
452
+ end
453
+
454
+ def create_language_selector(locales, tabs_id, name, error_on_locale = nil)
455
+ if locales.count > 4
456
+ language_selector_select(locales, tabs_id, name, error_on_locale)
457
+ else
458
+ language_tabs(locales, tabs_id, name, error_on_locale)
459
+ end
460
+ end
461
+
462
+ def translated_labels(name, options, tabs_id, error_on_locale = nil)
463
+ content_tag(:div, class: "label--tabs") do
464
+ field_label = label_i18n(name, options[:label] || label_for(name), required: options[:required])
465
+
466
+ language_selector = "".html_safe
467
+ language_selector = create_language_selector(locales, tabs_id, name, error_on_locale) if options[:label] != false
468
+
469
+ safe_join [field_label, language_selector]
470
+ end
471
+ end
472
+
455
473
  def editor_hidden_options(name, options)
456
474
  hidden_options = extract_validations(name, options).merge(options)
457
475
  if hidden_options[:minlength] || hidden_options[:maxlength]
@@ -682,9 +700,7 @@ module Decidim
682
700
  end
683
701
 
684
702
  def tab_attr_aria_hidden_for(index)
685
- return "false" if index.zero?
686
-
687
- "true"
703
+ index.positive?.to_s
688
704
  end
689
705
 
690
706
  def locales
@@ -799,29 +815,35 @@ module Decidim
799
815
  class: "columns")
800
816
  end
801
817
 
802
- def language_selector_select(locales, tabs_id, name)
818
+ # i18n-tasks-use t('locale.name_with_error')
819
+ # i18n-tasks-use t('locale.name')
820
+ def language_selector_select(locales, tabs_id, name, error_on_locale = nil)
803
821
  content_tag(:div) do
804
822
  content_tag(:select, id: tabs_id, class: "language-change", data: { controller: "language-change" }) do
805
823
  locales.each_with_index.inject("".html_safe) do |string, (locale, index)|
806
- title = if error?(name_with_locale(name, locale))
807
- I18n.with_locale(locale) { I18n.t("name_with_error", scope: "locale") }
808
- else
809
- I18n.with_locale(locale) { I18n.t("name", scope: "locale") }
810
- end
824
+ title = locale.eql?(error_on_locale) ? "name_with_error" : "name"
825
+ title = I18n.with_locale(locale) { I18n.t(title, scope: "locale") }
811
826
  tab_content_id = sanitize_tabs_selector "#{tabs_id}-#{name}-panel-#{index}"
812
- string + content_tag(:option, title, value: "##{tab_content_id}")
827
+ string + content_tag(:option, title, value: "##{tab_content_id}", selected: locale.eql?(error_on_locale))
813
828
  end
814
829
  end
815
830
  end
816
831
  end
817
832
 
818
- def language_tabs(locales, tabs_id, name)
833
+ def language_tabs(locales, tabs_id, name, error_on_locale = nil)
819
834
  content_tag(:ul, class: "tabs tabs--lang", id: tabs_id, data: { tabs: true }) do
820
835
  locales.each_with_index.inject("".html_safe) do |string, (locale, index)|
821
- string + content_tag(:li, class: tab_element_class_for("title", index)) do
836
+ display = if error_on_locale.nil?
837
+ index
838
+ else
839
+ locale.eql?(error_on_locale) ? 0 : 1
840
+ end
841
+
842
+ css_class = tab_element_class_for("title", display)
843
+ string + content_tag(:li, class: css_class) do
822
844
  title = I18n.with_locale(locale) { I18n.t("name", scope: "locale") }
823
845
  element_class = nil
824
- element_class = "is-tab-error" if error?(name_with_locale(name, locale))
846
+ element_class = "is-tab-error" if locale.eql?(error_on_locale)
825
847
  tab_content_id = sanitize_tabs_selector "#{tabs_id}-#{name}-panel-#{index}"
826
848
  content_tag(:a, title, href: "##{tab_content_id}", class: element_class)
827
849
  end
@@ -85,7 +85,7 @@ module Decidim
85
85
  component = GlobalID::Locator.locate(component_id)
86
86
  if component
87
87
  begin
88
- component.update!(settings: { taxonomy_filters: [filter.id.to_s] })
88
+ component.update!(settings: component.settings.to_h.merge(taxonomy_filters: [filter.id.to_s]))
89
89
  result[:components_assigned][filter.internal_name[organization.default_locale]] ||= []
90
90
  result[:components_assigned][filter.internal_name[organization.default_locale]] << component_id
91
91
  rescue ActiveRecord::RecordInvalid
@@ -11,7 +11,7 @@ module Decidim
11
11
  included do
12
12
  validate :user_and_space_same_organization
13
13
 
14
- belongs_to :user, foreign_key: "decidim_user_id", class_name: "Decidim::User", optional: true
14
+ belongs_to :user, foreign_key: "decidim_user_id", class_name: "Decidim::User"
15
15
 
16
16
  ransacker :name do
17
17
  Arel.sql(%{("decidim_users"."name")::text})
@@ -101,7 +101,7 @@ module Decidim
101
101
 
102
102
  # Public: after_update callback to update index information of the model.
103
103
  #
104
- def try_update_index_for_search_resource
104
+ def try_update_index_for_search_resource(current_depth = 0)
105
105
  return unless self.class.searchable_resource?(self)
106
106
 
107
107
  org = self.class.search_resource_fields_mapper.retrieve_organization(self)
@@ -124,13 +124,13 @@ module Decidim
124
124
  searchables_in_org.destroy_all
125
125
  end
126
126
 
127
- find_and_update_descendants
127
+ find_and_update_descendants(current_depth)
128
128
  end
129
129
 
130
130
  private
131
131
 
132
- def find_and_update_descendants
133
- Decidim::FindAndUpdateDescendantsJob.perform_later(self)
132
+ def find_and_update_descendants(current_depth = 0)
133
+ Decidim::FindAndUpdateDescendantsJob.perform_later(self, current_depth)
134
134
  end
135
135
 
136
136
  def contents_to_searchable_resource_attributes(fields, locale)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: decidim-core
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.31.2
4
+ version: 0.31.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Josep Jaume Rey Peroy
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2026-02-26 00:00:00.000000000 Z
13
+ date: 2026-04-24 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: concurrent-ruby
@@ -828,28 +828,28 @@ dependencies:
828
828
  requirements:
829
829
  - - '='
830
830
  - !ruby/object:Gem::Version
831
- version: 0.31.2
831
+ version: 0.31.4
832
832
  type: :development
833
833
  prerelease: false
834
834
  version_requirements: !ruby/object:Gem::Requirement
835
835
  requirements:
836
836
  - - '='
837
837
  - !ruby/object:Gem::Version
838
- version: 0.31.2
838
+ version: 0.31.4
839
839
  - !ruby/object:Gem::Dependency
840
840
  name: decidim-dev
841
841
  requirement: !ruby/object:Gem::Requirement
842
842
  requirements:
843
843
  - - '='
844
844
  - !ruby/object:Gem::Version
845
- version: 0.31.2
845
+ version: 0.31.4
846
846
  type: :development
847
847
  prerelease: false
848
848
  version_requirements: !ruby/object:Gem::Requirement
849
849
  requirements:
850
850
  - - '='
851
851
  - !ruby/object:Gem::Version
852
- version: 0.31.2
852
+ version: 0.31.4
853
853
  description: Adds core features so other engines can hook into the framework.
854
854
  email:
855
855
  - josepjaume@gmail.com
@@ -1368,6 +1368,7 @@ files:
1368
1368
  - app/helpers/decidim/layout_helper.rb
1369
1369
  - app/helpers/decidim/likeable_helper.rb
1370
1370
  - app/helpers/decidim/localized_locales_helper.rb
1371
+ - app/helpers/decidim/mailer_helper.rb
1371
1372
  - app/helpers/decidim/map_helper.rb
1372
1373
  - app/helpers/decidim/markup_helper.rb
1373
1374
  - app/helpers/decidim/menu_helper.rb
@@ -1570,12 +1571,15 @@ files:
1570
1571
  - app/packs/images/decidim/vendor/social-share-button/x.svg
1571
1572
  - app/packs/images/decidim/vendor/social-share-button/xing.svg
1572
1573
  - app/packs/src/decidim/a11y.js
1574
+ - app/packs/src/decidim/a11y.test.js
1573
1575
  - app/packs/src/decidim/append_redirect_url_to_modals.js
1574
1576
  - app/packs/src/decidim/attachments/file_or_link_tabs.js
1575
1577
  - app/packs/src/decidim/attachments/index.js
1576
1578
  - app/packs/src/decidim/callout.js
1577
1579
  - app/packs/src/decidim/confirm.js
1580
+ - app/packs/src/decidim/confirm.test.js
1578
1581
  - app/packs/src/decidim/controllers/.keep
1582
+ - app/packs/src/decidim/controllers/accordion/accordion.test.js
1579
1583
  - app/packs/src/decidim/controllers/accordion/controller.js
1580
1584
  - app/packs/src/decidim/controllers/account_form/account_form.test.js
1581
1585
  - app/packs/src/decidim/controllers/account_form/controller.js
@@ -1586,6 +1590,7 @@ files:
1586
1590
  - app/packs/src/decidim/controllers/delete_account_form/controller.js
1587
1591
  - app/packs/src/decidim/controllers/delete_account_form/delete_account_form.test.js
1588
1592
  - app/packs/src/decidim/controllers/dropdown/controller.js
1593
+ - app/packs/src/decidim/controllers/dropdown/dropdown.test.js
1589
1594
  - app/packs/src/decidim/controllers/editor/controller.js
1590
1595
  - app/packs/src/decidim/controllers/emoji/controller.js
1591
1596
  - app/packs/src/decidim/controllers/emoji/emoji.js
@@ -1632,6 +1637,7 @@ files:
1632
1637
  - app/packs/src/decidim/datepicker/generate_datepicker.js
1633
1638
  - app/packs/src/decidim/datepicker/generate_timepicker.js
1634
1639
  - app/packs/src/decidim/datepicker/test/date.test.js
1640
+ - app/packs/src/decidim/datepicker/test/datepicker_functions_adjust_picker_position.test.js
1635
1641
  - app/packs/src/decidim/datepicker/test/time.test.js
1636
1642
  - app/packs/src/decidim/decidim_application.js
1637
1643
  - app/packs/src/decidim/direct_uploads/upload_field.js
@@ -1667,6 +1673,7 @@ files:
1667
1673
  - app/packs/src/decidim/editor/test/extensions/emoji.test.js
1668
1674
  - app/packs/src/decidim/editor/test/extensions/heading.test.js
1669
1675
  - app/packs/src/decidim/editor/test/extensions/image.test.js
1676
+ - app/packs/src/decidim/editor/test/extensions/image_links.test.js
1670
1677
  - app/packs/src/decidim/editor/test/extensions/indent.test.js
1671
1678
  - app/packs/src/decidim/editor/test/extensions/link.test.js
1672
1679
  - app/packs/src/decidim/editor/test/extensions/mention.test.js
@@ -2836,6 +2843,7 @@ files:
2836
2843
  - lib/decidim/core/test/shared_examples/paginated_resource_examples.rb
2837
2844
  - lib/decidim/core/test/shared_examples/participatory_space_dropdown_metadata_cell_examples.rb
2838
2845
  - lib/decidim/core/test/shared_examples/participatory_space_members_page_examples.rb
2846
+ - lib/decidim/core/test/shared_examples/participatory_space_members_shared_examples.rb
2839
2847
  - lib/decidim/core/test/shared_examples/participatory_space_search_examples.rb
2840
2848
  - lib/decidim/core/test/shared_examples/permissions.rb
2841
2849
  - lib/decidim/core/test/shared_examples/preview_with_share_token_examples.rb