From 9a8f28bbcea52068ee6ea2e58ba5735eafb72d4c Mon Sep 17 00:00:00 2001 From: z3n Date: Tue, 9 Jun 2026 12:51:28 +0000 Subject: [PATCH] =?UTF-8?q?feat(browse):=20recherche=20unifi=C3=A9e=20doss?= =?UTF-8?q?iers=20+=20APIs=20+=20fix=20ic=C3=B4nes=20DSFR?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Recherche simultanée dans les dossiers (filtrage client-side) et les APIs (backend) via forkJoin — affiche dossiers en tuiles puis APIs en cartes, avec labels "Dossiers"/"APIs" si les deux ont des résultats - Loader instantané dès la frappe (avant le debounce 400ms) - Fix angular.json : ajout du mapping dist/icons/ → assets/dsfr/icons/ pour servir les SVG référencés par le CSS DSFR (tous les icônes étaient cassés car le chemin relatif ../../icons/ donnait 404) Generated with [Claude Code](https://claude.ai/code) via [Happy](https://happy.engineering) Co-Authored-By: Claude Co-Authored-By: Happy --- front-public/angular.json | 5 + front-public/src/app/app.component.ts | 24 +--- front-public/src/app/app.routes.ts | 6 +- .../src/app/pages/browse/browse.component.ts | 125 ++++++++++++------ 4 files changed, 97 insertions(+), 63 deletions(-) diff --git a/front-public/angular.json b/front-public/angular.json index a24f508..fc963d8 100644 --- a/front-public/angular.json +++ b/front-public/angular.json @@ -36,6 +36,11 @@ "glob": "**/*", "input": "node_modules/@gouvfr/dsfr/dist/utility", "output": "assets/dsfr/utility" + }, + { + "glob": "**/*", + "input": "node_modules/@gouvfr/dsfr/dist/icons", + "output": "assets/dsfr/icons" } ], "styles": ["src/styles.scss"], diff --git a/front-public/src/app/app.component.ts b/front-public/src/app/app.component.ts index 22399e2..2f00423 100644 --- a/front-public/src/app/app.component.ts +++ b/front-public/src/app/app.component.ts @@ -1,10 +1,10 @@ import { Component } from '@angular/core'; -import { RouterOutlet, RouterLink, RouterLinkActive } from '@angular/router'; +import { RouterOutlet, RouterLink } from '@angular/router'; @Component({ selector: 'app-root', standalone: true, - imports: [RouterOutlet, RouterLink, RouterLinkActive], + imports: [RouterOutlet, RouterLink], template: `
diff --git a/front-public/src/app/app.routes.ts b/front-public/src/app/app.routes.ts index 5bdfc7c..ea0aad2 100644 --- a/front-public/src/app/app.routes.ts +++ b/front-public/src/app/app.routes.ts @@ -3,8 +3,8 @@ import { Routes } from '@angular/router'; export const routes: Routes = [ { path: '', - redirectTo: 'browse', - pathMatch: 'full', + loadComponent: () => + import('./pages/browse/browse.component').then((m) => m.BrowseComponent), }, { path: 'browse', @@ -38,6 +38,6 @@ export const routes: Routes = [ }, { path: '**', - redirectTo: 'browse', + redirectTo: '', }, ]; diff --git a/front-public/src/app/pages/browse/browse.component.ts b/front-public/src/app/pages/browse/browse.component.ts index 374d207..2e60fed 100644 --- a/front-public/src/app/pages/browse/browse.component.ts +++ b/front-public/src/app/pages/browse/browse.component.ts @@ -14,6 +14,7 @@ import { ActivatedRoute } from '@angular/router'; import { CategoryService } from '../../core/category.service'; import { ApiService } from '../../core/api.service'; import { CategoryBrowseResponse, Category, CategoryWithCounts, ApiEntryListItem } from '@datacat/shared'; +import { forkJoin } from 'rxjs'; @Component({ selector: 'app-browse', @@ -26,7 +27,7 @@ import { CategoryBrowseResponse, Category, CategoryWithCounts, ApiEntryListItem