feat: close tranbox when click away

This commit is contained in:
Gabe Yuan
2024-04-01 12:25:59 +08:00
parent 60d788288d
commit 7a12c5315a
6 changed files with 34 additions and 1 deletions

View File

@@ -623,6 +623,10 @@ export const I18N = {
zh: `隐藏翻译按钮`, zh: `隐藏翻译按钮`,
en: `Hide Translate Button`, en: `Hide Translate Button`,
}, },
hide_click_away: {
zh: `点击外部关闭弹窗`,
en: `Click outside to close the pop-up window`,
},
show: { show: {
zh: `显示`, zh: `显示`,
en: `Show`, en: `Show`,

View File

@@ -388,7 +388,8 @@ export const DEFAULT_TRANBOX_SETTING = {
tranboxShortcut: DEFAULT_TRANBOX_SHORTCUT, tranboxShortcut: DEFAULT_TRANBOX_SHORTCUT,
btnOffsetX: 10, btnOffsetX: 10,
btnOffsetY: 10, btnOffsetY: 10,
hideTranBtn: false, hideTranBtn: false, // 是否隐藏翻译按钮
hideClickAway: false, // 是否点击外部关闭弹窗
}; };
// 订阅列表 // 订阅列表

View File

@@ -50,6 +50,7 @@ export default function Tranbox() {
btnOffsetX, btnOffsetX,
btnOffsetY, btnOffsetY,
hideTranBtn = false, hideTranBtn = false,
hideClickAway = false,
} = tranboxSetting; } = tranboxSetting;
return ( return (
@@ -160,6 +161,18 @@ export default function Tranbox() {
<MenuItem value={true}>{i18n("hide")}</MenuItem> <MenuItem value={true}>{i18n("hide")}</MenuItem>
</TextField> </TextField>
<TextField
select
size="small"
name="hideClickAway"
value={hideClickAway}
label={i18n("hide_click_away")}
onChange={handleChange}
>
<MenuItem value={false}>{i18n("disable")}</MenuItem>
<MenuItem value={true}>{i18n("enable")}</MenuItem>
</TextField>
{!isExt && ( {!isExt && (
<ShortcutInput <ShortcutInput
value={tranboxShortcut} value={tranboxShortcut}

View File

@@ -148,6 +148,7 @@ export default function DraggableResizable({
}, },
onChangeSize, onChangeSize,
onChangePosition, onChangePosition,
...props
}) { }) {
const lineWidth = 4; const lineWidth = 4;
const [position, setPosition] = useState(defaultPosition); const [position, setPosition] = useState(defaultPosition);
@@ -182,6 +183,7 @@ export default function DraggableResizable({
gridTemplateRows: `${lineWidth * 2}px auto ${lineWidth * 2}px`, gridTemplateRows: `${lineWidth * 2}px auto ${lineWidth * 2}px`,
zIndex: 2147483647, zIndex: 2147483647,
}} }}
{...props}
> >
<Pointer <Pointer
direction="TopLeft" direction="TopLeft"

View File

@@ -175,6 +175,7 @@ export default function TranBox({
header={<Header setShowPopup={setShowBox} />} header={<Header setShowPopup={setShowBox} />}
onChangeSize={setBoxSize} onChangeSize={setBoxSize}
onChangePosition={setBoxPosition} onChangePosition={setBoxPosition}
onClick={(e) => e.stopPropagation()}
> >
<Divider /> <Divider />
<TranForm <TranForm

View File

@@ -132,6 +132,18 @@ export default function Slection({
} }
}, [handleTranbox, contextMenuType]); }, [handleTranbox, contextMenuType]);
useEffect(() => {
if (tranboxSetting.hideClickAway) {
const handleHideBox = () => {
setShowBox(false);
};
window.addEventListener("click", handleHideBox);
return () => {
window.removeEventListener("click", handleHideBox);
};
}
}, [tranboxSetting.hideClickAway]);
return ( return (
<> <>
{showBox && ( {showBox && (