위젯 추가팝업 수정
This commit is contained in:
@@ -24,6 +24,8 @@ interface Props {
|
||||
onUpdateGridFr: (rowFr: number[], colFr: number[]) => void;
|
||||
/** Tauri OS 창 — 네이티브 타이틀·리사이즈 사용, 내부 플로팅 크롬 숨김 */
|
||||
nativeShell?: boolean;
|
||||
/** 위젯 선택 팝업 열림/닫힘 (네이티브 창 크기 조절용) */
|
||||
onPickerOpenChange?: (open: boolean) => void;
|
||||
}
|
||||
|
||||
const FloatingWidgetWindow: React.FC<Props> = ({
|
||||
@@ -35,8 +37,19 @@ const FloatingWidgetWindow: React.FC<Props> = ({
|
||||
onUpdateSize,
|
||||
onUpdateGridFr,
|
||||
nativeShell = false,
|
||||
onPickerOpenChange,
|
||||
}) => {
|
||||
const [pickSlotId, setPickSlotId] = useState<string | null>(null);
|
||||
|
||||
const openPicker = useCallback((slotId: string) => {
|
||||
setPickSlotId(slotId);
|
||||
onPickerOpenChange?.(true);
|
||||
}, [onPickerOpenChange]);
|
||||
|
||||
const closePicker = useCallback(() => {
|
||||
setPickSlotId(null);
|
||||
onPickerOpenChange?.(false);
|
||||
}, [onPickerOpenChange]);
|
||||
const bodyWrapRef = useRef<HTMLDivElement>(null);
|
||||
const bodyRef = useRef<HTMLDivElement>(null);
|
||||
const [bodySize, setBodySize] = useState({ width: 0, height: 0 });
|
||||
@@ -130,8 +143,8 @@ const FloatingWidgetWindow: React.FC<Props> = ({
|
||||
const applyWidgetType = useCallback((widgetType: string) => {
|
||||
if (!pickSlotId) return;
|
||||
updateSlot(pickSlotId, s => ({ ...s, widgetType, config: {} }));
|
||||
setPickSlotId(null);
|
||||
}, [pickSlotId, updateSlot]);
|
||||
closePicker();
|
||||
}, [pickSlotId, updateSlot, closePicker]);
|
||||
|
||||
const clearWidget = useCallback((slotId: string) => {
|
||||
updateSlot(slotId, s => ({ ...s, widgetType: null, config: {} }));
|
||||
@@ -233,7 +246,7 @@ const FloatingWidgetWindow: React.FC<Props> = ({
|
||||
<WidgetSlotView
|
||||
slot={slot}
|
||||
zoneId="center"
|
||||
onPickWidget={id => setPickSlotId(id)}
|
||||
onPickWidget={openPicker}
|
||||
onClearWidget={id => clearWidget(id)}
|
||||
/>
|
||||
</div>
|
||||
@@ -291,7 +304,8 @@ const FloatingWidgetWindow: React.FC<Props> = ({
|
||||
<WidgetPickerModal
|
||||
open={pickSlotId != null}
|
||||
category="all"
|
||||
onClose={() => setPickSlotId(null)}
|
||||
nativeCompact={nativeShell}
|
||||
onClose={closePicker}
|
||||
onSelect={applyWidgetType}
|
||||
/>
|
||||
</>
|
||||
|
||||
Reference in New Issue
Block a user