mirror of
https://github.com/awatertrevi/infisical.git
synced 2026-10-03 22:26:07 +00:00
minor frontend UX fixes
This commit is contained in:
@@ -950,6 +950,7 @@ export const DashboardPage = () => {
|
|||||||
secrets={secrets?.secrets}
|
secrets={secrets?.secrets}
|
||||||
importedSecrets={importedSecrets}
|
importedSecrets={importedSecrets}
|
||||||
items={items}
|
items={items}
|
||||||
|
searchTerm={searchFilter}
|
||||||
/>
|
/>
|
||||||
<FolderSection
|
<FolderSection
|
||||||
onFolderOpen={handleFolderOpen}
|
onFolderOpen={handleFolderOpen}
|
||||||
|
|||||||
+21
-7
@@ -18,6 +18,7 @@ type Props = {
|
|||||||
importedEnv: string;
|
importedEnv: string;
|
||||||
importedSecPath: string;
|
importedSecPath: string;
|
||||||
importedSecrets: { key: string; value: string; overriden: { env: string; secretPath: string } }[];
|
importedSecrets: { key: string; value: string; overriden: { env: string; secretPath: string } }[];
|
||||||
|
searchTerm: string;
|
||||||
};
|
};
|
||||||
|
|
||||||
// to show the environment and folder icon
|
// to show the environment and folder icon
|
||||||
@@ -37,7 +38,8 @@ export const SecretImportItem = ({
|
|||||||
importedEnv,
|
importedEnv,
|
||||||
importedSecPath,
|
importedSecPath,
|
||||||
onDelete,
|
onDelete,
|
||||||
importedSecrets = []
|
importedSecrets = [],
|
||||||
|
searchTerm = ""
|
||||||
}: Props) => {
|
}: Props) => {
|
||||||
const [isExpanded, setIsExpanded] = useToggle();
|
const [isExpanded, setIsExpanded] = useToggle();
|
||||||
const { attributes, listeners, transform, transition, setNodeRef, isDragging } = useSortable({
|
const { attributes, listeners, transform, transition, setNodeRef, isDragging } = useSortable({
|
||||||
@@ -46,6 +48,17 @@ export const SecretImportItem = ({
|
|||||||
const { currentWorkspace } = useWorkspace();
|
const { currentWorkspace } = useWorkspace();
|
||||||
const rowEnv = currentWorkspace?.environments?.find(({ slug }) => slug === importedEnv);
|
const rowEnv = currentWorkspace?.environments?.find(({ slug }) => slug === importedEnv);
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
const filteredSecrets = importedSecrets.filter(secret => secret.key.toUpperCase().includes(searchTerm.toUpperCase()))
|
||||||
|
|
||||||
|
if (filteredSecrets.length > 0 && searchTerm) {
|
||||||
|
setIsExpanded.on();
|
||||||
|
} else {
|
||||||
|
setIsExpanded.off();
|
||||||
|
}
|
||||||
|
}, [searchTerm]);
|
||||||
|
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (isDragging) {
|
if (isDragging) {
|
||||||
setIsExpanded.off();
|
setIsExpanded.off();
|
||||||
@@ -65,8 +78,10 @@ export const SecretImportItem = ({
|
|||||||
className="group flex cursor-default flex-row items-center hover:bg-mineshaft-700"
|
className="group flex cursor-default flex-row items-center hover:bg-mineshaft-700"
|
||||||
onClick={() => setIsExpanded.toggle()}
|
onClick={() => setIsExpanded.toggle()}
|
||||||
>
|
>
|
||||||
<td className="ml-0.5 flex h-10 w-10 items-center justify-center border-none px-4">
|
<td className={`ml-0.5 flex h-10 w-10 items-center justify-center border-none px-4 ${isExpanded && "border-t-2 border-mineshaft-500"}`}>
|
||||||
<FontAwesomeIcon icon={faFileImport} className="text-green-700" />
|
<Tooltip content="Secret Import" className="capitalize">
|
||||||
|
<FontAwesomeIcon icon={faFileImport} className="text-green-700" />
|
||||||
|
</Tooltip>
|
||||||
</td>
|
</td>
|
||||||
<td
|
<td
|
||||||
colSpan={2}
|
colSpan={2}
|
||||||
@@ -112,9 +127,8 @@ export const SecretImportItem = ({
|
|||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
{isExpanded && !isDragging && (
|
{isExpanded && !isDragging && (
|
||||||
<td colSpan={3}>
|
<td colSpan={3} className={`bg-bunker-800 ${isExpanded && "border-b-2 border-mineshaft-500"}`}>
|
||||||
<div className="rounded-md bg-bunker-700 p-4 pb-6">
|
<div className="rounded-md bg-bunker-700 p-1">
|
||||||
<div className="mb-2 text-lg font-medium">Secrets Imported</div>
|
|
||||||
<TableContainer>
|
<TableContainer>
|
||||||
<table className="secret-table">
|
<table className="secret-table">
|
||||||
<thead>
|
<thead>
|
||||||
@@ -132,7 +146,7 @@ export const SecretImportItem = ({
|
|||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
)}
|
)}
|
||||||
{importedSecrets.map(({ key, value, overriden }, index) => (
|
{importedSecrets.filter(secret => secret.key.toUpperCase().includes(searchTerm.toUpperCase())).map(({ key, value, overriden }, index) => (
|
||||||
<tr key={`${importedEnv}-${importedSecPath}-${key}-${index + 1}`}>
|
<tr key={`${importedEnv}-${importedSecPath}-${key}-${index + 1}`}>
|
||||||
<td className="h-10" style={{ padding: "0.25rem 1rem" }}>
|
<td className="h-10" style={{ padding: "0.25rem 1rem" }}>
|
||||||
{key}
|
{key}
|
||||||
|
|||||||
+3
-1
@@ -61,10 +61,11 @@ type Props = {
|
|||||||
importedSecrets?: TImportedSecrets;
|
importedSecrets?: TImportedSecrets;
|
||||||
onSecretImportDelete: (env: string, secPath: string) => void;
|
onSecretImportDelete: (env: string, secPath: string) => void;
|
||||||
items: { id: string; environment: string; secretPath: string }[];
|
items: { id: string; environment: string; secretPath: string }[];
|
||||||
|
searchTerm: string;
|
||||||
};
|
};
|
||||||
|
|
||||||
export const SecretImportSection = memo(
|
export const SecretImportSection = memo(
|
||||||
({ secrets = [], importedSecrets = [], onSecretImportDelete, items = [] }: Props) => {
|
({ secrets = [], importedSecrets = [], onSecretImportDelete, items = [], searchTerm = "" }: Props) => {
|
||||||
const { currentWorkspace } = useWorkspace();
|
const { currentWorkspace } = useWorkspace();
|
||||||
const environments = currentWorkspace?.environments || [];
|
const environments = currentWorkspace?.environments || [];
|
||||||
|
|
||||||
@@ -83,6 +84,7 @@ export const SecretImportSection = memo(
|
|||||||
)}
|
)}
|
||||||
onDelete={onSecretImportDelete}
|
onDelete={onSecretImportDelete}
|
||||||
importedSecPath={impSecPath}
|
importedSecPath={impSecPath}
|
||||||
|
searchTerm={searchTerm}
|
||||||
/>
|
/>
|
||||||
))}
|
))}
|
||||||
</SortableContext>
|
</SortableContext>
|
||||||
|
|||||||
@@ -219,7 +219,7 @@ export const SecretInputRow = memo(
|
|||||||
}
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<tr className="group flex flex-row" key={index}>
|
<tr className="group flex flex-row hover:bg-mineshaft-700" key={index}>
|
||||||
<td className="flex h-10 w-10 items-center justify-center border-none px-4">
|
<td className="flex h-10 w-10 items-center justify-center border-none px-4">
|
||||||
<div className="w-10 text-center text-xs text-bunker-400">{index + 1}</div>
|
<div className="w-10 text-center text-xs text-bunker-400">{index + 1}</div>
|
||||||
</td>
|
</td>
|
||||||
|
|||||||
@@ -288,8 +288,14 @@ export const SecretOverviewPage = () => {
|
|||||||
className="min-table-row min-w-[11rem] border-b-0 p-0 text-center"
|
className="min-table-row min-w-[11rem] border-b-0 p-0 text-center"
|
||||||
key={`secret-overview-${name}-${index + 1}`}
|
key={`secret-overview-${name}-${index + 1}`}
|
||||||
>
|
>
|
||||||
<div className="flex items-center justify-center border-b border-mineshaft-600 px-5 pt-4 pb-3.5">
|
<div className="flex items-center justify-center border-b border-mineshaft-600 px-5 pt-3.5 pb-3">
|
||||||
{name}
|
<button
|
||||||
|
type="button"
|
||||||
|
className="font-medium hover:text-mineshaft-100 duration-100 text-sm"
|
||||||
|
onClick={() => handleExploreEnvClick(slug)}
|
||||||
|
>
|
||||||
|
{name}
|
||||||
|
</button>
|
||||||
{missingKeyCount > 0 && (
|
{missingKeyCount > 0 && (
|
||||||
<Tooltip
|
<Tooltip
|
||||||
className="max-w-none lowercase"
|
className="max-w-none lowercase"
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ const tabs = [
|
|||||||
export const ProjectSettingsPage = () => {
|
export const ProjectSettingsPage = () => {
|
||||||
const { t } = useTranslation();
|
const { t } = useTranslation();
|
||||||
return (
|
return (
|
||||||
<div className="flex h-full w-full justify-center bg-bunker-800 px-6 text-white">
|
<div className="flex w-full justify-center bg-bunker-800 px-6 text-white">
|
||||||
<div className="w-full max-w-screen-lg">
|
<div className="w-full max-w-screen-lg">
|
||||||
<div className="relative right-5 ml-4">
|
<div className="relative right-5 ml-4">
|
||||||
<NavHeader pageName={t("settings.project.title")} isProjectRelated />
|
<NavHeader pageName={t("settings.project.title")} isProjectRelated />
|
||||||
|
|||||||
Reference in New Issue
Block a user