2021-12-14 11:18:25 +00:00
|
|
|
import React from 'react';
|
2021-10-21 16:23:11 +00:00
|
|
|
|
2022-09-12 03:48:46 +00:00
|
|
|
export const PasswordInput = ({
|
|
|
|
|
height,
|
|
|
|
|
validate,
|
|
|
|
|
properties,
|
|
|
|
|
styles,
|
|
|
|
|
exposedVariables,
|
|
|
|
|
setExposedVariable,
|
|
|
|
|
darkMode,
|
|
|
|
|
}) => {
|
2021-12-14 11:18:25 +00:00
|
|
|
const value = exposedVariables.value;
|
2022-01-29 01:36:08 +00:00
|
|
|
const { visibility, disabledState, borderRadius } = styles;
|
2021-12-14 11:18:25 +00:00
|
|
|
const placeholder = properties.placeholder;
|
2021-10-21 16:23:11 +00:00
|
|
|
|
2021-12-14 11:18:25 +00:00
|
|
|
const currentValidState = exposedVariables.isValid;
|
2021-10-21 16:23:11 +00:00
|
|
|
|
|
|
|
|
const validationData = validate(value);
|
|
|
|
|
|
|
|
|
|
const { isValid, validationError } = validationData;
|
|
|
|
|
|
|
|
|
|
if (currentValidState !== isValid) {
|
2021-12-14 11:18:25 +00:00
|
|
|
setExposedVariable('isValid', isValid);
|
2021-10-21 16:23:11 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return (
|
|
|
|
|
<div>
|
|
|
|
|
<input
|
2021-12-14 11:18:25 +00:00
|
|
|
disabled={disabledState}
|
2021-10-21 16:23:11 +00:00
|
|
|
onChange={(e) => {
|
2021-12-14 11:18:25 +00:00
|
|
|
setExposedVariable('value', e.target.value);
|
2021-10-21 16:23:11 +00:00
|
|
|
}}
|
|
|
|
|
type={'password'}
|
2022-09-12 03:48:46 +00:00
|
|
|
className={`form-control ${!isValid ? 'is-invalid' : ''} validation-without-icon ${
|
|
|
|
|
darkMode && 'dark-theme-placeholder'
|
|
|
|
|
}`}
|
2021-10-21 16:23:11 +00:00
|
|
|
placeholder={placeholder}
|
2021-12-14 11:18:25 +00:00
|
|
|
value={exposedVariables.value}
|
2022-01-29 01:36:08 +00:00
|
|
|
style={{ height, display: visibility ? '' : 'none', borderRadius: `${borderRadius}px` }}
|
2021-10-21 16:23:11 +00:00
|
|
|
/>
|
|
|
|
|
|
|
|
|
|
<div className="invalid-feedback">{validationError}</div>
|
|
|
|
|
</div>
|
|
|
|
|
);
|
|
|
|
|
};
|