mirror of
https://github.com/lifegpc/eh-downloader.git
synced 2026-06-06 05:38:44 +08:00
Add custom paste handle
This commit is contained in:
@@ -36,6 +36,9 @@ type Props<T extends keyof TextType> = {
|
||||
id?: string;
|
||||
list?: string;
|
||||
datalist?: { value: TextType[T]; label?: string }[];
|
||||
onPaste?: (
|
||||
clipboard: string,
|
||||
) => { text: string; overwrite?: boolean } | undefined;
|
||||
};
|
||||
|
||||
export default class BTextField<T extends keyof TextType>
|
||||
@@ -186,6 +189,26 @@ export default class BTextField<T extends keyof TextType>
|
||||
list={this.props.list}
|
||||
onFocus={() => set_display_datalist(true)}
|
||||
onBlur={() => set_display_datalist(false)}
|
||||
onPaste={this.props.onPaste
|
||||
? ((e: ClipboardEvent) => {
|
||||
if (!this.props.onPaste) return;
|
||||
console.log(e);
|
||||
const clipboard =
|
||||
e.clipboardData?.getData("text") || "";
|
||||
const v = this.props.onPaste(clipboard);
|
||||
if (!v) return;
|
||||
e.preventDefault();
|
||||
if (e.target) {
|
||||
const i = e.target as HTMLInputElement;
|
||||
if (v.overwrite) {
|
||||
i.value = v.text;
|
||||
} else {
|
||||
i.setRangeText(v.text);
|
||||
}
|
||||
this.set_value(this.get_value(i));
|
||||
}
|
||||
})
|
||||
: undefined}
|
||||
/>
|
||||
{datalist_div}
|
||||
{this.props.children}
|
||||
|
||||
@@ -59,6 +59,13 @@ export default class NewTask extends Component<NewTaskProps, State> {
|
||||
const [abort, set_abort] = useState<AbortController>();
|
||||
const [ezcfg, set_ezcfg1] = useState(generate_export_zip_cfg());
|
||||
const [overwrite_ezcfg, set_overwrite_ezcfg] = useState(false);
|
||||
const onPasteGid = (clipboard: string) => {
|
||||
const p = parseUrl(clipboard);
|
||||
if (p && p.type !== UrlType.Single) {
|
||||
return { text: p.gid.toString(), overwrite: true };
|
||||
}
|
||||
return;
|
||||
};
|
||||
const fetchGidsData = async () => {
|
||||
const re = await fetch(
|
||||
"/api/gallery/list?all=1&fields=gid,title,title_jpn",
|
||||
@@ -171,6 +178,7 @@ export default class NewTask extends Component<NewTaskProps, State> {
|
||||
description={t("task.gallery_id")}
|
||||
outlined={true}
|
||||
set_value={set_dgid}
|
||||
onPaste={onPasteGid}
|
||||
/>
|
||||
<BTextField
|
||||
value={token}
|
||||
@@ -325,6 +333,7 @@ export default class NewTask extends Component<NewTaskProps, State> {
|
||||
outlined={true}
|
||||
set_value={set_ezgid}
|
||||
datalist={datalist}
|
||||
onPaste={onPasteGid}
|
||||
/>
|
||||
{ginfo_div}
|
||||
<BCheckbox
|
||||
|
||||
Reference in New Issue
Block a user