Formulaires et saisie

Retour sur la force du mot de passe du formulaire de demande d’exposition

Dans le contexte d’un formulaire de demande d’exposition, fournir un retour sur la robustesse du mot de passe : contenu réel, contrôles actionnables, retour d’état clair et mise en page multiformat.

Formulaires et saisieRetour sur la robustesse du mot de passeHTMLCSSJavaScript
Après activation de JavaScript, ce cas peut être modifié, exécuté et enregistré. Code source fixe ci-dessous :
<!doctype html>
<html lang="fr" dir="ltr">
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>Retour sur la force du mot de passe du formulaire de demande d’exposition</title>
  <style>
    :root { --ink:#30231f; --paper:#f9efe5; --accent:#8b6fb0; --secondary:#d7a971; --line:color-mix(in srgb, var(--ink) 18%, transparent); --shadow:0 24px 60px color-mix(in srgb, var(--ink) 16%, transparent); color-scheme:light; }
    * { box-sizing:border-box; }
    html { min-width:320px; background:var(--paper); }
    body { min-height:100vh; margin:0; overflow-x:hidden; color:var(--ink); font-family:"Hiragino Maru Gothic ProN","PingFang SC",sans-serif; background:radial-gradient(circle at 15% 10%,color-mix(in srgb,var(--secondary) 35%,transparent) 0 9%,transparent 10%),radial-gradient(circle at 90% 75%,color-mix(in srgb,var(--accent) 18%,transparent) 0 12%,transparent 13%),var(--paper); }
    button,input,select,textarea { color:inherit; font:inherit; }
    button,[role="button"],input,select,textarea { accent-color:var(--accent); }
    button { cursor:pointer; }
    button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,[tabindex]:focus-visible { outline:3px solid var(--accent); outline-offset:3px; }
    [hidden] { display:none !important; }
    @media (max-width:700px) { .mast h1 { line-height:1.08 !important; letter-spacing:-.035em !important; overflow-wrap:anywhere; } }
    @media (prefers-reduced-motion:reduce) { *,*::before,*::after { scroll-behavior:auto !important; animation-duration:.01ms !important; animation-iteration-count:1 !important; transition-duration:.01ms !important; } }
    .page{width:min(1140px,calc(100% - 28px));margin:auto;padding:54px 0}.mast{display:flex;justify-content:space-between;align-items:center;gap:24px;margin:0 12px 28px}.mast h1{font-family:"Hiragino Maru Gothic ProN","PingFang SC",sans-serif;font-weight:900;font-size:clamp(38px,8vw,82px);letter-spacing:-.035em;margin:0;line-height:.98}.eyebrow{display:inline-flex;padding:7px 12px;border-radius:999px;color:var(--paper);background:var(--accent);font-weight:900}.intro{max-width:620px;line-height:1.65}.scenario{padding:12px 18px;border-radius:999px;background:var(--secondary);box-shadow:0 7px 0 color-mix(in srgb,var(--ink) 18%,transparent);font-weight:900}.demo{border-radius:46px 18px 46px 18px;box-shadow:0 18px 0 color-mix(in srgb,var(--secondary) 45%,transparent);position:relative;min-height:390px;overflow:hidden;padding:clamp(22px,5vw,54px);background:color-mix(in srgb,var(--paper) 90%,#fff)}@media(max-width:700px){.mast{display:grid}.page{width:calc(100% - 16px);padding:18px 0}.demo{padding:17px}}
    .panel{padding:24px;border-block:1px solid var(--ink);background:transparent}.stack{display:grid;gap:22px}.row{display:flex;flex-wrap:wrap;gap:16px}.action{padding:8px 0;border:0;border-bottom:1px solid currentColor;background:transparent;letter-spacing:.08em}.action.primary,.action.is-active{color:var(--accent);border-bottom-width:4px}.status{min-height:28px;margin-top:20px;font-style:italic}.metric{font-family:Didot,serif;font-size:clamp(38px,8vw,76px)}.muted{max-width:54ch;line-height:1.8}.meter{position:relative;height:3px;background:var(--line)}.meter>i{position:absolute;inset:0 auto 0 0;background:var(--accent)}.chip{padding-bottom:3px;border-bottom:1px solid var(--ink);font-size:13px}
    .composition-index{position:relative;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:18px}.index-mark{display:grid;align-content:space-between;width:76px;padding:16px 10px;border:1px solid var(--line);color:var(--accent);background:color-mix(in srgb,var(--paper) 82%,transparent);text-align:center}.index-mark strong{font:900 34px/1 ui-monospace,monospace}.index-mark span{writing-mode:vertical-rl;font:800 10px/1.2 ui-monospace,monospace;letter-spacing:.18em}.composition-index .demo{grid-column:1;grid-row:1}.composition-index::before{content:"";position:absolute;left:-12px;top:38px;width:5px;height:45%;background:linear-gradient(var(--accent),var(--secondary))}@media(max-width:700px){.composition-index{grid-template-columns:1fr}.index-mark{grid-row:1;width:auto;grid-template-columns:auto 1fr}.index-mark span{writing-mode:horizontal-tb}.composition-index .demo{grid-row:2}}
    .password-lab{display:grid;gap:16px;max-width:650px;margin:auto}.password-lab h2{margin:.2em 0}.password-lab label{display:grid;gap:8px;font-weight:800}.password-wrap{display:grid;grid-template-columns:1fr auto}.password-wrap input,.password-wrap button{min-height:46px;padding:10px;border:1px solid var(--line);background:var(--paper)}.password-wrap input{border-radius:10px 0 0 10px}.password-wrap button{border-radius:0 10px 10px 0}.password-lab ul{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;padding:0;list-style:none}.password-lab li::before{content:"○ ";color:var(--line)}.password-lab li.is-met::before{content:"● ";color:var(--accent)}#passwordStrength i{width:0;transition:width .2s ease}@media(max-width:540px){.password-lab ul{grid-template-columns:1fr}}.workflow-dispatch{display:grid;grid-template-columns:minmax(210px,.48fr) minmax(0,1.52fr);gap:18px}.dispatch-console{display:grid;align-content:start;gap:16px;padding:22px;border:1px solid var(--line);border-radius:18px;background:color-mix(in srgb,var(--secondary) 12%,var(--paper))}.dispatch-console h2{margin:.2em 0}.dispatch-console form,.dispatch-console label{display:grid;gap:7px}.dispatch-console input,.dispatch-console select{min-width:0;width:100%;padding:10px;border:1px solid var(--line);border-radius:8px;background:var(--paper)}.dispatch-console fieldset{display:flex;gap:12px;border:1px solid var(--line);border-radius:10px}.dispatch-console fieldset label{display:flex;align-items:center}.dispatch-workbench{--dispatch-load:.22;min-width:0;padding:14px;border-left:8px solid color-mix(in srgb,var(--accent) calc(var(--dispatch-load)*100%),var(--line));background:linear-gradient(90deg,color-mix(in srgb,var(--accent) 8%,transparent),transparent 28%)}.dispatch-workbench[data-dispatch-priority="urgent"]{box-shadow:inset 0 0 0 2px var(--accent)}@media(max-width:900px){.workflow-dispatch{grid-template-columns:1fr}.dispatch-console{order:2}}.similarity-shell{--similarity-density:100;display:grid;gap:18px;padding:clamp(18px,4vw,28px);border:1px solid var(--line);border-radius:28px;background:color-mix(in srgb,var(--paper) 88%,transparent);box-shadow:var(--shadow)}.similarity-head{display:flex;justify-content:space-between;gap:18px;align-items:end}.similarity-head h2{margin:.2em 0}.similarity-head output{padding:10px 14px;border-left:4px solid var(--accent);font-weight:900}.similarity-layout{display:grid;grid-template-columns:minmax(220px,.58fr) minmax(0,1.42fr);gap:16px}.similarity-console{display:grid;align-content:start;gap:16px;padding:18px;border:1px solid var(--line);border-radius:20px;background:color-mix(in srgb,var(--secondary) 10%,var(--paper))}.similarity-modes{display:grid;gap:8px;padding:0;border:0}.similarity-console label{display:grid;gap:8px}.similarity-console input[type="range"]{width:100%}.similarity-pin{display:flex;gap:10px;align-items:center}.similarity-checklist,.similarity-log{display:grid;gap:8px;padding-left:18px;margin:0}.similarity-checklist li.is-done{color:var(--accent);font-weight:900}.similarity-stage{display:grid;gap:14px;min-width:0}.similarity-deck{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.similarity-deck article{display:grid;gap:6px;padding:14px;border:1px solid var(--line);border-radius:16px;background:var(--paper);transition:transform .2s ease,box-shadow .2s ease,background .2s ease}.similarity-deck article[data-active="true"]{transform:translateY(-4px);box-shadow:0 14px 28px color-mix(in srgb,var(--accent) 16%,transparent);background:color-mix(in srgb,var(--secondary) 14%,var(--paper))}.similarity-deck span{font:800 11px/1 ui-monospace,monospace;letter-spacing:.16em}.similarity-core-shell{min-width:0;padding:clamp(14px,3vw,22px);overflow:auto;border:1px dashed var(--line);border-radius:22px;background:linear-gradient(180deg,color-mix(in srgb,var(--secondary) 8%,transparent),transparent 80%)}.similarity-core-shell>*{display:block;width:calc(10000%/var(--similarity-density));max-width:none;transform:scale(calc(var(--similarity-density)/100));transform-origin:top center}.similarity-shell[data-review-state="compare"] .similarity-core-shell{border-style:solid;box-shadow:inset 0 0 0 3px color-mix(in srgb,var(--accent) 18%,transparent)}.similarity-shell[data-review-state="compare"] .similarity-deck article{opacity:.72}.similarity-shell[data-review-state="compare"] .similarity-deck article[data-active="true"]{opacity:1}.similarity-shell[data-review-state="audit"] .similarity-console{color:var(--paper);background:var(--ink)}.similarity-shell[data-review-state="audit"] .similarity-console .action{color:var(--paper);border-color:var(--paper)}.similarity-shell[data-review-state="audit"] .similarity-log li{border-left:3px solid var(--secondary);padding-left:8px}.similarity-shell[data-pinned="true"] .similarity-core-shell{outline:4px solid color-mix(in srgb,var(--accent) 35%,transparent);outline-offset:2px}@media(max-width:920px){.similarity-layout{grid-template-columns:1fr}.similarity-deck{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:560px){.similarity-head{align-items:stretch;flex-direction:column}.similarity-deck{grid-template-columns:1fr}.similarity-core-shell>*{width:100%;transform:none}}
  </style>
</head>
<body data-aesthetic="playful" data-composition="field-index">
  <main class="page">
    <header class="mast"><div><span class="eyebrow">playful / Retour sur la robustesse du mot de passe / BEGINNER</span><h1>Retour sur la force du mot de passe du formulaire de demande d’exposition</h1><p class="intro">Dans le contexte d’un formulaire de demande d’exposition, fournir un retour sur la robustesse du mot de passe : contenu réel, contrôles actionnables, retour d’état clair et mise en page multiformat.</p></div><span class="scenario">Formulaire de demande d’exposition</span></header>
    <div class="composition-index"><section class="demo" aria-label="Zone d’interaction de retour sur la robustesse du mot de passe du formulaire de demande d’exposition"><div id="similarityShell" class="similarity-shell" data-review-state="focus"><header class="similarity-head"><div><span class="eyebrow">Formulaire de demande d’exposition / REVIEW STUDIO</span><h2>Revue du tableau de bord du retour sur la robustesse du mot de passe</h2><p>Placez le cas principal dans une enveloppe de révision séparée et consignez en plus le mode d’observation, les points de contrôle et la conclusion actuelle.</p></div><output id="similarityState">Prêt à lancer la révision</output></header><div class="similarity-layout"><aside class="similarity-console"><fieldset class="similarity-modes"><legend>Vue de réexamen</legend><button class="action primary" type="button" data-review-view="focus">Mettre au point la vue principale</button><button class="action" type="button" data-review-view="compare">Liste de contrôle</button><button class="action" type="button" data-review-view="audit">Consigner la scène</button></fieldset><label>Observer la densité<input id="similarityDensity" type="range" min="84" max="124" value="100"><output id="similarityDensityValue">100%</output></label><label class="similarity-pin"><input id="similarityPin" type="checkbox"> Figer le point de contrôle actuel</label><ol id="similarityChecklist" class="similarity-checklist"><li>Rappel du formulaire de demande d’exposition</li><li>favori du formulaire de demande d’exposition</li><li>Vue d’ensemble du formulaire de demande d’exposition</li><li>Plan de demande de l’équipe d’exposition</li></ol><button id="similarityCapture" class="action primary" type="button">Point de contrôle enregistré</button><ol id="similarityLog" class="similarity-log"><li>En attente du premier enregistrement de contrôle</li></ol></aside><section class="similarity-stage"><div id="similarityDeck" class="similarity-deck"><article data-active="true"><span>01</span><strong>Rappel du formulaire de demande d’exposition</strong><p>Vérifier si les changements d’état sont visibles</p></article><article><span>02</span><strong>favori du formulaire de demande d’exposition</strong><p>Confirmer la cohérence entre l’entrée au clavier et le clic</p></article><article><span>03</span><strong>Vue d’ensemble du formulaire de demande d’exposition</strong><p>Vérifiez si la disposition se replie sur les écrans étroits</p></article><article><span>04</span><strong>Plan de demande de l’équipe d’exposition</strong><p>Enregistrer la conclusion de la révision en cours</p></article></div><div id="similarityCoreShell" class="similarity-core-shell"><div class="workflow-dispatch"><aside class="dispatch-console"><span class="eyebrow">Formulaire de demande d’exposition DISPATCH</span><h2>tableau de bord de la demande d’exposition</h2><form id="workflowDispatchForm"><label>Type de tâche<select id="workflowDispatchKind"><option>Données de base du formulaire de demande d’exposition</option><option>Documents complémentaires pour la demande d’événement</option><option>Confirmation finale du formulaire de demande d’exposition</option></select></label><label>Délai de traitement<input id="workflowDispatchAmount" type="number" min="1" max="9999" value="27"><span>heure</span></label><fieldset><legend>Priorité de traitement</legend><label><input type="radio" name="workflowPriority" value="normal" checked>Standard</label><label><input type="radio" name="workflowPriority" value="urgent">Urgent</label></fieldset><button class="action primary" type="submit">Confirmer l’envoi</button></form><label>Tâche en cours<select id="workflowDispatchActive" aria-label="Basculer la tâche en cours"><option value="1">Données de base du formulaire de demande d’exposition</option><option value="2">Documents complémentaires pour la demande d’événement</option></select></label><output id="workflowDispatchSummary">En attente de planification</output></aside><section id="workflowCore" class="workflow-core dispatch-workbench" data-dispatch-priority="normal"><!-- 11DZ_CORE_START:forms-input-password-strength --><form id="passwordForm" class="password-lab panel"><span class="eyebrow">PASSWORD STRENGTH</span><h2>Mot de passe de sécurité du formulaire de demande d’organisation</h2><label>Nouveau mot de passe <span class="password-wrap"><input id="passwordInput" type="password" minlength="8" autocomplete="new-password" aria-describedby="passwordRules" required><button id="togglePassword" type="button" aria-pressed="false" data-core-bridge="forms-input-password-strength">Afficher</button></span></label><div id="passwordStrength" class="meter" role="progressbar" aria-label="Force du mot de passe" aria-valuemin="0" aria-valuemax="4" aria-valuenow="0"><i></i></div><ul id="passwordRules"><li data-rule="length">au moins 8 caractères</li><li data-rule="case">Comprend à la fois des majuscules et des minuscules</li><li data-rule="number">Au moins un chiffre</li><li data-rule="symbol">Au moins un symbole</li></ul><button class="action primary" type="submit">Vérifier le mot de passe</button></form><!-- 11DZ_CORE_END --></section></div></div></section></div></div><p id="status" class="status" role="status" aria-live="polite"></p></section><aside class="index-mark" aria-hidden="true"><strong>05</strong><span>Demande d’organisation d’exposition FIELD INDEX</span></aside></div>
  </main>
  <script>
    'use strict';
    const statusOutput = document.querySelector('#status');
    const announce = message => { statusOutput.textContent = message; };
    /* 11DZ_CORE_SCRIPT_START:forms-input-password-strength */
const passwordInput=document.querySelector('#passwordInput');const passwordMeter=document.querySelector('#passwordStrength');const passwordRules={length:value=>value.length>=8,case:value=>/[a-z]/.test(value)&&/[A-Z]/.test(value),number:value=>/\d/.test(value),symbol:value=>/[^a-z0-9]/i.test(value)};function scorePassword(){const value=passwordInput.value;let score=0;Object.entries(passwordRules).forEach(([name,test])=>{const met=test(value);document.querySelector('[data-rule="'+name+'"]').classList.toggle('is-met',met);if(met)score+=1;});passwordMeter.setAttribute('aria-valuenow',String(score));passwordMeter.querySelector('i').style.width=(score/4*100)+'%';announce('Force du mot de passe '+score+' / 4');return score;}passwordInput.addEventListener('input',scorePassword);document.querySelector('#togglePassword').addEventListener('click',event=>{const visible=passwordInput.type==='text';passwordInput.type=visible?'password':'text';event.currentTarget.setAttribute('aria-pressed',String(!visible));event.currentTarget.textContent=visible?'Afficher':'Masquer';});document.querySelector('#passwordForm').addEventListener('submit',event=>{event.preventDefault();announce(scorePassword()===4?'Le mot de passe a passé la vérification locale de robustesse':'Veuillez satisfaire à toutes les règles de mot de passe');});
/* 11DZ_CORE_SCRIPT_END */
const workflowBridgeSpec={"name":"forms-input-password-strength","selector":"[data-core-bridge=\"forms-input-password-strength\"]","mode":"click","key":"Enter"};const workflowBridgeCore=document.querySelector('#workflowCore');const workflowBridgeControl=workflowBridgeCore.querySelector(workflowBridgeSpec.selector);if(!workflowBridgeControl)throw new Error('Missing core bridge: '+workflowBridgeSpec.name);const workflowBridgeControlledId=workflowBridgeControl.getAttribute('aria-controls');const workflowBridgeControlled=workflowBridgeControlledId?document.getElementById(workflowBridgeControlledId):null;workflowBridgeCore.dataset.workflowBridge=workflowBridgeSpec.name;workflowBridgeCore.dataset.workflowVersion='0';function workflowBridgeSerialize(){const visualNode=workflowBridgeCore.firstElementChild||workflowBridgeCore;const visual=getComputedStyle(visualNode);const outputs=[...workflowBridgeCore.querySelectorAll('output,[role="status"],[aria-live],meter,progress')].map(node=>node.textContent.trim()+'|'+node.getAttribute('aria-valuenow')+'|'+node.getAttribute('value'));const canvas=[...workflowBridgeCore.querySelectorAll('canvas')].map(node=>{try{return node.toDataURL().slice(-160);}catch{return 'canvas-unavailable';}});return JSON.stringify({html:workflowBridgeCore.innerHTML,status:statusOutput.textContent,outputs,canvas,visual:[visual.display,visual.visibility,visual.opacity,visual.transform,visual.filter,visual.backgroundColor,visual.width,visual.height],scroll:workflowBridgeSpec.mode==='scroll'?workflowBridgeControl.scrollTop:null});}let workflowBridgeLastEffect=workflowBridgeSerialize();function workflowBridgeSummary(){const label=(workflowBridgeControl.getAttribute('aria-label')||workflowBridgeControl.textContent||workflowBridgeControl.value||workflowBridgeSpec.name).trim().replace(/\s+/g,' ').slice(0,72);return label+' · Version de base '+workflowBridgeCore.dataset.workflowVersion;}function workflowBridgeCommit(){const effect=workflowBridgeSerialize();if(effect===workflowBridgeLastEffect)return {changed:false,summary:workflowBridgeSummary()};workflowBridgeLastEffect=effect;workflowBridgeCore.dataset.workflowVersion=String(Number(workflowBridgeCore.dataset.workflowVersion||0)+1);return {changed:true,summary:workflowBridgeSummary()};}function workflowBridgeScheduleCommit(){queueMicrotask(workflowBridgeCommit);setTimeout(workflowBridgeCommit,0);}workflowBridgeControl.addEventListener("click",workflowBridgeScheduleCommit);const workflowBridgeStateTargets=new Set(workflowBridgeCore.querySelectorAll('dialog'));if(workflowBridgeControlled&&workflowBridgeCore.contains(workflowBridgeControlled))workflowBridgeStateTargets.add(workflowBridgeControlled);workflowBridgeStateTargets.forEach(target=>['close','cancel','toggle'].forEach(eventName=>target.addEventListener(eventName,workflowBridgeScheduleCommit)));function workflowBridgeActivate(){workflowBridgeControl.focus();workflowBridgeControl.click();const result=workflowBridgeCommit();setTimeout(workflowBridgeCommit,0);return result;}function workflowBridgeReset(){workflowBridgeCore.dataset.workflowVersion='0';workflowBridgeLastEffect=workflowBridgeSerialize();}
const workflowDispatchCore=document.querySelector('#workflowCore');const workflowDispatchForm=document.querySelector('#workflowDispatchForm');const workflowDispatchSelect=document.querySelector('#workflowDispatchActive');const workflowDispatchJobs=new Map([["1",{"label":"Données de base du formulaire de demande d’exposition","amount":12,"priority":"normal","touches":0}],["2",{"label":"Documents complémentaires pour la demande d’événement","amount":21,"priority":"urgent","touches":0}]]);let workflowDispatchSerial=workflowDispatchJobs.size;function workflowDispatchDrive(job,activate=false){workflowDispatchCore.dataset.dispatchPriority=job.priority;workflowDispatchCore.style.setProperty('--dispatch-load',Math.min(.95,.16+job.amount/120));const bridge=activate?workflowBridgeActivate():{changed:false,summary:workflowBridgeSummary()};document.querySelector('#workflowDispatchSummary').textContent=job.label+' · '+job.amount+' heure · '+bridge.summary;announce('Tâche actuelle du formulaire de demande d’exposition :'+job.label);}function workflowDispatchRender(activeId,activate=false){workflowDispatchSelect.replaceChildren(...[...workflowDispatchJobs].map(([id,job])=>{const option=document.createElement('option');option.value=id;option.textContent=job.label+(job.priority==='urgent'?' · Urgent':'');return option;}));workflowDispatchSelect.value=activeId;workflowDispatchDrive(workflowDispatchJobs.get(activeId),activate);}workflowDispatchForm.addEventListener('submit',event=>{event.preventDefault();const data=new FormData(workflowDispatchForm);const id=String(++workflowDispatchSerial);workflowDispatchJobs.set(id,{label:document.querySelector('#workflowDispatchKind').value,amount:Math.max(1,Number(document.querySelector('#workflowDispatchAmount').value)||1),priority:data.get('workflowPriority'),touches:0});workflowDispatchRender(id,true);});workflowDispatchSelect.addEventListener('change',()=>workflowDispatchDrive(workflowDispatchJobs.get(workflowDispatchSelect.value),true));workflowDispatchCore.addEventListener('focusin',()=>{const job=workflowDispatchJobs.get(workflowDispatchSelect.value);if(!job)return;job.touches+=1;document.querySelector('#workflowDispatchSummary').textContent=job.label+' · '+job.amount+' heure · '+workflowBridgeSummary();});workflowDispatchRender('1',false);
workflowBridgeReset();
const similarityShell=document.querySelector('#similarityShell');const similarityState=document.querySelector('#similarityState');const similarityDensity=document.querySelector('#similarityDensity');const similarityDensityValue=document.querySelector('#similarityDensityValue');const similarityPin=document.querySelector('#similarityPin');const similarityChecklistItems=[...document.querySelectorAll('#similarityChecklist li')];const similarityDeckItems=[...document.querySelectorAll('#similarityDeck article')];const similarityLog=document.querySelector('#similarityLog');const similarityNotes=["Rappel du formulaire de demande d’exposition","favori du formulaire de demande d’exposition","Vue d’ensemble du formulaire de demande d’exposition","Plan de demande de l’équipe d’exposition"];const similarityCore=document.querySelector('#workflowCore');let similarityCaptures=0;function similaritySetActive(index){similarityDeckItems.forEach((item,itemIndex)=>{if(itemIndex===index)item.setAttribute('data-active','true');else item.removeAttribute('data-active');});}function similarityRender(reason){const version=similarityCore?.dataset.workflowVersion||'0';const density=Number(similarityDensity.value);similarityShell.style.setProperty('--similarity-density',String(density));similarityShell.dataset.pinned=String(similarityPin.checked);similarityDensityValue.textContent=density+'%';similarityChecklistItems.forEach((item,index)=>item.classList.toggle('is-done',index<similarityCaptures));similaritySetActive(Math.min(similarityDeckItems.length-1,similarityCaptures%similarityDeckItems.length));similarityState.textContent=reason+' · Version de base '+version+(similarityPin.checked?' · Épinglé':'');}document.querySelectorAll('[data-review-view]').forEach(button=>button.addEventListener('click',()=>{document.querySelectorAll('[data-review-view]').forEach(item=>item.classList.toggle('primary',item===button));similarityShell.dataset.reviewState=button.dataset.reviewView;similarityRender('Basculé vers'+button.textContent);announce('Vue de vérification :'+button.textContent);}));similarityDensity.addEventListener('input',()=>{similarityRender('La densité d’observation a été mise à jour');announce('Observer la densité '+similarityDensity.value+'%');});similarityPin.addEventListener('change',()=>{similarityRender(similarityPin.checked?'Le point de contrôle actuel est figé':'Le point de contrôle actuel est déverrouillé');announce(similarityPin.checked?'Point de contrôle actuel épinglé':'Point de contrôle fixé annulé');});document.querySelector('#similarityCapture').addEventListener('click',()=>{const note=similarityNotes[similarityCaptures%similarityNotes.length];const version=similarityCore?.dataset.workflowVersion||'0';similarityCaptures+=1;const item=document.createElement('li');item.textContent='Point de contrôle '+similarityCaptures+' · '+note+' · Version de base '+version;const empty=similarityLog.querySelector('li')?.textContent==='En attente du premier enregistrement de contrôle';if(empty)similarityLog.replaceChildren(item);else similarityLog.prepend(item);while(similarityLog.children.length>6)similarityLog.lastElementChild.remove();similarityRender('Point de contrôle enregistré '+similarityCaptures);announce('Point de contrôle enregistré '+similarityCaptures+' · '+note);});similarityCore?.addEventListener('focusin',()=>similarityRender('Vue principale focalisée'));similarityCore?.addEventListener('click',()=>similarityRender('Interaction sur la vue principale'));similarityRender('Prêt à lancer la révision');
  </script>
</body>
</html>
Commentaires sur la pageVous avez découvert un problème ou avez une suggestion d’amélioration ?
Les fonctions de retour nécessitent l’utilisation de la version en ligne

Veuillez activer JavaScript dans la version en ligne avant de soumettre ; les fonctionnalités locales de l’outil ou du cas ne sont pas affectées.

Aller vers la version en ligne pour envoyer des commentaires