decidim-forms 0.29.4 → 0.29.5

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a14b16d19fcc94b2efb57354638870b2ddf616b5e2ca9d00a8fc98a785a2ffd8
4
- data.tar.gz: 8c0727b7df66bba9d36cd805a0989275bc862b97648d3ad6b6af18be70080474
3
+ metadata.gz: 202c3358cbfb1e02e80c1f616a7e153c9e111e614038189f5f957abaff46fdcc
4
+ data.tar.gz: 408fc4f21eedc9917f9a53c1ce4441fd2c50ece4a4282ee6795f9e5280c6fb78
5
5
  SHA512:
6
- metadata.gz: e4faae5d6735abf2eb7bcd00502490cbf416b8105d3154e44b7dd4b4473918295353b873e755ae492ebb2a7d46aff5b3a04743f1fb4f731b4e4955ba6e6b5d19
7
- data.tar.gz: 60165760b527d12dab0ae631f9594bcf123d8e164e1d38cb2060cc26e3ae2a68ae8de385b5cc9a9752f241dc78b25134f1fb3ae85ed9dcbc2231e0cb2a3839c0
6
+ metadata.gz: ec3e4a3d75dd117f6bd4837e5ee12e8a3fe73406c64e13e8911aafc5312e51118ccfbce4b690cdf551ef0e0f9add6b60ebbe4ce1a973c36619c07e31c04b5886
7
+ data.tar.gz: 43d4d6b33a4246edf67731e2799c177e2a0165fb9adaf55e65e0eb83310819f553fd64a47f4fd7d41f241bea226d89aafbfef51a314a5e7581ee4a984e2cb156
@@ -11,6 +11,7 @@ import "dragula/dist/dragula.css";
11
11
  import createOptionAttachedInputs from "src/decidim/forms/option_attached_inputs.component"
12
12
  import createDisplayConditions from "src/decidim/forms/display_conditions.component"
13
13
  import createMaxChoicesAlertComponent from "src/decidim/forms/max_choices_alert.component"
14
+ import { preventUnload } from "src/decidim/utilities/dom"
14
15
 
