fix: address PR review findings

- Remove ternary operators from new code (widget-integration-select,
  TabsContainer, mock data, members page)
- Remove stale /docs/management/tools/backup from sitemap type
- Add value prop to error-state Select in beszel-system-stats
This commit is contained in:
Thomas Camlong committed 2026-06-16 18:29:28 +02:00
1 parent 5078c300f8
commit 45dfe3b9ab
6 files changed
+16 -13

No files matched your search

@@ -42,9 +42,9 @@ export default async function GroupsDetailPage(props: GroupsDetailPageProps) {
const isReserved = group.name === everyoneGroup;
const searchTerm = searchParams.search?.trim().toLowerCase();
const filteredMembers = searchTerm
? group.members.filter((member) => member.name?.toLowerCase().includes(searchTerm))
: group.members;
const filteredMembers = group.members.filter(
(member) => !searchTerm || member.name?.toLowerCase().includes(searchTerm),
);
// "local" = every enabled provider managed locally, "external" = none, "mixed" = some.
const managementType = getGroupMemberManagementType();
@@ -233,7 +233,6 @@ export type HomarrDocumentationPath =
| "/docs/management/search-engines"
| "/docs/management/settings"
| "/docs/management/tasks"
| "/docs/management/tools/backup"
| "/docs/management/users"
| "/docs/widgets/anchor-note"
| "/docs/widgets/app"
@@ -375,7 +375,7 @@ export class BeszelMockService {
name: names[i % names.length] ?? "CPU",
val: rand(60, 95),
created: new Date(now - (i + 1) * 3_600_000).toISOString(),
resolved: i % 2 === 0 ? new Date(now - i * 1_800_000).toISOString() : null,
resolved: i % 2 === 0 && new Date(now - i * 1_800_000).toISOString() || null,
}));
}
}
@@ -23,10 +23,8 @@ export const WidgetIntegrationSelectInput = ({
const { data: selectData = [], isPending, isError } = options.useOptions(integrationIds);
const currentValue = form.getInputProps(`options.${property}`).value as string;
const data =
currentValue && !selectData.some((opt) => opt.value === currentValue)
? [...selectData, { value: currentValue, label: currentValue }]
: selectData;
const hasCurrentInData = !currentValue || selectData.some((opt) => opt.value === currentValue);
const data = hasCurrentInData ? selectData : [...selectData, { value: currentValue, label: currentValue }];
if (integrationIds.length === 0) {
return (
@@ -36,17 +34,21 @@ export const WidgetIntegrationSelectInput = ({
);
}
const description = options.withDescription ? tInput("description") : undefined;
const placeholder = isPending ? t("loading") : t("placeholder");
const error = isError ? t("loadError") : undefined;
return (
<Select
label={tInput("label")}
description={options.withDescription ? tInput("description") : undefined}
placeholder={(isPending && t("loading")) || t("placeholder")}
description={description}
placeholder={placeholder}
clearable={options.clearable}
searchable={options.searchable}
nothingFoundMessage={t("noResults")}
data={data}
disabled={isError}
error={(isError && t("loadError")) || undefined}
error={error}
{...form.getInputProps(`options.${property}`)}
/>
);
@@ -182,6 +182,7 @@ export default function BeszelSystemStatsWidget({
<Select
size="xs"
data={systems}
value={selectedSystem}
placeholder={t("selectSystem")}
onChange={(value) => value && handleSelectSystem(value)}
/>
@@ -70,7 +70,8 @@ export function TabsContainer({ children, defaultTab }: TabsContainerProps) {
const panels = Children.toArray(children).filter(isTabPanel);
const firstPanel = panels[0];
const panelValues = new Set(panels.map((p) => p.props.value));
const initialTab = (defaultTab && panelValues.has(defaultTab) ? defaultTab : firstPanel?.props.value) ?? null;
const resolvedDefault = defaultTab && panelValues.has(defaultTab) && defaultTab;
const initialTab = resolvedDefault || firstPanel?.props.value || null;
const [activeTab, setActiveTab] = useState<string | null>(initialTab);
return (