Skip to content

Ticky007/solid-chartjs

Β 
Β 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

77 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

solid-chartjs

solid-chartjs

Logo

version downloads telegram chat

The solid-chartjs library is a SolidJS wrapper around the Chart.js library, allowing you to easily create interactive charts in your SolidJS applications.

Quick start

Installation:

pnpm add solid-chartjs chart.js @solid-primitives/refs
# or
yarn add solid-chartjs chart.js @solid-primitives/refs
# or
npm i solid-chartjs chart.js @solid-primitives/refs

Usage:

import { onMount } from 'solid-js'
import { Chart, Title, Tooltip, Legend, Colors } from 'chart.js'
import { Line } from 'solid-chartjs'

const MyChart = () => {
    /**
     * You must register optional elements before using the chart,
     * otherwise you will have the most primitive UI
     */
    onMount(() => {
        Chart.register(Title, Tooltip, Legend, Colors)
    })

    const chartData = {
        labels: ['January', 'February', 'March', 'April', 'May'],
        datasets: [
            {
                label: 'Sales',
                data: [50, 60, 70, 80, 90],
            },
        ],
    }
    const chartOptions = {
        responsive: true,
        maintainAspectRatio: false,
    }

    return (
        <div>
            <Line data={chartData} options={chartOptions} width={500} height={500} />
        </div>
    )
}

If you don't want to import and register the controllers, elements, scales, and plugins you want to use, you can use the following solution:

Note: it is considered to better use the tree-shakable way to decrease the bundle size.

import 'chart.js/auto'
import { DefaultChart } from 'solid-chartjs'

<DefaultChart type="line" data={data} options={options} />

Chart Props

Prop Description Type
width The width of the chart canvas in pixels. number | undefined
height The height of the chart canvas in pixels. number | undefined
fallback A fallback element to display when chart fails. JSX.Element
type The type of the chart. keyof ChartTypeRegistry
data The chart data object. ChartData | undefined
options The chart options object. ChartOptions | undefined
plugins The chart plugins object. Plugin[] | undefined

Examples

Check out /dev folder and run the SolidJs application to see how it works.

You can also use the DefaultChart components:

Note: DefaultChart is a wrapper around Chart component, so you can use all the props from Chart component. DefaultChart component does not have its registrable elements registered by default, so you need to register them yourself unless you use chart.js/auto.

import { onMount } from 'solid-js'
import {
    Chart,
    LineController,
    CategoryScale,
    PointElement,
    LineElement,
    LinearScale,
} from 'chart.js'
import { DefaultChart } from 'solid-chartjs'

const MyChart = () => {
    onMount(() => {
        Chart.register(LineController, CategoryScale, PointElement, LineElement, LinearScale)
    })

    // ... your data and options objects

    return <DefaultChart type="line" data={data} options={options} width={400} height={300} />
}

Usage of fallback prop:

const fallback = () => {
    return (
        <div>
            <p>Chart is not available</p>
        </div>
    )
}

<DefaultChart type="bar" data={chartData} options={chartOptions} fallback={fallback} />

Credits

Contributing

Contribution Guidelines

Please read our Contribution Guidelines before you contribute.

Code and Commit Standards

Please read and follow the standards for this repo

These standards are laid out to ensure that the code base is as maintainable as possible.

License

MIT

About

πŸ“ˆ SolidJs components for Chart.js

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • TypeScript 79.9%
  • CSS 10.4%
  • Shell 8.1%
  • HTML 1.6%