Skip to header Skip to main navigation Skip to main content Skip to footer
Cookies UI
Site branding
Alaa Haddad - Drupal Expert
Consultant • Architect • Developer • Themer - Expert Drupal Solutions
Main navigation
Alaa Haddad Offers Exceptional Drupal Custom Theming and Modules in Austin TX Alaa Haddad - Drupal Expert
  • Professional Profile
  • Drupal Services
    • Drupal Development
    • Drupal Developer
    • Drupal Themer
    • Drupal Architect
    • Drupal Consultant
  • My Drupal Modules & Themes
      • Cloudflare Purge
      • Solo Copy Blocks
      • W3CSS Paragraphs
      • Paragraphs Bundles
      • Acquia Purge Varnish
      • Reference Blocked Users
      • Module Matrix
      • Paragraphs Bundles Import
      • Selectify
      • Solo Utilities
      • Utilikit
      • Solo
      • Amun
      • Anhur
      • Amunet
      • W3CSS Theme
      • 3D Carousel
      • 3D FlipBox
      • Accordion
      • Carousel
      • Hero
      • Lightbox
      • Parallax
      • Reveal
      • Slideshow
      • Tabs
  • Blog
  • Videos
  • Contact
  • Hire Me (opens in new tab)

Views Accordion (Drupal Module)

Breadcrumbs

Breadcrumb

  • Home
  • Drupal Modules
  • Views Accordion (Drupal Module)

Main page content

Alaa Haddad, professional Drupal developer based in Austin, TX   Alaa Haddad
  10:43 PM CDT, Sun September 13, 2026
Share

Views Accordion (VVJA) renders a Drupal Views listing as a collapsible accordion, with exclusive-panel mode, seven animation styles, deep-linkable panels and a full JavaScript API — built in vanilla JavaScript with no jQuery UI or Bootstrap dependency. It requires Drupal 11.3 or 12, and it is free on drupal.org.

What it does

VVJA adds a Views style plugin that turns each row of a view into one accordion panel: the first field becomes the clickable header, and every other field in the row becomes the content that expands underneath it. It is a genuine Views style plugin, so filters, sorting and the pager all work exactly as they would with any other display format.

Requirements

VVJA requirements, from vvja.info.yml
RequirementValue
Drupal core^11.3 || ^12
PHP8.3 or later
PackageVVJ
Core module dependenciesViews, Filter
Contributed dependencyVVJ Core — required, installed automatically

VVJA 2.x requires VVJ Core. composer require drupal/vvja:^2.0 installs it for you. If you install from a downloaded tarball rather than Composer, VVJ Core has to be downloaded and enabled separately — VVJA will not function without it, since it supplies the shared custom-element rendering and token resolver that VVJA's accordion behaviour is built on.

Setting up your view

Two things are non-negotiable for VVJA to work: Row style must be Fields, and you need at least two fields. The first field becomes the header — if it contains a link, VVJA disables the link's click behaviour via JavaScript so it does not fight with the panel toggle. Every remaining field renders inside the panel body when the header is clicked.

Behaviour and layout options

Toggle and expansion modes

Choose a single expand/collapse icon per panel, a global "expand all / collapse all" control, or both. Exclusive panel mode closes any open panel automatically when another is opened — note this is incompatible with the global toggle and "expand all", since those assume more than one panel can be open. Expand default controls what is open on page load: none, the first panel, or all of them.

Animation

Seven transition styles are available — none, slide from top, bottom, left or right, zoom, and fade — with a configurable transition speed from 0.1 (fast) to 2 seconds (slow). The default is 0.3s.

Expandable cards

Setting an Accordion Item Width in pixels turns the accordion into a grid of fixed-width, individually expandable cards rather than a single vertical stack — useful for product listings or portfolio grids where each item should read as a distinct block. Set the width to 0 for the traditional full-width accordion layout.

Deep linking

Enable deep linking and set a short URL identifier (for example, "faqs") to generate shareable links straight to a panel, such as #accordion-faqs-3. Clicking a panel updates the URL hash, opening that URL later opens the matching panel automatically, and browser back/forward navigation works as expected. Deep linking works with exclusive-panel and multi-panel modes alike.

Features

  • No jQuery UI or Bootstrap dependency. Pure vanilla JavaScript.
  • Custom SVG icons for both per-panel and global toggle buttons, sanitised against XSS on input.
  • CSS custom properties for theming — --vvja-grid-gap, --vvja-pane-padding, --vvja-transition-speed, --vvja-box-width — so you restyle without overriding selectors.
  • ARIA and accessibility support, including keyboard navigation with Arrow Up/Down, Home and End, and focus management.
  • Focus trapping prevention. Focusable elements inside a collapsed panel automatically get tabindex="-1" and aria-disabled="true", so keyboard users cannot tab into hidden content.
  • Responsive. Panel heights recalculate automatically on viewport resize.
  • Unique ID generation so multiple accordions on one page never conflict.

Custom tokens for view header and footer

