fe 2.3.0 → 2.3.2

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: 2df70f2e238d80ce9d525bf69ea03ff2a1a1cfb48d9e3d2e9cffeae839ab6225
4
- data.tar.gz: d52dad7dc024091e1846682bdd7a6363fed083891bf8749ca2756a66aa02b15a
3
+ metadata.gz: 63c54a49ce10c97d77e21066af68ae2e4d138f57e1d78789a0b304f2ea26d771
4
+ data.tar.gz: 860211697773fc5643d50e85617065cd49697725ac2479fb644d321eac620c91
5
5
  SHA512:
6
- metadata.gz: dd4264bdaf1abcfb009a0110f9abbeed89a018c1230239a2f1d79df0e2e1f1dcbac1141d9fa2f5fde22f698c1472189b393f1baa67ffe6ab5ea8a38188d8cb8a
7
- data.tar.gz: 9900e68c76bb634d8d5b4b8035ec904e9021fa6d1ef81d8c09da0b8f1000408081d93d4799966bdc474f1e2a74750f4b4626c1bd0f72e9fc5d1a56f1951bf0c0
6
+ metadata.gz: 20f8c1697604eb9bdf58be607a9c81e86ee4dd0ca9e12e740113c173cbe1402a6371dfa9861ef6861c46b1d9fc6e9ae9f48c069dea829a130ac92d4e32f0e685
7
+ data.tar.gz: 498cec05620ede4dbee334badd0c2e3810c7d3719816a8a3b7c986238badc9deba878ae0a75ef0a84385330bd17a0a40a2c5cae404e5b32e6a0d688ccaf30591
@@ -59,6 +59,7 @@ window.setUpSortables = function setUpSortables() {
59
59
  }
60
60
 
61
61
  window.setUpCalendars = function setUpCalendars() {
62
+ if (!$.fn.datepicker) { return; }
62
63
  let now = new Date();
63
64
  let year = now.getFullYear() + 10;
64
65
  $('[data-calendar]').datepicker({
@@ -68,6 +69,14 @@ window.setUpCalendars = function setUpCalendars() {
68
69
  })
69
70
  }
70
71
 
72
+ // A Turbo snapshot must not carry initialized pickers: jQuery UI refuses to re-init an input
73
+ // marked hasDatepicker, and skips appending its popup when a stale #ui-datepicker-div exists.
74
+ document.addEventListener('turbo:before-cache', function() {
75
+ if (!$.fn.datepicker) { return; }
76
+ $('[data-calendar].hasDatepicker').datepicker('destroy');
77
+ $('#ui-datepicker-div').detach();
78
+ });
79
+
71
80
  window.setUpJsHelpers = function setUpJsHelpers() {
72
81
  // ==================
73
82
  // Sortable
@@ -583,6 +583,12 @@ $(document).on('ready turbo:load', function () {
583
583
  });
584
584
  <% end %>
585
585
 
586
+ // Keep in step with Fe::ReferenceSheet#email=, which strips the value on the server.
587
+ let validateEmail = $.validator.methods.email;
588
+ $.validator.methods.email = function(value, element, param) {
589
+ return validateEmail.call(this, $.trim(value), element, param);
590
+ };
591
+
586
592
  $(document).on('click', '.save_button', function() {
587
593
  fe.debugLog('[fe concurrency] Save button clicked');
588
594
  fe.pageHandler.savePage($(this).closest('.answer-page'), true);
@@ -646,6 +652,11 @@ $(function() {
646
652
  setUpCalendars();
647
653
  });
648
654
 
655
+ document.addEventListener('turbo:load', function() {
656
+ fixGridColumnWidths();
657
+ setUpCalendars();
658
+ });
659
+
649
660
 
650
661
  window.updateTotal = function updateTotal(id) {
651
662
  try {
@@ -114,6 +114,10 @@ module Fe
114
114
 
115
115
  def email_sent?() !self.email_sent_at.nil? end
116
116
 
117
+ def email=(value)
118
+ super(value.is_a?(String) ? value.gsub(/\A[[:space:]]+|[[:space:]]+\z/, '') : value)
119
+ end
120
+
117
121
  # send email invite
118
122
  def send_invite(host)
119
123
  return if self.email.blank?
data/lib/fe/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Fe
2
- VERSION = "2.3.0"
2
+ VERSION = "2.3.2"
3
3
  end
@@ -76,6 +76,19 @@ describe Fe::AnswerPagesController, type: :controller do
76
76
  expect(reference_sheet.reload.email).to eq('email@reference.com')
77
77
  end
78
78
 
79
+ it 'strips whitespace around the reference email' do
80
+ reference_sheet = create(:reference_sheet, applicant_answer_sheet_id: answer_sheet.id, email: 'initial@ref.com')
81
+
82
+ put :update, params: {
83
+ answers: { "#{element.id}" => 'answer here' },
84
+ reference: { "#{reference_sheet.id}" => { email: ' email@reference.com ' } },
85
+ id: page.id,
86
+ answer_sheet_id: answer_sheet.id
87
+ }, xhr: true
88
+
89
+ expect(reference_sheet.reload.email).to eq('email@reference.com')
90
+ end
91
+
79
92
  it 'should store a reference sheet answer' do
80
93
  # create a normal applicant sheet to make sure the answer isn't saved to that
81
94
  # ref