Skip to content

useDriverFactory

The useDriverFactory composable creates preconfigured driver.js Driver instances. It centralizes tour styling and behavior — i18n labels, Lucide footer-button icons, and a stable data-testid for E2E selectors — so individual tours only need to supply their steps.

It is the low-level primitive that useOnboardingBuilder builds on top of; use useDriverFactory directly when you need a single, unphased driver.js tour, and useOnboardingBuilder when you need multi-phase tours with onEnter/onExit hooks.

Features

  • Preconfigured Driver: Progress indicator and next/prev/done button labels are wired to i18n out of the box.
  • Lucide Footer Icons: Injects Lucide arrow-big-left / arrow-big-right / check icons into the driver.js popover's navigation buttons.
  • E2E-Friendly: Stamps data-testid="tour-skip" on the close (skip) button.
  • Config Merging: Any additionalOptions you pass are spread over the defaults, so you can override or extend them (including steps).

Return Shape

useDriverFactory() returns:

MethodTypeDescription
createDriver(steps: DriveStep[], additionalOptions?: Config) => DriverBuilds a driver.js Driver instance from the given steps and optional config.

Usage

Basic Tour

vue
<script lang="ts" setup>
const { createDriver } = useDriverFactory();

const driver = createDriver([
  {
    element: '#step-1',
    popover: {
      title: 'Step 1',
      description: 'This is the first step',
    },
  },
  {
    element: '#step-2',
    popover: {
      title: 'Step 2',
      description: 'This is the second step',
    },
  },
]);

onMounted(() => {
  driver.drive();
});
</script>

With Additional driver.js Config

ts
const { createDriver } = useDriverFactory();

const driver = createDriver(steps, {
  allowClose: false,
  onDeselected: () => {
    console.log('user clicked away');
  },
});

TIP

additionalOptions is spread after the factory's defaults, so it can override showProgress, button text, popoverClass, or any other driver.js Config option.

i18n

The driver instance is preconfigured with translation keys under common-ui.tour.*: progress, next, prev, finish. See the Internationalization section for details.

Relation to useOnboardingBuilder

useOnboardingBuilder calls useDriverFactory internally (buildDrivercreateDriver) to produce the Driver it hands to the Onboarding component. Reach for useDriverFactory directly only if you don't need the builder's phase/hook machinery.

Developed with ❤️ by the DCC. Documentation released under the MIT License.