15
16
  $(() => {
16
17
  $(".js-radio-button-collection, .js-check-box-collection").each((idx, el) => {
@@ -45,30 +46,33 @@ $(() => {
45
46
  });
46
47
  });
47
48
 
48
- const $form = $("form.answer-questionnaire");
49
- if ($form.length > 0) {
50
- $form.find("input, textarea, select").on("change", () => {
51
- $form.data("changed", true);
49
+ const form = document.querySelector("form.answer-questionnaire");
50
+ if (form) {
51
+ const safePath = form.dataset.safePath.split("?")[0];
52
+ let exitUrl = "";
53
+ document.addEventListener("click", (event) => {
54
+ const link = event.target?.closest("a");
55
+ if (link) {
56
+ exitUrl = link.href;
57
+ }
52
58
  });
53
59
 
54
- const safePath = $form.data("safe-path").split("?")[0];
55
- $(document).on("click", "a", (event) => {
56
- window.exitUrl = event.currentTarget.href;
57
- });
60
+ // The submit listener has to be registered through jQuery because the
61
+ // custom confirm dialog does not dispatch the "submit" event normally.
58
62
  $(document).on("submit", "form", (event) => {
59
- window.exitUrl = event.currentTarget.action;
63
+ exitUrl = event.currentTarget.action;
60
64
  });
61
65
 
62
- window.addEventListener("beforeunload", (event) => {
63
- const exitUrl = window.exitUrl;
64
- const hasChanged = $form.data("changed");
65
- window.exitUrl = null;
66
+ let hasChanged = false;
67
+ const controls = form.querySelectorAll("input, textarea, select");
68
+ const changeListener = () => {
69
+ if (!hasChanged) {
70
+ hasChanged = true;
71
+ controls.forEach((control) => control.removeEventListener("change", changeListener));
66
72
 
67
- if (!hasChanged || (exitUrl && exitUrl.includes(safePath))) {
68
- return;
73
+ preventUnload(() => !exitUrl.includes(safePath));
69
74
  }
70
-
71
- event.returnValue = true;
72
- });
75
+ };
76
+ controls.forEach((control) => control.addEventListener("change", changeListener));
73
77
  }
74
78
  })
@@ -50,7 +50,7 @@
50
50
  <small class="form-error max-choices-alert"><%= t(".max_choices_alert") %></small>
51
51
  <% end %>
52
52
 
53
- <% answer.errors.full_messages.each do |msg| %>
53
+ <% %w(short_answer long_answer).exclude?(answer&.question&.question_type) && answer.errors.full_messages.each do |msg| %>
54
54
  <small class="form-error is-visible"><%= msg %></small>
55
55
  <% end %>
56
56
 
@@ -1,3 +1,3 @@
1
1
  <div>
2
- <%= answer_form.text_area :body, label: false, id: field_id, rows: 10, disabled:, maxlength:, class: "w-full" %>
2
+ <%= answer_form.text_area :body, label: false, id: field_id, rows: 10, disabled:, maxlength:, class: "w-full", required: false %>
3
3
  </div>
@@ -1,3 +1,3 @@
1
1
  <div>
2
- <%= answer_form.text_field :body, label: false, id: field_id, disabled:, maxlength:, class: "w-full" %>
2
+ <%= answer_form.text_field :body, label: false, id: field_id, disabled:, maxlength:, class: "w-full", required: false %>
3
3
  </div>
@@ -78,7 +78,7 @@ eu:
78
78
  select_condition_type: Hautatu baldintza mota bat
79
79
  edit:
80
80
  save: Gorde
81
- title: Editatu galdetegia
81
+ title: Galdetegia editau
82
82
  form:
83
83
  add_question: Gehitu galdera
84
84
  add_separator: Gehitu banatzailea
@@ -177,10 +177,10 @@ sv:
177
177
  title: JavaScript är inaktiverat
178
178
  questionnaire_not_published:
179
179
  body: Formulär är ännu inte publicerat.
180
- tos_agreement: Genom att fortsätta godkänner du användarvillkoren
180
+ tos_agreement: Genom att fortsätta godkänner du villkoren för anmälan
181
181
  step_navigation:
182
182
  show:
183
- are_you_sure: Den här åtgärden kan inte ångras och du kommer inte att kunna redigera dina svar. Vill du fortsätta?
183
+ are_you_sure: Efter att du har skickat in anmälan kan du inte ändra i den. Vill du fortsätta?
184
184
  back: Tillbaka
185
185
  continue: Fortsätt
186
186
  submit: Skicka
@@ -271,8 +271,9 @@ shared_examples_for "has questionnaire" do
271
271
  accept_confirm { click_on "Submit" }
272
272
  end
273
273
 
274
- it "shows errors without submitting the form" do
275
- expect(page).to have_no_css ".alert.flash"
274
+ it "submits the form and shows errors" do
275
+ expect(page).to have_css ".alert.flash"
276
+ expect(page).to have_admin_callout(callout_failure)
276
277
  different_error = I18n.t("decidim.forms.questionnaires.answer.max_choices_alert")
277
278
  expect(different_error).to eq("There are too many choices selected")
278
279
  expect(page).to have_no_content(different_error)
@@ -4,7 +4,7 @@ module Decidim
4
4
  # This holds the decidim-forms version.
5
5
  module Forms
6
6
  def self.version
7
- "0.29.4"
7
+ "0.29.5"
8
8
  end
9
9
  end
10
10
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: decidim-forms
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.29.4
4
+ version: 0.29.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Josep Jaume Rey Peroy
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2025-06-04 00:00:00.000000000 Z
14
+ date: 2025-09-23 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: decidim-core
@@ -19,14 +19,14 @@ dependencies:
19
19
  requirements:
20
20
  - - '='
21
21
  - !ruby/object:Gem::Version
22
- version: 0.29.4
22
+ version: 0.29.5
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
26
26
  requirements:
27
27
  - - '='
28
28
  - !ruby/object:Gem::Version
29
- version: 0.29.4
29
+ version: 0.29.5
30
30
  - !ruby/object:Gem::Dependency
31
31
  name: wicked_pdf
32
32
  requirement: !ruby/object:Gem::Requirement
@@ -47,28 +47,28 @@ dependencies:
47
47
  requirements:
48
48
  - - '='
49
49
  - !ruby/object:Gem::Version
50
- version: 0.29.4
50
+ version: 0.29.5
51
51
  type: :development
52
52
  prerelease: false
53
53
  version_requirements: !ruby/object:Gem::Requirement
54
54
  requirements:
55
55
  - - '='
56
56
  - !ruby/object:Gem::Version
57
- version: 0.29.4
57
+ version: 0.29.5
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: decidim-dev
60
60
  requirement: !ruby/object:Gem::Requirement
61
61
  requirements:
62
62
  - - '='
63
63
  - !ruby/object:Gem::Version
64
- version: 0.29.4
64
+ version: 0.29.5
65
65
  type: :development
66
66
  prerelease: false
67
67
  version_requirements: !ruby/object:Gem::Requirement
68
68
  requirements:
69
69
  - - '='
70
70
  - !ruby/object:Gem::Version
71
- version: 0.29.4
71
+ version: 0.29.5
72
72
  description: A forms gem for decidim.
73
73
  email:
74
74
  - josepjaume@gmail.com