Password
비밀번호 입력 전용 단일 행 컴포넌트. 입력 값은 항상 마스킹되어 표시됩니다.
개요
Cals Password는 Foundation Input(type="password")을 래핑하여 CALS 제품의 비밀번호 입력 UI를 선언적으로 구현하는 컴포넌트입니다.
주요 특징
- ✅ controlled / uncontrolled: value/onChange 또는 defaultValue로 값 관리
- ✅ FormItem 내장: label/required/description/error prop으로 폼 라벨 자동 래핑
- ✅ 라벨 도움말: labelTooltip으로 라벨 옆 도움말 아이콘 표시
- ✅ 가시성/포커스 제어: visible prop, ref.focus()/blur()/element
- ✅ 디자인 토큰: 조건부 토큰 오버라이드 (prop이 있을 때만 적용)
기본 사용
placeholder로 입력 전 안내 문구를 표시합니다.
Preview
기본값 설정
defaultValue로 초기 기본값을 지정합니다.
Preview
크기
size prop으로 입력란 크기를 지정합니다. xs / sm / md / lg / xl을 지원합니다.
Preview
비활성화 / 읽기 전용
disabled, readOnly 모두 비활성화 외관으로 표시되며 편집할 수 없습니다.
Preview
라벨
label prop으로 라벨을 표시하고, required로 필수 표시 기호를 추가합니다.
Preview
라벨 위치
orientation=“horizontal”이면 라벨이 왼쪽에 배치됩니다.
Preview
라벨 도움말
labelTooltip 지정 시 라벨 옆 아이콘에 마우스를 올리면 도움말이 표시됩니다.
Preview
글자 수 제한
maxLength 초과 입력은 차단되고, minLength는 유효성 검사 기준으로 전달됩니다.
Preview
오류 상태
error prop으로 입력란 외곽을 강조하고 오류 메시지를 표시합니다.
Preview
비밀번호를 입력하세요
스타일 오버라이드
backgroundColor, color, borderColor 등으로 디자인 토큰을 오버라이드합니다.
Preview
Props
| Prop | Type | Default | 설명 |
|---|---|---|---|
value | string | - | 입력 값 (controlled) |
defaultValue | string | - | 초기 기본값 (uncontrolled) |
onChange | (value: string) => void | - | 값 변경 콜백 |
placeholder | string | - | 입력 전 안내 문구 |
showPlaceholder | boolean | true | 안내 문구 표시 여부 |
size | "xs" | "sm" | "md" | "lg" | "xl" | "md" | 입력란 크기 |
visible | boolean | true | 표시 여부 |
disabled | boolean | - | 비활성화 |
readOnly | boolean | - | 읽기 전용 (disabled로 바꾸지 않음, Tab 포커스 받음). 주지 않으면 감싸는 Form·ToolbarForm의 readOnly를 따른다 |
maxLength | number | - | 최대 글자 수 |
minLength | number | - | 최소 글자 수 |
label | ReactNode | - | 라벨. ""이면 정렬용 빈 자리만 두고 입력란에 잇지 않는다 (이름은 aria-label로 준다, labelTooltip 무시) |
required | boolean | - | 필수 입력. FormItem *와 aria-required만 켠다 (HTML required는 붙이지 않음) |
error | ReactNode | - | 오류 문구. 주면 오류 상태(aria-invalid)도 켠다 |
aria-invalid | boolean | - | 오류 상태. true면 문구 없이 상태만 켜고, false면 error가 있어도 상태와 문구를 끈다 |
labelTooltip | string | - | 라벨 도움말 (아이콘 hover 시 표시). label에 글자가 있을 때만 나온다 |
title | string | - | HTML title (native tooltip) |
backgroundColor | string | - | 배경색 토큰 오버라이드 |
color | string | - | 텍스트 색상 토큰 오버라이드 |
borderColor | string | - | 테두리 색상 토큰 오버라이드 |
borderWidth | string | - | 테두리 두께 |
fontSize | string | - | 폰트 크기 |
fontWeight | string | number | - | 폰트 굵기 |
fontFamily | string | - | 폰트 패밀리 |
fontStyle | string | - | 폰트 스타일 |
textAlign | string | - | 텍스트 정렬 |
className | string | - | FormItem 루트 className |
inputClassName | string | - | 입력란(input) className |
style | React.CSSProperties | - | 인라인 스타일 |
Ref
PasswordRef 인터페이스:
interface PasswordRef {
focus: () => void
blur: () => void
element: HTMLInputElement | null
}Last updated on