Gutenberg 23.7: corecții pentru editor, Galerie și Global Styles
Gutenberg 23.7 este disponibil ca plugin și rafinează în special experiența din editorul de blocuri. Actualizarea repară probleme vizibile de layout, clarifică modul dinamic al blocului Galerie și adaugă opțiuni experimentale, componente și corecții utile pentru dezvoltatorii de teme și extensii.
Poți testa versiunea direct în WordPress Playground sau o poți instala din pagina pluginului Gutenberg.
Corecții vizibile în editorul de blocuri
În această versiune, blocurile flotante nu mai ajung peste blocurile sticky. Inseratorul pentru un bloc gol apare corect în blocurile care își gestionează propria bară de instrumente, iar blocul Pullquote respectă în editor înălțimea personalizată a liniei, la fel ca în partea publică a site-ului.
Gutenberg readuce și înălțimile fixe pentru previzualizările de mobil și tabletă. Astfel, când verifici o pagină în aceste moduri, cadrul nu își mai schimbă dimensiunea în mod imprevizibil.

Modul dinamic al blocului Galerie folosește acțiunea Detach
Modul dinamic al blocului Galerie, introdus în Gutenberg 23.6, avea un buton de bară de instrumente numit „Convert to images”. Denumirea nu explica suficient ce urmează să facă acțiunea, așa că Gutenberg 23.7 îl redenumește „Detach”.
Când alegi Detach, editorul afișează acum o fereastră modală care explică efectul operației asupra imaginilor. Conversia din modul dinamic reprezintă și un singur pas în istoricul undo, ceea ce îți permite să revii printr-o singură acțiune.


