mirror of
				https://gitlab.nic.cz/turris/reforis/foris-js.git
				synced 2025-11-03 23:00:31 +01:00 
			
		
		
		
	Display input's error feedback only after focus
This commit is contained in:
		@@ -1,11 +1,11 @@
 | 
				
			|||||||
/*
 | 
					/*
 | 
				
			||||||
 * Copyright (C) 2019 CZ.NIC z.s.p.o. (http://www.nic.cz/)
 | 
					 * Copyright (C) 2019-2021 CZ.NIC z.s.p.o. (http://www.nic.cz/)
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * This is free software, licensed under the GNU General Public License v3.
 | 
					 * This is free software, licensed under the GNU General Public License v3.
 | 
				
			||||||
 * See /LICENSE for more information.
 | 
					 * See /LICENSE for more information.
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import React from "react";
 | 
					import React, { useState } from "react";
 | 
				
			||||||
import { useUID } from "react-uid";
 | 
					import { useUID } from "react-uid";
 | 
				
			||||||
import PropTypes from "prop-types";
 | 
					import PropTypes from "prop-types";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -36,8 +36,10 @@ export function Input({
 | 
				
			|||||||
    ...props
 | 
					    ...props
 | 
				
			||||||
}) {
 | 
					}) {
 | 
				
			||||||
    const uid = useUID();
 | 
					    const uid = useUID();
 | 
				
			||||||
 | 
					    const [initialErrorFeedbackState, setErrorFeedbackState] = useState(false);
 | 
				
			||||||
 | 
					    const errorFeedbackIsVisible = !!(initialErrorFeedbackState && error);
 | 
				
			||||||
    const inputClassName = `form-control ${className || ""} ${
 | 
					    const inputClassName = `form-control ${className || ""} ${
 | 
				
			||||||
        error ? "is-invalid" : ""
 | 
					        errorFeedbackIsVisible ? "is-invalid" : ""
 | 
				
			||||||
    }`.trim();
 | 
					    }`.trim();
 | 
				
			||||||
    return (
 | 
					    return (
 | 
				
			||||||
        <div className="form-group">
 | 
					        <div className="form-group">
 | 
				
			||||||
@@ -49,14 +51,17 @@ export function Input({
 | 
				
			|||||||
                    className={inputClassName}
 | 
					                    className={inputClassName}
 | 
				
			||||||
                    type={type}
 | 
					                    type={type}
 | 
				
			||||||
                    id={uid}
 | 
					                    id={uid}
 | 
				
			||||||
 | 
					                    onFocus={() => setErrorFeedbackState(true)}
 | 
				
			||||||
                    {...props}
 | 
					                    {...props}
 | 
				
			||||||
                />
 | 
					                />
 | 
				
			||||||
                {children}
 | 
					                {children}
 | 
				
			||||||
            </div>
 | 
					            </div>
 | 
				
			||||||
            {error ? <div className="invalid-feedback">{error}</div> : null}
 | 
					            {errorFeedbackIsVisible && (
 | 
				
			||||||
            {helpText ? (
 | 
					                <div className="invalid-feedback">{error}</div>
 | 
				
			||||||
 | 
					            )}
 | 
				
			||||||
 | 
					            {helpText && (
 | 
				
			||||||
                <small className="form-text text-muted">{helpText}</small>
 | 
					                <small className="form-text text-muted">{helpText}</small>
 | 
				
			||||||
            ) : null}
 | 
					            )}
 | 
				
			||||||
        </div>
 | 
					        </div>
 | 
				
			||||||
    );
 | 
					    );
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user