Overview
0This is a living styleguide and anyone is able to contribute, however any changes made will need to be considered with the main project in mind. These guidelines are strongly inspired by Material design which have been implemented in Google inbox and Android
-
Main concepts
0.1- Consistency
By making the users recognize elements and behaviors we make the product faster to use.
- Less clicks
Keep the number of clicks in mind when building a view.
- Scalability
Consider how things works with any number of data items, from S to XL
- Help the user
"Nature doesn't like empty space, and neither do users". Never provide an empty form but suggest things or display placeholders. When the user arrive to your view, dont present an empty state even if there are no items to show - instead provide friendly instructions on how to get started.
- Performance
Avoid big bunches of data which doesn't fit on the screen. Consider aggregating data as an entry point.
- Responsiveness
Using the containers and elements from this Styleguide should result in a layout that works on desktops, tablets and phones.
Other things to keep in mind
-
Number of actions
Reduce the number of actions displayed at the same time. Maybe some of the less important ones can be hidden until needed? For example, split similar actions in a context menu into several menus so a user don't get overwhelmed
- Loading
If something takes time, dont leave the users in the dark. Display a loading bar, a spinner or a message.
- Sorting, searching and filtering
We want to provide good ways for the user to find what they are looking for. Sort large amounts of data alphabetically or chronologically by default but give the user the option to change sorting order. If we show a large set of data, provide a filter to narrow it down. If there is a large amount of data available but not visible, provide helpful search functionality to bring up what the user wants.- JQuery and Bootstrap
SignalR depends on JQuery, we do not use JQuery for other purposes. We want to phase it out eventually. Datepickers and timepickers comes from bootstrap, these we would also like to phase out.- Help
Help the user understand what their actions will do, what can be done in your module, how to quickly get up and running and let the know if something goes wrong. Add useful tooltips on elements providing more information (3/4 words max => "create a user" for an icon "+" for example) or remind users that they can find more information on the wiki page for each module. - Sorting, searching and filtering
-
Getting started
0.2To quickly get started building a view we provide a guide and a few examples of how to combine elements and containers to create basic layouts.
-
Basic layout
0.3.1
-
Show
Hide
markup
<div class="view-header with-fab with-desc">
<div class="view-title">
<h1><i class="mdi mdi-cake"></i> Hello world</h1>
<p>This module will do great things when it grows up</p>
</div>
<div class="fab-wrapper">
<button class="wfm-fab material-depth-1"><i class="mdi mdi-plus"></i>
<md-tooltip>
Get started
</md-tooltip>
</button>
</div>
</div>
<div class="con-row">
<div class="con-flex">
<div class="panel material-depth-1">
<div class="sub-header">
<h2>A humble panel</h2>
<div class="head-actions panel-menu">
<div tabindex=0 class="context-menu card-context">
<i class="mdi mdi-dots-vertical"></i>
</div>
</div>
</div>
<div class="con-row">
<div class="con-flex">
Panels can host any elements you want, just break it up using the layout grid (row/flex).
</div>
</div>
<div class="con-row">
<div class="con-flex">
This is a flexbox
</div>
<div class="con-flex">
This is also a flexbox
</div>
</div>
<div class="con-footer">
<button class="wfm-btn wfm-btn-invis-default">secondary</button>
<button class="wfm-btn wfm-btn-invis-primary">main</button>
</div>
</div>
</div>
</div>
Hello world
This module will do great things when it grows up
A humble panel
Panels can host any elements you want, just break it up using the layout grid (row/flex).
This is a flexbox
This is also a flexbox