Merge pull request 'dev' (#577) from dev into prd-deploy
Reviewed-on: #577
This commit is contained in:
commit
4133f1b512
@ -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
|
||||
|
||||
@ -2039,7 +2039,11 @@ export default function Estimate({}) {
|
||||
}
|
||||
}}
|
||||
menuPlacement={'auto'}
|
||||
getOptionLabel={(x) => x.itemName + ' (' + x.itemNo + ')'}
|
||||
getOptionLabel={(x) => {
|
||||
// 메뉴 리스트에 보이는 텍스트 디코딩
|
||||
const doc = new DOMParser().parseFromString(x.itemName, 'text/html');
|
||||
return (doc.documentElement.textContent || x.itemName) + ' (' + x.itemNo + ')';
|
||||
}}
|
||||
getOptionValue={(x) => x.itemNo}
|
||||
components={{
|
||||
SingleValue: ({ children, ...props }) => {
|
||||
@ -2048,13 +2052,21 @@ export default function Estimate({}) {
|
||||
}}
|
||||
isClearable={false}
|
||||
isDisabled={!!item?.paDispOrder}
|
||||
value={displayItemList.filter(function (option) {
|
||||
if (item.itemNo === '') {
|
||||
return false
|
||||
} else {
|
||||
return option.itemId === item.itemId
|
||||
value={(() => {
|
||||
const selectedOption = displayItemList.find((option) => {
|
||||
return item.itemNo !== '' && option.itemId === item.itemId;
|
||||
});
|
||||
|
||||
if (selectedOption) {
|
||||
// 현재 선택된 값의 itemName을 실시간으로 디코딩하여 전달
|
||||
const doc = new DOMParser().parseFromString(selectedOption.itemName, 'text/html');
|
||||
return {
|
||||
...selectedOption,
|
||||
itemName: doc.documentElement.textContent || selectedOption.itemName
|
||||
};
|
||||
}
|
||||
})}
|
||||
return null;
|
||||
})()}
|
||||
/>
|
||||
) : (
|
||||
<Select
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user