assets_js_controllers_member-verify-form-controller.js

import { Controller } from "@hotwired/stimulus"

/**
 * MemberVerifyForm Stimulus Controller
 * 
 * Manages member verification form with conditional field management and
 * dependent form controls. Provides dynamic field enabling/disabling based
 * on checkbox selections for parent/guardian and membership information.
 * 
 * Features:
 * - Conditional field management based on checkbox states
 * - Parent/guardian information toggle
 * - Membership information toggle
 * - Dynamic form field enabling/disabling
 * - Form workflow support for verification processes
 * 
 * Targets:
 * - scaMember: SCA member information field
 * - membershipNumber: Membership number input field
 * - membershipExpDate: Membership expiration date field
 * 
 * Usage:
 * <form data-controller="member-verify-form">
 *   <input type="checkbox" data-action="change->member-verify-form#toggleParent">
 *   <input data-member-verify-form-target="scaMember" disabled>
 *   
 *   <input type="checkbox" data-action="change->member-verify-form#toggleMembership">
 *   <input data-member-verify-form-target="membershipNumber" disabled>
 *   <input data-member-verify-form-target="membershipExpDate" disabled>
 * </form>
 */
class MemberVerifyForm extends Controller {
    static targets = ['scaMember',
        'membershipNumber',
        'membershipExpDate',
    ]

    /**
     * Toggle parent/guardian information field
     * Enables or disables SCA member field based on checkbox state
     * 
     * @param {Event} event - Change event from parent checkbox
     */
    toggleParent(event) {
        var checked = event.target.checked;
        this.scaMemberTarget.disabled = !checked;
    }

    /**
     * Toggle membership information fields
     * Enables or disables membership-related fields based on checkbox state
     * 
     * @param {Event} event - Change event from membership checkbox
     */
    toggleMembership(event) {
        var checked = event.target.checked;
        this.membershipNumberTarget.disabled = !checked;
        this.membershipExpDateTarget.disabled = !checked;
    }

}
if (!window.Controllers) {
    window.Controllers = {}
}
window.Controllers["member-verify-form"] = MemberVerifyForm;