Page Builder
v1.19.10
Page Builder
- Mises à jour et support inclus pendant 12 mois
- Clé de licence livrée immédiatement par email
- Garantie satisfait ou remboursé 30 jours
- Documentation complète incluse
- Installation prête pour Composer
PageBuilder
Un framework générique d'éditeur visuel drag-and-drop pour le backend Magento 2. PageBuilder fournit un canvas prêt à embarquer, un registre de content types et un renderer de property panel — pour que les modules consommateurs offrent à leurs admins une vraie expérience d'édition sans réécrire l'éditeur.
Il s'agit d'un module framework, pas d'un renderer frontend. Il alimente le builder visuel de wimakeit/module-forms et peut être embarqué par tout module Wimakeit ou tiers ayant besoin d'édition structurée côté admin (forms, landing pages, widgets, etc.). Les consommateurs enregistrent leurs content types via etc/di.xml, embarquent le block builder, et gèrent eux-mêmes la persistance et le rendu frontend.
À qui ça s'adresse
- Développeurs de modules qui veulent offrir à leurs administrateurs un éditeur drag-and-drop sans écrire un builder de zéro
- Consommateurs de modules Wimakeit (Forms et modules à venir) — installé automatiquement comme dépendance
- Agences qui construisent des outils d'édition admin custom sur Magento ou Mage-OS
Bénéfices clés
- Canvas drag-and-drop — Shell trois panneaux (palette / canvas / properties) avec SortableJS, duplication d'items, suppression et historique complet undo / redo.
- Content types pluggables — Enregistrez vos propres types via
ContentTypeRegistryInterface. Cinq primitives (row, column, heading, text, html) plus huit complémentaires (button, image, divider, spacer, icon, video, quote, list) livrés en standard. - Property panels pilotés par schéma — Définissez un schéma JSON par content type et le panel rend des inputs typés (text, number, select, color, range, toggle, options-list, builder de conditional-logic) avec sections collapsibles Field / Validation / Conditional.
- Édition productive — Recherche en temps réel dans la palette, raccourcis clavier (
Delete,Cmd+Dpour dupliquer,Cmd+Zundo,Cmd+Shift+Zredo,Escape), détection de codes dupliqués avec avertissements inline, validation de pattern avec états d'erreur inline. - CSP-safe et admin-friendly — Initialisation des scripts inline via
SecureHtmlRenderer, attributs ARIA sur palette items / drop zones / property panel / handles, mises à jour chirurgicales in-place des propriétés qui évitent la perte de focus à chaque frappe. - Gestion d'état —
StateSerializeretStateValidatorproduisent un contrat JSON stable ;StateMigratorpermet aux modules consommateurs de versionner les migrations de leur état canvas.
Compatibilité
- Magento 2.4.6+ / équivalent Mage-OS
- PHP 8.1, 8.2, 8.3
- Nécessite
wimakeit/module-core^3.0 - Admin uniquement — pas d'assets frontend, aucun impact FPC ou Hyvä
- SortableJS 1.15.x embarqué (licence MIT)
Installez ce module via Composer. Assurez-vous que votre auth.json est configuré avec vos identifiants Wimakeit.
$ composer require wimakeit/module-page-builder:^1.19.10
$ bin/magento setup:upgrade
$ bin/magento setup:di:compile
Installation notes
The standard composer require + setup:upgrade + setup:di:compile flow applies. The points below cover what's specific to this module.
Required dependency
This module requires wimakeit/module-core ^3.0. Composer pulls it automatically from the Wimakeit registry as long as the registry is declared in your project's composer.json.
Standalone vs. consumer
PageBuilder is a framework: it is typically installed as a transitive dependency of a consumer module such as wimakeit/module-forms ^1.1. You only need to install it explicitly if you are developing your own consumer module.
composer require wimakeit/module-page-builder:^1.0
bin/magento setup:upgrade
bin/magento cache:flush
ACL permissions
After installation, the following ACL resources are available under System → Permissions → User Roles:
| Resource | Default |
|---|---|
Wimakeit_PageBuilder::admin (PageBuilder area) | granted to Administrator role only |
Wimakeit_PageBuilder::content_types (Content Types) | granted to Administrator role only |
Configuration
Go to Stores → Configuration → WiMakeIT → PageBuilder.
General
| Setting | Default |
|---|---|
| Enabled | Yes |
| Debug Mode (verbose state logs in browser console) | No |
Debug Mode should be left off in production — it streams every state mutation to the browser console.
No cron, no frontend assets
PageBuilder is admin-only. It registers no cron jobs, no frontend layout updates, and no frontend assets. Full Page Cache, Hyvä, and Luma storefronts are unaffected.
Registering your own content types
Consumer modules register their content types in etc/di.xml under the Wimakeit\PageBuilder\Model\ContentTypeRegistry virtual type. See docs/CONTENT_TYPE_REGISTRATION.md inside the module for the full developer guide.
- Version
- v1.19.10
- Support
- 12 mois
- Dernière mise à jour
- 1 sept. 2026
- Magento
- Magento 2.4.4 Magento 2.4.5 Magento 2.4.6 Magento 2.4.7 Mage-OS 2.0 Mage-OS 2.1
- PHP
- PHP 8.1 PHP 8.2 PHP 8.3
- Hyvä
- Non compatible
- Package
-
wimakeit/module-page-builder
Vérifier la compatibilité
Indiquez votre stack pour vérifier la compatibilité du module.
Compatibilité 4
Tarification & licence 4
vendor/wimakeit/ après composer require, donc vous pouvez le lire, l'auditer, et le patcher localement pour votre propre installation Magento. Vous ne pouvez PAS le redistribuer, le sous-licencier, le publier sur un registre Composer public, ou le revendre. 1 licence = 1 domaine production + 1 domaine staging/dev (voir les Conditions Générales pour l'EULA complet). Les modules Wimakeit ne sont PAS sur le packagist.org public — ils sont distribués exclusivement via le registre Composer privé packages.wimakeit.be. Installation & mises à jour 6
composer require wimakeit/module-page-builder:^1.12.1, puis bin/magento setup:upgrade, bin/magento setup:di:compile, et enfin bin/magento cache:flush. L'onglet « Installation » de cette page liste chaque étape de configuration (ACLs, crons, valeurs par défaut) — un déploiement prend quelques minutes, pas des heures. Besoin d'aide ? Wimakeit propose des prestations d'installation Magento depuis notre bureau wallon (Presles, entre Charleroi et Namur). auth.json : {"http-basic": {"packages.wimakeit.be": {"username": "VOTRE-EMAIL", "password": "VOTRE-TOKEN"}}}. Étape 3 : enregistrez le repo : composer config repositories.wimakeit composer https://packages.wimakeit.be. Étape 4 : composer require wimakeit/module-page-builder:^1.12.1. Dans les pipelines CI/CD, injectez COMPOSER_AUTH en variable d'environnement JSON pour éviter de commiter auth.json. composer require, même code module, même schéma de base — pas de fork à maintenir, pas de changement de licence. composer update reste sûr à l'intérieur d'une version majeure. app/design/frontend/{VotreVendor}/{theme}/Wimakeit_{Module}/templates/ en respectant le même chemin relatif. Blocks, ViewModels et Helpers s'override via DI preference dans votre propre module custom — déclarez <preference for="Wimakeit\…\OriginalClass" type="VotreVendor\Override\Class" /> dans etc/di.xml. Le XML layout s'étend (préféré) ou s'override de manière standard Magento. Les modules Wimakeit n'utilisent jamais le keyword final sur les classes que vous pourriez raisonnablement vouloir override — surcharger est un scénario de premier ordre, pas un hack. Support & sécurité 3
contact@wimakeit.com avec le nom du module, sa version, votre version Magento/Mage-OS et les étapes pour reproduire. Les correctifs sont livrés dans le prochain patch. Le support Wimakeit répond en français, anglais et néerlandais en jours ouvrables (horaires CET). contact@wimakeit.com avec le préfixe [SECURITY] dans l'objet — précisez le module, la version et les étapes de reproduction. Accusé de réception en jours ouvrables, mention dans le Changelog sur souhait du déclarant. Wimakeit est une SRL belge (société à responsabilité limitée) soumise au droit belge et européen sur la vie privée et la divulgation responsable. À propos de Wimakeit 1
Quelque chose n'est pas couvert par la FAQ ?
Signalez un bug ou posez une question — le formulaire est pré-rempli avec ce module.
Changelog
Categories: Security, Feature, Fix, Perf, Admin, Deps.
[1.13.0] - 2026-06-09
Feature
- CMS pages and CMS blocks now use Page Builder — the native WYSIWYG content field is replaced by the Page Builder canvas on
cms_page/cms_blockforms. Existing pages open with their current HTML wrapped in a single Html block, so nothing is lost. - Self-rendering content types — third-party modules can register a content type that owns its own server-side markup (preview included), opening the door to richer custom blocks without touching the core renderer.
Fix
- Magento directives (
{{widget …}},{{store url=…}}) embedded in sanitised HTML now resolve correctly at storefront render time again.
[1.12.2] - 2026-06-05
Deps
magento/frameworkpinned to^103.0.
[1.12.1] - 2026-05-21
Feature
- Color palette / design tokens — seven named slots (primary, secondary, accent, success, danger, neutral light/dark) configured per store view and applied as CSS variables on the canvas. A new colour-swatch picker is wired on Tile, Icon and Divider.
- Symbol blocks — save any subtree as a reusable Symbol; every instance on the page stays in sync.
- Block versioning — snapshot the current page state under a name (Black Friday, Christmas, v1.0) and restore any version in one click. Up to 30 per page.
- A/B test hooks — new common props let a block declare a test key, variant and weight. Visitors get a stable cookie so the same variant follows them across page loads.
- Tap-target audit flags icons under 32px (WCAG 2.5.5). Focus trap keeps Tab focus inside the active modal (Command palette, URL picker, Image picker, Help).
[1.12.0] - 2026-05-21
Feature
- URL picker — modal with Product / Category / CMS Page tabs and live search; replaces URL pasting on Button, Banner and Hero CTAs.
- Image picker — grid browser of
pub/media/wysiwyg/with thumbnails; wired on Image, Hero and Banner. - Hover state styling — per-block
:hoverbackground, colour, scale and shadow without polluting siblings. - Opacity, z-index, sticky positioning as common Design props.
- Typography presets — 10 named scales (display, H1-H4, lead, body, small, caption, overline) + text-align.
- Display conditions — show a block only to logged-in customers, specific customer groups, or inside a date window. Hidden blocks render empty so the layout stays intact.
- SEO audit panel — real-time checks on heading hierarchy, word count, link text quality, image alt text and CTA URL diversity. Click any issue to jump to the offending block.
- Render-time monitor logs slow blocks (>500 ms) to the browser console with per-type stats.
- Dark mode — three-state toggle (system / light / dark) persisted per browser, propagated to the iframe canvas.
- Onboarding tour — four-step coachmark introduces Inserter, Canvas, Edit panel and ⌘K command palette on first mount.
- Per-store-view indicator in the footer when the consumer template provides a store label.
[1.11.1] - 2026-05-21
Feature
- Every content type's edit form was rewritten to be self-documenting: descriptive labels, hint lines with concrete examples, sensible defaults. Four broken repeatable lists (TrustBadges, PricingTable, StatsGrid, Timeline) are now actual repeatable lists instead of single text inputs.
- Freshly dropped blocks now start with meaningful starter content (placeholder headline, three pricing tiers, a four-event timeline…) instead of empty shells.
Fix
- Dropped the unused
columnsproperty on Row (had no effect; layout is driven by Column responsive widths).
[1.11.0] - 2026-05-21
Feature
- Multi-selection + bulk operations — Shift+click selects multiple blocks; floating toolbar offers Group (wraps in a Row), Duplicate, Delete and Clear.
- Command palette (⌘K / Ctrl+K) — fuzzy-search overlay listing every action, every registered block and your personal templates.
- Smart suggestions after add:
Row → "Add 2 columns?",Tabs → "Add a first tab?", etc. — non-blocking, dismissable per block. - Find & Replace (⌘F) scans every text-ish field across the entire tree, with live match count.
- Accessibility audit panel — image alt, heading hierarchy, empty headings/buttons, buttons without destination, videos without source, icons without label. Click a row to jump to the offending block.
- Scroll-reveal animations — 7 presets (fade-in/up/down/left/right, zoom-in) gated by
prefers-reduced-motion. Works on Luma and Hyvä. - Toast notification system centralises feedback (success/info/warn/error) across the builder.
- Sticky save bar in fullscreen mode shows dirty state and proxies the parent admin Save button.
- Empty-state illustrations on canvas, inserter and layers panel; topbar icons regrouped with logical dividers.
[1.10.0] - 2026-05-21
Feature
- Smart drop on existing blocks — drop on the top half inserts before, bottom half inserts after; pairs with the per-gutter
+buttons for a forgiving DnD UX. - Unsaved changes pill in the topbar; block count + autosave status in the footer.
- Export / Import the canvas state as a JSON file; migrators run automatically on import.
- Help modal (
?key) lists every keyboard shortcut, platform-aware (⌘ on macOS, Ctrl elsewhere). - Real history timeline — every action records type / target / time and the History panel lists them newest-first. Click any row to revert.
- Copy / paste blocks (⌘C / ⌘V) preserves the full subtree with fresh ids. Copy / paste design (⌘⌥C / ⌘⌥V) lifts only Design / Spacing / Visibility / Custom CSS values.
- Personal templates — save a selected subtree under a name, drop it back with a click. Stored per browser, up to 50.
- Inserter favourites (star) and Recent blocks sections; search synonyms map
title → Heading,picture → Image,btn → Button, etc. (~50 EN/FR pairs). - Block lock — locked blocks get a 🔒 badge and inert drag/duplicate/delete until unlocked.
- Auto-save draft in localStorage with a Restore banner on next mount when the draft is fresher than the loaded state.
- Spacing presets (S / M / L / XL = 8 / 16 / 24 / 48 px) above every spacing field.
- Product cards in the admin canvas now render the same resized + cached images visitors see (frontend area emulation).
[1.9.2] - 2026-05-21
Fix
- Drag-and-drop from the Block Inserter into the iframe canvas now works — switched to the native HTML5 drag API which is cross-document by design.
- Product images now display in the admin canvas — added a frontend-aware image URL resolver with a media-URL fallback when called from admin scope.
Feature
- Visual drag feedback: every gutter highlights while a drag is in progress, the targeted gutter gets a stronger outline, and the root-list fallback shows an outline when targeted.
[1.9.1] - 2026-05-21
Fix
- Live-render AJAX no longer returns the admin login HTML. Custom CSRF handling on the controller was triggering a 302 to the admin URL; replaced by the standard
form_keyquery parameter — same security guarantee, no custom code. - Silenced the iframe sandbox warning by removing the (no-op)
sandboxattribute on the same-origin srcdoc iframe.
Admin
- Topbar / rail icons made visible — brand, device switcher, rail buttons and toolbar actions were too small on HiDPI admin viewports. Hit targets bumped, every icon now has a clear silhouette.
[1.9.0] - 2026-05-21
Feature
- True storefront-quality WYSIWYG. The admin canvas now renders inside a same-origin srcdoc iframe so block markup paints in a CSS sandbox: the frontend stylesheet is the only one applied, the Magento admin styles can no longer bleed through, and the result matches what visitors will see.
[1.8.0] - 2026-05-21
Feature
- Major editor UX rewrite — fullscreen-capable modal with a top device-preview switcher (desktop / tablet / mobile), vertical icon rail (Inserter / Layers / History), slide-out sidepanel, clean canvas, 3-tab block edit panel (Content / Design / Advanced) and bottom breadcrumbs.
- Block Inserter with search across label/code/description, category filter, grid/list view toggle, click-to-add and drag-to-add.
- Insertion gutters at every nesting level — hover pops a
+button that opens the Inserter pre-seeded for that exact slot. - Floating block toolbar anchored top-left of each block (drag, edit, duplicate, delete).
- Custom CSS triplet (Before / Main / After) on every non-structural block, sanitised at render time.
- Admin Label common field shown in the Layers panel and edit panel header.
- Hide on print common toggle.
[1.7.2] - 2026-05-21
Fix
- Admin AJAX live-render returned 403 because Magento's default form_key validator can't read a JSON-body POST. Now validates the
X-Form-Keyheader viahash_equals. - Column structural preview no longer shows
Column ([object Object]/12)after state v2 widenedColumn.widthto per-breakpoint values. - Live-render now surfaces 403/404/500 status codes and missing form_key cookies in the browser console for easier debugging.
[1.7.1] - 2026-05-21
Fix
- Fatal error on every admin page that loads the Forms compat layer (
Access level to AbstractFormFieldType::getCommonSchema() must be public). Our method was renamed togetSharedSchema()so both concerns can coexist.
[1.7.0] - 2026-05-21
Feature
- True WYSIWYG live editing in the admin canvas: leaf blocks (Heading, Text, Button, Image, Hero, Tile, Testimonial…) show the actual storefront HTML instead of a JS-side approximation.
- Inline contenteditable — recognised text targets become editable in place; edits flow back to the state through a debounced update.
- Shared schema on every non-structural block — Design (CSS class / id), Spacing (mt/mb/pt/pb/pl/pr) and Visibility (hide on desktop / tablet / mobile, print) without touching existing markup.
- Responsive column widths (state v2) — Column.width widens to
{ default, md, lg }so the same column can declare a different span at mobile / tablet / desktop. Existing pages auto-migrate on load. - Block breadcrumbs in the toolbar — clickable hierarchy that lets authors walk up the tree.
- Layers panel with a tree view of the entire page; click a row to select + scroll the canvas.
- Clear layout action with a two-stage arm/confirm to avoid accidental wipes.
- Floating block toolbar (label + duplicate + delete) overlays the top-right of the selected block.
- Product cards now post
checkout/cart/adddirectly (icon + Add to cart label), withform_keyanduenchydrated client-side so it stays FPC-safe. Variable products (configurable / grouped / bundle) show a localised "Starting at" label. - New
product_typesfilter on ProductGrid / ProductSlider (comma-separated allow-list).
[1.6.0] - 2026-05-20
Full audit pass: security hardening, bug fixes, performance, and developer ergonomics. The only behaviour change that affects existing storefront content is HTML/SVG sanitisation for the html content type and the icon raw-SVG passthrough — see "Breaking" below.
Security
- Admin-authored HTML in the
htmlcontent type is now sanitised on render.<script>,<iframe>,<style>,<form>and event-handler attributes (onclick,onload, …) are stripped;javascript:anddata:URLs inhref/srcare neutralised. Closes a stored-XSS surface any content-edit role could exploit. - Inline
<svg>icons (icon content type, trust-badge icons) are also sanitised:<script>,<foreignObject>, everyon*=attribute, andjavascript:/data:xlink:hrefvalues are removed before the SVG reaches the page. - The MessageBox dismiss button, Coupon copy button, Table-of-Contents auto-population, and Countdown timer no longer emit inline
onclick=or inline<script>tags. All four behaviours now ship as a single small frontend JS file (wm-pb-runtime.js) and the rendered HTML carriesdata-*attributes only. Stores running with a strictscript-src 'self'CSP policy (Magento 2.4.4+ default) finally see those widgets working at full functionality.
Fix
- The Tile content type was rendering nested-escaped garbage when the body was populated. Visible immediately on any page that used a Tile / feature-card block.
- The default category filter on embedded builder mounts silently dropped 28 of the 50 registered content types —
commerce(product widgets, CMS blocks, recent reviews, …) andmarketing(newsletter signup, coupon, banner, trust badges, countdown timer). The default is now "show every registered type"; consumers that explicitly opt into a subset are unaffected. - Two Tabs or two Accordions with identical children no longer share the same radio-group name, so clicking a tab/panel in one no longer toggles the other.
- The Newsletter Signup widget no longer fails the CSRF check on submit: the rendered form ships an empty
form_keyplaceholder which is hydrated client-side from the standard Magento session cookie. Works under full-page-cache. - Admin previews of Magento-widget content types (product grids, recent reviews, CMS block embed, …) no longer come back empty when the store scope resolves to the admin store (id 0). The renderer falls back to the default store view.
- The PHP-side state validator and migrator are no longer dead code on the save path: invalid submissions are rejected with a logged warning instead of overwriting the previous valid state.
Perf
- The admin builder JavaScript (~80 KB across SortableJS + 7 builder modules) is no longer loaded on admin pages that don't mount a builder. Dashboards, sales orders, system config, etc., now skip the load entirely. Pages that do mount a builder (CMS / blog / custom-entity forms) are unchanged.
- The palette panel filter input no longer rebuilds the DOM + Sortable instances on every keystroke; items are built once and hidden/shown via CSS.
- The undo history is capped at 100 entries (was unbounded). Long edit sessions on heavy CMS pages no longer leak hundreds of megabytes.
MagentoWidgetRendererinjects its 12 heaviest Magento dependencies through DI proxies — pages that never actually render a Magento-aware widget skip the constructor cost entirely. The CustomerSession proxy in particular keeps Full-Page-Cache hit rates intact.
Admin
- New
WmPageBuilder.unmount(mountId)JS API — tears down a builder instance properly (subscribers, listeners, Sortable instances). The builder mount now auto-unmounts a stale instance before remounting on the same mountId, fixing a memory-leak pattern that hit per-store fieldsets (Knockouthtml:re-renders). - Palette category titles ("Layout", "Content", "Commerce", "Marketing", …) are now translated via Magento's
__()rather than the hard-coded French map that mixed languages depending on which categories were present.
Breaking
- HTML and SVG inputs in the
htmlandiconcontent types are now sanitised. If a store relied on inline<script>/<iframe>blocks insidehtmlwidgets, those blocks are removed on render — move the JavaScript into a real module-shipped JS file (loaded via layout XML) and the markup will remain unchanged.
[1.5.6] - 2026-05-20
Fix
- Removed an aggressive responsive cap that limited the palette to 200px tall on standard admin forms (CMS page editor, etc.), where the form column happens to be a little under 900px wide. Forms wider than 700px now show the full 3-column layout with naturally-sized panels — the palette uses all the vertical space available and the full list of content types is visible without internal scrolling on most viewports.
[1.5.5] - 2026-05-20
Admin
- Builder shell now uses the full available viewport height instead of a fixed 70 % slice. The palette panel can show many more items at once on the CMS page form and any other mount, removing the need to scroll past every category to find a content type.
[1.5.4] - 2026-05-20
Fix
- Removed a duplicate script load that caused the builder JavaScript to run twice on every page render. The most visible symptom was a doubled "Search…" input inside the palette panel (and, on rare occasions, two canvases stacked on top of each other). The builder now relies exclusively on the global bootstrap loader introduced in 1.5.0.
[1.5.3] - 2026-05-20
Fix
- Hardened the admin bootstrap loader against a missing SortableJS file. If the vendor library failed to load (for example, after an upgrade where the static deploy had not yet run), the loader left
window.defineundefined, which broke every subsequent Magento admin script (theme.js, grid.js, tabs.js, translation dictionary, etc.) and effectively crashed the admin. The loader now restores AMD even when the load fails.
[1.5.2] - 2026-05-20
Fix
- Restored the admin builder field template (
builder-html.html) and the SortableJS vendor library — both were missing from the released package, which broke the admin canvas rendering and drag-and-drop on fresh installs.
[1.5.1] - 2026-05-18
Admin
- Module now registers itself under the Wimakeit root admin menu (
Wimakeit_Core::main) with a Settings entry (sortOrder 999) pointing to thewimakeit_pagebuilderconfiguration section. Access is gated by theWimakeit_PageBuilder::adminACL resource.
[1.5.0] - 2026-05-06
Feature
- 35 new content types added to the builder palette, covering layout, media, text, interactive, and form-input categories.
- Central state repository — the canvas state is now persisted through a unified repository, replacing the previous ad-hoc save paths and making the editor easier to embed across modules.
- Reusable field block — third-party modules can now mount a fully-wired builder field inside their own admin forms with a single block reference.
- Global JS auto-mount — the builder JavaScript loads on every admin page and automatically mounts any builder canvas injected dynamically by Knockout (no more manual hook required).
[1.3.0] - 2026-04-30
Feature
- Fullscreen editor for text and HTML fields — opens a modal overlay with a larger writing surface for long-form content.
- Server-side StateRenderer — the canvas state can be rendered to HTML on the server, opening the door to email templates, PDF generation, and other non-Knockout consumers.
Admin
- All Iconify icons replaced with inline SVG, removing the runtime dependency on the Iconify CDN and improving admin load time and CSP friendliness.
[1.2.0] - 2026-04-30
Feature
- Live preview iframe drawer — a slide-out drawer renders the current canvas state inside an isolated iframe, giving an instant preview of how content will appear in the storefront.
Admin
- Properties panel polish: visual 12-segment column-width picker, iOS-style toggle for boolean fields, inline hints under each field, colored section icons.
Fix
- Column-width picker and options-list no longer overflow the 320-pixel properties panel; column-picker segments are rendered as ARIA radios so Magento admin pill-button CSS no longer leaks into the widget.
[1.1.0] - 2026-04-29
Feature
- Eight new primitive content types:
button(label, URL, target, style),image(src, alt, width, height, alignment),divider(thickness, hex color, vertical margin),spacer(height),icon(SVG/material-icon name, size, color),video(YouTube / Vimeo / self-hosted, autoplay, controls),quote(text, author, citation source),list(ordered / unordered, items array). - All content types now expose
getDescription()for tooltip support on the palette. - Undo / redo history in the state store with toolbar buttons and
wm-pb-btn--disabledclass toggled on each state change. - Keyboard shortcuts:
Delete/Backspaceremoves selected item,Cmd/Ctrl+Dduplicates,Cmd/Ctrl+Zundoes,Cmd/Ctrl+Shift+Zredoes,Escapedeselects. Suppressed when an input field has focus. - Real-time palette search input filters the item list.
- Friendly category labels in the palette, with fallback to title-cased code.
- Duplicate-code detection on the canvas: items sharing the same
codeproperty get a warning class and tooltip. - Pattern validation in the schema renderer: schema fields with a
patternproperty show inline error / success states. - Collapsible fieldset groups: schema keys with
group: 'field'|'validation'|'conditional'render as<details>sections.
Admin
- Surgical property panel updates: inputs are patched in-place when the same item is selected, preventing focus loss on every keystroke.
- ARIA attributes added on palette items, canvas drop zones, properties panel, item handles, and action buttons.
- New developer guide
docs/CONTENT_TYPE_REGISTRATION.mdfor third-party content-type registration.
Fix
- Toolbar undo / redo buttons were rendered but had no click handlers — now fully wired.
[1.0.0] - 2025-01-01
Feature
- Initial release of the generic admin visual editor framework.
ContentTypeRegistryInterfaceandContentTypeInterfacepublic API contracts, plusAbstractContentTypebase class with sane defaults.- Five primitive content types: row, column, heading, text, html.
StateSerializerandStateValidatorfor canvas state management.Builderblock andBuilderViewModelfor embedding the editor in admin layouts.- Vanilla JS builder: state machine, canvas, palette, properties, schema-renderer (no framework dependency).
- SortableJS 1.15.x bundled (MIT license).
- CSP-safe inline script initialisation via
SecureHtmlRenderer. - Admin CSS 3-panel shell (palette / canvas / properties).
- i18n stubs for en_US, fr_FR, nl_NL.
Vous avez trouvé un bug ? Faites-nous-en part.
Un court formulaire s'ouvre dans un nouvel onglet — le nom du module et votre langue sont déjà pré-remplis. Décrivez ce que vous avez tenté, ce qui n'a pas fonctionné, et nous vous répondrons sous un jour ouvré.
Signaler un bug pour Page BuilderBesoin d'aide ?
Notre équipe est disponible pour vous accompagner dans l'intégration.