Giter Site home page Giter Site logo

widgets-1's Introduction

@dojo/widgets

Build Status codecov npm version

A suite of pre-built Dojo 2 widgets, ready to use in your web application. These widgets are built using Dojo 2's widget authoring system (@dojo/widget-core).

WARNING This is beta software. While we do not anticipate significant changes to the API at this stage, we may feel the need to do so. This is not yet production ready, so you should use at your own risk.

Usage

To use @dojo/widgets in your project, you will need to install the package:

npm install @dojo/widgets

This package contains all of the widgets in this repo.

All of the widgets are on the same release schedule, that is to say, that we release all widgets at the same time. Minor releases may include new widgets and/or features, whereas patch releases may contain fixes to more than 1 widget.

To use a widget in your application, you will need to import each widget individually:

import Button from '@dojo/widgets/button/Button';

Each widget module has a default export of the widget itself, as well as named exports for things such as properties specific to the widget:

import Button, { ButtonProperties } from '@dojo/widgets/button/Button';

Because each widget is a separate module, when you create a release build of your application, you will only include the widgets that you have explicitly imported. This allows our dojo cli build tooling to make sure that the production build of your application only includes the widgets you use and is as small as possible.

Features

  • All widgets are supported in all evergreen browsers (Chrome, Edge, Firefox, IE11+ and Safari) as well as popular mobile browsers (Mobile Safari, Chrome on Android).

  • All widgets support accessibility (a11y) out of the box.

  • All widgets are fully themeable. In a future release we will ship with several official Dojo 2 themes that can be applied to the widgets.

  • All widgets support internationalization (i18n)

Widgets

Form widgets

Button

Checkbox/Switch

ComboBox

Label

Radio

Select

Slider

TextArea

TextInput

Layout widgets

SlidePane

TabPane

Misc widgets

Dialog

Conventions

EventHandlers

You can register event handlers that get called when the corresponding events occur, by passing the handlers into a widget, in their properties. The naming convention for event handlers is as follows:

  • if the parent of the widget has the power to decide if an event is successful, i.e. can cancel the event, then the child widget will call an event handler in the following format:

onRequest[X], e.g. for a close event, the event handler called by the child widget must be called onRequestClose

Here the child widget is requesting that the close event take place.

  • for events that will occur regardless of child/parent interaction, then the Request naming convention is dropped:

on[X], e.g. for a dismiss event, then event handler called by the child widget must be called onDismiss

Icons

We use font awesome for icons. Where a theme requires specific icons that are not part of the Font Awesome set, then those themes will ship their own icons.

Coding conventions

px vs. em - we specify font sizes in px. When creating a widget, spacing (margin, padding) should be specified using px unless the design calls for proportional spacing, in which case em can be used.

How to customize a widget

There are may ways in which you can customize the behavior and appearance of Dojo 2 widgets. See the widget-core README for examples of how to customize the theme or a specific CSS class of a widget.

Or can you write your own widget that extends an official widget.

Extending widgets

Because all Dojo 2 widgets are Classes, you can simply extend the Class to add or change its behavior.

export class MyWidget extends Button {
...
}

Dojo 2 widgets provide standard extension points to allow you to customise their behavior. For more details, please refer to the widget authoring system.

How do I contribute?

We appreciate your interest! Please see the Dojo 2 Meta Repository for the Contributing Guidelines and Style Guide.

Installation

To start working with this package, clone the repository and run npm install.

In order to build the project run grunt dev or grunt dist.

Testing

Test cases MUST be written using Intern using the Object test interface and Assert assertion interface.

90% branch coverage MUST be provided for all code submitted to this repository, as reported by istanbul’s combined coverage results for all supported platforms.

To test locally in node run:

grunt test

To test against browsers with a local selenium server run:

grunt test:local

To test against BrowserStack or Sauce Labs run:

grunt test:browserstack

or

grunt test:saucelabs

Licensing information

© 2017 JS Foundation. New BSD license.

widgets-1's People

Contributors

agubler avatar bitpshr avatar bryanforbes avatar edhager avatar kitsonk avatar lzhoucs avatar msssk avatar pottedmeat avatar rishson avatar rorticus avatar smhigley avatar tomdye avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.