@hgdc/ui 0.47.0 → 0.48.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Délai entre le clic vers un autre produit et le H : une page prérendue s'affiche avant (une ou
3
+ * deux images), le H n'apparaît alors jamais ; une page à charger le montre aussitôt après.
4
+ */
5
+ export declare const PRODUCT_LEAVE_DELAY_MS = 100;
6
+ export declare function useProductLeave(): {
7
+ leaving: boolean;
8
+ leave: () => void;
9
+ };
@@ -0,0 +1,32 @@
1
+ import { useCallback, useEffect, useRef, useState } from "react";
2
+ /**
3
+ * Délai entre le clic vers un autre produit et le H : une page prérendue s'affiche avant (une ou
4
+ * deux images), le H n'apparaît alors jamais ; une page à charger le montre aussitôt après.
5
+ */
6
+ export const PRODUCT_LEAVE_DELAY_MS = 100;
7
+ export function useProductLeave() {
8
+ const [leaving, setLeaving] = useState(false);
9
+ // Après `PRODUCT_LEAVE_DELAY_MS` seulement : une page prérendue au survol s'affiche avant, sans
10
+ // que le H apparaisse (ADR 0020). Sinon le H couvre le contenu jusqu'au départ de la page.
11
+ const leaveTimer = useRef(undefined);
12
+ const leave = useCallback(() => {
13
+ window.clearTimeout(leaveTimer.current);
14
+ leaveTimer.current = window.setTimeout(() => setLeaving(true), PRODUCT_LEAVE_DELAY_MS);
15
+ }, []);
16
+ useEffect(() => {
17
+ // Retour arrière depuis l'autre produit (cache de page) : la page revient telle quelle.
18
+ const onPageShow = (event) => {
19
+ if (!event.persisted)
20
+ return;
21
+ window.clearTimeout(leaveTimer.current);
22
+ setLeaving(false);
23
+ delete document.documentElement.dataset.hgdcSwitching;
24
+ };
25
+ window.addEventListener("pageshow", onPageShow);
26
+ return () => {
27
+ window.removeEventListener("pageshow", onPageShow);
28
+ window.clearTimeout(leaveTimer.current);
29
+ };
30
+ }, []);
31
+ return { leaving, leave };
32
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hgdc/ui",
3
- "version": "0.47.0",
3
+ "version": "0.48.0",
4
4
  "description": "Interface de la H Collection : jetons de la DA, thèmes, polices et composants.",
5
5
  "license": "UNLICENSED",
6
6
  "homepage": "https://github.com/hugogebel-boop/hgdc-kit/tree/main/packages/ui#readme",