Noutăți relevante pentru interfață și editare
Interfața pentru moștenirea setărilor Global Styles devine experimentală și trebuie activată explicit din pagina Gutenberg Experiments. În inspectorul blocurilor, controalele reflectă valorile moștenite din Global Styles, iar stilurile elementelor link din blocurile care sunt linkuri se rezolvă corect.
Blocul Math nu mai anunță erori de parsare LaTeX la fiecare tastă. Câmpul folosește ValidatedTextareaControl, iar validarea apare după ce câmpul pierde prima dată focusul; cititoarele de ecran nu mai primesc anunțuri pentru fiecare caracter introdus.
Componentele Combobox, Select și SelectControl primesc subcomponentele Group și GroupLabel, pentru a construi consecvent opțiuni grupate. Autocomplete primește primitiva Autocomplete.Row, iar DataViewsPicker acceptă selecția unui interval cu Shift+Click în aspectele tabel, grilă și activitate.
Changelog tehnic complet
Îmbunătățiri
Stilurile de bază permit suprascrierea culorii focus ring pentru outset-ring__focus. Dashboard-ul pentru widgeturi măsoară mai bine spațiul antetului și documentează chrome-ul interfeței, iar primitivele pentru widgeturi sunt livrate ca script module.
Câmpurile de căutare din DataViews și Font Library au lățime fixă pentru a evita mutarea layoutului. Componenta sandbox acceptă proprietatea sandbox, câmpurile input[type="number"] ascund controalele native de incrementare, iar SearchControl afișează sufixul numai atunci când acesta există.
Biblioteca de blocuri primește acoperire end-to-end pentru scenariul utilizatorului din Table of Contents. Editorul de articole are setarea responsiveEditingEnabled, care poate ascunde opțiunea Responsive styles; Font Library aliniază dimensiunea fontului din selectarea paginii de navigare cu DataViews.
În colaborarea în timp real (RTC), Quick Edit rămâne indisponibil cât timp cineva editează un articol. Global Styles extrage administrarea comună a presetărilor din umbre și dimensiuni de font.
Corecții de erori: API, bibliotecă de blocuri și editor
Actualizarea schimbă versionarea API-ului pentru configurarea vizualizărilor. Validarea configurației respinge îmbinările cu forme incompatibile, definește semantica pentru arrayuri goale și elimină valorile null din membrii adăugați; createInterpolateElement gestionează fără eroare tagurile de închidere fără corespondent.
În biblioteca de blocuri, render_block_core_video() acceptă tagul VIDEO indiferent de capitalizare. Blocurile Cover și Accordion ies la apăsarea Enter, lista păstrează tipul ordonat la indentare, iar editorul media afișează starea de încărcare cât timp încarcă un fișier decupat.
Gutenberg elimină flagul redundant __heicUploadSupport, repară lipsa opțiunii „Add block” din interfața Link a blocului Navigation aflat în template parts și scurtează eticheta butonului de bară pentru o piesă din Playlist. Eticheta setării Offset din Query Loop are context de traducere, iar markupul pictogramei Tumblr din Social Link nu mai conține un tag de închidere în plus.
Editorul elimină focus ringul duplicat din controlul pentru imagine de fundal, corectează poziția cursorului la ștergerea înainte a blocurilor goale și repară importurile testelor de round-trip pentru presetări. Când două presetări de culoare folosesc același hex, panourile Global Styles salvează și afișează presetarea corectă.
În RTC, sincronizarea blocurilor controlate nu mai interceptează undo. Rich text elimină din nou tabIndex din elementele editabile pentru selecția Shift+Click, nu aplică transformarea la introducere fără onReplace și nu mai cade la lipirea fișierelor.
Fluxul de scriere extinde selecțiile de blocuri cu Shift+săgeți când nu există selecție nativă, tratează Shift+Click drept gest de selecție multiplă și nu mai derulează pagina când muți caretul în blocuri mai înalte decât viewportul.
Corecții în editorul de articole și componente
Câmpurile care își gestionează singure undo lasă browserul să controleze istoricul. Meta boxurile folosesc stiluri de titlu compatibile cu panourile Gutenberg, iar post lock nu mai afișează greșit mesajul „Someone else has taken over” pentru un utilizator care nu poate edita.
Funcțiile Notes capturează blocul-țintă înainte de salvarea unei note la nivel de bloc, înregistrează formatul de notă inline la import, raportează uniform succesul salvării și sincronizează selecția din bară laterală cu marcatorul inline de sub caret. Notificările sunt încadrate în ThemeProvider cu rază de colț zero, iar iOS elimină soluția temporară pentru salturi și adaugă comportamentul typewriter.
DataForm nu mai mută forțat focusul prin validările cardurilor și ale detaliilor. GradientPicker selectează după slug astfel încât presetările cu același gradient să își păstreze identitatea; ToolsPanel migrează stilurile într-un modul SCSS, iar suprascrierea root .prettierrc.js și jsxImportSource din Storybook sunt reparate.
Media, Global Styles, accesibilitate și performanță
Conversia GIF-urilor animate lungi nu mai blochează încărcarea: pentru rezultate statice, editorul decodează doar primul cadru. Șabloanele media nu mai forțează crossorigin pe tagurile IMG, iar wp-build sincronizează lista câmpurilor de preload pentru șablonul de pagină cu core-data. Media REST API preia corecția pentru verificarea dimensiunii la încărcarea unui fișier dintr-un URL.
În theme.json, clasele presetărilor la nivel de bloc își aliniază specificitatea prin :where(). Controalele Alignment gestionează mai bine proprietățile, iar submeniurile Navigation din overlay actualizează corect aria-expanded la hover.
Editorul citește atributul contentEditable în ownsSelection, pentru a evita un layout forțat, și include o corecție pentru regresia de performanță la tastare. FlatTermSelector evită reîncărcările inutile ale termenilor, iar Core Data mută EntitiesSavedState în afara editorului.
Experimente și siguranța interfeței
Pe lângă experimentul pentru moștenirea Global Styles, widgeturile experimentale din Dashboard sanitizează mai strict href-urile acțiunilor și linkurile de ajutor.
Documentație, calitatea codului și tooling
Documentația adaugă instrucțiuni nvm use în AGENTS.md, un model de descoperire progresivă pentru instrucțiuni și abilități ale agenților, documentația globală lipsă pentru table-of-contents/index.php și docblockuri pentru WP_Icon_Collections_Registry. Mai clarifică descoperirea ghidajului pentru agenți, comportamentul getBlock cu controllere de blocuri interne, backportarea în WordPress core, callbackurile filtrului de configurare a vizualizărilor, iframe-urile după Gutenberg 23.6, exemplele de schemă de culori admin din Storybook, alegerea dialog versus drawer și filtrele server-side pentru configurarea vizualizărilor. Documentația inline folosește și linkuri pentru URL-uri.
ESLint adaugă componentele lipsă nerecomandate în denylist, iar webpack-dev-server trece la ^5.2.1. Workflowurile GitHub verifică corect changelogul pentru PR-uri din forkuri; Interactivity API își reorganizează directivele ca module care se înregistrează singure, iar RTC folosește array_any() pentru verificarea compactării și str_contains() în WP_Sync_Config. Storybook construiește specificatorul resolve ca șir în stil URL, iar instrumentele rezolvă dependențele independent de layoutul node_modules.
La nivel de componente, Autocomplete leagă lista de sugestii prin aria-controls și aria-haspopup; ExternalLink reutilizează mixinul focus ring, iar useSelectionProps nu mai depinde de layout. Disabled, FormTokenField și SearchControl migrează la module SCSS; date-fns trece la 4.4.0, Color.js la 0.7.1, iar pachetul colorjs.io elimină o soluție temporară pentru buguri. Pachetul temei nu mai publică directorul src.
Biblioteca de blocuri protejează valorile de atribute care aruncă erori, transformă editableRoot într-o setare privată, integrează corecții pentru fuziunile WordPress-Develop 7.0 și folosește operatorul de coalescență nulă pentru atributul parentPageID din Page List. Elimină pragma Jest redundantă pentru jsdom, proprietățile inutile __next40pxDefaultSize, verificarea strpos() din Table of Contents și paragraful implicit din șablonul panoului Tabs.
Block Editor deduplică utilitarele duotone în global-styles-engine, reduce implementările duplicate pentru utilitarele presetărilor și rescrie URLInput ca function component. Post Editor validează prezența viewBox în pictogramele SVG și anulează evidențierea hover aflată în curs când focusul părăsește un fir de note; Core Data actualizează memize la 2.1.1, iar Global Styles redenumește fișierele de teste unitare și elimină sufixul .spec.js.
Site Editor înlocuiește utilizarea Theme din încărcătorul canvas cu CSS, iar codul pentru colaborare în timp real se mută în lib/experimental/collaboration. Componentele elimină parametrul pentru culoarea accentului din input-control și componenta Theme privată.
Instrumentele actualizează captura de ecran din formularul de release pentru noua interfață GitHub Release și cer un GitHub CLI funcțional pentru cherry-pick. Build-ul adaugă un pachet vendor independent pentru React 18, acceptă căi de proiect cu spații în scriptul de dezvoltare, omite tipurile pentru proprietățile de polimorfism la intersecții și include stilurile extrase în hashul versiunii asseturilor.
Toolingul adaugă un test end-to-end de compatibilitate React 19 pentru atributul boolean inert, rezolvă explicit Prettier pentru layouturi izolate, elimină Emotion ca sursă JSX în Storybook, evită o buclă infinită de build pentru workerul WP Build și îmbunătățește verificările preliminare de acces npm.
Testele Jest ignoră corect fișierele de declarații TypeScript și trec la Jest 30, o actualizare incompatibilă cu versiunea anterioară. Flakiness.io rulează doar în repository-ul Gutenberg canonic, testele de performanță raportează corect metrica „Selecting blocks”, RTC repară testul pentru utilizator șters în multisite, iar Site Editor adaugă acoperire end-to-end pentru extensibilitatea configurației vizualizărilor.
Ce merită să verifici după actualizare
Instalează Gutenberg 23.7 într-un mediu de dezvoltare și verifică mai întâi blocurile Galerie în modul dinamic, Pullquote cu line-height personalizat și paginile care combină blocuri flotante cu elemente sticky. Dacă dezvolți controale pentru editor, testează noile primitive pentru opțiuni grupate și ajustează integrarea dacă depinde de comportamentul validării LaTeX, de configurarea vizualizărilor sau de pachetele de build actualizate.
Activează separat experimentul pentru moștenirea Global Styles doar dacă vrei să îi evaluezi interfața. Pentru teme și extensii care folosesc theme.json, Media REST API, componentele editorului sau colaborarea în timp real, rulează și suita proprie de regresie înainte de deploy.
Referințe / Surse
Elena Popescu
Redactor-șef al echipei române, dezvoltator web full-stack și mentor tehnic. .NET și C# sunt domeniile mele principale, dar nici JavaScript modern nu-mi este străin.
Toate articolele