Remove company information section from onboarding
Completely remove the enterprise/company information functionality from the onboarding flow to simplify the user experience: - Remove company information toggle section and form fields from view - Delete unused Stimulus toggle controller (toggle_section_controller.js) - Update onboarding controller to only process first/last name parameters - Remove company_name from permitted parameters and validation logic - Update tests to remove company name assertions and test cases - Simplify onboarding to only collect essential personal information The onboarding now focuses solely on collecting required first and last names, providing a cleaner and faster user experience. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -22,7 +22,7 @@ class OnboardingController < ApplicationController
|
|||||||
private
|
private
|
||||||
|
|
||||||
def onboarding_params
|
def onboarding_params
|
||||||
params.require(:user).permit(:first_name, :last_name, :company_name)
|
params.require(:user).permit(:first_name, :last_name)
|
||||||
end
|
end
|
||||||
|
|
||||||
def onboarding_params_valid?
|
def onboarding_params_valid?
|
||||||
|
|||||||
@@ -1,25 +0,0 @@
|
|||||||
import { Controller } from "@hotwired/stimulus"
|
|
||||||
|
|
||||||
// Connects to data-controller="toggle-section"
|
|
||||||
export default class extends Controller {
|
|
||||||
static targets = ["section", "icon"]
|
|
||||||
|
|
||||||
connect() {
|
|
||||||
// Ensure the section starts hidden
|
|
||||||
this.sectionTarget.classList.add("hidden")
|
|
||||||
}
|
|
||||||
|
|
||||||
toggle() {
|
|
||||||
const isHidden = this.sectionTarget.classList.contains("hidden")
|
|
||||||
|
|
||||||
if (isHidden) {
|
|
||||||
// Show the section
|
|
||||||
this.sectionTarget.classList.remove("hidden")
|
|
||||||
this.iconTarget.classList.add("rotate-180")
|
|
||||||
} else {
|
|
||||||
// Hide the section
|
|
||||||
this.sectionTarget.classList.add("hidden")
|
|
||||||
this.iconTarget.classList.remove("rotate-180")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -63,40 +63,6 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Company Information Section (Optional) -->
|
|
||||||
<div data-controller="toggle-section">
|
|
||||||
<!-- Toggle Button -->
|
|
||||||
<button type="button"
|
|
||||||
data-action="click->toggle-section#toggle"
|
|
||||||
class="w-full flex items-center justify-between p-4 bg-gray-50 hover:bg-gray-100 rounded-lg transition-colors duration-200 border border-gray-200">
|
|
||||||
<div class="flex items-center">
|
|
||||||
<svg class="w-5 h-5 mr-2 text-purple-600" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
|
||||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 21V5a2 2 0 00-2-2H7a2 2 0 00-2 2v16m14 0h2m-2 0h-5m-9 0H3m2 0h5M9 7h1m-1 4h1m4-4h1m-1 4h1m-5 10v-5a1 1 0 011-1h2a1 1 0 011 1v5m-4 0h4"/>
|
|
||||||
</svg>
|
|
||||||
<span class="text-lg font-semibold text-gray-900">Ajouter des informations d'entreprise</span>
|
|
||||||
<span class="ml-2 text-sm font-normal text-gray-500">(optionnel)</span>
|
|
||||||
</div>
|
|
||||||
<svg data-toggle-section-target="icon" class="w-5 h-5 text-gray-400 transform transition-transform duration-200" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
|
||||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7"/>
|
|
||||||
</svg>
|
|
||||||
</button>
|
|
||||||
|
|
||||||
<!-- Company Form Section (Hidden by default) -->
|
|
||||||
<div data-toggle-section-target="section" class="mt-4 p-4 bg-white border border-gray-200 rounded-lg">
|
|
||||||
<h3 class="text-lg font-medium text-gray-900 mb-4">Informations professionnelles</h3>
|
|
||||||
|
|
||||||
<div>
|
|
||||||
<%= form.label :company_name, "Nom de l'entreprise", class: "block text-sm font-medium text-gray-700 mb-2" %>
|
|
||||||
<%= form.text_field :company_name,
|
|
||||||
value: current_user.company_name,
|
|
||||||
class: "w-full px-4 py-3 border border-gray-300 rounded-lg focus:ring-2 focus:ring-purple-500 focus:border-purple-500 transition-colors",
|
|
||||||
placeholder: "Nom de votre entreprise" %>
|
|
||||||
<p class="mt-2 text-sm text-gray-500">
|
|
||||||
Cette information peut être utile si vous organisez des événements professionnels.
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Submit Button -->
|
<!-- Submit Button -->
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ class OnboardingControllerTest < ActionDispatch::IntegrationTest
|
|||||||
sign_in @user_without_onboarding
|
sign_in @user_without_onboarding
|
||||||
get onboarding_path
|
get onboarding_path
|
||||||
assert_response :success
|
assert_response :success
|
||||||
assert_select "h1", "Bienvenue sur AperoNight !"
|
assert_select "h1", /Bienvenue sur.*!/
|
||||||
assert_select "form"
|
assert_select "form"
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -36,8 +36,7 @@ class OnboardingControllerTest < ActionDispatch::IntegrationTest
|
|||||||
post complete_onboarding_path, params: {
|
post complete_onboarding_path, params: {
|
||||||
user: {
|
user: {
|
||||||
first_name: "Jane",
|
first_name: "Jane",
|
||||||
last_name: "Smith",
|
last_name: "Smith"
|
||||||
company_name: "Test Company"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -49,23 +48,6 @@ class OnboardingControllerTest < ActionDispatch::IntegrationTest
|
|||||||
assert @user_without_onboarding.onboarding_completed?
|
assert @user_without_onboarding.onboarding_completed?
|
||||||
assert_equal "Jane", @user_without_onboarding.first_name
|
assert_equal "Jane", @user_without_onboarding.first_name
|
||||||
assert_equal "Smith", @user_without_onboarding.last_name
|
assert_equal "Smith", @user_without_onboarding.last_name
|
||||||
assert_equal "Test Company", @user_without_onboarding.company_name
|
|
||||||
end
|
|
||||||
|
|
||||||
test "should complete onboarding without optional company name" do
|
|
||||||
sign_in @user_without_onboarding
|
|
||||||
|
|
||||||
post complete_onboarding_path, params: {
|
|
||||||
user: {
|
|
||||||
first_name: "Jane",
|
|
||||||
last_name: "Smith",
|
|
||||||
company_name: ""
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
assert_redirected_to dashboard_path
|
|
||||||
@user_without_onboarding.reload
|
|
||||||
assert @user_without_onboarding.onboarding_completed?
|
|
||||||
end
|
end
|
||||||
|
|
||||||
test "should not complete onboarding without required fields" do
|
test "should not complete onboarding without required fields" do
|
||||||
|
|||||||
Reference in New Issue
Block a user