From 4d06f5deb852b7d87e80e7bb26f94b4f5c9ae152 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Pierre-Andr=C3=A9=20Boissinot?=
 <pierreandre.boissinot@noesya.coop>
Date: Thu, 5 Dec 2024 11:41:07 +0100
Subject: [PATCH] adjust sso mapping fields to prevent select disabled (#2474)

* adjust sso mapping fields to prevent select disabled

* remove unused param

* also undisable when mounting app

* double negation
---
 .../server/universities/_sso_mapping.html.erb | 23 ++++++++++++++++++-
 1 file changed, 22 insertions(+), 1 deletion(-)

diff --git a/app/views/server/universities/_sso_mapping.html.erb b/app/views/server/universities/_sso_mapping.html.erb
index 1c51ceb03..620dcb858 100644
--- a/app/views/server/universities/_sso_mapping.html.erb
+++ b/app/views/server/universities/_sso_mapping.html.erb
@@ -63,7 +63,7 @@ end
       </div>
     </draggable>
 
-    <a v-on:click="fields.push({sso_key: 'key', internal_key: 'email', roles: {}})" class="btn btn-primary btn-sm">
+    <a v-on:click="addField" class="btn btn-primary btn-sm">
       <%= t('add_field') %>
     </a>
   </div>
@@ -84,6 +84,27 @@ end
         fields: <%= object.sso_mapping.blank? ? '[]' : object.sso_mapping.to_json.html_safe %>,
         keys: <%= mapping_keys.map { |key| [key, User.human_attribute_name(key)] }.to_h.to_json.html_safe %>
       }
+    },
+    methods: {
+      addField: function () {
+        this.fields.push({sso_key: 'key', internal_key: 'email', roles: {}});
+        this.enableSelects();      
+      },
+      enableSelects: function () {
+        // conditional.js messes with the new field added, so we have to force enable the select fields
+        var selectFields,
+            i;
+        setTimeout(function() {
+          selectFields = document.getElementById("app").getElementsByClassName("form-select");
+          for (i = 0; i < selectFields.length; i += 1) {
+              target = selectFields[i];
+              target.removeAttribute('disabled');
+          }
+        }, 100);
+      }
+    },
+    mounted() {
+      this.enableSelects();
     }
   });
 
-- 
GitLab