PasswordInput
Usage
Use PasswordInput when you need to capture password from user.
Component provides option to toggle password visibility, if you do not want this feature, use TextInput component with type="password"
.
Controlled
Change visibility toggle icon
You can change visibility toggle icon with visibilityToggleIcon
prop.
Pass react component that accepts reveal
and size
props:
Controlled visibility toggle
Control visibility state with visible
and onVisibilityChange
props, for example, the props can be used to sync visibility state between two inputs:
Strength meter example
Password strength meter example with Progress and Popover components:
Focus behavior
You can control focus behavior with toggleTabIndex
.
If prop is 0
then toggle control will be focusable with tab key:
Invalid state and error
Disabled state
In disabled state button to toggle password visibility id not displayed:
With icon
Get input ref
Accessibility
Provide aria-label
in case you use component without label for screen reader support:
PasswordInput component props
Name | Type | Description |
---|---|---|
defaultVisible | boolean | Determines whether input content should be visible (uncontrolled) |
description | ReactNode | Input description, displayed after label |
descriptionProps | Record<string, any> | Props spread to description element |
disabled | boolean | Disabled input state |
error | ReactNode | Displays error message after input |
errorProps | Record<string, any> | Props spread to error element |
icon | ReactNode | Adds icon on the left side of input |
iconWidth | Width<string | number> | Width of icon section in px |
inputContainer | (children: ReactNode) => ReactNode | Input container component, defaults to React.Fragment |
inputWrapperOrder | ("input" | "label" | "error" | "description")[] | Controls order of the Input.Wrapper elements |
label | ReactNode | Input label, displayed before input |
labelProps | Record<string, any> | Props spread to label element |
onVisibilityChange | (visible: boolean) => void | Called when visibility changes |
radius | number | "xs" | "sm" | "md" | "lg" | "xl" | Input border-radius from theme or number to set border-radius in px |
required | boolean | Sets required on input element |
rightSection | ReactNode | Right section of input, similar to icon but on the right |
rightSectionProps | Record<string, any> | Props spread to rightSection div element |
rightSectionWidth | Width<string | number> | Width of right section, is used to calculate input padding-right |
size | "xs" | "sm" | "md" | "lg" | "xl" | Input size |
toggleTabIndex | 0 | -1 | Toggle button tabIndex, set to 0 to make button focusable with tab key |
type | HTMLInputTypeAttribute | Input element type |
variant | "unstyled" | "default" | "filled" | Defines input appearance, defaults to default in light color scheme and filled in dark |
visibilityToggleIcon | FC<{ reveal: boolean; size: number; }> | Provide your own visibility toggle icon |
visibilityToggleLabel | string | aria-label for visibility toggle button |
visible | boolean | Determines whether input content should be visible (controlled) |
withAsterisk | boolean | Determines whether required asterisk should be rendered, overrides required prop, does not add required attribute to the input |
wrapperProps | Record<string, any> | Props passed to root element (InputWrapper component) |
PasswordInput component Styles API
Name | Static selector | Description |
---|---|---|
wrapper | .mantine-PasswordInput-wrapper | Root Input element |
invalid | .mantine-PasswordInput-invalid | Invalid input modifier |
disabled | .mantine-PasswordInput-disabled | Invalid disabled modifier |
icon | .mantine-PasswordInput-icon | Input icon wrapper on the left side of the input, controlled by icon prop |
withIcon | .mantine-PasswordInput-withIcon | Input element styles when used with icon, controlled by icon prop |
input | .mantine-PasswordInput-input | Main input element |
rightSection | .mantine-PasswordInput-rightSection | Input right section, controlled by rightSection prop |
root | .mantine-PasswordInput-root | Root element |
label | .mantine-PasswordInput-label | Label element styles, defined by label prop |
error | .mantine-PasswordInput-error | Error element styles, defined by error prop |
description | .mantine-PasswordInput-description | Description element styles, defined by description prop |
required | .mantine-PasswordInput-required | Required asterisk element styles, defined by required prop |
visibilityToggle | .mantine-PasswordInput-visibilityToggle | Visibility toggle button |
innerInput | .mantine-PasswordInput-innerInput | Actual input element |