Skip to Content

Number

숫자 입력과 증감 버튼을 제공하는 CALS 전용 숫자 입력 컴포넌트


개요

Cals Number는 Foundation Number를 래핑하여 CALS 제품의 숫자 입력 UI를 선언적으로 구현하는 컴포넌트입니다. 폼 라벨, min/max 범위 제한, step 증감 단위, 스타일 토큰 오버라이드 등을 prop으로 제공합니다.

주요 특징

  • ✅ controlled / uncontrolled: value/onValueChange 또는 defaultValue로 값 관리
  • ✅ 범위 제한: min/max prop으로 입력 범위 설정
  • ✅ 증감 단위: step prop으로 버튼 클릭 시 증감량 설정
  • ✅ FormItem 내장: label/required/description/error prop으로 폼 라벨 자동 래핑
  • ✅ 라벨 도움말: labelTooltip으로 라벨 옆 도움말 아이콘 표시
  • ✅ 가시성/포커스 제어: visible prop, ref.focus()/blur()/element
  • ✅ 디자인 토큰: 조건부 토큰 오버라이드 (prop이 있을 때만 적용)

기본 사용

증감 버튼(-, +)과 숫자 입력 필드를 렌더링합니다.

기본값 설정

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


크기

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


범위 제한 (Min / Max)

min과 max로 입력 가능한 범위를 제한합니다. 범위를 벗어나면 자동으로 보정됩니다.


증감 단위 (Step)

step으로 버튼 클릭 시 증감량을 설정합니다.


상태

읽기 전용

readOnly 시 값은 표시되지만 수정할 수 없습니다.

비활성화

disabled 시 시각적으로 비활성화 표시됩니다.


라벨

label prop으로 폼 라벨을 표시합니다. orientation으로 배치 방향을 설정합니다.

필수 입력

required prop으로 필수 표시를 추가합니다.

라벨 도움말

labelTooltip으로 라벨 옆 도움말 아이콘을 표시합니다.


스타일 오버라이드

backgroundColor, color, borderColor 등의 props로 디자인 토큰을 오버라이드할 수 있습니다.


API Reference

Props

PropTypeDefaultDescription
valuenumber-입력 값 (controlled)
defaultValuenumber-초기 기본값 (uncontrolled)
minnumber0최솟값
maxnumberInfinity최댓값
stepnumber1증감 단위
disabledbooleanfalse비활성화
readOnlyboolean-읽기 전용 (disabled로 바꾸지 않음, Tab 포커스 받음). 주지 않으면 감싸는 Form·ToolbarForm의 readOnly를 따른다
visiblebooleantrue표시 여부
size"xs" | "sm" | "md" | "lg" | "xl""md"입력란 크기
textAlign"left" | "center" | "right""center"텍스트 정렬
placeholderstring-안내 문구
titlestring-HTML title 속성
labelReactNode-라벨. ""이면 정렬용 빈 자리만 둔다 (labelTooltip 무시). 안쪽 부품이 aria 속성을 받지 않아 입력란에 잇지 못한다
labelTooltipstring-라벨 도움말 (아이콘 hover 시 표시). label에 글자가 있을 때만 나온다
requiredboolean-필수 입력. FormItem *만 켠다 (안쪽 부품이 aria 속성을 받지 않아 aria-required는 없음, HTML required도 없음)
orientation"horizontal" | "vertical"-라벨 배치 방향
labelWidthnumber | string-라벨 너비
backgroundColorstring-배경색 토큰 오버라이드
colorstring-텍스트 색상 토큰 오버라이드
borderColorstring-테두리 색상 토큰 오버라이드
borderWidthstring-테두리 두께
fontSizestring-폰트 크기
fontWeightstring | number-폰트 굵기
fontStylestring-폰트 스타일
classNamestring-FormItem 루트 className
inputClassNamestring-입력란(InputNumber) className
errorstring-오류 문구. 주면 오류 상태(aria-invalid)도 켠다
aria-invalidboolean-오류 상태. true면 문구 없이 상태만 켜고, false면 error가 있어도 상태와 문구를 끈다
styleReact.CSSProperties-인라인 스타일

Events

EventTypeDescription
onValueChange(value: number) => void값 변경 시 호출
onClick() => void컨트롤 클릭 시 호출

Ref API

Method/PropertyTypeDescription
focus() => void입력란 포커스 이동
blur() => void포커스 해제
elementHTMLInputElement | nullDOM 요소 참조

기본 사용법

import { Number } from "@vortex/ui-cals" <Number defaultValue={0} /> <Number min={0} max={100} step={5} defaultValue={50} /> <Number label="수량" required />

접근성

키보드 지원

  • Arrow Up/Down: 값 증가/감소
  • Page Up/Down: step * 10 단위 증감
  • Home/End: min/max로 이동

권장 사항

  • ✅ label prop으로 라벨을 제공하여 입력 필드의 목적을 명시하세요
  • ✅ min/max를 설정하여 유효 범위를 사용자에게 알려주세요
  • ❌ placeholder만으로 라벨을 대체하지 마세요

관련 컴포넌트

  • Input: 단일 라인 텍스트 입력 컴포넌트
Last updated on