diff --git a/src/components/common/input/CalcInput.jsx b/src/components/common/input/CalcInput.jsx index 14118b87..d386bd7d 100644 --- a/src/components/common/input/CalcInput.jsx +++ b/src/components/common/input/CalcInput.jsx @@ -3,7 +3,7 @@ import { createCalculator } from '@/util/calc-utils' import '@/styles/calc.scss' export const CalculatorInput = forwardRef( - ({ value, onChange, label, options = {}, id, className = 'calculator-input', readOnly = false, placeholder, name='', disabled = false }, ref) => { + ({ value, onChange, label, options = {}, id, className = 'calculator-input', readOnly = false, placeholder, name='', disabled = false, maxLength = 6 }, ref) => { const [showKeypad, setShowKeypad] = useState(false) const [displayValue, setDisplayValue] = useState(value || '0') const [hasOperation, setHasOperation] = useState(false) @@ -48,6 +48,14 @@ export const CalculatorInput = forwardRef( const calculator = calculatorRef.current let newDisplayValue = '' + // maxLength 체크 + if (maxLength > 0) { + const currentLength = (calculator.currentOperand || '').length + (calculator.previousOperand || '').length + (calculator.operation || '').length + if (currentLength >= maxLength) { + return + } + } + // 소수점 이하 2자리 제한 로직 추가 const shouldPreventInput = (value) => { if (!value) return false @@ -57,6 +65,10 @@ export const CalculatorInput = forwardRef( // 숫자 추가 함수 const appendNumber = (current, num) => { + // maxLength 체크 + if (maxLength > 0 && (current + num).length > maxLength) { + return current + } // 현재 값이 0이고 소수점이 없을 때 0이 아닌 숫자를 입력하면 대체 if (current === '0' && num !== '.' && !current.includes('.')) { return num.toString() @@ -407,6 +419,7 @@ export const CalculatorInput = forwardRef( placeholder={placeholder} autoComplete={'off'} disabled={disabled} + maxLength={maxLength} /> {showKeypad && !readOnly && ( diff --git a/src/components/estimate/Estimate.jsx b/src/components/estimate/Estimate.jsx index 4cdffbed..a8f5f148 100644 --- a/src/components/estimate/Estimate.jsx +++ b/src/components/estimate/Estimate.jsx @@ -24,6 +24,7 @@ import { useSwal } from '@/hooks/useSwal' import { QcastContext } from '@/app/QcastProvider' import { useCanvasMenu } from '@/hooks/common/useCanvasMenu' import {normalizeDigits, normalizeDecimal} from '@/util/input-utils' +import { CalculatorInput } from '@/components/common/input/CalcInput' export default function Estimate({}) { const [uniqueData, setUniqueData] = useState([]) const [handlePricingFlag, setHandlePricingFlag] = useState(false) @@ -2106,25 +2107,60 @@ export default function Estimate({}) {