mirror of
https://github.com/idanoo/autobrr
synced 2025-07-25 17:59:14 +00:00
feat(lists): add anilist support (#1949)
* fix(lists): clear selected list * chore(web): improve onChange set values for select_wide * feat(web): add anilist lists * feat(web): Filter is required on ListForm * fix(web): ListForm reset url when change type * feat(lists): add anilist support * feat(lists): filter duplicates for anilist * feat(anilist): handle special characters * fix(lists): better title matching fix(lists): add alternatives to apostrophe replacement * test(title): add some anime cases * feat(anilist): replace unicodes with regex * feat(lists): move additional anilist processing to autobrr instead of brr api * feat(lists): clean Unicode Block “Latin Extended-A” chars --------- Co-authored-by: martylukyy <35452459+martylukyy@users.noreply.github.com>
This commit is contained in:
parent
5e2769639f
commit
b724429b97
10 changed files with 257 additions and 55 deletions
|
@ -78,12 +78,8 @@ export function SelectFieldCreatable<T>({ name, label, help, placeholder, toolti
|
|||
// value={field?.value ? field.value : options.find(o => o.value == field?.value)}
|
||||
value={field?.value ? { value: field.value, label: field.value } : field.value}
|
||||
onChange={(newValue: unknown) => {
|
||||
if (newValue) {
|
||||
setFieldValue(field.name, (newValue as { value: string }).value);
|
||||
}
|
||||
else {
|
||||
setFieldValue(field.name, "")
|
||||
}
|
||||
const option = newValue as { value: string };
|
||||
setFieldValue(field.name, option?.value ?? "");
|
||||
}}
|
||||
options={[...[...options, { value: field.value, label: field.value }].reduce((map, obj) => map.set(obj.value, obj), new Map()).values()]}
|
||||
/>
|
||||
|
@ -143,12 +139,8 @@ export function SelectField<T>({ name, label, help, placeholder, options }: Sele
|
|||
// value={field?.value ? field.value : options.find(o => o.value == field?.value)}
|
||||
value={field?.value ? { value: field.value, label: field.value } : field.value}
|
||||
onChange={(newValue: unknown) => {
|
||||
if (newValue) {
|
||||
setFieldValue(field.name, (newValue as { value: string }).value);
|
||||
}
|
||||
else {
|
||||
setFieldValue(field.name, "")
|
||||
}
|
||||
const option = newValue as { value: string };
|
||||
setFieldValue(field.name, option?.value ?? "");
|
||||
}}
|
||||
options={[...[...options, { value: field.value, label: field.value }].reduce((map, obj) => map.set(obj.value, obj), new Map()).values()]}
|
||||
/>
|
||||
|
@ -213,12 +205,8 @@ export function SelectFieldBasic<T>({ name, label, help, placeholder, required,
|
|||
defaultValue={defaultValue}
|
||||
value={field?.value && options.find(o => o.value == field?.value)}
|
||||
onChange={(newValue: unknown) => {
|
||||
if (newValue) {
|
||||
setFieldValue(field.name, (newValue as { value: string }).value);
|
||||
}
|
||||
else {
|
||||
setFieldValue(field.name, "")
|
||||
}
|
||||
const option = newValue as { value: string };
|
||||
setFieldValue(field.name, option?.value ?? "");
|
||||
}}
|
||||
options={options}
|
||||
/>
|
||||
|
@ -247,7 +235,7 @@ interface ListFilterMultiSelectOption {
|
|||
name: string;
|
||||
}
|
||||
|
||||
export function ListFilterMultiSelectField({ name, label, help, tooltip, options }: MultiSelectFieldProps) {
|
||||
export function ListFilterMultiSelectField({ name, label, help, tooltip, options, required }: MultiSelectFieldProps) {
|
||||
return (
|
||||
<div className="flex items-center space-y-1 p-4 sm:space-y-0 sm:grid sm:grid-cols-3 sm:gap-4">
|
||||
<div>
|
||||
|
@ -259,11 +247,12 @@ export function ListFilterMultiSelectField({ name, label, help, tooltip, options
|
|||
{tooltip ? (
|
||||
<DocsTooltip label={label}>{tooltip}</DocsTooltip>
|
||||
) : label}
|
||||
<common.RequiredField required={required} />
|
||||
</div>
|
||||
</label>
|
||||
</div>
|
||||
<div className="sm:col-span-2">
|
||||
<Field name={name} type="select">
|
||||
<Field name={name} type="select" required={required}>
|
||||
{({
|
||||
field,
|
||||
form: { setFieldValue }
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue