API & CSS

Utilisation, save/load, classes CSS, référence complète

Utilisation

HTML — la page doit contenir
<div class="rdac"></div>
JS — instanciation
import Redac     from '/js/redac/redac.js'
import It_bold   from '/js/redac/it_bold.js'
import It_italic from '/js/redac/it_italic.js'

const redac = new Redac({
    inline_tools: {
        bold:   { class: It_bold },
        italic: { class: It_italic }
    }
})
Les fichiers .js sont des ES modules. Le script doit avoir type="module". L'extension .js est obligatoire dans les imports (nginx ne sert pas les .mjs avec le bon MIME type).

save()

const json = await redac.save()
// Promise<string> — JSON sérialisé, blocs vides exclus

Format de sortie :

{
    "time": 1740000000000,
    "blocks": [
        {
            "type": "paragraph",
            "data": { "text": "Bonjour <strong>monde</strong> !" }
        },
        {
            "type": "paragraph",
            "data": { "text": "Deuxième bloc", "classes": "lead mt-3" },
            "id_attr": "intro"
        }
    ]
}
ChampPrésenceDescription
timeToujoursTimestamp Unix en ms
blocks[].typeToujoursType du bloc : 'paragraph', etc.
blocks[].data.textToujours (paragraph)innerHTML du bloc
blocks[].id_attrSi défini via TuneAttribut id custom pour le rendu HTML
blocks[].data.classesSi défini via TuneClasses CSS custom (ex: lead mt-3)

load()

redac.load(json_string)
// Remplace le contenu courant par le document JSON
// Fallback : si aucun bloc valide → un bloc vide est créé

Pour chaque bloc du JSON, load() cherche dans sa type_map la classe correspondante et appelle Block_class.load(saved). Les champs id_attr et data.classes sont restaurés sur le DOM après le rendu.

Pour qu'un type de bloc soit chargeable, il doit implémenter static load(saved) et être enregistré dans la type_map de Redac.load() : { paragraph: Paragraph, heading: Heading, ... }

Raccourcis clavier

ToucheComportement
Enter Coupe le bloc au curseur. Le texte avant le curseur reste dans le bloc courant, le texte après passe dans un nouveau bloc inséré juste après. Si le curseur est en fin de ligne → nouveau bloc vide.

Classes CSS — référence

Tout le CSS de Rédac utilise le préfixe rdac-. Le CSS de référence est dans app/views/demo/redac/index.php.

ClasseÉlémentRôle
.rdacContainer éditeurmin-height, cursor:text
.rdac-blockChaque blocposition:relative, display:flex, align-items:flex-start
.rdac-toolsZone + et ⋮Flex item gauche (52px), opacity:0→1 au hover/focus-within
.rdac-tool-btnBoutons + et ⋮22×22px, sans border, hover cyan
.rdac-contentZone éditableFlex item droit (flex:1), outline:none au focus
.rdac-tune-ddDropdown Tuneposition:absolute; left:0; top:26px, z-index 1000
.rdac-tune-btnBoutons dans dropdownFull-width, fond transparent
.rdac-dangerModificateurCouleur rouge — appliqué sur le bouton Supprimer
.rdac-tune-sepSéparateur <hr>Entre les actions et les inputs id/class
.rdac-tune-fieldLigne label+inputFlex row, gap 6px
.rdac-tune-inputInput id ou classFond sombre, monospace, border cyan au focus
.rdac-tune-applyBouton AppliquerFull-width, couleur cyan
.rdac-inline-menuBarre inlineposition:absolute dans body, flex, z-index 1000