@hgdc/ui 0.74.0 → 0.74.1

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.
@@ -27,7 +27,11 @@ export declare const SESSION_OPEN_KEY_PREFIX = "hgdc-session-open:";
27
27
  * déconnexion (changer de compte, poste partagé) n'est jamais défaite sans la personne.
28
28
  */
29
29
  export declare const SESSION_OPEN_PAUSED_KEY = "hgdc-session-open:paused";
30
- /** À la déconnexion d'un module : plus d'ouverture en arrière-plan jusqu'à la prochaine connexion. */
30
+ /**
31
+ * À la déconnexion d'un module : plus d'ouverture en arrière-plan jusqu'à la prochaine connexion, et
32
+ * les cadres d'ouverture en cours sont retirés (un cadre en vol reposerait la session d'un module
33
+ * juste après la déconnexion).
34
+ */
31
35
  export declare function pauseSessionOpening(win?: Window | null): void;
32
36
  /** Marque d'un lien de la barre vers un autre produit servi sous la même origine : prérendu au survol. */
33
37
  export declare const PRODUCT_PRERENDER_ATTRIBUTE = "data-hgdc-prerender";
@@ -38,7 +38,13 @@ export const SESSION_OPEN_KEY_PREFIX = "hgdc-session-open:";
38
38
  * déconnexion (changer de compte, poste partagé) n'est jamais défaite sans la personne.
39
39
  */
40
40
  export const SESSION_OPEN_PAUSED_KEY = "hgdc-session-open:paused";
41
- /** À la déconnexion d'un module : plus d'ouverture en arrière-plan jusqu'à la prochaine connexion. */
41
+ /** Marque des cadres d'ouverture (`startSessionOpening`), retirés par `pauseSessionOpening`. */
42
+ const SESSION_OPEN_FRAME_ATTRIBUTE = "data-hgdc-session-open";
43
+ /**
44
+ * À la déconnexion d'un module : plus d'ouverture en arrière-plan jusqu'à la prochaine connexion, et
45
+ * les cadres d'ouverture en cours sont retirés (un cadre en vol reposerait la session d'un module
46
+ * juste après la déconnexion).
47
+ */
42
48
  export function pauseSessionOpening(win = typeof window === "undefined" ? null : window) {
43
49
  try {
44
50
  win?.localStorage.setItem(SESSION_OPEN_PAUSED_KEY, String(Date.now()));
@@ -46,6 +52,8 @@ export function pauseSessionOpening(win = typeof window === "undefined" ? null :
46
52
  catch {
47
53
  // Stockage refusé : l'ouverture n'a pas lieu non plus sans lui (`startSessionOpening`).
48
54
  }
55
+ for (const frame of win?.document.querySelectorAll(`iframe[${SESSION_OPEN_FRAME_ATTRIBUTE}]`) ?? [])
56
+ frame.remove();
49
57
  }
50
58
  /** Marque d'un lien de la barre vers un autre produit servi sous la même origine : prérendu au survol. */
51
59
  export const PRODUCT_PRERENDER_ATTRIBUTE = "data-hgdc-prerender";
@@ -219,9 +227,10 @@ export function startSessionOpening(bases, doc = document) {
219
227
  let stopped = false;
220
228
  const next = () => {
221
229
  const base = queue.shift();
222
- if (stopped || base === undefined)
230
+ // Relu avant chaque cadre : une déconnexion pendant la file l'arrête.
231
+ if (stopped || base === undefined || openingPaused(win))
223
232
  return;
224
- openHiddenFrame(doc, `${base}${SESSION_OPEN_PATH}`, next);
233
+ openHiddenFrame(doc, `${base}${SESSION_OPEN_PATH}`, next).setAttribute(SESSION_OPEN_FRAME_ATTRIBUTE, "");
225
234
  };
226
235
  next();
227
236
  return () => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hgdc/ui",
3
- "version": "0.74.0",
3
+ "version": "0.74.1",
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",