0.2.0 (2026-10-21)
- Dynamic content (see the guide): sources (
ElementorexCms.Source) with an Ecto adapter that reads the fields of any schema (ElementorexCms.Source.Ecto, or the schema itself inconfig :elementorex_cms, sources: [...]); bindings of any prop to a field of the current item, with before/after text, fallback and formats (ElementorexCms.Dynamic); the Loop grid block, with limit, order, filters, related items and responsive columns; templates of single records (record=onElementorexCms.Components.document/1,source=and a preview picker in the editor); display conditions of blocks on a field of the item (Advanced tab); templates generated from each source;mix elementorex.gen.source. - Pagination of the Loop grid: numbers, previous/next or both (links with
the page of each loop,
?<id>[page]=2, that the runtime follows in place, swapping only the grid), a Load more button and infinite scroll (the runtime fetches the next page and appends its items; links without JavaScript).paramsonElementorexCms.Components.document/1andElementorexCms.to_html/2; optionalcount/2of sources. - Search and filters for visitors (
ElementorexCms.Filters): the Filters form block and its fields (Search box, Choice filter with the values of a field, Range filter, Toggle filter, Sort), applied in place by the runtime or as a plain GET form; the state of each loop under its key in the query string. Filters of your own: with logic in the source (filters:andfilter/4ofElementorexCms.Source.Ecto) or as blocks (mix elementorex.gen.filter,filter_name/2and friends). Sources get the search (Query.search), the"in"operator and optionalvalues/2. - Editor: a database button next to every prop that can be bound, a field picker, the settings of each binding, a Dynamic palette category and the Dynamic content group of templates.
- Interface in Portuguese, German, French, Italian and Japanese too. Locale
modules (
ElementorexCms.I18n.Locale) for the app's own strings or new languages, generated bymix elementorex.gen.locale; regional codes fall back to their language;localeonElementorexCms.Components.document/1andElementorexCms.to_html/2; the editor'slocalecan change while it runs.
Upgrading from 0.1 needs no changes. To give loop grids pages and filters,
pass the params of the page to the document (params={@params}, from
mount/3; pages generated by mix elementorex.gen.cms 0.1.0 leave them out)
and keep the ElementorexRuntime hook on the element that holds it.
0.1.0 (2026-10-20)
First version.
- Document model (
ElementorexCms.Document), builder and Ecto type. - Block DSL (
ElementorexCms.Block,ElementorexCms.Block.Prop) and 34 built-in blocks with daisyUI 5 and inline Heroicons. - Safe server rendering: props cast on render, allow-list HTML sanitizer, CSS value grammar, scoped custom CSS with nesting, URL allow-list.
- Responsive styles (desktop, tablet, mobile) and
:hover, hide per device, entrance animations. - Visual editor (LiveComponent + hook): palette, DOM tree, canvas iframe with the host's CSS, inspector (Content/Style/Advanced), inline editing, drag and drop, HTML/CSS/JSON drawer, undo/redo and history, templates, uploads and media library, keyboard shortcuts.
- English and Spanish interface.
- Mix tasks:
elementorex.install,elementorex.gen.cms,elementorex.gen.block,elementorex.gen.template.