Views header and footer fields set to Global: Text area or Global: Unfiltered text with "Use replacement tokens from the first row" enabled cannot resolve standard {{ title }}-style tokens. Use VVJA's own syntax instead: [vvja:title], [vvja:field_image], and so on. Append :plain to strip HTML — [vvja:title:plain]. These pull directly from the rendered first row and do not support complex multi-token rewrites; use one token per field. In v2, resolution runs through the shared vvj_core.token_resolver service, with the same token syntax as v1.

JavaScript API

Control accordions from your own code through Drupal.vvja. The first argument is always your deep-link identifier:

Drupal.vvja.openPanel('faqs', 3);
Drupal.vvja.closePanel('faqs', 2);
Drupal.vvja.togglePanel('faqs', 1);
var openPanels = Drupal.vvja.getOpenPanels('faqs'); // e.g. [1, 3, 5]
var total = Drupal.vvja.getTotalPanels('faqs');
var instance = Drupal.vvja.getInstance('#vvja-12345'); // returns <vvja-accordion>

Installation

composer require drupal/vvja
drush en vvja -y
drush cr

Then edit or create a view, set Row style to Fields with at least two fields, and under Format choose Views Vanilla JavaScript Accordion as the style.

Developer and site builder tips

  • Every view using this plugin carries the CSS class vvj-accordion alongside Views' own js-view-dom-id.
  • Open panels get the class opened; closed panels get closed.
  • Each row is wrapped in a <div> containing a button (.button.vvja-button) and a pane (.vvja-pane).
  • Data attributes on the container — data-animation, data-unique-id, data-exclusive-panel, data-deeplink-enabled, data-deeplink-id — are useful hooks for CSS targeting or your own JavaScript.
  • To use more than one field as the header, mark the extra fields "Exclude from display" and combine them with a Custom Global Field (Text) using Views' replacement patterns, ordered before the visible fields.
  • The Grouping Field feature in Views is not supported and should be avoided on a view using this style.

Accordion or something else?

An accordion is the right pattern when visitors should scan headings first and open only what interests them — FAQs, specifications, policy sections. If you want content on constant display without a click, or a rotating showcase instead, Views 3D Carousel and Views Carousel are built for that. If you want a front/back flip reveal instead of vertical expansion, see Views 3D FlipBox. All four share the same VVJ Core foundation, so mixing them on one site adds no extra dependency weight beyond the one shared module.

Common questions

Can only one panel be open at a time?

Yes, with Exclusive Panel mode enabled — opening a new panel automatically closes any other open one. It cannot be combined with the global toggle or "expand all", since both of those assume multiple panels can stay open.

Does VVJA need jQuery?

No. It is vanilla JavaScript and does not need jQuery UI, Bootstrap, or any other front-end library. It does depend on Drupal core's Views and Filter modules, and on VVJ Core.

Will VVJA work on Drupal 12?

Yes. It declares core_version_requirement: ^11.3 || ^12 and PHP 8.3 or later.

Can I link directly to one panel?

Yes, with deep linking enabled and a URL identifier set. Links look like #accordion-faqs-3 and work with browser back/forward navigation.

Can I use my own icons?

Yes. Provide custom SVG markup for both the per-panel toggle icons and the global expand/collapse buttons; all SVG input is sanitised against XSS.

Need a hand?

VVJA is free and GPL-licensed, like all my contributed work. If you want an accordion styled to match an existing design, a build that goes beyond what Format Settings expose, or a Drupal 10 to 11/12 upgrade so you can run version 2, that is my day job.

Read about my Drupal services, see what a Drupal developer brings to a project, or get in touch.

Views Vanilla JavaScript Accordion (VVJA)
Slide 1 of 27
Acquia Purge Varnish - API V2 (Drupal Module)
Slide 2 of 27
Amun - W3CSS Sub-Theme (Drupal Theme)
Slide 3 of 27
Amunet - W3CSS Sub-Theme (Drupal Theme)
Slide 4 of 27
Anhur - W3CSS Sub-Theme (Drupal Theme)
Slide 5 of 27
Cloudflare Purge (Drupal Module)
Slide 6 of 27
Module Matrix (Drupal Module)
Slide 7 of 27
Paragraphs Bundles (Drupal Module)
Slide 8 of 27
Paragraphs Bundles Import (Drupal Module)
Slide 9 of 27
Reference Blocked Users (Drupal Module)
Slide 10 of 27
Selectify (Drupal Module)
Slide 11 of 27
Solo (Drupal Theme)
Slide 12 of 27
Solo Copy Blocks (Drupal Module)
Slide 13 of 27
Solo Utilities (Drupal Module)
Slide 14 of 27
Utilikit (Drupal Module)
Slide 15 of 27
Views 3D Carousel (Drupal Module)
Slide 16 of 27
Views 3D FlipBox (Drupal Module)
Slide 17 of 27
Views Accordion (Drupal Module)
Slide 18 of 27
Views Carousel (Drupal Module)
Slide 19 of 27
Views Hero (Drupal Module)
Slide 20 of 27
Views Lightbox (Drupal Module)
Slide 21 of 27
Views Parallax (Drupal Module)
Slide 22 of 27
Views Reveal (Drupal Module)
Slide 23 of 27
Views Slideshow (Drupal Module)
Slide 24 of 27
Views Tabs (Drupal Module)
Slide 25 of 27
VVJ Core (Drupal Module)
Slide 26 of 27
W3CSS Paragraphs (Drupal Module)
Slide 27 of 27
W3CSS Theme (Drupal Theme)
1 of 27

