# 입력 아키텍처

## Content

Wijmo의 입력 컨트롤은 표준 HTML 요소로 구성되어 있습니다. 많은 컨트롤에는 사용자가 입력할 수 있는 내부 입력 요소, 드롭다운 편집기를 표시하는 버튼 또는 클릭할 수 있는 영역이 있습니다.
모든 Wijmo 입력 컨트롤은 가능한 한 조기에 유효성을 검증하여 데이터 입력이 쉽고 효율적이도록 설계되었습니다. 예를 들어, 숫자 입력 컨트롤에는 알파벳을 입력할 수 없으며, 이후 단계에서 이를 검증하지 않습니다. 마찬가지로, 컨트롤의 isRequired 속성이 true로 설정된 경우, 사용자는 해당 컨트롤의 내용을 지울 수 없습니다.
대부분의 Wijmo 입력 컨트롤은 기본 HTML 속성을 반영하는 공통 속성 집합을 가지고 있습니다.:

* **isRequired**: "required" 속성
* **isDisabled**: "disabled" 속성

"is" 접두사는 컨트롤 속성 이름과 HTML 속성 간의 충돌을 방지합니다.

HTML 입력 요소를 기반으로 한 입력 컨트롤은 더 많은 공통 속성을 가지고 있습니다.:

* **inputElement**: 내부 입력 요소에 대한 참조
* **isReadOnly**: "readonly" 속
* **text**: 서식이 적용된 값
* **value**: 구문 분석된 텍스트
* **format**: 텍스트와 값 간 변환에 사용되는 형식

숫자, 날짜, 시간 입력에 사용되는 컨트롤은 다음과 같은 공통 속성을 가지고 있습니다:

* **min**: 최소 값
* **max**: 최대 값
* **step**: 마우스 휠이나 스피너 버튼으로 적용되는 증가값

# 드롭다운

**DropDown** 컨트롤은 여러 컨트롤의 기반으로 사용되는 추상 클래스입니다. 다음과 같은 요소로 구성됩니다:

* **input element** (**inputElement** 속성으로 제공됨):
    재 값을 표시하고 편집하는 데 사용되는 HTML 입력 요소입니다. 몇몇 경우에는 이 요소가 편집할 수 없는 요소로 대체될 수 있습니다(예: Menu 및 MultiSelect 컨트롤).
* **drop-down button**:
    드롭다운 요소를 표시하거나 숨기는 데 사용되는 버튼입니다.
* **drop-down element** (**dropDown** 속성으로 제공됨):
    사용자가 드롭다운 버튼이나 F4 키를 누르면 표시되는 HTML 요소입니다. 사용자는 드롭다운 요소와 상호작용하여 input 요소와 컨트롤의 값을 업데이트합니다.

모든 드롭다운 컨트롤에는 다음과 같은 속성 및 이벤트가 있습니다:

* **text**: inputElement의 현재 값을 가져오거나 설정합니다.
* **textChanged**: text 속성의 값이 변경될 때 발생하는 이벤트입니다.
* **isDroppedDown**: 드롭다운이 현재 표시되고 있는지 여부를 결정하는 값을 가져오거나 설정합니다.
* **isDroppedDownChanging**, **isDroppedDownChanged**: isDroppedDown 속성의 값이 변경될 때 발생하는 이벤트입니다.
* **isAnimated**: 드롭다운을 표시할 때 애니메이션을 사용할지 여부를 결정하는 속성입니다.
* **dropDownCssClass**: 드롭다운 요소에 추가되어 CSS 스타일링을 가능하게 하는 클래스입니다. 이 속성은 드롭다운이 표시될 때 일반적으로 문서의 body 요소의 자식 요소로 다시 부모가 설정되어 컨트롤의 호스트 요소의 스타일을 상속받지 못하는 경우에 유용합니다.