Merge pull request #1238 from wish-oss/feat/copy-ip

feat: added clipboard functionality to copy IP address from badge in services pages
This commit is contained in:
Mauricio Siu
2025-02-01 11:20:11 -06:00
committed by GitHub
2 changed files with 18 additions and 1 deletions

View File

@@ -52,6 +52,7 @@ import { useRouter } from "next/router";
import React, { useState, useEffect, type ReactElement } from "react"; import React, { useState, useEffect, type ReactElement } from "react";
import { toast } from "sonner"; import { toast } from "sonner";
import superjson from "superjson"; import superjson from "superjson";
import copy from 'copy-to-clipboard';
type TabState = type TabState =
| "projects" | "projects"
@@ -139,6 +140,13 @@ const Service = (
<div className="flex flex-col h-fit w-fit gap-2"> <div className="flex flex-col h-fit w-fit gap-2">
<div className="flex flex-row h-fit w-fit gap-2"> <div className="flex flex-row h-fit w-fit gap-2">
<Badge <Badge
className="cursor-pointer"
onClick={() => {
if (data?.server?.ipAddress) {
copy(data.server.ipAddress);
toast.success("IP Address Copied!");
}
}}
variant={ variant={
!data?.serverId !data?.serverId
? "default" ? "default"

View File

@@ -44,6 +44,8 @@ import Link from "next/link";
import { useRouter } from "next/router"; import { useRouter } from "next/router";
import React, { useState, useEffect, type ReactElement } from "react"; import React, { useState, useEffect, type ReactElement } from "react";
import superjson from "superjson"; import superjson from "superjson";
import { toast } from "sonner";
import copy from 'copy-to-clipboard';
type TabState = type TabState =
| "projects" | "projects"
@@ -131,6 +133,13 @@ const Service = (
<div className="flex flex-col h-fit w-fit gap-2"> <div className="flex flex-col h-fit w-fit gap-2">
<div className="flex flex-row h-fit w-fit gap-2"> <div className="flex flex-row h-fit w-fit gap-2">
<Badge <Badge
className="cursor-pointer"
onClick={() => {
if (data?.server?.ipAddress) {
copy(data.server.ipAddress);
toast.success("IP Address Copied!");
}
}}
variant={ variant={
!data?.serverId !data?.serverId
? "default" ? "default"
@@ -142,7 +151,7 @@ const Service = (
{data?.server?.name || "Dokploy Server"} {data?.server?.name || "Dokploy Server"}
</Badge> </Badge>
{data?.server?.serverStatus === "inactive" && ( {data?.server?.serverStatus === "inactive" && (
<TooltipProvider delayDuration={0}> <TooltipProvider>
<Tooltip> <Tooltip>
<TooltipTrigger asChild> <TooltipTrigger asChild>
<Label className="break-all w-fit flex flex-row gap-1 items-center"> <Label className="break-all w-fit flex flex-row gap-1 items-center">