Our mission is to make Drupal more accessible and user-friendly, empowering businesses of all sizes, especially small enterprises with powerful tools that streamline content customization and enhance digital experiences.

Need help with your Drupal project? Hire Me through Flash Web Center, LLC.

Search

The Drupal 11 Module and Theme Stack, With Versions Checked

ARIA Live Regions in Drupal 11: What Core Does, What You Add

Drupal Architect: The Decisions Expensive to Reverse

Drupal Services: Development, Theming, Upgrades | Austin TX

Paragraphs Bundles

Drupal Module - Paragraphs Bundles

Drupal Theme - Solo

Drupal Theme - Solo

Drupal Work List - Drupal Work

Reference Blocked Users (Drupal Module)

Solo Utilities (Drupal Module)

Views Hero (Drupal Module)

Solo (Drupal Theme)

Paragraphs Bundles Import (Drupal Module)

Drupal Theme - W3CSS Theme

Drupal Theme - W3CSS Theme

Drupal Module - W3CSS Paragraphs

Drupal Module - W3CSS Paragraphs

Inspiration

Inspiration is the fuel that powers our creative engine, often coming from our surroundings, experiences, or the works of others. It's that magical moment when something clicks inside your brain, and you suddenly see a path forward that you hadn't noticed before. Inspiration can strike at any time, providing the motivation and energy needed to explore new possibilities and bring your ideas to life.

Unique Ideas

Unique Ideas

Unique ideas are the seeds of innovation, representing original thoughts or concepts that stand out from the usual. They're the sparks that ignite the process of creating something new and different, often leading to unexpected and groundbreaking solutions or products. Whether in art, science, business, or technology, unique ideas challenge the status quo and pave the way for progress.

Brainstorming

Brainstorming

Brainstorming is a creative group activity designed to generate a large number of ideas or solutions to a problem. It's a free-flowing and open-ended discussion where every suggestion is welcomed and considered, no matter how outlandish it may seem. Brainstorming encourages thinking outside the box, fostering an environment where creativity and collaboration lead to innovative solutions.

Planning

Planning

Planning is the blueprint for turning your ideas into reality. It involves setting goals, outlining steps, and organizing resources in a way that makes achieving your objectives possible. Good planning considers potential challenges and opportunities, making it easier to navigate the journey from concept to completion. It's about preparing the groundwork so that your projects can grow and flourish.

Drupal Developer

A Drupal Developer stands as the technical powerhouse behind dynamic websites, wielding expertise in PHP, custom module development, and Drupal's sophisticated API ecosystem. This role transforms business requirements into functional, secure, and scalable web solutions that power everything from small business sites to enterprise platforms serving millions of users. A Drupal Developer's expertise spans the entire development lifecycle—from architecting custom modules and integrating third-party services to optimizing performance and ensuring security compliance. Discover the complete guide to Drupal Developer skills, career paths, and hiring strategies.

Drupal Themer

A Drupal Themer serves as the artistic craftsperson who transforms wireframes and design mockups into pixel-perfect, accessible, and responsive user experiences using Twig templates, CSS, and JavaScript. This specialized role bridges the gap between design vision and technical implementation, ensuring every website not only looks exceptional but performs flawlessly across all devices and meets WCAG accessibility standards. A Drupal Themer's work encompasses the entire front-end ecosystem—from creating custom theme architectures and optimizing Core Web Vitals to implementing complex responsive designs and ensuring seamless integration with Drupal's rendering system. Explore the comprehensive guide to Drupal Themer expertise, theming best practices, and career advancement.

Drupal Architect

A Drupal Architect emerges as the strategic visionary of web construction, armed with encyclopedic knowledge of enterprise architecture patterns, infrastructure design, and Drupal's extensive technological ecosystem. This senior role operates at the highest technical level, making critical decisions that determine whether complex implementations scale successfully or collapse under real-world demands. A Drupal Architect's responsibilities begin long before development starts—during strategic planning phases where the foundation for secure, performant, and maintainable systems is established through careful evaluation of technology stacks, integration strategies, and scalability requirements. Learn about Drupal Architect skills, enterprise architecture strategies, and career progression to principal roles.

Footer menu

  • Contact
  • Professional Resume
  • Resume Summary
  • Technical Skills
  • Privacy Policy
  • Terms & Conditions
  • Search
  • Login
  • Sitemap

Copyright © 2026 Flash Web Center, LLC - All rights reserved

Developed & Designed by Alaa Haddad