From d9f4b0f49d5f64aa834bf2311548ee5788be723f Mon Sep 17 00:00:00 2001 From: Julien Bouquillon Date: Fri, 16 Dec 2022 01:22:42 +0100 Subject: [PATCH 1/2] fix(Breadcrumb): classes+i18n --- src/Breadcrumb.tsx | 48 ++++++++++++++++++++++++++++++++++------------ 1 file changed, 36 insertions(+), 12 deletions(-) diff --git a/src/Breadcrumb.tsx b/src/Breadcrumb.tsx index 2d3a79bc5..81383c560 100644 --- a/src/Breadcrumb.tsx +++ b/src/Breadcrumb.tsx @@ -1,18 +1,19 @@ import React, { memo, forwardRef, useId } from "react"; import { symToStr } from "tsafe/symToStr"; +import { assert } from "tsafe/assert"; +import type { Equals } from "tsafe"; + import { RegisteredLinkProps, useLink } from "./lib/routing"; +import { createComponentI18nApi } from "./lib/i18n"; import { fr } from "./lib"; import { cx } from "./lib/tools/cx"; -// We make users import dsfr.css, so we don't need to import the scoped CSS -// but in the future if we have a complete component coverage it -// we could stop requiring users to import the hole CSS and only import on a -// per component basis. import "./dsfr/component/breadcrumb/breadcrumb.css"; export type BreadcrumbProps = { className?: string; links: BreadcrumbProps.Link[]; + classes?: Partial>; }; export namespace BreadcrumbProps { @@ -23,7 +24,7 @@ export namespace BreadcrumbProps { }; } -//Longueur et lisibilité : Afin qu’il reste lisible, évitez que le fil d’Ariane soit trop long et passe sur plusieurs lignes. +// Note DSFR: Longueur et lisibilité : Afin qu’il reste lisible, évitez que le fil d’Ariane soit trop long et passe sur plusieurs lignes. // Si les titres de page de votre site sont longs, nous conseillons de n’afficher que les 4 premiers mots du nom de la page courante et d’indiquer que l’élément est tronqué par l’affichage de “…” const trimText = (label: string) => { if (label && label.split(" ").length > 4) { @@ -35,7 +36,11 @@ const trimText = (label: string) => { /** @see */ export const Breadcrumb = memo( forwardRef((props, ref) => { - const { links, className, ...rest } = props; + const { links, className, classes = {}, ...rest } = props; + + assert>(); + + const { t } = useTranslation(); const { Link } = useLink(); const breadcrumbId = useId(); @@ -43,19 +48,19 @@ export const Breadcrumb = memo(