블럭처리
This commit is contained in:
parent
bdd7a475d5
commit
aa837d8dbf
@ -63,6 +63,33 @@ export const CalculatorInput = forwardRef(
|
|||||||
const calculator = calculatorRef.current
|
const calculator = calculatorRef.current
|
||||||
let newDisplayValue = ''
|
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 체크
|
// maxLength 체크
|
||||||
if (maxLength > 0) {
|
if (maxLength > 0) {
|
||||||
const currentLength = (calculator.currentOperand || '').length + (calculator.previousOperand || '').length + (calculator.operation || '').length
|
const currentLength = (calculator.currentOperand || '').length + (calculator.previousOperand || '').length + (calculator.operation || '').length
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user