added icons for proxy groups
This commit is contained in:
@@ -37,6 +37,7 @@ interface IProxyGroup {
|
|||||||
now: string;
|
now: string;
|
||||||
hidden: boolean;
|
hidden: boolean;
|
||||||
all: (string | { name: string })[];
|
all: (string | { name: string })[];
|
||||||
|
icon?: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
// --- Вспомогательная функция для цвета задержки ---
|
// --- Вспомогательная функция для цвета задержки ---
|
||||||
@@ -112,6 +113,7 @@ export const ProxySelectors: React.FC = () => {
|
|||||||
(localStorage.getItem(STORAGE_KEY_SORT_TYPE) as ProxySortType) ||
|
(localStorage.getItem(STORAGE_KEY_SORT_TYPE) as ProxySortType) ||
|
||||||
"default",
|
"default",
|
||||||
);
|
);
|
||||||
|
const enable_group_icon = verge?.enable_group_icon ?? true;
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (!proxies?.groups) return;
|
if (!proxies?.groups) return;
|
||||||
@@ -291,21 +293,31 @@ export const ProxySelectors: React.FC = () => {
|
|||||||
disabled={isGlobalMode || isDirectMode}
|
disabled={isGlobalMode || isDirectMode}
|
||||||
>
|
>
|
||||||
<SelectTrigger className="w-100">
|
<SelectTrigger className="w-100">
|
||||||
<Tooltip>
|
<div className="flex items-center gap-2 truncate">
|
||||||
<TooltipTrigger asChild>
|
<span className="truncate">
|
||||||
<span className="truncate">
|
<SelectValue placeholder={t("Select a group...")} />
|
||||||
<SelectValue placeholder={t("Select a group...")} />
|
</span>
|
||||||
</span>
|
</div>
|
||||||
</TooltipTrigger>
|
|
||||||
<TooltipContent>
|
|
||||||
<p>{selectedGroup}</p>
|
|
||||||
</TooltipContent>
|
|
||||||
</Tooltip>
|
|
||||||
</SelectTrigger>
|
</SelectTrigger>
|
||||||
<SelectContent>
|
<SelectContent>
|
||||||
{selectorGroups.map((group: IProxyGroup) => (
|
{selectorGroups.map((group: IProxyGroup) => (
|
||||||
<SelectItem key={group.name} value={group.name}>
|
<SelectItem key={group.name} value={group.name}>
|
||||||
{group.name}
|
<div className="flex items-center gap-2">
|
||||||
|
{enable_group_icon && group.icon && (
|
||||||
|
<img
|
||||||
|
src={
|
||||||
|
group.icon.startsWith("data")
|
||||||
|
? group.icon
|
||||||
|
: group.icon.startsWith("<svg")
|
||||||
|
? `data:image/svg+xml;base64,${btoa(group.icon)}`
|
||||||
|
: group.icon
|
||||||
|
}
|
||||||
|
className="w-4 h-4 rounded-sm"
|
||||||
|
alt={group.name}
|
||||||
|
/>
|
||||||
|
)}
|
||||||
|
<span>{group.name}</span>
|
||||||
|
</div>
|
||||||
</SelectItem>
|
</SelectItem>
|
||||||
))}
|
))}
|
||||||
</SelectContent>
|
</SelectContent>
|
||||||
|
|||||||
Reference in New Issue
Block a user