>({})
+
+ const copyToClipboard = async (text: string, idPassword: string) => {
+ try {
+ await navigator.clipboard.writeText(text)
+ await usePassword(idPassword)
+ // Mettre à jour le compteur local
+ // setPasswordUsages(prev => ({
+ // ...prev,
+ // [idPassword]: (prev[idPassword] || 0) + 1
+ // }))
+ } catch (error) {
+ console.error('Erreur lors de la copie:', error)
+ }
+ }
+
+ return (
+
+
+
+
+
+ {credential.title}
+ {/* {password.breached && (
+
+
+
+
+
+
+ Identifiants compromis
+
+
+
+ )} */}
+ {/* {password.reused && (
+
+
+
+
+
+
+ Mot de passe réutilisé
+
+
+
+ )} */}
+
+
{credential.user_identifier}
+
+
+
+
+
+
+ Actions
+ copyToClipboard(credential.user_identifier, credential.id)}>
+ Copier l'identifiant
+
+ copyToClipboard(credential.password, credential.id)}>
+ Copier le mot de passe
+
+
+ {/* {
+ setSelectedPassword(password)
+ }}
+ >
+ Voir les détails
+
+ {
+ setSelectedPassword(password)
+ setShowShareDialog(true)
+ }}
+ >
+ Partager
+ */}
+
+ Modifier
+ Supprimer
+
+
+
+ {/*
+
+ {getFolderName(password.folderId)}
+
+ {password.tags.slice(0, 2).map((tag, index) => (
+
+ {tag}
+
+ ))}
+ {password.tags.length > 2 && (
+
+ +{password.tags.length - 2}
+
+ )}
+
*/}
+
+
+
+
+
+ Mot de passe:
+
+ {revealedPasswords[credential.password] ? "ExamplePass123" : credential.password}
+
+
+
+ {/* */}
+
+
+
+ {/*
+ Mis à jour: {password.lastUpdated}
+
+ {password.strength === "strong" ? "Fort" : password.strength === "medium" ? "Moyen" : "Faible"}
+
+
+
+ Nombre de vues :
+
+ {!isMounted || isLoadingUsages ? '...' : passwordUsages[password.id] ?? 0}
+
+
*/}
+ {credential.note && (
+
+
+ Notes
+
+ )}
+
+
+
+ )
+}
\ No newline at end of file
diff --git a/components/password-form.tsx b/components/password-form.tsx
index aef7f7b..abd8a5b 100644
--- a/components/password-form.tsx
+++ b/components/password-form.tsx
@@ -26,14 +26,15 @@ import type { FolderItem } from "@/components/password-manager"
import { Switch } from "@/components/ui/switch"
interface PasswordFormProps {
- onAddPassword: (password: any) => void
+ onAddPassword: (title: string, domaine: string | null, userIdentifier: string, password: string, folderId: string) => void
folders: FolderItem[]
+ selectedFolderId?: string
onAddFolder: (name: string, parentId: string | null) => void
onCancel: () => void
allTags: string[]
}
-export function PasswordForm({ onAddPassword, folders, onAddFolder, onCancel, allTags }: PasswordFormProps) {
+export function PasswordForm({ onAddPassword, folders, selectedFolderId, onAddFolder, onCancel, allTags }: PasswordFormProps) {
const [title, setTitle] = useState("")
const [website, setWebsite] = useState("")
const [username, setUsername] = useState("")
@@ -45,9 +46,8 @@ export function PasswordForm({ onAddPassword, folders, onAddFolder, onCancel, al
const [passwordStrength, setPasswordStrength] = useState<"weak" | "medium" | "strong">("medium")
const [copied, setCopied] = useState(false)
const [folderId, setFolderId] = useState("")
- const [showNewFolderInput, setShowNewFolderInput] = useState(false)
const [newFolderName, setNewFolderName] = useState("")
- const [newFolderParentId, setNewFolderParentId] = useState
(null)
+ const [newFolderParentId, setNewFolderParentId] = useState(selectedFolderId ?? null)
const [tags, setTags] = useState([])
const [newTag, setNewTag] = useState("")
const [notes, setNotes] = useState("")
@@ -159,26 +159,25 @@ export function PasswordForm({ onAddPassword, folders, onAddFolder, onCancel, al
setPasswordStrength(strength)
}
- const addTag = () => {
- if (newTag && !tags.includes(newTag)) {
- setTags([...tags, newTag])
- setNewTag("")
- }
- }
-
- const removeTag = (tagToRemove: string) => {
- setTags(tags.filter((tag) => tag !== tagToRemove))
- }
-
- const handleAddFolder = () => {
- if (newFolderName) {
- onAddFolder(newFolderName, newFolderParentId)
- const newId = newFolderName.toLowerCase().replace(/\s+/g, "-") + "-" + Date.now().toString(36)
- setFolderId(newId)
- setNewFolderName("")
- setShowNewFolderInput(false)
- }
- }
+ // const addTag = () => {
+ // if (newTag && !tags.includes(newTag)) {
+ // setTags([...tags, newTag])
+ // setNewTag("")
+ // }
+ // }
+
+ // const removeTag = (tagToRemove: string) => {
+ // setTags(tags.filter((tag) => tag !== tagToRemove))
+ // }
+
+ // const handleAddFolder = () => {
+ // if (newFolderName) {
+ // onAddFolder(newFolderName, newFolderParentId)
+ // const newId = newFolderName.toLowerCase().replace(/\s+/g, "-") + "-" + Date.now().toString(36)
+ // setFolderId(newId)
+ // setNewFolderName("")
+ // }
+ // }
const addCustomField = () => {
if (newFieldLabel) {
@@ -208,33 +207,21 @@ export function PasswordForm({ onAddPassword, folders, onAddFolder, onCancel, al
const handleSubmit = (e: React.FormEvent) => {
e.preventDefault()
if (title && username && password) {
- onAddPassword({
- title,
- website,
- username,
- password,
- strength: passwordStrength,
- folderId,
- tags,
- notes,
- customFields: customFields.length > 0 ? customFields : undefined,
- })
+ // onAddPassword({
+ // title,
+ // website,
+ // username,
+ // password,
+ // strength: passwordStrength,
+ // folderId,
+ // tags,
+ // notes,
+ // customFields: customFields.length > 0 ? customFields : undefined,
+ // })
+ onAddPassword(title, website, username, password, newFolderParentId || selectedFolderId || "")
}
}
- // Group folders by parent for the select dropdown
- const getFolderGroups = () => {
- const rootFolders = folders.filter((f) => f.parentId === null)
-
- return rootFolders.map((rootFolder) => {
- const children = folders.filter((f) => f.parentId === rootFolder.id)
- return {
- parent: rootFolder,
- children,
- }
- })
- }
-
// Get folder path for display
const getFolderPath = (folder: FolderItem): string => {
if (!folder.parentId) return folder.name
@@ -328,80 +315,25 @@ export function PasswordForm({ onAddPassword, folders, onAddFolder, onCancel, al
-
- {showNewFolderInput ? (
-
-
- setNewFolderName(e.target.value)}
- className="flex-1"
- />
-
-
-
-
-
-
-
-
-
- ) : (
-
-
-
-
- )}
+
+
-