Skip to Content

Textarea

라벨, 높이 설정, 줄바꿈 정규화 등을 내장한 여러 줄 텍스트 입력 컴포넌트


개요

Cals Textarea는 Foundation Textarea를 래핑하여 CALS 제품의 여러 줄 텍스트 입력 UI를 선언적으로 구현하는 컴포넌트입니다. 폼 레이블, 높이 설정, 읽기 전용 등 CALS에서 자주 쓰이는 입력 처리를 prop으로 제공합니다.

주요 특징

  • controlled / uncontrolled: value/onChange 또는 defaultValue로 값 관리
  • 높이 설정: rows로 입력란의 세로 높이를 행 단위로 지정
  • 줄바꿈 정규화: lineBreakNormalize로 리터럴 줄바꿈 문자열을 실제 줄바꿈으로 변환
  • FormItem 내장: label/required/description/error prop으로 폼 레이블 자동 래핑
  • 라벨 도움말: labelTooltip으로 레이블 옆 도움말 아이콘 표시
  • 가시성/포커스 제어: visible prop, ref.focus()/blur()/element
  • 디자인 토큰: 조건부 토큰 오버라이드 (prop이 있을 때만 적용)

기본 사용

placeholder로 입력 전 안내 문구를 표시합니다.

기본값 설정

defaultValue로 초기 기본값을 지정합니다.


크기

size prop으로 입력란 크기를 지정합니다. xs / sm / md / lg / xl을 지원합니다.


에디터 높이

rows prop으로 입력란의 세로 높이를 행 단위로 설정합니다.


비활성화 / 읽기 전용

disabled, readOnly는 모두 비활성화된 외관으로 표시되며 편집할 수 없습니다.


레이블 / 필수 입력

label로 레이블을 표시하고, required로 필수 표시 기호(*)를 추가합니다.

레이블 위치

orientation=“horizontal”이면 레이블이 입력란 왼쪽에 배치됩니다.

라벨 도움말

labelTooltip 지정 시 레이블 옆 아이콘에 마우스를 올리면 도움말이 표시됩니다.


글자 수 제한

maxLength로 최대 글자 수를 제한합니다. 초과 입력은 차단됩니다.


줄바꿈 정규화

lineBreakNormalize=true이면 저장 데이터에 포함된 리터럴 줄바꿈 문자열(\r, \n)을 실제 줄바꿈으로 변환하여 여러 줄로 표시합니다.


스타일 설정

backgroundColor, color, borderColor 등으로 디자인 토큰을 오버라이드합니다.


API Reference

Props

PropTypeDefaultDescription
valuestring | number-입력 값 (controlled)
defaultValuestring | number-초기 기본값 (uncontrolled)
placeholderstring-입력 전 안내 문구
showPlaceholderbooleantrue안내 문구 표시 여부
size"xs" | "sm" | "md" | "lg" | "xl""md"입력란 크기
rowsnumber-세로 높이 (행 단위)
visiblebooleantrue표시 여부 (false → 렌더링 안 함)
disabledbooleanfalse비활성화
readOnlybooleanfalse읽기 전용 (disabled와 동일 처리)
requiredboolean-필수 입력 (FormItem 필수 표시)
maxLengthnumber-최대 글자 수
minLengthnumber-최소 글자 수
lineBreakNormalizebooleanfalse표시 시 리터럴 줄바꿈을 실제 줄바꿈으로 변환
showLabelbooleanfalse빈 레이블 공간 표시 여부
labelTooltipstring-레이블 도움말 (아이콘 hover 시 표시)
titlestring-HTML title 속성 (native tooltip)
backgroundColorstring-배경색 토큰 오버라이드
colorstring-텍스트 색상 토큰 오버라이드
borderColorstring-테두리 색상 토큰 오버라이드
borderWidthstring-테두리 두께
fontSizestring-폰트 크기
fontWeightstring | number-폰트 굵기
fontFamilystring-폰트 패밀리
fontStylestring-폰트 스타일 (italic 등)
textAlignstring-텍스트 정렬
classNamestring-컴포넌트 컨테이너에 적용할 CSS 클래스
formClassNamestring-FormItem 래퍼에 적용할 CSS 클래스
labelstring-FormItem 레이블
orientation"horizontal" | "vertical"-FormItem 레이블 방향
descriptionstring-FormItem 설명
errorstring-FormItem 에러 메시지

Events

EventTypeDescription
onChange(value: string) => void값 변경 시 호출

Ref

메서드/속성TypeDescription
focus()() => void입력란에 포커스
blur()() => void포커스 해제
elementHTMLTextAreaElement | nulltextarea DOM 요소

접근성

권장 사항

  • ✅ label 또는 aria-label로 입력란의 목적을 명확히 제공하세요.
  • ✅ 필수 입력은 required로 설정하여 스크린 리더에 전달하세요.
  • ❌ placeholder만으로 레이블을 대체하지 마세요. 값 입력 시 사라집니다.

관련 컴포넌트

Last updated on