diff --git a/src/components/floor-plan/modal/circuitTrestle/step/type/PassivityCircuitAllocation.jsx b/src/components/floor-plan/modal/circuitTrestle/step/type/PassivityCircuitAllocation.jsx index 2a6cb226..dc85d1c6 100644 --- a/src/components/floor-plan/modal/circuitTrestle/step/type/PassivityCircuitAllocation.jsx +++ b/src/components/floor-plan/modal/circuitTrestle/step/type/PassivityCircuitAllocation.jsx @@ -49,7 +49,16 @@ export default function PassivityCircuitAllocation(props) { obj.on('mousedown', (e) => handleTargetModules(obj)) }) + // [CIRCUIT-BOX-SELECT 2026-06-10] 手動回路割り当て 에서만 드래그 박스 복수선택 활성화 (이 화면 한정) + const prevSelection = canvas.selection + canvas.selection = true + canvas.on('selection:created', handleBoxSelect) + canvas.on('selection:updated', handleBoxSelect) + return () => { + canvas.off('selection:created', handleBoxSelect) + canvas.off('selection:updated', handleBoxSelect) + canvas.selection = prevSelection canvas .getObjects() .filter((obj) => obj.name === POLYGON_TYPE.MODULE) @@ -57,6 +66,7 @@ export default function PassivityCircuitAllocation(props) { obj.set({ strokeWidth: 0.3 }) obj.off('mousedown') }) + canvas.discardActiveObject() canvas.renderAll() } }, []) @@ -84,6 +94,28 @@ export default function PassivityCircuitAllocation(props) { canvas.renderAll() } + // [CIRCUIT-BOX-SELECT 2026-06-10] 드래그 박스(activeSelection) 로 잡힌 모듈을 targetModules 에 가산 병합 후 fabric 선택 해제 + const handleBoxSelect = () => { + const active = canvas.getActiveObject() + if (!active || active.type !== 'activeSelection') return + const boxModules = active.getObjects().filter((obj) => obj.name === POLYGON_TYPE.MODULE) + if (boxModules.length === 0) return + + setTargetModules((prev) => { + const next = Array.isArray(prev) ? [...prev] : [] + boxModules.forEach((obj) => { + if (!next.includes(obj.id)) { + obj.set({ strokeWidth: 2 }) + next.push(obj.id) + } + }) + return next + }) + + canvas.discardActiveObject() + canvas.renderAll() + } + const handleCircuitNumberFix = () => { const pcsTpCd = selectedPcs.pcsTpCd // 실내집중형, 옥외멀티형 let uniqueCircuitNumbers = [