Skip to content
NovaSpark Docs v1.0.0
Live Demo Support

Build

Connecting widgets

Drive one widget from another — a Swapper controlled by tabs, an accordion, or arrows and dots you placed anywhere on the page.

Most sliders trap their controls inside themselves: the arrows sit where the slider allows, and that is that. NovaSpark separates the two. A Swapper or Carousel shows the content, and something else entirely can drive it — a tab row, an accordion, arrows in the opposite column.

Every connection works the same way: give the slider a CSS ID, then name that ID on the control.

Making the connection #

  1. Add the sliderAn NovaKit Swapper or NovaKit Carousel, with its slides set up.
  2. Give it an IDSelect it, open the Advanced tab, and set CSS ID to something you will recognise — features, say. Lower case, no spaces.
  3. Add the controlA NovaKit Tabs, Accordion, Slider Navigation or Slider Pagination widget, anywhere on the page.
  4. Point it at the sliderIn the control’s settings, put that same ID in Target Slider ID.

The two must match exactly. features and Features are different IDs. A control pointed at an ID that does not exist does nothing at all — it will not warn you, because it cannot know whether the slider is simply further down the page.

The control never moves or wraps the slider — it talks to it through the slider’s own scripting interface. So the two can sit in different columns, different sections, or opposite ends of the page, and both keep their own styling.

What can drive what #

ControlGives you
NovaKit Tabs / SwitcherA tab row, pill group or toggle that changes the slide.
NovaKit AccordionOpening a panel changes the slide — the usual "list on the left, image on the right" pattern.
NovaKit Slider NavigationPrevious and next arrows, placed anywhere.
NovaKit Slider PaginationDots, numbers, a counter or a progress bar.

All four can point at the same slider at once. A tab row above, arrows beside the heading and a progress bar underneath all stay in step, because each one is reading the slider rather than tracking its own position.

Tabs driving a Swapper #

NovaKit Tabs has a Panels setting with two modes, and this is the one people miss:

In This WidgetThe tabs hold their own panels. A self-contained tabbed section.
Elsewhere (Connected)The tabs render only the navigation and drive a NovaKit Swapper. The panels live in the Swapper.
  1. Build the SwapperOne slide per tab, in the order the tabs will appear. Give it a CSS ID.
  2. Add NovaKit Tabs where the row belongsOften above the Swapper, sometimes beside it.
  3. Set Panels to Elsewhere (Connected)The panel controls disappear, since the Swapper owns the content now.
  4. Enter the Target Slider IDAdd one tab item per slide, with just a label — and an icon or badge if you want one.

Order matters, and nothing enforces it. Tab one drives slide one. Add a slide in the middle of the Swapper later and every label after it points at the wrong content, with no error — the labels and the slides are matched by position, not by name.

Why bother, when tabs can hold their own panels? Because a Swapper cross-fades, animates between slides, and can build its slides from posts. Connected tabs give you that motion with a tab row driving it, which panels inside the Tabs widget cannot do.

An accordion driving a Swapper #

Same idea, different control. Opening an accordion panel changes the slide — the pattern where a list of features sits on the left and the matching screenshot fades in on the right.

  1. Build the SwapperOne slide per accordion item. Give it a CSS ID.
  2. Add NovaKit Accordion beside itUsually in a second column of the same container.
  3. Enter the Target Slider IDNow opening an item advances the Swapper to the matching slide.

Item order matches slide order here too.

Arrows and dots anywhere #

NovaKit Slider Navigation and NovaKit Slider Pagination are separate widgets rather than settings inside the slider, and that is the point — you can put them where the design wants them:

Both take a Target Slider ID and are styled like any other widget. Pagination offers dots, numbers, a counter such as 03 / 08, or a progress bar.

When a connection does nothing #

SymptomUsual cause
Clicking the control does nothingThe IDs do not match. Check the slider’s Advanced → CSS ID against the control’s Target Slider ID, including capitals.
The tab row shows empty panels below itPanels is still In This Widget. Switch it to Elsewhere (Connected).
Tabs change the wrong slidesThe counts differ, or a slide was inserted mid-list. They pair by position.
It works on the page but not in the editorExpected. The connection runs on the real page — use Elementor’s Preview.
Two sliders both reactTwo sliders share a CSS ID. An ID has to be unique on the page.
Esc