Block Suite Omeka S module

Releases

1.2.1

Oct 20, 2026

Fixed:

  • With two or more Item Slider blocks on a page, every slider but the last lost its Selection mode when the page was saved, and query sliders then showed nothing. With two or more Tabs (HTML) blocks, every block but the last lost its Default tab the same way. The page editor names each block's inputs only after the page has loaded, so until then the blocks' radio buttons formed one group and the browser kept only the last block's choice. Each block's radios now have a name of their own, and the saved value travels in a hidden field.
  • A container's header in the page editor (Tabs (Blocks), Columns (Blocks)) showed the label of the first Tab / Section or Column inside it, e.g. "BlockSuite: Tabs (Blocks) — Now on view: Quiet Weather".
  • Item Slider cards showed a linked resource, such as a Creator that links to an artist's item, as that item's URL. They show its title now, and a URI value shows its label.

1.2.0

Oct 11, 2026

New blocks:

  • Columns (Blocks) container with Column dividers: put any page blocks side by side in two, three or more columns. Choose equal widths or a wider first, last or middle column, the space between columns and vertical alignment; with Equal height, the last block in each column fills it, so panels such as Call to Action and Search Box end level. Columns stack on narrow screens. Containers nest, so columns can go inside a tab and tabs inside a column.
  • Hero: a large heading with an optional eyebrow line, text, up to two buttons and an optional background image under a dark overlay that keeps white text readable over any photo. Four heights, start or centered alignment, h1 or h2 heading.
  • Call to Action: heading, text and up to three buttons on no background, a tint, the theme's accent color or a dark panel.
  • Statistics: up to twelve figures with labels and descriptions, plain or as cards.
  • Timeline: up to fifty dated events with text, an optional image and a link. Year and ISO dates get machine-readable <time> elements.
  • Search Box: a labeled search form for the site or its items, with optional suggested searches.

New display options:

  • Tabs (HTML) and Tabs (Blocks) can show as an accordion (one section open at a time, or several). Closed sections stay searchable with the browser's find-in-page, which opens them.
  • Card Slider and Item Slider can show all cards in a grid instead of a sliding row.

Theming:

  • Blocks take their colors from the active theme. Every color, radius and button style comes from --bst-* custom properties that read a theme's --theme-* tokens (provided by the Vitrine theme) and fall back to the browser's system colors, so blocks also suit light and dark themes that define nothing. The fixed #333 buttons and white cards are gone.
  • Stylesheets are split per block family (bst-base.css, bst-slider.css, bst-tabs.css, bst-content.css) and load only on pages that use them. card-slider-tabs.css, card-slider-tabs.js, tabs-group-admin.css and tabs-group-admin.js are removed; themes that targeted them should move to the classes and tokens in the theming reference.
  • Public templates receive a $templateViewScript, so themes can offer alternative block templates for the new blocks through theme.ini.

Dates:

  • Item Slider cards show machine dates the way people read them: an imported timestamp such as 2025-07-07T21:21:57.477654Z reads "July 7, 2025", a year-month "June 1958", in the site's language and time zone, with no time. The value stays machine-readable in a <time datetime> element. Years, ranges and free text ("circa 1920") show as written. Applies to Dublin Core date properties and timestamp data types.
  • Timeline dates typed as ISO dates (1987-04-12, 1958-06) display the same way.

Accessibility:

  • Sliders follow the WAI-ARIA carousel pattern: a stop/start rotation button comes first, slides are labeled "1 of 5", off-screen slides are inert, the live region is quiet while rotating, and keyboard focus inside the slider stops rotation. Autoplay never starts for visitors who prefer reduced motion, and it now loops instead of stopping at the end.
  • Slider buttons have accessible names, card links include the card title for screen readers, and images whose title is already shown get empty alt text.
  • Without JavaScript, tab and accordion panels all stay open.
  • Respects reduced-motion and forced-colors (Windows high contrast) settings.

Developers:

  • Containers are generic: BlockSuite\Container\BlockTree turns the flat block list into a tree, and modules can register their own container and divider layouts under the blocksuite.containers config key.
  • window.BlockSuite.init(element) initializes blocks added to the page later, and panels fire a bubbling bst:panel-shown event (plus a window resize) when they open, so maps and charts inside can redraw.
  • Tabs (HTML) panel content now goes through Omeka's HTML purifier, like the core HTML block (a no-op when the purifier setting is off).
  • Block data is cleaned on save for every block, including values sent through the API.
  • Unit tests for the block tree and the data cleaning (test/).
  • Requires Omeka S 4.1 or later.

Fixes:

  • Page editor: the rich-text editor no longer shows a second, stale copy of an HTML block's content after the page loads with blocks inside a container.
  • Page editor: the "Block and contents to be removed" warning no longer replaces the undo link's text.

1.1.0

Sep 22, 2026

  • New Tabs (Blocks) container block. Drop any other page blocks into it, and start each tab with a Tab divider block; the blocks after each divider become that tab's panel. Blocks placed before the first divider render above the tab list as an intro. Containers can be nested.
  • New Tab divider block with a tab label and an "open this tab by default" option. Its label is shown live in the block header in the page editor so tab boundaries are readable when blocks are collapsed.
  • The module now overrides the core pageLayout view helper to render tab containers. Core block groups, grid page layouts and block layout events behave exactly as before, and if another module replaces the helper the contained blocks simply render un-tabbed.
  • Page editor: tab containers use the same drag-and-drop drop zone as core block groups, keep their span counts correct when blocks are added, removed or marked for deletion, and re-initialise CKEditor on blocks that are moved.
  • Public tabs script now scopes each tab list to its own block, so a Tabs (HTML) block can sit inside a Tabs (Blocks) panel without the two interfering.
  • All block labels now start with BlockSuite: so they group together in the Add new block sidebar.
Log in for Support