custom widget layout
ulutomaz opened this issue · 1 comments
I would like to be able do a custom layout of a widget. Here I mean, I would like to set width and height on a per-widget basis.
Tried to bring know-how from various parts of the documentation, but sizing is something I can't get right.
The problem is, I don't want all the widgets with the same size properties. I would like to make a little bit more random. Per widget. I tried few things, but it doesn't execute them. :( I would like to have a graph in one of them for instance. And so on.
I there a way that I can bring per widget scss file? So to have like general overall layout designed, but if needed, add scss file next to my-widget.js... where I would be able to address this issues?
Hi @ulutomaz thanks for your question!
There are a couple of ways to go about this, from simple to more complex:
-
You can pass a custom
className
or inline styles to aWidget
:export const HelloWidget = _props => ( <Widget className="myClass" style={{ minWidth: "400px" }}> Hello world </Widget> );
className
here could come from a CSS module too.
In this case you're custom styles will have to cooperate with the default flexbox based layout.This solution is fine for simple customizations, like for example setting
flexBasis: 100%
for the widget to always take the full page width. -
You can use a complete alternative layout, see https://github.com/pascalw/dashbling/blob/master/docs/customize-layout.md. There you'll find an example to use a CSS grid based layout for example.
-
You could chose not to use the default
Widget
component at all. TheWidget
component is mostly there as an easy way to have a consistent layout and styling out the box, but if you want to truly customize it might not suit your needs.A Dashbling dashboard is just a tree of React components, where you bind data to via Dashblings
connect
function. So you're free to render anything! This would be totally valid for example:const CustomWidget = connect("hello")(props => ( <div> <span style={{ color: "hotpink" }}>Hello {props.name}</span> </div> )); export default _props => ( <Dashboard> <CustomWidget /> </Dashboard> );
Does this answer your question?