Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

vue-css-donut-chart

Package Overview
Dependencies
Maintainers
1
Versions
15
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

vue-css-donut-chart

Lightweight Vue component for drawing pure CSS donut charts

  • 1.1.6
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
6.8K
decreased by-3.5%
Maintainers
1
Weekly downloads
 
Created
Source

vue-css-donut-chart

Lightweight Vue component for drawing pure CSS donut charts

npm npm monthly downloads npm bundle size GitHub Actions status Coverage status Snyk Vulnerabilities for npm package

Live demo

Live demo can be found on the project page – https://dumptyd.github.io/vue-css-donut-chart

Playground – https://jsfiddle.net/dumptyd/ujvypcd3/

Features

:black_medium_small_square: No external dependencies.

:black_medium_small_square: Small size footprint. npm bundle size

:black_medium_small_square: High test coverage. Coverage status

:black_medium_small_square: Performs automatic font size recalculation as the size of the donut changes.

:black_medium_small_square: Supports responsive donut and pie charts.

Table of Contents

Installation

Install via yarn or npm
yarn add vue-css-donut-chart

OR

npm install vue-css-donut-chart
Registering vue-css-donut-chart

:black_medium_small_square: ES6

import Donut from 'vue-css-donut-chart';
import 'vue-css-donut-chart/dist/vcdonut.css';

Vue.use(Donut);

:black_medium_small_square: In-browser using CDNs
Using unpkg
<link rel="stylesheet" href="https://unpkg.com/vue-css-donut-chart@1/dist/vcdonut.css">
<script src="https://unpkg.com/vue-css-donut-chart@1"></script>
<script>
  Vue.use(vcdonut.default);
</script>
Using jsDelivr
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/vue-css-donut-chart@1/dist/vcdonut.css">
<script src="https://cdn.jsdelivr.net/npm/vue-css-donut-chart@1/dist/vcdonut.umd.min.js"></script>
<script>
  Vue.use(vcdonut.default);
</script>

Usage

Basic usage

With sane defaults in place, basic usage is as simple as passing a sections array with objects containing a value property. This will create a donut with 2 sections that take up 25% each.

<template>
  <vc-donut :sections="sections">Basic donut</vc-donut>
</template>
<script>
  export default {
    data() {
      return {
        sections: [{ value: 25 }, { value: 25 }]
      };
    }
  };
</script>
Usage with all the available props
<template>
  <vc-donut
    background="white" foreground="grey"
    :size="200" unit="px" :thickness="30"
    has-legend legend-placement="top"
    :sections="sections" :total="100"
    :start-angle="0"
    @section-click="handleSectionClick"
  >
    <h1>75%</h1>
  </vc-donut>
</template>
<script>
  export default {
    data() {
      return {
        sections: [
          { label: 'Red section', value: 25, color: 'red' },
          { label: 'Green section', value: 25, color: 'green' },
          { label: 'Blue section', value: 25, color: 'blue' }
        ]
      };
    },
    methods: {
      handleSectionClick(section) {
        console.log(`${section.label} clicked.`);
      }
    }
  };
</script>
Using the component as a pie chart

Making the component look like a pie chart is as simple as setting the thickness to 100.

<template>
  <vc-donut
    :sections="[{ value: 35 }, { value: 15 }, { value: 15 }, { value: 35 }]"
    :thickness="100">
  </vc-donut>
</template>

Note: setting thickness to 100 will completely hide the diagram's text or slot content. The content will still be present in the DOM, however it won't be visible for obvious reasons.

API

Props
PropTypeRequiredDefaultDescription
sizeNumberNo250Diameter of the donut. Can be any positive value.
unitStringNo'px'Unit to use for size. Can be any valid CSS unit. Use % to make the donut responsive.
thicknessNumberNo20Percent thickness of the donut ring relative to size. Can be any positive value between 0-100 (inclusive). Set this to 0 to draw a pie chart instead.
textStringNoText to show in the middle of the donut. This can also be provided through the default slot.
backgroundStringNo'#ffffff'Background color of the donut. In most cases, this should be the background color of the parent element.
foregroundStringNo'#eeeeee'Foreground color of the donut. This is the color that is shown for empty region of the donut ring.
start-angleNumberNo0Angle measure in degrees where the first section should start.
totalNumberNo100Total for calculating the percentage for each section.
has-legendBooleanNofalseWhether the donut should have a legend.
legend-placementStringNo'bottom'Where the legend should be placed. Valid values are top, right, bottom and left. Doesn't have an effect if has-legend is not true.
sectionsArray
No[]An array of objects. Each object in the array represents a section.
section.valueNumberYesValue of the section. The component determines what percent of the donut should be taken by a section based on this value and the total prop. Sum of all the sections' value should not exceed total, an error is thrown otherwise.
section.colorStringRead descriptionRead descriptionColor of the section. The component comes with 24 predefined colors, so this property is optional if you have <= 24 sections without the color property.
section.labelStringNo'Section <section number>'Name of the section. This is used in the legend as well as the tooltip text of the section.
Events
EventParameterDescription
section-clicksection objectEmitted when a section is clicked. section object of the clicked section is passed as an argument. Consider adding a custom property (eg: name) to the section objects to uniquely identify them.
Slots
SlotDescription
default slotsection object
legendSlot for plugging in your own legend.

Contributing

Issueshttps://github.com/dumptyd/vue-css-donut-chart/issues

License

Code released under MIT license.

Keywords

FAQs

Package last updated on 29 Sep 2019

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc