![Oracle Drags Its Feet in the JavaScript Trademark Dispute](https://cdn.sanity.io/images/cgdhsj6q/production/919c3b22c24f93884c548d60cbb338e819ff2435-1024x1024.webp?w=400&fit=max&auto=format)
Security News
Oracle Drags Its Feet in the JavaScript Trademark Dispute
Oracle seeks to dismiss fraud claims in the JavaScript trademark dispute, delaying the case and avoiding questions about its right to the name.
@billboard.js/react
Advanced tools
React component for billboard.js
# Install billboard.js together if you don't have it already
$ npm install billboard.js @billboard.js/react
ℹ️ The component will create a
<div>
element and append it to the parent element andbindto
option is not supported in this case.
import React, {useEffect, useRef} from "react";
// import billboard.js
import bb, {line} from "billboard.js";
import "billboard.js/dist/billboard.css"; // default css
// import react wrapper
import BillboardJS, {IChart} from "@billboard.js/react";
// const BillboardJS = require("@billboard.js/react"); // for CJS
function App() {
// to get the instance, create ref and pass it to the component
const chartComponent = useRef<IChart>(null);
const options = {
data: {
columns: [
["data1", 300, 350, 300]
],
type: line()
}
};
useEffect(() => {
// get the instance from ref
const chart = chartComponent.current?.instance;
// call APIs
if (chart) {
chart.load( ... );
}
}, []);
return <BillboardJS
bb={bb}
options={options}
ref={chartComponent}
/* The values will be specified to the bound element as inlined styles */
style={{
width: "500px",
...
}}
/* When class name doesn't contains `bb`,
then you also need to update the default CSS to be rendered correctly. */
className={"bb my-classname"}
/>;
}
props
passed to the componentWhen the options are passed to the "chart" component.
// index.tsx
import App from "./App.tsx";
const options = {
data: {
columns: [
["data1", 300, 350, 300]
],
type: "bar"
}
};
<App {...options} />
// or
// <App data={
// columns: [
// ["data1", 300, 350, 300]
// ],
// type: "bar"
// } />
// App.tsx
import * as Chart from "billboard.js";
import "billboard.js/dist/billboard.css"; // default css
import BillboardJS, {IChart, IChartOptions} from "../src/index";
export function App(props: IChartOptions) {
const chartComponent = useRef<IChart>(null);
// when chart "type" is passed from props, chart types need to be initialized separately.
// in this scenario, can't be "tree-shaken" only used chart type modules.
Chart[props.data.type]();
useEffect(() => {
const chart = chartComponent.current?.instance;
if (chart) {
chart.load( ... );
}
}, []);
return <BillboardJS
bb={Chart.bb}
options={props}
ref={chartComponent}
/>;
}
// chart options
interface IChartOptions;
// @billboard.js/react props
interface IProp extends Pick<HTMLProps<HTMLDivElement>, "className" | "style"> {
bb: typeof bb;
options: ChartOptions;
}
// Chart instance
interface IChart {
instance: Chart;
}
FAQs
React component for billboard.js
We found that @billboard.js/react demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
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.
Security News
Oracle seeks to dismiss fraud claims in the JavaScript trademark dispute, delaying the case and avoiding questions about its right to the name.
Security News
The Linux Foundation is warning open source developers that compliance with global sanctions is mandatory, highlighting legal risks and restrictions on contributions.
Security News
Maven Central now validates Sigstore signatures, making it easier for developers to verify the provenance of Java packages.