다크 모드
ScTextField
ScTextField는 다양한 텍스트 입력 UI를 제공하는 공통 입력 컴포넌트입니다.v-model을 통한 양방향 바인딩과 함께, 라벨, 플레이스홀더, 에러 메시지, 접두/접미 아이콘, 클리어 버튼 등의 기능을 지원합니다.
✅ 기본 사용법
결과 :
vue
<div class="w-[150px] mt-5">
<sc-text-field placeholder="입력해주세요" v-model="value" />
</div>
<div class="mt-5 text-sm">결과 : {{ value }}</div>※
ScTextField는 전역으로 등록되어 있으므로 import 없이 사용할 수 있습니다.
✨ 사용 예시 모음
▸ 사이즈
결과 :
vue
<div class="w-[150px] mt-5">
<sc-text-field placeholder="입력해주세요" v-model="value" size="small" />
</div>
<div class="w-[150px] mt-5">
<sc-text-field placeholder="입력해주세요" v-model="value" size="medium" />
</div>
<div class="w-[150px] mt-5">
<sc-text-field placeholder="입력해주세요" v-model="value" rounded large />
</div>
<div class="mt-5 text-sm">결과 : {{ value }}</div>▸ 아이콘
x아이콘을 누르거나 esc키를 누르면 clear이벤트가 전달됩니다.
검색 아이콘을 누르거나 enter키를 누르면 @search 이벤트가 발생합니다.
결과 : 안녕하세요
vue
<div class="w-[180px] mt-5">
<sc-text-field
placeholder="입력해주세요"
v-model="text"
@search="onSearch"
medium
clearable
searchable
/>
</div>
<div class="w-[180px] mt-5">
<sc-text-field
placeholder="입력해주세요"
v-model="text"
@search="onSearch"
medium
clearable
searchable
rounded
/>
</div>
<div class="mt-5 text-sm">결과 : {{ text }}</div>▸ disabled 비활성화
vue
<sc-text-field placeholder="입력해주세요" v-model="text" disabled />▸ readonly 읽기전용
vue
<sc-text-field placeholder="입력해주세요" v-model="text" readonly />▸ placeholder 플레이스홀더
vue
<sc-text-field v-model="email" placeholder="이메일을 입력하세요." />▸ mask 마스크 정규식
Mask 표현식 입니다. #(숫자), A(대문자), a(소문자), N(숫자/대문자), n(숫자/소문자)와 특수기호의 조합으로 표현합니다.
표현식의 preset으로 number, english, korean 그리고 /로 시작 / 끝나는 정규식을 사용할 수 있습니다.
숫자만 mask="number"
결과 :
vue
<sc-text-field class="w-[200px]" placeholder="숫자" v-model="mask.number" mask="number" />
<div class="mt-5 text-sm">결과 : {{ mask.number }}</div>영어/숫자만 mask="english"
결과 :
vue
<sc-text-field class="w-[200px]" placeholder="알파벳, 숫자" v-model="mask.english" mask="english" />
<div class="mt-5 text-sm">결과 : {{ mask.english }}</div>한글/숫자만 mask="korean"
결과 :
vue
<sc-text-field class="w-[200px]" placeholder="한글, 숫자" v-model="mask.korean" mask="korean" />
<div class="mt-5 text-sm">결과 : {{ mask.korean }}</div>정규식 mask="/[0-9]+/"
결과 :
vue
<sc-text-field class="w-[200px]" placeholder="정규식 숫자만 /[0-9]+/" v-model="mask.value1" mask="/[0-9]+/" />
<div class="mt-5 text-sm">결과 : {{ mask.value1 }}</div>표현식 mask="####"
결과 :
vue
<sc-text-field class="w-[200px]" placeholder="숫자 최대 4개" v-model="mask.value2" mask="####" />
<div class="mt-5 text-sm">결과 : {{ mask.value2 }}</div>표현식 mask="aAaAaA"
결과 :
vue
<sc-text-field class="w-[350px]" placeholder="소문자,대문자,소문자,대문자,소문자,대문자" v-model="mask.value3" mask="aAaAaA" />
<div class="mt-5 text-sm">결과 : {{ mask.value3 }}</div>🛠️ 속성 (Props)
| 이름 | 타입 | 기본값 | 설명 |
|---|---|---|---|
modelValue | string | '' | 입력 값 (v-model) |
type | string | 'text' | 입력 타입 |
placeholder | string | '' | 플레이스홀더 문구 |
disabled | boolean | false | 비활성화 여부 |
readonly | boolean | false | 읽기 전용 여부 |
mask | string | RegExp | undefined | 마스크 정규식 또는 preset |
searchable | boolean | false | 검색 아이콘 표시 여부 |
clearable | boolean | false | 클리어 아이콘 표시 여부 |
size | 'small' | 'medium' | 'medium' | 입력 크기 |
rounded | boolean | false | 둥근 스타일 여부 |
📤 이벤트 (Emits)
| 이벤트 이름 | 설명 |
|---|---|
update:modelValue | 입력 값 변경 (v-model) |
search | 검색 아이콘 클릭 or Enter 시 |
clear | 클리어 버튼 클릭 or ESC 시 |
🔳 슬롯 (Slots)
현재 ScTextField는 슬롯을 지원하지 않습니다.
🎨 스타일 클래스
| 클래스 이름 | 설명 |
|---|---|
sc-text-field | 전체 wrapper 클래스 |
sc-text-field--disabled | 비활성화 상태 |
sc-text-field--readonly | 읽기 전용 상태 |
sc-text-field--clearable | 클리어 버튼이 있는 경우 |
sc-text-field--searchable | 검색 아이콘이 있는 경우 |
sc-text-field--rounded | 둥근 스타일인 경우 |
sc-text-field--small | 작은 사이즈 적용 |
sc-text-field--medium | 중간 사이즈 적용 |
📝 기타 참고사항
mask는"number","english","korean"preset 또는 정규식 문자열, RegExp 타입을 지원- 검색(Search)은 Enter 키 또는 돋보기 아이콘 클릭 시
@search이벤트 발생 - 클리어(Clear)는 ESC 키 또는 X 버튼 클릭 시
@clear이벤트 발생

