Have save time information and button just in case. Similar to Google Docs.
Show change alert that disappears after about 3 seconds.
Use existing Bootstrap style to communicate errors related to forms. Don't use Growl notifications. Learn more here.
<div class="form-group has-error">
<label for="inputHelpBlock">Input with help text</label>
<input type="text" id="inputHelpBlock" class="form-control" aria-describedby="helpBlock">
<span id="helpBlock" class="help-block">A block of help text that breaks onto a new line and may extend beyond one line.</span>
</div>
Site related errors should use Growl style error reporting. OSF uses Bootstrap Growl plugin to display messages. The advantage of this library is that is builds on top of bootstrap design and utilizes alert boxes, which means it already complies with the style guide.
Action examples | Feedback type | Auto vs manual dismiss |
---|---|---|
Mundane success eventsEvents that user expects to happen and occurs frequently.
|
Does not need feedback | N/A |
Expected but critical success eventsEvents that the user expects to succeed but it's success is important
|
Use text with "text-success" within the vicinity of the action elements.. i.e: Files uploaded! | Auto dismiss |
Not critical error eventsErrors that are caused by events that will try to repeat action or are not breaking.
|
Use text with "text-danger" within the vicinity of the action elements. i.e: Dropbox files could not be loaded! | Auto dismiss |
Input errorsValidation or input requirement errors that need the user to correct the error before moving on.
|
Use text with "text-danger" using the form validation error example above. If not using a form place near input field. See example in Validation section above. | Dismiss when user fixes error or cancels. |
Critical errorsErrors that break the user workflow and may result in problems, mainly due to connectivity
|
Use Growl box error | Manual dismiss |
Sometimes it's pertinent to stop the user to confirm the action they are taking. Often this is done as a Modal or onunload dialog boxes. This should be used in very rare instances.
This involves not just asking users if they want to apply the action but to add another step to make accidental actions impossible. In this case:
Use two step confirmation when the action is highly dangerous and should be done carefully. For intance deleting a project has repurcussions that can be serious and it is very difficult to reproduce aspects of it such as the unique ID that many links independent of the OSF uses.
<h5>Regular button</h5>
<button class="btn btn-success">Save</button>
<h5>Active state button</h5>
<button class="btn btn-default"><i class="text-muted">Saving...</i></button>
<h5>Disabled state button</h5>
<button class="btn btn-default disabled"><span class="text-muted">Save</span></button>
Often you will give users the opportunity to make a selection to either immediately save an option or to save together with the rest of the form. Follow these guidelines when making your decision about which component to use:
Do not use single flip-flop buttons that show the current state. You can however use the action verbs and utilize a single button this way.
If there is a UI component that shows more than 2 states and it's effects are immediate (such as toggling views) use a button group with a disabled button as label. This shows the user that these view changes belong together and work in a similar way.
If for some reason you need to have users choose from multiple options that are not part of a UI change but still needs to be part of a toolbar you can use split button drop downs from Bootstrap.
<div class="btn-group m-b-lg">
<button type="button" class="btn btn-default">Detailed options</button>
<button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown" aria-expanded="false">
<span class="caret"></span>
<span class="sr-only">Toggle Dropdown</span>
</button>
<ul class="dropdown-menu" role="menu">
<li class="active">
<a href="#">
<div>Selected option</div>
<div class="text-smaller">With some more details here.</div>
</a>
</li>
<li>
<a href="#">
<div>Options can take HTML</div>
<div class="text-smaller">Make <b>Bold</b> or <i>Italic</i>.</div>
</a>
</li>
<li><a href="#">Something else here</a></li>
<li class="divider"></li>
<li><a href="#">Separated link</a></li>
</ul>
</div>
When using multiple buttons with general save related actions (on forms, modals etc); use the following order:
When using drop downs, think carefully about the ordering of the options. Is the a hierarchical, or temporal order to the options that could be used to order them? Are they're certain options that users should see before others, assuming they are scanning down the list [this is actually just good practice whether they are using drop downs, check boxes, or radical buttons]? If none of these apply, then the drop down options should be in alphabetical order.
Alphabetize general and equal structures like country names:
Don't alphabetize order and hierarchy
Break alphabetical order in favor of common uses
If the input changes are not part of a UI element, use regular form standards. Below is a general guideline about what forms to use
Multiple items can be selected and there are less than 6 items per group | Default stacked checkboxes |
Single item can be selected and there are less than 6 items per group | Default stacked radio buttons |
Multiple items can be selected and there are more than 6 items in a group | Multiple select |
Single item can be selected and there are more than 6 items in a group | Default Select |
Modals should be used in rare instances when the content needs to be in full focus of the user because
When adding modals consider these questions:
When adding modals also be cognizant of these implementation practices:
Tooltips are a method where hovering over an element provides additional information in a hovering text element. It's an addition to the default "title" html attribute and default browser behavior.
The implementation and styling of tooltip should be exactly as standard bootstrap. Hovering over items is not always intutitive so don't use tooltips unless necessary.
<!-- With label, it will toggle the checkbox if clicking text -->
<label for="male">Male</label>
<input type="radio" name="sex" id="male" value="male"><br>
<!-- Without label, no action will happen if clicking text -->
<span>Female</span>
<input type="radio" name="sex" id="female" value="female"><br>
<!-- Recommended -->
<label for="Dataverse">Dataverse</label>
<input type="checkbox" name="dataverse" id="Dataverse" class="addon-select">
<!-- Not Recommended -->
<label>Dataverse<input type="checkbox" name="dataverse" class="addon-select"></label>
All dates are to be displayed in UTC and should be precise down to minute. Ideally dates should be bolded and appear with a explainatory tooltip. You may also want to include information about the timezone if many datetimes are listed.
2015-01-23 1:42 PMResources below will give you good ideas about general UI principles. If the contents differ from guidance in this document remember that the Style Guide should be applied in OSF.