Skip to Content

Editor

라벨, 읽기 전용, 오류 표시 등을 내장한 리치 텍스트 에디터 컴포넌트


개요

Cals Editor는 Foundation Editor(Lexical 기반)를 래핑하여 CALS 제품의 리치 텍스트 편집 UI를 선언적으로 구현하는 컴포넌트입니다. 굵게·기울임·밑줄·목록·들여쓰기·정렬·글자 색·배경 색·서식 초기화 등의 편집 도구 모음을 기본 제공하며, 폼 레이블, 읽기 전용, 오류 표시 등 CALS에서 자주 쓰이는 기능을 prop으로 제공합니다.

주요 특징

  • 리치 텍스트 편집: 굵게, 기울임, 밑줄, 목록, 정렬, 글자/배경 색상, 서식 초기화 등
  • HTML 입출력: defaultValue로 초기 HTML 설정, onHtmlChange로 변경 HTML 수신
  • 읽기 전용: readOnly prop으로 편집 불가 + 도구 모음 비활성화
  • FormItem 내장: label/required/description/error prop으로 폼 레이블 자동 래핑
  • 라벨 도움말: labelTooltip으로 레이블 옆 도움말 아이콘 표시
  • 가시성/포커스 제어: visible prop, ref.focus()/insertText()
  • 이미지 삽입: Base64 형식으로 이미지를 삽입 가능

기본 사용

기본 상태의 리치 텍스트 에디터입니다. 상단 편집 도구 모음이 표시됩니다.

500

0 characters

|

0 words

기본값 설정

defaultValue로 초기 HTML 콘텐츠를 설정합니다.

500

0 characters

|

0 words


읽기 전용

readOnly=true이면 편집 불가 + 도구 모음이 비활성화됩니다.

500

0 characters

|

0 words


오류 상태

error prop이 있으면 편집 영역에 오류 강조 스타일이 적용됩니다.

500

0 characters

|

0 words


에디터 높이

height prop으로 에디터 높이를 설정합니다. 기본 300px입니다.

500

0 characters

|

0 words

500

0 characters

|

0 words


레이블 / 필수 입력

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

500

0 characters

|

0 words

500

0 characters

|

0 words

레이블 위치

orientation=“horizontal”이면 레이블이 에디터 왼쪽에 배치됩니다.

500

0 characters

|

0 words

라벨 도움말

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

500

0 characters

|

0 words


API Reference

Props

PropTypeDefaultDescription
defaultValuestring-초기 HTML 콘텐츠
readOnlyboolean-읽기 전용 (편집 불가 + 도구 모음 비활성)
visiblebooleantrue표시 여부 (false → 렌더링 안 함)
heightnumber | string300에디터 높이 (px)
errorstring | boolean-에러 메시지/상태
requiredboolean-필수 입력 (FormItem 필수 표시)
showLabelbooleanfalse빈 레이블 공간 표시 여부
labelTooltipstring-레이블 도움말 (아이콘 hover 시 표시)
labelstring-FormItem 레이블
orientation"horizontal" | "vertical"-FormItem 레이블 방향
descriptionstring-FormItem 설명
classNamestring-컴포넌트 컨테이너에 적용할 CSS 클래스
formClassNamestring-FormItem 래퍼에 적용할 CSS 클래스
styleReact.CSSProperties-인라인 스타일

Events

EventTypeDescription
onHtmlChange(html: string) => void편집 내용 변경 시 HTML 문자열 전달

Ref

메서드/속성TypeDescription
focus()() => void에디터에 포커스 이동
insertText()(text: string) => void커서 위치에 텍스트 삽입
getEditor()() => LexicalEditor | nullLexical 에디터 인스턴스 접근

접근성

권장 사항

  • ✅ label로 에디터의 목적을 명확히 제공하세요.
  • ✅ 필수 입력은 required로 설정하여 스크린 리더에 전달하세요.
  • ✅ error 상태에서는 시각적 강조와 함께 에러 메시지가 표시됩니다.
  • ❌ 읽기 전용 상태에서 포커스를 강제로 이동하지 마세요.

관련 컴포넌트

Last updated on