블럭처리
This commit is contained in:
parent
bdd7a475d5
commit
aa837d8dbf
@ -63,6 +63,33 @@ export const CalculatorInput = forwardRef(
|
||||
const calculator = calculatorRef.current
|
||||
let newDisplayValue = ''
|
||||
|
||||
// 블록 지정(Selection) 확인 및 처리
|
||||
if (inputRef.current) {
|
||||
const { selectionStart, selectionEnd } = inputRef.current
|
||||
// 텍스트 전체 또는 일부가 블록 지정된 경우
|
||||
if (selectionStart !== null && selectionEnd !== null && selectionStart !== selectionEnd) {
|
||||
// 연산 중이 아닐 때만 전체 초기화 후 입력 처리 (계산기 모드 유지를 위해)
|
||||
if (!hasOperation) {
|
||||
calculator.currentOperand = num.toString()
|
||||
calculator.previousOperand = ''
|
||||
calculator.operation = undefined
|
||||
calculator.shouldResetDisplay = false
|
||||
|
||||
newDisplayValue = calculator.currentOperand
|
||||
setDisplayValue(newDisplayValue)
|
||||
onChange(newDisplayValue)
|
||||
|
||||
requestAnimationFrame(() => {
|
||||
if (inputRef.current) {
|
||||
inputRef.current.focus()
|
||||
inputRef.current.setSelectionRange(newDisplayValue.length, newDisplayValue.length)
|
||||
}
|
||||
})
|
||||
return // 블록 처리 로직 완료 후 종료
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// maxLength 체크
|
||||
if (maxLength > 0) {
|
||||
const currentLength = (calculator.currentOperand || '').length + (calculator.previousOperand || '').length + (calculator.operation || '').length
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user