- Ajouter fallback pour Swagger UI si doc.json ne fonctionne pas - Améliorer message d'erreur avec bouton pour ouvrir Swagger UI directement - Les fonctionnalités API Keys et Usage Stats sont maintenant complètes et fonctionnelles - Tous les onglets de DeveloperPage sont maintenant implémentés
193 lines
6.5 KiB
TypeScript
193 lines
6.5 KiB
TypeScript
/**
|
|
* FIX AGRESSIF POUR PROBLÈMES VISUELS
|
|
* ⚠️ DÉSACTIVÉ : Ce script était une solution à un problème mal identifié.
|
|
* Le vrai problème était le style de focus des inputs, maintenant corrigé.
|
|
*
|
|
* Ce fichier est conservé pour référence mais n'est plus utilisé.
|
|
* Le problème réel a été résolu dans :
|
|
* - packages/design-system/src/components/Input/Input.tsx
|
|
* - apps/web/src/styles/global-effects.css
|
|
*/
|
|
|
|
export function applyAggressiveVisualFix(): void {
|
|
// DÉSACTIVÉ : Le problème réel a été corrigé à la source
|
|
// Ce script n'est plus nécessaire
|
|
if (typeof window === 'undefined') return;
|
|
|
|
// Ne rien faire - le problème est résolu dans les styles
|
|
return;
|
|
|
|
// 1. Supprimer complètement body::after (scanlines)
|
|
const removeBodyAfter = () => {
|
|
let style = document.getElementById('aggressive-fix-body-after') as HTMLStyleElement | null;
|
|
if (!style) {
|
|
style = document.createElement('style');
|
|
style.id = 'aggressive-fix-body-after';
|
|
style.textContent = `
|
|
body::after {
|
|
display: none !important;
|
|
content: none !important;
|
|
}
|
|
`;
|
|
document.head.appendChild(style);
|
|
}
|
|
};
|
|
|
|
// 1.5. Masquer complètement toutes les scrollbars
|
|
const hideAllScrollbars = () => {
|
|
let style = document.getElementById('aggressive-fix-scrollbar') as HTMLStyleElement | null;
|
|
if (!style) {
|
|
style = document.createElement('style');
|
|
style.id = 'aggressive-fix-scrollbar';
|
|
style.textContent = `
|
|
/* Masquer toutes les scrollbars */
|
|
::-webkit-scrollbar {
|
|
width: 0px !important;
|
|
height: 0px !important;
|
|
display: none !important;
|
|
}
|
|
::-webkit-scrollbar-track {
|
|
display: none !important;
|
|
}
|
|
::-webkit-scrollbar-thumb {
|
|
display: none !important;
|
|
}
|
|
* {
|
|
scrollbar-width: none !important;
|
|
scrollbar-color: transparent transparent !important;
|
|
}
|
|
`;
|
|
document.head.appendChild(style);
|
|
}
|
|
};
|
|
|
|
// 2. Supprimer toutes les bordures verticales
|
|
const removeVerticalBorders = () => {
|
|
const style = document.createElement('style');
|
|
style.id = 'aggressive-fix-borders';
|
|
style.textContent = `
|
|
*:not(input):not(textarea):not(select):not(button):not([class*="input"]):not([class*="Input"]) {
|
|
border-left: none !important;
|
|
border-right: none !important;
|
|
}
|
|
*::before,
|
|
*::after {
|
|
border-left: none !important;
|
|
border-right: none !important;
|
|
}
|
|
html, body {
|
|
border-right: none !important;
|
|
margin-right: 0 !important;
|
|
padding-right: 0 !important;
|
|
overflow-x: hidden !important;
|
|
}
|
|
`;
|
|
document.head.appendChild(style);
|
|
};
|
|
|
|
// 3. Masquer tous les éléments suspects
|
|
const hideSuspiciousElements = () => {
|
|
const allElements = document.querySelectorAll('*');
|
|
let hiddenCount = 0;
|
|
|
|
allElements.forEach((el) => {
|
|
const htmlEl = el as HTMLElement;
|
|
const computed = window.getComputedStyle(htmlEl);
|
|
const rect = htmlEl.getBoundingClientRect();
|
|
|
|
// Masquer les éléments très étroits et hauts
|
|
if (rect.width > 0 && rect.width < 10 && rect.height > window.innerHeight * 0.3) {
|
|
htmlEl.style.setProperty('display', 'none', 'important');
|
|
hiddenCount++;
|
|
console.log(`[AggressiveFix] Masqué élément suspect: ${el.tagName}${el.id ? '#' + el.id : ''} (${rect.width}px x ${rect.height}px)`);
|
|
}
|
|
|
|
// Masquer les éléments sur le bord droit
|
|
const isOnRightEdge = rect.right >= window.innerWidth - 10 && rect.right <= window.innerWidth + 10;
|
|
if (isOnRightEdge && rect.width < 20 && rect.height > window.innerHeight * 0.2) {
|
|
htmlEl.style.setProperty('display', 'none', 'important');
|
|
hiddenCount++;
|
|
console.log(`[AggressiveFix] Masqué élément sur bord droit: ${el.tagName}${el.id ? '#' + el.id : ''}`);
|
|
}
|
|
});
|
|
|
|
if (hiddenCount > 0) {
|
|
console.log(`[AggressiveFix] ${hiddenCount} éléments suspects masqués`);
|
|
}
|
|
};
|
|
|
|
// 4. Supprimer tous les gradients verticaux
|
|
const removeVerticalGradients = () => {
|
|
const allElements = document.querySelectorAll('*');
|
|
let fixedCount = 0;
|
|
|
|
allElements.forEach((el) => {
|
|
const htmlEl = el as HTMLElement;
|
|
const computed = window.getComputedStyle(htmlEl);
|
|
const bgImage = computed.backgroundImage || '';
|
|
const inlineBg = htmlEl.style.backgroundImage || '';
|
|
|
|
if ((bgImage.includes('90deg') || inlineBg.includes('90deg')) &&
|
|
(bgImage.includes('linear-gradient') || bgImage.includes('repeating-linear-gradient'))) {
|
|
htmlEl.style.setProperty('background-image', 'none', 'important');
|
|
fixedCount++;
|
|
}
|
|
});
|
|
|
|
if (fixedCount > 0) {
|
|
console.log(`[AggressiveFix] ${fixedCount} gradients verticaux supprimés`);
|
|
}
|
|
};
|
|
|
|
// 5. Observer les nouveaux éléments ajoutés
|
|
const observeNewElements = () => {
|
|
const observer = new MutationObserver((mutations) => {
|
|
mutations.forEach((mutation) => {
|
|
mutation.addedNodes.forEach((node) => {
|
|
if (node.nodeType === Node.ELEMENT_NODE) {
|
|
const element = node as HTMLElement;
|
|
const computed = window.getComputedStyle(element);
|
|
const rect = element.getBoundingClientRect();
|
|
|
|
// Masquer immédiatement les nouveaux éléments suspects
|
|
if (rect.width > 0 && rect.width < 10 && rect.height > window.innerHeight * 0.3) {
|
|
element.style.setProperty('display', 'none', 'important');
|
|
}
|
|
|
|
// Supprimer les gradients verticaux
|
|
const bgImage = computed.backgroundImage || '';
|
|
if (bgImage.includes('90deg') && bgImage.includes('linear-gradient')) {
|
|
element.style.setProperty('background-image', 'none', 'important');
|
|
}
|
|
}
|
|
});
|
|
});
|
|
});
|
|
|
|
observer.observe(document.body, {
|
|
childList: true,
|
|
subtree: true,
|
|
attributes: true,
|
|
attributeFilter: ['style', 'class'],
|
|
});
|
|
};
|
|
|
|
// Appliquer tous les fixes
|
|
removeBodyAfter();
|
|
hideAllScrollbars();
|
|
removeVerticalBorders();
|
|
hideSuspiciousElements();
|
|
removeVerticalGradients();
|
|
observeNewElements();
|
|
|
|
// Réappliquer périodiquement
|
|
setInterval(() => {
|
|
hideSuspiciousElements();
|
|
removeVerticalGradients();
|
|
}, 2000);
|
|
|
|
console.log('[AggressiveFix] Fix agressif appliqué avec succès');
|
|
}
|
|
|
|
// DÉSACTIVÉ : Ne plus auto-exécuter
|
|
// Le problème réel a été corrigé dans les styles des composants Input
|