JSPM

dp-view-ui

0.0.1
    • ESM via JSPM
    • ES Module Entrypoint
    • Export Map
    • Keywords
    • License
    • Repository URL
    • TypeScript Types
    • README
    • Created
    • Published
    • Downloads 8
    • Score
      100M100P100Q43570F
    • License MIT

    Package Exports

    • dp-view-ui
    • dp-view-ui/arrow
    • dp-view-ui/style.css
    • dp-view-ui/vue-data-ui
    • dp-view-ui/vue-ui-3d-bar
    • dp-view-ui/vue-ui-accordion
    • dp-view-ui/vue-ui-age-pyramid
    • dp-view-ui/vue-ui-annotator
    • dp-view-ui/vue-ui-bullet
    • dp-view-ui/vue-ui-bump
    • dp-view-ui/vue-ui-candlestick
    • dp-view-ui/vue-ui-carousel-table
    • dp-view-ui/vue-ui-chestnut
    • dp-view-ui/vue-ui-chord
    • dp-view-ui/vue-ui-circle-pack
    • dp-view-ui/vue-ui-cursor
    • dp-view-ui/vue-ui-dag
    • dp-view-ui/vue-ui-dashboard
    • dp-view-ui/vue-ui-digits
    • dp-view-ui/vue-ui-donut
    • dp-view-ui/vue-ui-donut-evolution
    • dp-view-ui/vue-ui-dumbbell
    • dp-view-ui/vue-ui-flow
    • dp-view-ui/vue-ui-funnel
    • dp-view-ui/vue-ui-galaxy
    • dp-view-ui/vue-ui-gauge
    • dp-view-ui/vue-ui-geo
    • dp-view-ui/vue-ui-gizmo
    • dp-view-ui/vue-ui-heatmap
    • dp-view-ui/vue-ui-history-plot
    • dp-view-ui/vue-ui-horizontal-bar
    • dp-view-ui/vue-ui-icon
    • dp-view-ui/vue-ui-kpi
    • dp-view-ui/vue-ui-mini-loader
    • dp-view-ui/vue-ui-molecule
    • dp-view-ui/vue-ui-mood-radar
    • dp-view-ui/vue-ui-nested-donuts
    • dp-view-ui/vue-ui-onion
    • dp-view-ui/vue-ui-parallel-coordinate-plot
    • dp-view-ui/vue-ui-pattern
    • dp-view-ui/vue-ui-quadrant
    • dp-view-ui/vue-ui-quick-chart
    • dp-view-ui/vue-ui-radar
    • dp-view-ui/vue-ui-rating
    • dp-view-ui/vue-ui-relation-circle
    • dp-view-ui/vue-ui-ridgeline
    • dp-view-ui/vue-ui-rings
    • dp-view-ui/vue-ui-scatter
    • dp-view-ui/vue-ui-skeleton
    • dp-view-ui/vue-ui-smiley
    • dp-view-ui/vue-ui-spark-trend
    • dp-view-ui/vue-ui-sparkbar
    • dp-view-ui/vue-ui-sparkgauge
    • dp-view-ui/vue-ui-sparkhistogram
    • dp-view-ui/vue-ui-sparkline
    • dp-view-ui/vue-ui-sparkstackbar
    • dp-view-ui/vue-ui-stackbar
    • dp-view-ui/vue-ui-stackline
    • dp-view-ui/vue-ui-strip-plot
    • dp-view-ui/vue-ui-table
    • dp-view-ui/vue-ui-table-heatmap
    • dp-view-ui/vue-ui-table-sparkline
    • dp-view-ui/vue-ui-thermometer
    • dp-view-ui/vue-ui-timer
    • dp-view-ui/vue-ui-tiremarks
    • dp-view-ui/vue-ui-treemap
    • dp-view-ui/vue-ui-vertical-bar
    • dp-view-ui/vue-ui-waffle
    • dp-view-ui/vue-ui-wheel
    • dp-view-ui/vue-ui-word-cloud
    • dp-view-ui/vue-ui-world
    • dp-view-ui/vue-ui-xy
    • dp-view-ui/vue-ui-xy-canvas

    Readme


    vue-data-ui

    npm Static Badge GitHub issues License MadeWithVueJs.com shield npm GitHub Repo stars

    Interactive documentation

    A user-empowering data visualization Vue components library for eloquent data storytelling.

    Available components

    Charts

    Mini charts

    3d

    Tables

    Rating

    Maps

    Utilities

    Installation

    npm i vue-data-ui

    You can declare components globally in your main.js:

    import { createApp } from "vue";
    import App from "./App.vue";
    // Include the css;
    import "vue-data-ui/style.css";
    
    // You can declare Vue Data UI components globally
    import { VueUiRadar } from "vue-data-ui";
    
    const app = createApp(App);
    
    app.component("VueUiRadar", VueUiRadar);
    app.mount("#app");

    Or you can import just what you need into your files:

    <script setup>import {(VueUiRadar, VueUiXy)} from "vue-data-ui";</script>

    You can also use the "VueDataUi" universal component, just specifying which component you are using. You can of course use the slots provided, if the target component has them.

    <script setup>
    import { ref } from "vue";
    import { VueDataUi } from "vue-data-ui";
    // Include the css;
    import "vue-data-ui/style.css";
    
    const config = ref({...});
    const dataset = ref([...]);
    
    </script>
    
    <template>
    
      <VueDataUi
        component="VueUiXy"
        :config="config"
        :dataset="dataset"
      />
    
    </template>
    

    Note that the following utility components are not supported by the universal VueDataUi component and must be imported individually:

    • Arrow
    • VueUiIcon
    • VueUiPattern

    Typescript

    Types are available in the 'vue-data-ui.d.ts' file under the types directory of the package.

    Vue Data UI version2 -> version3 migration

    Vue Data UI v3 does not contain breaking changes. However, some charts have their padding configs modified, which can lead to excessive padding with a v2 config.

    Version 3 features

    • config.loading (default: false) toggle loading state manually, to display a beautiful skeleton loader which uses the same chart component and shares layout features derived from your config. This skeleton loader is also triggered automatically if the provided dataset is undefined.

    • config.debug (default: false) set to true to show warning messages during development, turn off for production.

    • smart label resizing and auto-rotating features

    • more charts support responsive mode

    • config event callbacks

    Nuxt

    This repo contains a boilerplate implementation of the vue-data-ui package in Nuxt

    Customizable tooltips

    Charts with tooltips have a config option to customize tooltip contents:

    customFormat: ({ seriesIndex, datapoint, series, config }) => {
      return `<div>${ ... }</div>`;
    }
    

    Data formatting

    Data labels can be customized using the formatter config attribute (since v2.3.29 on all chart components):

    // the formatter attribute is generally placed under the label or dataLabel config attribute objects
    
    const config = ref({
      formatter: ({ value, config }) => {
        return `formatted ${value}`;
      }
    })
    

    Slots

    #svg slot

    Most Vue Data UI chart components include a #svg slot you can use to introduce customized svg elements (shapes, text, etc).

    <VueUiXy :dataset="dataset" :config="config">
      <template #svg="{ svg }">
        <foreignObject x="100" y="0" height="100" width="150">
          <div>This is a custom caption</div>
        </foreignObject>
      </template>
    </VueUiXy>

    The svg slot also works when using the VueDataUi universal component, if the component it wraps supports it.

    #legend slot (since v.2.0.41)

    All charts expose a #legend slot except for:

    • VueUiCirclePack
    • VueUiDumbbell
    • VueUiFlow
    • VueUiFunnel
    • VueUiHeatmap
    • VueUiRelationCircle
    • VueUiSparkHistogram
    • VueUiSparkStackbar
    • VueUiSparkbar
    • VueUiSparkgauge
    • VueUiSparkline
    • VueUiThermometer
    • VueUiTimer
    • VueUiTiremarks
    • VueUiWheel

    The legend slot also works when using the VueDataUi universal component, if the component it wraps supports it. It is recommended to set the show legend config attribute to false, to hide the default legend.

    <VueUiDonut :config="config" :dataset="dataset">
      <template #legend="{ legend }">
        <div v-for="item in legend">{{ legend.name }}</div>
      </template>
    </VueUiDonut>

    Tooltip #tooltip-before & #tooltip-after slots

    Customize tooltip contents with #tooltip-before and #tooltip-after slots, to include an image, another chart or any other rich content into your tooltips. It's an alternative to the config option tooltip.customFormat, in case richer tooltip content is needed.

    Both slots expose the following object:

    {
      datapoint,
      seriesIndex,
      series,
      config,
    }

    The following charts bear these slots:

    • VueUiAgePyramid
    • VueUiCandlestick
    • VueUiCirclePack
    • VueUiDonut
    • VueUiGalaxy
    • VueUiHeatmap
    • VueUiHistoryPlot
    • VueUiHorizontalBar
    • VueUiMolecule
    • VueUiNestedDonuts
    • VueUiOnion
    • VueUiParallelCoordinatePlot
    • VueUiQuadrant
    • VueUiQuickChart
    • VueUiRadar
    • VueUiRings
    • VueUiScatter
    • VueUiSparkStackbar
    • VueUiStackbar
    • VueUiStackline
    • VueUiTreemap
    • VueUiWordCloud
    • VueUiWorld
    • VueUiXy *
    • VueUiXyCanvas
    • VueUiwaffle

    * VueUiXy slots specifically expose the following additional attributes:

    
    {
      ...,
      bars,
      lines,
      plots
    }
    
    <VueUiDonut :config="config" :dataset="dataset">
      <template #tooltip-before={ datapoint, seriesIndex, dataset, config }">
        <div>
          This content shows first
        </div>
      </template>
      <template #tooltip-after={ datapoint, seriesIndex, dataset, config }">
        <div>
          This content shows the last
        </div>
      </template>
    </VueUiDonut>

    The #tooltip-before & #tooltip-after slots also work when using the VueDataUi universal component, if the component it wraps supports them.

    Add a watermark using the #watermark slot

    You can use the #watermark slot to include any watermark content with your own styling. This slot exposes the isPrinting boolean you can use to display the watermark only when producing a pdf or an image.

    <VueUiDonut :config="config" :dataset="dataset">
      <template #watermark="{ isPrinting }">
        <div
          v-if="isPrinting"
          style="font-size: 100px; opacity: 0.1; transform: rotate(-10deg)"
        >
          WATERMARK
        </div>
      </template>
    </VueUiDonut>

    Customization of the zoom reset button with the #reset-action slot

    Available for the following components:

    • VueUiQuickChart (for line & bar types only)
    • VueUiXy
    • VueUiDonutEvolution
    • VueUiCandlestick
    • VueUiWordCloud

    The config option zoom.useResetSlot must be set to true to use the slot.

    <VueUiXy :config="config" :dataset="dataset">
      <template #reset-action="{ reset }">
        <button @click="reset()">RESET ZOOM</button>
      </template>
    </VueUiXy>

    Config

    If for some reason you can't access the documentation website and need to get the default config object for a component:

    import { getVueDataUiConfig } from "vue-data-ui";
    
    const defaultConfigXy = getVueDataUiConfig("vue_ui_xy");

    Themes (since v2.2.9)

    All charts are set by default without a theme, and use the default color palette.

    9 themes are available for all charts:

    • default (or '')
    • dark
    • zen
    • hack
    • concrete
    • celebration
    • celebrationNight
    • minimal
    • minimalDark

    Any color provided in dataset props will override the colors used by the theme for datapoints.

    To use a theme, set the theme attribute of the config prop, for example:

    const donutConfig = ref({
      theme: 'zen',
      ...
    })

    Quick custom theme

    You can quickly setup your own theme for a given chart:

    import { getVueDataUiConfig, mergeConfigs } from "vue-data-ui";
    
    // Get the default config and set color options
    const customTheme = getVueDataUiConfig("vue_ui_xy", {
      colorBackground: "#1A1A1A",
      colorTextPrimary: "#CD9077",
      colorTextSecondary: "#825848",
      colorGrid: "#CD9077",
      colorBorder: "#CD9077",
    });
    
    const config = computed(() => {
      // Use the `mergeConfigs` utility to set additional configurations while preserving your theme
      return mergeConfigs({
        defaultConfig: customTheme,
        userConfig: {
          chart: {
            title: {
              text: "Title",
              subtitle: {
                text: "Subtitle",
              },
            },
          },
        },
      });
    });

    Available components : details

    Type definitions are available in the vue-data-ui.d.ts file in the dist/types directory.

    Universal component

    Name dataset type config type emits / exposed methods slots custom tooltip themes
    VueDataUi (depends on component) (depends on component) (depends on component) (depends on component) (depends on component) (depends on component)

    Quick chart

    From the dataset you pass into the props, this component will produce the most adapted chart (either a line, bar or donut chart)

    Name dataset type config type emits / exposed methods slots custom tooltip themes
    VueUiQuickChart VueUiQuickChartDataset VueUiQuickChartConfig @selectDatapoint, @selectLegend, generatePdf, generateImage, toggleTooltip #legend, #tooltip-before, #tooltip-after, #reset-action, #watermark, #chart-background

    Mini charts

    Name dataset type config type emits / exposed methods slots custom tooltip themes
    VueUiSparkline VueUiSparklineDatasetItem[] VueUiSparklineConfig @selectDatapoint #svg, #before, #chart-background, #tooltip
    VueUiSparkbar VueUiSparkbarDatasetItem[] VueUiSparkbarConfig @selectDatapoint #data-label, #title
    VueUiSparkStackbar VueUiSparkStackbarDatasetItem[] VueUiSparkStackbarConfig @selectDatapoint #tooltip-before, #tooltip-after
    VueUiSparkHistogram VueUiSparkHistogramDatasetItem[] VueUiSparkHistogramConfig @selectDatapoint #chart-background
    VueUiSparkGauge VueUiSparkGaugeDataset VueUiSparkGaugeConfig #chart-background
    VueUiSparkTrend number[] VueUiSparkTrendConfig #chart-background
    VueUiGizmo VueUiGizmoDataset VueUiGizmoConfig
    VueUiBullet VueUiBulletDataset VueUiBulletConfig generatePdf, generateImg, getData, getImage #svg, #legend, #watermark, #chart-background

    Charts

    Name dataset type config type emits / exposed methods slots custom tooltip themes
    VueUiAgePyramid Array<Array<string / number>> VueUiSparklineConfig generatePdf, generateImage, generateCsv, toggleTable, toggleTooltip, getImage #svg, #legend, #tooltip-before, #tooltip-after, #watermark, #chart-background
    VueUiBump VueUiBumpDatapointItem[] VueUiBumpConfig generatePdf, generateImage, generateCsv, toggleTable, getData, getImage #svg, #watermark, #chart-background, #time-label
    VueUiCandlestick Array<Array<string / number>> VueUiCandlestickConfig generatePdf, generateImage, generateCsv, toggleTable, toggleTooltip, getImage #svg, #legend, #tooltip-before, #tooltip-after, #reset-action, #watermark, #chart-background
    VueUiChestnut VueUiChestnutDatasetRoot[] VueUiChestnutConfig @selectRoot, @selectBranch, @selectNut, getData, generatePdf, generateCsv, generateImage, toggleTable, getImage #svg, #legend, #watermark, #chart-background
    VueUiChord VueUiChordDataset VueUiChordConfig @selectLegend, @selectGroup, @selectRibbon, getData, generatePdf, generateCsv, generateImage, toggleTable, getImage #svg, #legend, #watermark, #chart-background, #pattern
    VueUiCirclePack VueUiCirclePackDatasetItem[] VueUiCirclePackConfig @selectDatapoint, getData, generatePdf, generateImage, generateCsv, toggleTable, getImage #svg, #legend, #watermark, #chart-background , #pattern, #zoom-label, #data-label, #tooltip-before, #tooltip-after
    VueUiDag VueUiDagDataset VueUiDagConfig @onNodeClick, @onMidpointEnter, @onMidpointLeave, getData, getImage, generatePdf, generateImage, generateSvg, toggleAnnotator, toggleFullscreen, zoomIn, zoomOut, resetZoom, switchDirection #svg, #source, #node-label, #node, #tooltip-midpoint, #tooltip-node, #background-pattern
    VueUiDonutEvolution VueUiDonutEvolutionDatasetItem[] VueUiDonutEvolutionConfig @selectLegend, hideSeries, showSeries, getData, generatePdf, generateCsv, generateImage, toggleTable , getImage #svg, #legend, #reset-action, #watermark, #chart-background
    VueUiDonut VueUiDonutDatasetItem[] VueUiDonutConfig @selectDatapoint, @selectLegend, hideSeries, showSeries, getData, generatePdf, generateCsv, generateImage, toggleTable, toggleLabels, toggleTooltip, getImage #svg, #legend, #dataLabel, #tooltip-before, #tooltip-after, #plot-comment, #watermark, #chart-background, #pattern
    VueUiDumbbell VueUiDumbbellDataset[] VueUiDumbbellConfig getData, generatePdf, generateCsv, generateImage, toggleTable, getImage #svg, #legend, #watermark, #chart-background
    VueUiFlow VueUiFlowDatasetItem[] VueUiFlowConfig getData, generatePdf, generateCsv, generateImage, toggleTable, toggleTooltip, getImage #svg, #legend, #watermark, #chart-background, #tooltip-before, #tooltip-after,
    VueUiFunnel VueUiFunnelDatasetItem[] VueUiFunnelConfig getData, generatePdf, generateCsv, generateImage, toggleTable, getImage #svg, #watermark, #chart-background
    VueUiGalaxy VueUiGalaxyDatasetItem[] VueUiGalaxyConfig @selectDatapoint, @selectLegend, hideSeries, showSeries, getData, generatePdf, generateCsv, generateImage, toggleTable, toggleTooltip , getImage #svg, #legend,#tooltip-before, #tooltip-after, #chart-background
    VueUiGauge VueUiGaugeDataset VueUiGaugeConfig generatePdf, generateImage, getImage #svg, #legend, #watermark, #chart-background, #pattern
    VueUiHeatmap VueUiHeatmapDatasetItem[] VueUiHeatmapConfig @selectDatapoint, generatePdf, generateCsv, generateImage, toggleTable, toggleTooltip, getImage #svg, #tooltip-before, #tooltip-after, #watermark, #chart-background
    VueUiHistoryPlot VueUiHistoryPlotDatasetItem[] VueUiHistoryPlotConfig @selectDatapoint, @selectLegend, hideSeries, showSeries, getData, generatePdf, generateCsv, generateImage, toggleTable, toggleTooltip, getImage #svg, #legend, #tooltip-before, #tooltip-after, #watermark, #chart-background
    VueUiHorizontalBar VueUiHorizontalBarDatasetItem[] VueUiWheelConfig @selectLegend, hideSeries, showSeries, getData, generatePdf, generateCsv, generateImage, toggleTable, toggleSort, toggleTooltip , getImage #svg, #legend, #tooltip-before, #tooltip-after, #watermark, #chart-background, #pattern
    VueUiMolecule VueUiMoleculeDatasetNode[] VueUiMoleculeConfig @selectNode, getData, generatePdf, generateCsv, generateImage, toggleTable, toggleLabels, toggleTooltip, getImage #node, #svg, #tooltip-before, #tooltip-after, #watermark, #chart-background
    VueUiMoodRadar VueUiMoodRadarDataset VueUiMoodRadarConfig getData, generatePdf, generateCsv, generateImage, toggleTable , getImage #svg, #legend, #watermark, #chart-background
    VueUiNestedDonuts VueUiNestedDonutsDatasetItem[] VueUiNestedDonutsConfig @selectDatapoint, @selectLegend, hideSeries, showSeries, getData, generatePdf, generateCsv, generateImage, toggleTable, toggleLabels, toggleTooltip , getImage #svg, #legend, #tooltip-before, #tooltip-after, #watermark, #chart-background
    VueUiOnion VueUiOnionDatasetItem[] VueUiOnionConfig @selectLegend, hideSeries, showSeries, getData, generatePdf, generateCsv, generateImage, toggleTable, toggleTooltip, getImage #svg, #legend, #tooltip-before, #tooltip-after, #watermark, #chart-background
    VueUiParallelCoordinatePlot VueUiParallelCoordinatePlotDatasetItem[] VueUiParallelCoordinatePlotConfig @selectLegend, @selectDatapoint, hideSeries, showSeries, getData, generatePdf, generateCsv, generateImage, toggleTable, toggleLabels, toggleTooltip, getImage #svg, #legend, #tooltip-before, #tooltip-after, #plot-comment, #watermark, #chart-background
    VueUiQuadrant VueUiQuadrantDatasetItem[] VueUiQuadrantConfig @selectLegend, @selectPlot, @selectSide, hideSeries, showSeries, getData, generatePdf, generateCsv, generateImage, toggleTable, toggleLabels, toggleTooltip, getImage #svg, #legend, #tooltip-before, #tooltip-after, #watermark, #chart-background, #datapoint
    VueUiRadar VueUiRadarDataset VueUiRadarConfig @selectLegend, hideSeries, showSeries, getData, generatePdf, generateCsv, generateImage, toggleTable, toggleTooltip , getImage #svg, #legend, #tooltip-before, #tooltip-after, #watermark, #chart-background
    VueUiRidgeline VueUiRidgelineDatasetItem[] VueUiRidgelineConfig @selectLegend, @selectX, @selectDatapoint, hideSeries, showSeries, getData, generatePdf, generateCsv, generateImage, toggleTable , getImage #svg, #legend, #time-label,#watermark, #chart-background, #pattern
    VueUiRings VueUiRingsDatasetItem[] VueUiRingsConfig @selectLegend, hideSeries, showSeries, getData, generatePdf, generateCsv, generateImage, toggleTable, toggleTooltip , toggleLabels, getImage #svg, #legend, #tooltip-before, #tooltip-after, #watermark, #chart-background, #pattern
    VueUiScatter VueUiScatterDatasetItem[] VueUiScatterConfig hideSeries, showSeries, getData, generatePdf, generateCsv, generateImage, toggleTable, toggleTooltip , getImage #svg, #legend, #tooltip-before, #tooltip-after, #watermark, #chart-background
    VueUiStackbar VueUiStackbarDatasetItem[] VueUiStackbarConfig @selectLegend, @selectDatapoint, @selectTimeLabel, getData, generatePdf, generateCsv, generateImage, toggleTable, toggleLabels, toggleTooltip , getImage #svg, #legend, #time-label, #tooltip-before, #tooltip-after, #reset-action, #watermark, #chart-background, #pattern
    VueUiStackline VueUiStacklineDatasetItem[] VueUiStacklineConfig @selectLegend, @selectDatapoint, @selectTimeLabel, getData, generatePdf, generateCsv, generateImage, toggleTable, toggleLabels, toggleTooltip , getImage #svg, #legend, #time-label, #tooltip-before, #tooltip-after, #reset-action, #watermark, #chart-background, #pattern
    VueUiStripPlot VueUiStripPlotDataset[] VueUiStripPlotConfig @selectDatapoint, getData, generatePdf, generateCsv, generateImage, toggleTable, toggleLabels, toggleTooltip , getImage #svg, #legend, #tooltip-before, #tooltip-after, #watermark, #chart-background
    VueUiThermometer VueUiThermometerDataset VueUiThermometerConfig generatePdf, generateImage , getImage #svg, #watermark, #chart-background
    VueUiTiremarks VueUiTiremarksDataset VueUiTiremarksConfig generatePdf, generateImage , getImage #svg, #legend, #watermark, #chart-background
    VueUiTreemap VueUiTreemapDatasetItem[] VueUiTreemapConfig @selectLegend, @selectDatapoint, hideSeries, showSeries, getData, generatePdf, generateCsv, generateImage, toggleTable, toggleTooltip , getImage #svg, #rect, #legend, #tooltip-before, #tooltip-after, #watermark, #breadcrumb-label, #breadcrumb-arrow, #group-label
    VueUiWaffle VueUiWaffleDatasetItem[] VueUiWaffleConfig @selectLegend, hideSeries, showSeries, getData, generatePdf, generateCsv, generateImage, toggleTable, toggleTooltip , getImage #svg, #legend, #tooltip-before, #tooltip-after, #watermark, #pattern
    VueUiWheel VueUiWheelDataset VueUiWheelConfig generatePdf, generateImage , getImage #svg, #watermark, #chart-background
    VueUiWordCloud VueUiWordCloudDatasetItem[] / string VueUiWordCloudConfig getData, generatePdf, generateImage, generateCsv, toggleTooltip , getImage #svg, #reset-action, #watermark, #tooltip-before, #tooltip-after, #chart-background
    VueUiXyCanvas VueUiXyCanvasDatasetItem[] VueUiXyCanvasConfig @selectLegend, hideSeries, showSeries, getData, generatePdf, generateCsv, generateImage, toggleTable, toggleLabels, toggleStack, toggleTooltip , getImage #legend, #tooltip-before, #tooltip-after, #reset-action, #watermark
    VueUiXy VueUiXyDatasetItem[] VueUiXyConfig @selectLegend, @selectX, @selectTimeLabel, hideSeries, showSeries, getData, generatePdf, generateCsv, generateImage, toggleTable, toggleLabels, toggleStack, toggleTooltip , getImage #svg, #legend, #time-label, #tooltip-before, #tooltip-after, #reset-action, #plot-comment,#watermark, #chart-background, #pattern, #area-gradient, #bar-gradient

    3D charts

    Name dataset type config type emits / exposed methods slots custom tooltip themes
    VueUi3dBar VueUi3dBarDataset VueUi3dBarConfig generatePdf, generateImage, toggleTable, getImage #svg, #watermark, #chart-background

    Maps

    Name dataset type config type emits / exposed methods slots custom tooltip themes
    VueUiGeo VueUiGeoDatasetItem[] VueUiGeoConfig generatePdf, generateImage, toggleTooltip, toggleAnnotator, getImage, zoomIn, zoomOut, resetZoom, focusLocation #svg, #watermark, #pattern, #chart-background, #datapoint
    VueUiWorld VueUiWorldDataset VueUiWorldConfig getData, generatePdf, generateImage, toggleTable, toggleTooltip, toggleAnnotator, getImage #svg, #watermark, #pattern, #chart-background

    Data tables

    Name dataset type config type emits / exposed methods slots themes
    VueUiTable VueUiTableDataset VueUiTableConfig
    VueUiTableHeatmap VueUiTableHeatmapDatasetItem[] VueUiTableHeatmapConfig generatePdf, generateCsv, generateImage #caption, #rowTitle, #cell, #sum, #average, #median
    VueUiTableSparkline VueUiTableSparklineDatasetItem[] VueUiTableSparklineConfig generatePdf, generateCsv, generateImage
    VueUiCarouselTable VueUiCarouselTableDataset VueUiCarouselTableConfig generatePdf, generateImage, generateCsv, toggleAnimation, pauseAnimation, resumeAnimation #caption, #th, #td

    Rating

    Name dataset type config type emits / exposed methods slots
    VueUiRating VueUiRatingDataset VueUiRatingConfig @rate, getData,toggleReadonly #layer-under, #layer-above
    VueUiSmiley VueUiRatingDataset VueUiSmileyConfig @rate, getData,toggleReadonly

    Utilities

    Name dataset type config type emits / exposed methods slots
    VueUiAccordion VueUiAccordionConfig #arrow, #title, #content
    VueUiAnnotator VueUiAnnotatorDataset VueUiAnnotatorConfig @toggleOpenState, @saveAnnotations
    VueUiCursor VueUiCursorConfig
    VueUiDashboard VueUiDashboardElement[] VueUiDashboardConfig @change #content, #top, #bottom
    VueUiDigits number VueUiDigitsConfig
    VueUiKpi number VueUiKpiConfig #title, #value, #comment-before, #comment-after
    VueUiMiniLoader VueUiMiniLoaderConfig
    VueUiSkeleton VueUiSkeletonConfig
    VueUiTimer VueUiTimerConfig @start, @pause, @reset, @restart, @lap #time, #controls, #laps, #chart-background
    VueUiIcon see below - - #exp, #sub

    Icons

    Tailor made icons are available through the VueUiIcon component:

    <VueUiIcon name="arrowRight" :size="24" stroke="#6376DD" />

    All names of available icons are available in the vue-data-ui.d.ts file under the VueUiIconName type.

    VueUiIcon props:

    Name type Default value
    name VueUiIconName undefined
    size number 24
    stroke string (color) '#CCCCCC'
    strokeWidth number 1.5
    isSpin boolean false
    spinDuration string '1s'

    Icons have 2 slots that can be used to display exp or sub icons:

    <VueUiIcon name="database">
      <template #exp v-if="isLoading">
        <VueUiIcon name="spinner2" :is-spin="true"/>
      </template>
      <template #sub>
        <VueUiIcon name="person"/>
      </sub>
    </VueUiIcon>

    User options

    User options menu is accessible in the burger menu located on the top right of the charts, and visible by default. To hide the user options menu, set config.userOptions.show to false:

    const config = ref({
      userOptions: {
        show: false
      },
      ...
    })

    The user options menu can be set to appear only when hovering over the component:

    const config = ref({
      userOptions: {
        show: true,
        showOnChartHover: true, // Default: false
        keepStateOnChartLeave: true, // Set to false to always close the menu when hovering out of the chart
      },
    });

    Predefined actions in the user options menu depend on the type of chart. Some charts have more or fewer actions available. Action buttons contain predefined icons by default.

    To hide a given action, set the userOption.buttons, for example:

    const config = ref({
      userOptions: {
        show: true,
        buttons: {
          pdf: false,
          fullscreen: false,
          // all other actions will be visible by default (list of all actions below)
        },
      },
    });

    You can use slots to override the content of action buttons. What happens when the button is clicked is taken care of by the component, except for the optionFullscreen slot.

    <VueUiDonut :config="config" :dataset="dataset">
      <template #optionPdf> GENERATE PDF </template>
    
      <!-- This is the only action where scoped content is provided -->
      <template template #optionFullscreen="{ isFullscreen, toggleFullscreen }">
        <div @click="toggleFullscreen(isFullscreen ? 'out' : 'in')">
          TOGGLE FULLSCREEN
        </div>
      </template>
    </VueUiDonut>

    You can pass a callback through the config, for each button, to override the default behavior:

    const config = {
      userOptions: {
        callbacks: {
          pdf: ({ chartElement, imageUri, base64 }) => {
            console.log(chartElement);
          },
          img: ({ chartElement, imageUri, base64 }) => {
            console.log(base64);
          },
          csv: (csvStr: string) => {
            console.log(csvStr);
          },
          // the other attributes also have the same names as the buttons
        },
      },
    };

    User options actions available per chart:

    Chart name User options actions slot names
    VueUi3dBar optionPdf, optionImg, optionCsv, optionTable, optionFullscreen, optionAnnotator, optionSvg
    VueUiAgePyramid optionTooltip, optionPdf, optionImg, optionCsv, optionTable, optionFullscreen, optionAnnotator, optionSvg
    VueUiBump optionPdf, optionImg, optionCsv, optionTable, optionFullscreen, optionAnnotator, optionSvg
    VueUiBullet optionPdf, optionImg, optionFullscreen, optionAnnotator, optionSvg
    VueUiCandlestick optionTooltip, optionPdf, optionImg, optionCsv, optionTable, optionFullscreen, optionAnnotator, optionSvg
    VueUiCarouselTable optionPdf, optionImg, optionCsv, optionAnimation, optionFullscreen
    VueUiChestnut optionPdf, optionImg, optionCsv, optionTable, optionFullscreen, optionAnnotator, optionSvg
    VueUiChord optionPdf, optionImg, optionCsv, optionTable, optionFullscreen, optionAnnotator, optionSvg
    VueUiCirclePack optionTooltip, optionPdf, optionImg, optionCsv, optionTable, optionFullscreen, optionAnnotator, optionSvg
    VueUiDag optionPdf, optionImg, optionSvg, optionFullscreen, optionAnnotator, optionZoom
    VueUiDonut optionTooltip, optionPdf, optionImg, optionCsv, optionTable, optionLabels, optionFullscreen, optionAnnotator, optionSvg
    VueUiDonutEvolution optionPdf, optionImg, optionCsv, optionTable, optionFullscreen, optionAnnotator, optionSvg
    VueUiDumbbell optionPdf, optionImg, optionCsv, optionTable, optionFullscreen, optionAnnotator, optionSvg
    VueUiFlow optionTooltip, optionPdf, optionImg, optionCsv, optionTable, optionFullscreen, optionAnnotator, optionSvg
    VueUiFunnel optionPdf, optionImg, optionCsv, optionTable, optionFullscreen, optionAnnotator, optionSvg
    VueUiGalaxy optionTooltip, optionPdf, optionImg, optionCsv, optionTable, optionFullscreen, optionAnnotator, optionSvg
    VueUiGauge optionPdf, optionImg, optionFullscreen, optionAnnotator, optionSvg
    VueUiGeo optionPdf, optionImg, optionFullscreen, optionAnnotator, optionZoom, optionSvg
    VueUiHeatmap optionTooltip, optionPdf, optionImg, optionCsv, optionTable, optionFullscreen, optionAnnotator, optionSvg
    VueUiHistoryPlot optionTooltip, optionPdf, optionImg, optionCsv, optionTable, optionFullscreen, optionAnnotator, optionSvg
    VueUiHorizontalBar optionTooltip, optionPdf, optionImg, optionCsv, optionTable, optionSort, optionFullscreen, optionAnnotator, optionSvg
    VueUiMolecule optionTooltip, optionPdf, optionImg, optionCsv, optionTable, optionLabels, optionFullscreen, optionAnnotator, optionZoom, optionSvg
    VueUiMoodRadar optionPdf, optionImg, optionCsv, optionTable, optionFullscreen, optionAnnotator, optionSvg
    VueUiNestedDonuts optionTooltip, optionPdf, optionImg, optionCsv, optionTable, optionLabels, optionFullscreen, optionAnnotator, optionSvg
    VueUiOnion optionTooltip, optionPdf, optionImg, optionCsv, optionTable, optionFullscreen, optionAnnotator, optionSvg
    VueUiParallelCoordinatePlot optionTooltip, optionPdf, optionImg, optionCsv, optionTable, optionLabels, optionFullscreen, optionAnnotator, optionSvg
    VueUiQuadrant optionTooltip, optionPdf, optionImg, optionCsv, optionTable, optionLabels, optionFullscreen, optionAnnotator, optionSvg
    VueUiQuickChart optionTooltip, optionPdf, optionImg, optionFullscreen, optionAnnotator, optionSvg
    VueUiRadar optionTooltip, optionPdf, optionImg, optionCsv, optionTable, optionFullscreen, optionAnnotator, optionSvg
    VueUiRelationCircle optionPdf, optionImg, optionFullscreen, optionAnnotator, optionSvg
    VueUiRidgeline optionPdf, optionImg, optionCsv, optionTable, optionFullscreen, optionAnnotator, optionSvg
    VueUiRings optionTooltip, optionPdf, optionImg, optionCsv, optionTable, optionFullscreen, optionAnnotator, optionLabels, optionSvg
    VueUiScatter optionTooltip, optionPdf, optionImg, optionCsv, optionTable, optionFullscreen, optionAnnotator, optionSvg
    VueUiSparkHistogram (no user options menu)
    VueUiSparkStackbar (no user options menu)
    VueUiSparkTrend (no user options menu)
    VueUiSparkbar (no user options menu)
    VueUiSparkgauge (no user options menu)
    VueUiSparkline (no user options menu)
    VueUiStackbar optionTooltip, optionPdf, optionImg, optionCsv, optionTable, optionLabels, optionFullscreen, optionAnnotator, optionSvg
    VueUiStackline optionTooltip, optionPdf, optionImg, optionCsv, optionTable, optionLabels, optionFullscreen, optionAnnotator, optionSvg
    VueUiStripPlot optionTooltip, optionPdf, optionImg, optionCsv, optionTable, optionLabels, optionFullscreen, optionAnnotator, optionSvg
    VueUiTableHeatmap optionPdf, optionImg, optionCsv, optionFullscreen
    VueUiTableSparkline optionPdf, optionImg, optionCsv, optionFullscreen
    VueUiThermometer optionPdf, optionImg, optionFullscreen, optionAnnotator, optionSvg
    VueUiTiremarks optionPdf, optionImg, optionFullscreen, optionAnnotator, optionSvg
    VueUiTreemap optionTooltip, optionPdf, optionImg, optionCsv, optionTable, optionFullscreen, optionAnnotator , optionSvg
    VueUiWaffle optionTooltip, optionPdf, optionImg, optionCsv, optionTable, optionFullscreen, optionAnnotator , optionSvg
    VueUiWheel optionPdf, optionImg, optionFullscreen, optionAnnotator, optionSvg
    VueUiWordCloud optionPdf, optionImg, optionCsv, optionTable, optionFullscreen, optionAnnotator, optionZoom, optionSvg
    VueUiWorld optionTooltip, optionPdf, optionImg, optionCsv, optionTable, optionFullscreen, optionAnnotator, optionSvg
    VueUiXy optionTooltip, optionPdf, optionImg, optionCsv, optionTable, optionLabels, optionFullscreen, optionStack, optionAnnotator, optionSvg
    VueUiXyCanvas optionTooltip, optionPdf, optionImg, optionCsv, optionTable, optionLabels, optionFullscreen, optionStack, optionAnnotator

    User options menu icon can be customized using the #menuIcon slot:

    <template #menuIcon="{ isOpen, color }">
      <div>{{ isOpen ? 'close' : 'open' }}</div>
    </template>

    Since version 3.5.1, slots are exposed to customize the chart annotator sub-menu:

    <VueUiXy :dataset="dataset" :config="config">
      <template #annotator-action-close>
        <MyCloseIcon />
      </template>
      <template #annotator-action-color="{ color }">
        <MyColorIcon :color="color" />
      </template>
      <template #annotator-action-draw="{ mode }">
        <MyDrawIcon v-if="mode === 'draw'" />
        <MyTextIcon v-else />
      </template>
      <template #annotator-action-undo="{ disabled }">
        <MyUndoIcon />
      </template>
      <template #annotator-action-redo="{ disabled }">
        <MyRedoIcon />
      </template>
      <template #annotator-action-delete="{ disabled }">
        <MyDeleteIcon />
      </template>
    </VueUiXy>

    Custom palette

    It is possible to provide a custom palette in the config prop through config.customPalette (string[]) for the following components:

    • VueUi3dBar
    • VueUiBump
    • VueUiChestnut
    • VueUiChord
    • VueUiCirclePack
    • VueUiDonut
    • VueUiDonutEvolution
    • VueUiFlow
    • VueUiGalaxy
    • VueUiGauge
    • VueUiHistoryPlot
    • VueUiHorizontalBar
    • VueUiMolecule
    • VueUiNestedDonuts
    • VueUiOnion
    • VueUiParallelCoordinatePlot
    • VueUiQuadrant
    • VueUiQuickChart
    • VueUiRadar
    • VueUiRelationCircle
    • VueUiRidgeline
    • VueUiRings
    • VueUiScatter
    • VueUiSparkStackbar
    • VueUiSparkbar
    • VueUiStackbar
    • VueUiStackline
    • VueUiStripPlot
    • VueUiTableSparkline
    • VueUiThermometer
    • VueUiTreemap
    • VueUiWaffle
    • VueUiWordCloud
    • VueUiWorld
    • VueUiXy
    • VueUiXyCanvas

    If the array of colors provided in customPalette is too small for the dataset, remaining colors will be computed from the default internal palette. Accepted color formats: HEX, RGB, HSL, named colors.

    Responsive charts

    By default, all charts will scale to the width of their container. However the following charts can be made fully responsive, making them better to use in resizable containers:

    Component Responsive feature implemented
    VueUi3dBar
    VueUiAgePyramid
    VueUiAgePyramid
    VueUiBullet
    VueUiBump
    VueUiCarouselTable -
    VueUiChestnut -
    VueUiChord
    VueUiCirclePack
    VueUiDag
    VueUiDonut
    VueUiDonutEvolution
    VueUiDumbbell
    VueUiFlow
    VueUiFunnel
    VueUiGalaxy
    VueUiGauge
    VueUiGeo
    VueUiHeatmap
    VueUiHistoryPlot
    VueUiHorizontalBar
    VueUiMolecule -
    VueUiMoodRadar
    VueUiNestedDonuts
    VueUiOnion
    VueUiParallelCoordinatePlot
    VueUiQuadrant
    VueUiQuickChart
    VueUiRadar
    VueUiRelationCircle
    VueUiRidgeline
    VueUiRings
    VueUiScatter
    VueUiSparkHistogram
    VueUiSparkStackbar -
    VueUiSparkTrend
    VueUiSparkbar -
    VueUiSparkgauge -
    VueUiSparkline
    VueUiStackbar
    VueUiStackline
    VueUiStripPlot
    VueUiTableHeatmap -
    VueUiTableSparkline -
    VueUiThermometer
    VueUiTimer
    VueUiTiremarks
    VueUiTreemap
    VueUiWaffle
    VueUiWheel
    VueUiWordCloud
    VueUiWorld -
    VueUiXy
    VueUiXyCanvas

    To activate responsiveness, set the config.responsive attribute to true:

    const config = ref({
      responsive: true,
      // rest of your config
    });

    Important: when using the responsive feature, charts must be placed inside a container with fixed dimensions. Avoid setting a 100% height to this container, as it will result in the chart growing infinitely.

    Big data optimization (since v2.4.11)

    Very large datasets (> 5k or > 10k datapoints) will cause the browsers rendering engines to slow down, caused by too many SVG DOM elements to render. The following charts use the LTTB algorithm (Largest-Triangle-Three-Bucket) beyond a certain threshold to downsample the rendered dataset while preserving its shape. These components are the most susceptible to be used with very large datasets:

    Component Default Threshold Remark
    VueUiXy 1095
    VueUiXyCanvas 10000 Since this chart uses canvas, the threshold can be set higher
    VueUiQuadrant 1095
    VueUiScatter 1095
    VueUiSparkline 1095
    VueUiSparkTrend 1095

    The downsample threshold for each component can be set in the config prop passed to components:

    const config = ref({
      downsample: {
        threshold: 500,
      },
      ...// rest of your config
    })

    Chart custom background (since v2.4.59)

    A #chart-background slot is available on most charts to customize their background, to display a gradient, an image, etc. The content placed inside this slot has pointer-events set to none, so it does not interfere with the components' interactivity.

    <VueUiXy :config="config" :dataset="dataset">
      <template #chart-background>
        <div
          style="width: 100%; height: 100%; background: radial-gradient(at top left, red, white)"
        />
      </template>
    </VueUiXy>

    The following components do not support this slot, because it would not make sense:

    • VueUiCarouselTable
    • VueUiDag
    • VueUiGizmo
    • VueUiIcon
    • VueUiKpi
    • VueUiRating
    • VueUiSmiley
    • VueUiSparkStackbar
    • VueUiSparkbar
    • VueUiTableHeatmap
    • VueUiTableSparkline
    • VueUiTreemap
    • VueUiWaffle
    • VueUiXyCanvas

    Pattern slot (v2.4.67+)

    A #pattern slot is available on some components to apply custom patterns on datapoints for further customization. The slot exposes the seriesIndex, and a patternId which must be used on the pattern element to be recognized. A pattern element must be used inside this slot. It will be injected inside a defs element of the component.

    <VueUiDonut :config="config" :dataset="dataset">
      <template #pattern="{ seriesIndex, patternId }">
        <!-- Apply a pattern on the first datapoint only -->
        <pattern
          v-if="seriesIndex === 0"
          :id="patternId"
          viewBox="0,0,10,10"
          width="10%"
          height="10%"
        >
          <polygon points="0,0 2,5 0,10 5,8 10,10 8,5 10,0 5,2" />
        </pattern>
      </template>
    </VueUiDonut>

    The #pattern slot is available on the following components:

    • VueUiChord
    • VueUiCirclePack
    • VueUiDonut
    • VueUiGauge
    • VueUiRidgeline
    • VueUiRings
    • VueUiStackbar
    • VueUiStackline
    • VueUiHorizontalBar
    • VueUiWaffle
    • VueUiWorld
    • VueUiXy

    A set of 12 readymade patterns is available through the VueUiPattern component:

    import { VueUiPattern } from "vue-data-ui";
    <VueUiDonut :dataset="dataset" :config="config">
      <template #pattern="{ seriesIndex, patternId }">
        <VueUiPattern :id="patternId" name="bubbles" v-if="seriesIndex === 0" />
        <VueUiPattern :id="patternId" name="squares" v-if="seriesIndex === 1" />
      </template>
    </VueUiDonut>

    VueUiPattern accepts the following props:

    • id: string, required. Pass the patternId provided by the #pattern slot
    • name: string, required. The name of the pattern to use
    • fill: string, optional. The backgroundColor of the pattern. Transparent by default to show the datapoint base color
    • stroke: string, optional. Default: #2D353C
    • strokeWidth: number, optional. Default: 1
    • scale: number, optional. Default: 1

    List of available patterns:

    pattern name
    bubbles
    flooring
    grid
    hexagon-diamond
    hexagon-flooring
    hexagon-grid
    maze
    redrum
    scales
    squares
    wave
    zigzag

    Utility functions

    A set of utility functions is available:

    import {
      abbreviate,
      darkenColor,
      lightenColor,
      shiftColorHue,
      createTSpans,
      getCumulativeAverage,
      getCumulativeMedian,
    } from "vue-data-ui";

    abreviate

    import { abbreviate } from "vue-data-ui";
    
    const text = "lorem ipsum dolor sit amet";
    const abbreviated = abbreviate({
      source: text,
      length: 5,
    }); // Result: LIDSA

    darkenColor

    import { darkenColor } from "vue-data-ui";
    
    const color = "#FF0000";
    const darkened = darkenColor(color, 0.5); // Result: #800000ff

    lightenColor

    import { lightenColor } from "vue-data-ui";
    
    const color = "#FF0000";
    const lightened = lightenColor(color, 0.5); // Result: #ff8080ff

    shiftColorHue

    import { shiftColorHue } from "vue-data-ui";
    
    // Color format can be HEX (with or without alpha channel), RGB, RGBA, or named color
    const color = "#FF0000";
    const shifted = shiftColorHue(color, 0.1); // Result: #ff9900ff

    createTSpans

    import { createTSpans } from "vue-data-ui";
    
    const textContent = createTSpans({
      content: "This is an example of multiline text",
      fontSize: 16,
      fill: "#1A1A1A",
      maxWords: 3,
      x: 10,
      y: 20,
    });
    <!-- The output must be used inside a svg text element with `v-html`, for example in a #data-label slot, or in your own svg -->
    
    <text
      :x="10"
      :y="20"
      fill="#1A1A1A"
      :font-size="16"
      text-anchor="middle"
      v-html="textContent"
    />

    getCumulativeAverage

    import { getCumulativeAverage } from "vue-data-ui";
    
    // simple usage
    const arr = [0, 1, 2, 3, 4];
    const cumulativeAvg = getCumulativeAverage({ values: arr });
    
    // Ignore invalid values entirely
    const arrWithInvalid = [1, null, 2, Infinity, NaN, undefined];
    const cumulativeAvgNoInvalid = getCumulativeAverage({
      values: arrWithInvalid,
      config: {
        keepInvalid: false,
      },
    });
    
    // Convert invalid values to zero
    const cumulativeAvgZeroed = getCumulativeAverage({
      values: arrWithInvalid,
      config: {
        convertInvalidToZero: true,
      },
    });

    getCumulativeMedian

    import { getCumulativeMedian } from "vue-data-ui";
    
    // simple usage
    const arr = [0, 1, 2, 3, 4];
    const cumulativeMed = getCumulativeMedian({ values: arr });
    
    // Ignore invalid values entirely
    const arrWithInvalid = [1, null, 2, Infinity, NaN, undefined];
    const cumulativeMedNoInvalid = getCumulativeMedian({
      values: arrWithInvalid,
      config: {
        keepInvalid: false,
      },
    });
    
    // Convert invalid values to zero
    const cumulativeMedZeroed = getCumulativeMedian({
      values: arrWithInvalid,
      config: {
        convertInvalidToZero: true,
      },
    });

    mergeConfigs

    import { mergeConfigs, getVueDataUiConfig } from "vue-data-ui";
    const defaultConfig = getVueDataUiConfig("vue_ui_xy");
    
    // Create a full config with user overrides
    const merged = mergeConfigs({
      defaultConfig,
      userConfig: {
        chart: {
          backgroundColor: "#FF0000",
        },
      },
    });

    Multiline data labels

    Some components will display labels on multiple lines when the provided text contains a line break. (example: "I contain a\nline break"). Below is a table of the places where such line breaks can be used:

    Component Label displayed Where to use line breaks
    VueUiBump Series labels dataset names
    VueUiDag Node labels dataset label
    VueUiDonutEvolution Time labels (x axis) config.style.chart.layout.grid.xAxis.dataLabels.values
    VueUiHistoryPlot Plot labels dataset names
    VueUiHorizontalBar Series labels dataset names
    VueUiParallelCoordinatePlot Axis labels config.style.chart.yAxis.labels.axisNames
    VueUiQuadrant Plot labels dataset names
    VueUiQuickChart Time labels (x axis) config.xyPeriods
    VueUiRidgeline Time labels (x axis) config.style.chart.xAxis.labels.values
    VueUiRings Series labels dataset names
    VueUiStackbar Time labels (x axis) config.style.chart.grid.x.timeLabels.values
    VueUiStackline Time labels (x axis) config.style.chart.grid.x.timeLabels.values
    VueUiStripPlot x axis labels dataset names
    VueUiXy Time labels (x axis) config.chart.grid.labels.xAxisLabels.values

    PDF generation

    This package requires jspdf as a peer dependency. Please install it in your project if you intend to use the PDF printing feature.

    useObjectBindings

    A composable that flattens a reactive object into a set of refs (one for each “leaf” property) so you can easily bind to deeply nested values by their string paths.

    Why use it?

    • Automatic reactivity: Every nested property becomes a Ref, with automatic getters/setters that keep your source object in sync.
    • Flat API surface: Access or update any nested field by its dot‑delimited path, without writing deep destructuring or ref plumbing.
    • Dynamic path support: New paths added at runtime are discovered automatically (and proxied), so you never lose reactivity when mutating the structure.
    import { useObjectBindings, getVueDataUiConfig } from "vue-data-ui";
    
    const config = ref(getVueDataUiConfig("vue_ui_donut")); // or your custom config for this component
    
    const bindings = useObjectBindings(config);
    // Now `bindings` has computed refs for each leaf path:
    //   bindings["style.chart.backgroundColor"] → Ref<string>
    //   bindings["style.chart.color"] → Ref<string>
    //   bindings["customPalette"] → Ref<boolean>
    //   by default, arrays are skipped:
    //   no "customPalette.0", unless you disable skipArrays

    You can then use these in your template:

    <template>
      <div>
        <input
          type="color"
          v-model="bindings['style.chart.backgroundColor'].value"
        />
      </div>
    </template>

    Exposed methods

    Most chart components expose the following methods:

    getData

    const componentRef = ref(null);
    
    onMounted(async () => {
      if (componentRef) {
        const data = await componentRef.value.getData();
        console.log(data);
      }
    });

    getImage

    const componentRef = ref(null);
    
    onMounted(async () => {
      if (componentRef) {
        const { imgUri, base64, title, width, height, aspectRatio } =
          await componentRef.value.getImage({ scale: 2 }); // optional scale, defaults to 2, increase for better image quality
        console.log(imageUri);
      }
    });

    showSeries / hideSeries

    showSeries: (name: string) => void
    hideSeries: (name: string) => void

    Set a ref on your chart component to call exposed methods:

    <VueUiXy ref="chart" :dataset="dataset" :config="config" />

    Example:

    const chart = ref(null); // Add this ref on the chart component
    
    function showSeriesByName(name) {
      if (!chart.value) return;
      chart.value.showSeries(name);
    }
    
    function hideSeriesByName(name) {
      if (!chart.value) return;
      chart.value.hideSeries(name);
    }

    showSeries and hideSeries exposed methods are available on the following components:

    • VueUiDonut
    • VueUiDonutEvolution
    • VueUiGalaxy
    • VueUiHistoryPlot
    • VueUiHorizontalBar
    • VueUiNestedDonuts
    • VueUiOnion
    • VueUiParallelCoordinatePlot
    • VueUiQuadrant
    • VueUiRadar
    • VueUiRidgeline
    • VueUiRings
    • VueUiScatter
    • VueUiSparkStackbar
    • VueUiStackbar
    • VueUiStackline
    • VueUiTreemap
    • VueUiWaffle
    • VueUiXy
    • VueUiXyCanvas