Fix some code

This commit is contained in:
Anthony Janin 2025-06-05 10:04:10 +02:00
parent 2c329aa8a2
commit 1e6065ec7c
10 changed files with 323 additions and 334 deletions

View File

@ -1,54 +1,50 @@
# React + TypeScript + Vite # Application [4NK] - Interface Web
This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules. Cette application React fournit une interface pour interagir avec la plateforme [4NK]. Elle permet l'authentification des utilisateurs, la création de profils et de dossiers, ainsi que la visualisation des processus.
Currently, two official plugins are available: ## Fonctionnalités principales
- [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react) uses [Babel](https://babeljs.io/) for Fast Refresh - Authentification utilisateur via OAuth
- [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react-swc) uses [SWC](https://swc.rs/) for Fast Refresh - Création et gestion de profils utilisateur
- Création et gestion de dossiers
- Visualisation des processus
- Console de messages pour le suivi des événements
## Expanding the ESLint configuration ## Prérequis
If you are developing a production application, we recommend updating the configuration to enable type-aware lint rules: - Node.js (version 18 ou supérieure)
- npm ou yarn
```js ## Installation
export default tseslint.config({
extends: [ Pour installer les dépendances du projet, exécutez :
// Remove ...tseslint.configs.recommended and replace with this
...tseslint.configs.recommendedTypeChecked, ```bash
// Alternatively, use this for stricter rules npm install
...tseslint.configs.strictTypeChecked,
// Optionally, add this for stylistic rules
...tseslint.configs.stylisticTypeChecked,
],
languageOptions: {
// other options...
parserOptions: {
project: ['./tsconfig.node.json', './tsconfig.app.json'],
tsconfigRootDir: import.meta.dirname,
},
},
})
``` ```
You can also install [eslint-plugin-react-x](https://github.com/Rel1cx/eslint-react/tree/main/packages/plugins/eslint-plugin-react-x) and [eslint-plugin-react-dom](https://github.com/Rel1cx/eslint-react/tree/main/packages/plugins/eslint-plugin-react-dom) for React-specific lint rules: ## Commandes disponibles
```js ### Démarrage de l'application
// eslint.config.js
import reactX from 'eslint-plugin-react-x'
import reactDom from 'eslint-plugin-react-dom'
export default tseslint.config({ **Commande principale** pour lancer l'application en mode développement :
plugins: {
// Add the react-x and react-dom plugins ```bash
'react-x': reactX, npm run dev
'react-dom': reactDom,
},
rules: {
// other rules...
// Enable its recommended typescript rules
...reactX.configs['recommended-typescript'].rules,
...reactDom.configs.recommended.rules,
},
})
``` ```
L'application sera accessible à l'adresse : http://localhost:5173
## Communication avec la plateforme [4NK]
L'application communique avec la plateforme [4NK] via une iframe et un bus de messages. La communication est gérée par les classes `MessageBus` et `EventBus` dans le dossier `/src/sdk`.
## Configuration
L'URL de l'iframe est définie dans `App.tsx` :
```typescript
const iframeUrl = 'https://dev3.4nkweb.com'
```
Pour modifier l'environnement cible, vous devez changer cette URL.

View File

@ -147,6 +147,7 @@ function App() {
onLogout={handleLogout} onLogout={handleLogout}
onCreateProfile={handleOpenProfileModal} onCreateProfile={handleOpenProfileModal}
onCreateFolder={handleOpenFolderModal} onCreateFolder={handleOpenFolderModal}
iframeUrl={iframeUrl}
/> />
{/* Structure flexible avec console à gauche et contenu à droite */} {/* Structure flexible avec console à gauche et contenu à droite */}

View File

@ -9,20 +9,14 @@ interface ControlPanelProps {
iframeUrl?: string; iframeUrl?: string;
} }
/**
* Composant de panel de contrôle pour gérer les actions principales
*
* Fournit des boutons pour la connexion, la création de profil et le contrôle de visibilité
*/
function ControlPanel({ function ControlPanel({
onLogin = () => console.log('Connexion demandée'), onLogin = () => console.log('Connexion demandée'),
onLogout = () => console.log('Déconnexion demandée'), onLogout = () => console.log('Déconnexion demandée'),
onCreateProfile = () => console.log('Création de profil demandée'), onCreateProfile = () => console.log('Création de profil demandée'),
onCreateFolder = () => console.log('Création de dossier demandée'), onCreateFolder = () => console.log('Création de dossier demandée'),
isConnected = false, isConnected = false,
iframeUrl = 'https://dev1.4nkweb.com' iframeUrl = ''
}: ControlPanelProps) { }: ControlPanelProps) {
// État pour gérer l'affichage du tooltip
const [showTooltip, setShowTooltip] = useState(false); const [showTooltip, setShowTooltip] = useState(false);
return ( return (

View File

@ -264,6 +264,7 @@
0% { 0% {
box-shadow: 0 0 0 2px rgba(103, 58, 183, 0.8); box-shadow: 0 0 0 2px rgba(103, 58, 183, 0.8);
} }
100% { 100% {
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1); box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
} }
@ -284,11 +285,8 @@
flex-direction: column; flex-direction: column;
} }
.btn-cancel, .btn-submit { .btn-cancel,
.btn-submit {
width: 100%; width: 100%;
} }
} }
/* Styles spécifiques pour le composant FolderModal */
/* Les styles génériques de modal sont fournis par Modal.css */