PasswordInput
규칙 상시 표시, 보기·숨기기, 붙여넣기 허용.
- 출시 화면에서 사용
개요
미리보기
- At least 12 characters · 0 now
예시
상태
비어 있음
- At least 12 characters · 0 now
도움말
12자 이상- At least 12 characters · 0 now
오류
12자 이상 입력해 주세요. 지금 5자예요.- At least 12 characters · 0 now
필수
- At least 12 characters · 0 now
비활성
- At least 12 characters · 0 now
글자 보임
- At least 12 characters · 0 now
로그인
읽기 전용
- At least 12 characters · 0 now
쓰임 예
규칙 숨김
이렇게 · 이렇게 하지 않기
- 이렇게 규칙(12자 이상)은 입력 아래에 항상 보이고 강도 미터는 쓰지 않는다. 비밀번호 관리자의 붙여넣기와 자동 완성을 막지 않는다. 보기 토글은 IconButton이고 상태를 aria-pressed로 알린다.
- 이렇게 라벨은 항상 보이게 둔다. placeholder는 예시일 뿐 라벨이 아니다.
- 이렇게 규칙은 처음부터 보이게 둔다. 실패한 뒤에야 알려 주지 않는다.
- 이렇게 하지 않기 강도 미터를 두지 않는다. 붙여넣기와 비밀번호 관리자를 막지 않는다.
- 이렇게 하지 않기 토글할 때 이름을 “숨기기”로 바꾸지 않는다.
토큰과 속성
| 이름 | 타입 | 기본값 | 설명 |
|---|---|---|---|
label | ReactNode | 비밀번호 | 항상 보이는 라벨(<label for> 또는 <legend>). placeholder로 대신하지 않는다. |
hint? | ReactNode | | 상시 도움말. FieldMessage로 그리고 aria-describedby의 첫 번째로 연결한다. 비우면 없음. |
error? | ReactNode | | 오류 문장. 있으면 aria-invalid="true". 오류 노드는 항상 마운트되어 있고 내용만 바뀐다. |
required? | boolean | false | required 속성과 함께 라벨 옆에 “필수” 텍스트를 보인다(별표만 쓰지 않음). |
disabled? | boolean | false | Tab에서 빠지고 제출되지 않는다. 값을 보여 줘야 하면 readOnly를 쓴다. |
readOnly? | boolean | false | 초점을 받고 복사할 수 있지만 바꿀 수 없다. |
mode? | 'new' | 'current' | new | new = 가입(autocomplete="new-password", 규칙 표시), current = 로그인(current-password). |
defaultShown? | boolean | false | 처음에 글자를 보이게 할지. 토글 이름은 “비밀번호 보기”로 고정, aria-pressed만 바뀐다. |
showRules? | boolean | true | 규칙 목록을 상시 표시(new에서만). 규칙마다 텍스트 “충족/미충족”과 아이콘. |
minLength? | number | — | 기본 규칙의 최소 길이. 기본 12(카피 덱·가입 정책). |
rules?: readonly { id, label: (value) => ReactNode, test: (value) => boolean }[] | — | — | 규칙을 바꾼다. 기본은 “N자 이상 · 지금 n자” 하나. |
ref | — | — | ref는 <input>으로 전달된다. |
| 그 밖의 속성 | — | — | name, value, defaultValue, onChange, onBlur, autoComplete, aria-* 등 네이티브 속성은 입력 요소로 전달된다. id를 주면 라벨 연결에 그 id를 쓴다. className·style은 받지 않는다. |
접근성
키보드: Tab 순서: 입력 → 보기 토글. 토글을 눌러도 초점은 토글에 남고 커서 위치는 유지된다.
- 입력의 aria-describedby = 도움말 → 규칙 목록 → 오류.
- 규칙 충족은 입력할 때마다 알리지 않는다. 각 항목의 텍스트로 읽힌다.
- aria-describedby 순서는 도움말 → 오류. 오류가 있으면 aria-invalid="true".
- 오류는 alert로 알리지 않는다. 제출 실패 시 FormLayout이 첫 오류 필드로 초점을 옮긴다.
- 붙여넣기를 막지 않는다. 라벨 포함 행이 44px 이상이다.