16.0.0-alpha1 • Published 6 years ago

@highpoint/ui-elements v16.0.0-alpha1

Weekly downloads
61
License
UNLICENSED
Repository
bitbucket
Last release
6 years ago

HighPoint UI Elements

Library of common UI elements used by HighPoint's web applications.

Installation

yarn add @highpoint/ui-elements

Development

Run yarn dev to start the development server. When you make a change to the src files, the dist files will be rebuilt and server will automatically update.

Usage

Import the components from @highpoint/ui-elements. For example:

import { Checkbox } from '@highpoint/ui-elements';

NOTE: Because tree-shaking is sub-par, we recommend you use babel-plugin-transform-imports to transform the import statements so only the components you use get included in your bundle.

Example .babelrc:

{
  "plugins": [
    [
      "transform-imports",
      {
        "@highpoint/ui-elements": {
          "transform": "@highpoint/ui-elements/dist/es/${member}",
          "preventFullImport": true
        },
        "@highpoint/ui-elements/icons": {
          "transform": "@highpoint/ui-elements/dist/es/icons/${member}",
          "preventFullImport": true
        }
      }
    ]
  ]
}

Components

BackButton

Component to display a link that goes back in PeopleSoft's history.

If a function is passed as the child (render-props), it will be passed props � { label } � for display.

NOTE: This component will only produce output in a non-Fluid PeopleSoft environment.

Props

BackButton.propTypes = {
  children: PropTypes.oneOfType([PropTypes.func, PropTypes.node]),
  className: PropTypes.string
};

Example

<BackButton className="go-back">
  <span>Go Back</span>
</BackButton>

<BackButton>
  {({ label }) => (
    <span className="go-back">Go Back</span>
  )}
</BackButton>

Scrollbar

Component to tweak native scrollbar styles.

BackWrapper

Component to generate props required to display a link that goes back in PeopleSoft's history. The component does not produce any HTML itself.

Provides the following props to children: { label, url }.

NOTE: This component will only produce output in a non-Fluid PeopleSoft environment.

Props

BackWrapper.propTypes = {
  children: PropTypes.func
};

Example

<BackWrapper>
  {({ label, url }) => (
    <a href={url}>Go Back</a>
  )}
</BackWrapper>

Checkbox

Component to display an accessible, styled checkbox.

Checkbox

Props

Checkbox.propTypes = {
  checked: PropTypes.bool,
  className: PropTypes.string,
  color: PropTypes.string,
  defaultChecked: PropTypes.bool,
  id: PropTypes.string,
  label: PropTypes.node.isRequired,
  labelClassName: PropTypes.string,
  name: PropTypes.string,
  onChange: PropTypes.func,
  title: PropTypes.string
};

Example

<Checkbox
  checked={true}
  label={
    <span class="sr-only">
      The Label
    </span>
  }
  id="the-checkbox"
  onChange={this.onChange}
/>

Clickable

Component to display an accessible, clickable element for use when a <button> is not an option. Defaults to using a <div> as its element.

Props

Clickable.propTypes = {
  children: PropTypes.node,
  className: PropTypes.string,
  onClick: PropTypes.func.isRequired,
  role: PropTypes.string,
  tabIndex: PropTypes.number,
  tag: PropTypes.oneOfType([PropTypes.node, PropTypes.string]),
  title: PropTypes.string
};

Example

<Clickable
  className="styled-button"
  onClick={this.onClick}
>
  <div className="inner-button">
    A Clickable Element
  </div>
</Clickable>

GradeColor

Render component that provides the color value given a grade point.

Props

GradeColor.propTypes = {
  children: PropTypes.func.isRequired,
  gradePoints: PropTypes.number.isRequired,
  includeInGPA: PropTypes.bool
};

Example

<GradeColor gradePoints={2.7} includeInGPA>
  {({ color }) => <div style={{color}}>C</div>}
</GradeColor>

Icon

Component to display an SVG icon.

NOTE: Requires babel-plugin-inline-react-svg.

Icon

Props

Icon.propTypes = {
  className: PropTypes.string,
  icon: PropTypes.oneOfType([PropTypes.element, PropTypes.func]).isRequired
};

Example

import CartIcon from './cart.svg';

<Icon icon={CartIcon} />

InAppWrapper

Component that sends an is-alive post message to the parent (if one exists) and listens for responses. If an in-mobile, in-cx, or in-hybrid response is, received appropriate CSS classes are applied to the <html> element and the callback function is executed.

This component is primarily used in applications that will be wrapped by HighPoint Mobile or Highpoint Campus Experience.

Props

InAppWrapper.propTypes = {
  children: PropTypes.node.isRequired,
  inHybrid: PropTypes.func,
  inMobile: PropTypes.func,
  inCampusExperience: PropTypes.func
};

Example

<InAppWrapper inCampusExperience={() => console.log("is in CX")}>
  <App />
</InAppWrapper>

DEPRECATED (use InAppWrapper)

InMobileWrapper

Component that sends an is-alive post message to the parent (if one exists) and listens for responses. If an in-mobile or in-hybrid response is, received appropriate CSS classes are applied to the <html> element.

This component is primarily used in applications that will be wrapped by HighPoint Mobile.

Props

InMobileWrapper.propTypes = {
  children: PropTypes.node.isRequired,
  inHybrid: PropTypes.func,
  inMobile: PropTypes.func
};

Example

<InMobileWrapper>
  <App />
</InMobileWrapper>

NewWindow

Component to display an anchor that opens an duplicate of the current window. It is especially useful in PeopleSoft environments.

Props

NewWindow.propTypes = {
  children: PropTypes.node.isRequired,
  className: PropTypes.string
};

Example

<NewWindow>New Window</NewWindow>

OnEscapeListener

Component that listens for the "Escape" key to be pressed and runs a function when that happens.

Props

OnEscapeListener.propTypes = {
  children: PropTypes.node.isRequired,
  onEscape: PropTypes.func.isRequired
};

Example

<OnEscapeListener onEscape={this.closeMenu}>
  <Menu isOpen={this.state.menuIsOpen}>
    <MenuItem>Menu Item 1</MenuItem>
    <MenuItem>Menu Item 2</MenuItem>
  </Menu>
</OnEscapeListener>

OnNetworkChange

Component that listens for changes in the browser's online/offline status and runs a function when it changes.

Props

OnNetworkChange.propTypes = {
  children: PropTypes.node.isRequired,
  onNetworkChange: PropTypes.func.isRequired
};

Example

<OnNetworkChange onNetworkChange={this.onNetworkChange}>
  <App isOnline={this.state.isOnline} />
</OnNetworkChange>

Radio

Component to display an accessible, styled radio button.

Radio

Props

Radio.propTypes = {
  checked: PropTypes.bool,
  className: PropTypes.string,
  color: PropTypes.string,
  defaultChecked: PropTypes.bool,
  id: PropTypes.string,
  label: PropTypes.node.isRequired,
  labelClassName: PropTypes.string,
  name: PropTypes.string,
  onChange: PropTypes.func,
  title: PropTypes.string
};

Example

<Radio
  checked={true}
  label={
    <span class="sr-only">
      The Label
    </span>
  }
  id="the-radio"
  onChange={this.onChange}
/>

Switch

Component to display an accessible, styled switch.

Switch

Props

Switch.propTypes = {
  checked: PropTypes.bool,
  defaultChecked: PropTypes.bool,
  className: PropTypes.string,
  color: PropTypes.string,
  id: PropTypes.string,
  label: PropTypes.node.isRequired,
  labelClassName: PropTypes.string,
  name: PropTypes.string,
  onChange: PropTypes.func,
  title: PropTypes.string
};

Example

<Switch
  checked={true}
  label={
    <span class="sr-only">
      The Label
    </span>
  }
  id="the-switch"
  onChange={this.onChange}
/>

Button

Component to display Material-UI Buttons following style guide.

Button

Props

This is in addition to all Material-UI Button props.

Button.propTypes = {
  variant: PropTypes.oneOf(['primary', 'secondary', 'destructive']).isRequired
};

Example

<Button variant={primary}>
  Primary
</Button>

IconButton

Component to render accessible icon button with tooltip.

Props

This is in addition to all Material-UI Button props.

IconButton.propTypes = {
  title: PropTypes.string.isRequired,
  className: PropTypes.string,
  style: PropTypes.object,
  fullWidth: PropTypes.bool,
  children: PropTypes.node
};

Example

<IconButton title="Expand Menu" variant="outlined">
  <SmallDotsMenu />
</IconButton>

ComboBox

Component to render a searchable select combobox.

Props

Additional props will be passed to the Downshift component.

ComboBox.propTypes = {
  label: PropTypes.string,
  value: PropTypes.string,
  onChange: PropTypes.func,
  options: PropTypes.arrayOf(PropTypes.array),
  disabled: PropTypes.bool,
  required: PropTypes.bool,
  showRequired: PropTypes.bool,
  displayNoneText: PropTypes.string,
  placeholder: PropTypes.string,
  className: PropTypes.string,
  fullWidth: PropTypes.bool,
  error: PropTypes.bool,
  helperText: PropTypes.string,
  inputClass: PropTypes.string,
  id: PropTypes.string,
  renderValue: PropTypes.func,
  searchable: PropTypes.bool,
  noOptionsText: PropTypes.string,
  textFieldProps: PropTypes.object,
  classes: PropTypes.object
};

Example

<ComboBox
  label="Combobox"
  value={state.selectValue}
  onChange={newVal => onChange(newVal)}
  options={Array.from({length: 7}, (v, i) => [i.toString(), `Option ${i.toString()}`])}
/>

MultiSelect

Component to render a multiselect box.

Props

Additional props will be passed to the Downshift component.

MultiSelect.propTypes = {
  label: PropTypes.string,
  value: PropTypes.array,
  onChange: PropTypes.func,
  options: PropTypes.arrayOf(PropTypes.array),
  disabled: PropTypes.bool,
  required: PropTypes.bool,
  showRequired: PropTypes.bool,
  placeholder: PropTypes.string,
  className: PropTypes.string,
  fullWidth: PropTypes.bool,
  error: PropTypes.bool,
  helperText: PropTypes.string,
  inputClass: PropTypes.string,
  id: PropTypes.string,
  renderValue: PropTypes.func,
  searchable: PropTypes.bool,
  noOptionsText: PropTypes.string,
  textFieldProps: PropTypes.object,
  classes: PropTypes.object,
  showAllOption: PropTypes.bool
};

Example

<MultiSelect
  label="MultiSelect"
  value={state.selectValue}
  onChange={newVal => onChange(newVal)}
  options={Array.from({length: 7}, (v, i) => [i.toString(), `Option ${i.toString()}`])}
/>

Notification

Component to display a notification at the top-right corner of the screen

Props

Notification.propTypes = {
  classes: PropTypes.object,
  open: PropTypes.bool.isRequired,
  icon: PropTypes.node.isRequired,
  title: PropTypes.string.isRequired,
  message: PropTypes.string.isRequired,
  onClose: PropTypes.func.isRequired,
  cancelText: PropTypes.string,
  confirmText: PropTypes.string,
  onConfirm: PropTypes.func,
  onCancel: PropTypes.func
};

Any other properties supplied will be spread to the MUI Snackbar component.

Example

<Notification
  open={true}
  icon={<Warning />}
  title="warning!"
  message="this is the most incredible message ever."
  onCancel={console.log}
  onConfirm={console.log}
  onClose={console.log}
/>

ModalNotification

Component to display a notification inside a modal.

Props

ModalNotification.propTypes = {
  classes: PropTypes.object,
  open: PropTypes.bool.isRequired,
  variant: PropTypes.oneOf(['success', 'failure']),
  message: PropTypes.string.isRequired,
  onClose: PropTypes.func.isRequired
};

Example

<ModalNotification
  open={true}
  onClose={console.log}
  variant="success"
  message="This is a notification message"
/>

DatePicker

Component for Date selection. (Note: This component needs to be wrapped in the material-ui-pickers MuiPickersUtilsProvider component with the proper utils declaration. https://material-ui-pickers.dev/getting-started/installation)

Props

Any additional props will be passed to the material-ui-pickers InlineDatePicker component.

DatePicker.propTypes = {
  label: PropTypes.node.isRequired,
  required: PropTypes.bool,
  onChange: PropTypes.func.isRequired,
  minDate: PropTypes.object,
  maxDate: PropTypes.object,
  value: PropTypes.object,
  fullWidth: PropTypes.bool,
  onlyCalendar: PropTypes.bool,
  bordered: PropTypes.bool
};

Example

<DatePicker
  label="Date"
  onChange={date => setDate(date)}
  value={state.date}
/>

PrintSection

The PrintSection component renders some markup only when printing.

Props

PrintSection.propTypes = {
  children: PropTypes.node.isRequired
};

Example

<PrintSection>
    {"This is the content that will be printed"}
</PrintSection>

Slider

The Slider component renders a read only input with a Slider inside a popover once you click on the input.

Props

Slider.propTypes = {
  label: PropTypes.string.isRequired,
  value: PropTypes.any.isRequired,
  onChange: PropTypes.func.isRequired,
  id: PropTypes.string,
  inputProps: PropTypes.object, // props for the input
  renderValue: PropTypes.func
};
// and also any MUI Slider props.

Example

  const [value, onChange] = useState(0);
  <Slider label="Available Seats" value={value} onChange={onChange} />;

Theme

import { Theme } from '@highpoint/ui-elements';

Theme.Provider

Wrap your app in <Provider /> to theme your Material UI components and make them match the style-guide

const config = {
  sansSerifFont: 'Arial',
  primaryAlt: 'FFF',
  primaryColor: 'F00',
  primaryText: '000'
};

<Theme.Provider config={config}> {children} </Theme.Provider>

Typography variants

header 1 -> h1
header 2 -> h2
header 3 -> h3
header 4 -> h4
basic -> body1
small -> body2
tiny -> caption

Theme.Consumer

Render Prop. Access themeObject.

<Theme.Consumer> {themeObject => children} </Theme.Consumer>

themeObject.color

const color = {
  primary,
  secondary,
  primaryDark,
  general: {
    background,
    secondaryBackground,
    line
  },
  text: {
    primary,
    secondary,
    primaryContrast
  },
  icons: {
    default,
    positive,
    negative,
    warning,
    pinned,
    friends
  }
};
Example
const redButton = css`
  button {
    background-color: ${color.icons.negative};
  }
`;

themeObject.font

const font = {
  weights: {
    light,
    regular,
    text,
    medium,
    semibold
  },
  family
};
Example
const mediumWeight = css`
  font-family: ${font.family};
`;

// or

const mediumWeight = css({
  fontWeight: font.weights.medium
});

themeObject.classes

Theme utility classes

const classes = {
  font: { light, regular, text, medium, semibold }
};
Example
const { classes } = Theme;

// This will change the h2 font weight to semibold
<Typography variant="h2" className={classes.font.semibold}> semi bold text </Typography>

Icons

Available icons: https://app.zeplin.io/project/5bf300cc350a363ec3e3a645/screen/5bf6765c9dcaf67e957c50ec

Import them like this:

import { Warning } from '@highpoint/ui-elements/icons';

Utilities

Utility functions to encapsulate common tasks.

Import them like this:

import { Utilities } from @highpoint/ui-elements;

const { isFramed } = Utilities;

datePicker

Grab default props for MaterialUI picker components.

generateId

Generates a unique ID, suitable for use as an element's id attribute.

getCrefUrl

Take a URL that was produced by %ContentReference and modifies parts of it to match the current URL.

Note: this assumes that the user is on a PeopleSoft-served page.

isFluidLayout

Determines if the page is being viewed within a Fluid wrapper.

isFramed

Determines if the page is being displayed inside an <iframe>.

isInPortal

Determines if the page is being displayed within a PeopleSoft portal.

18.23.0

5 years ago

18.22.0

5 years ago

18.21.0

5 years ago

18.20.0

5 years ago

18.19.0

5 years ago

18.18.7

5 years ago

18.18.6

5 years ago

18.18.5

5 years ago

18.18.4

5 years ago

18.18.3

5 years ago

18.18.2

5 years ago

18.18.1

5 years ago

18.18.0

5 years ago

18.17.5

5 years ago

18.17.4

5 years ago

18.17.3

5 years ago

18.17.2

5 years ago

18.17.1

5 years ago

18.17.0

5 years ago

18.16.1

5 years ago

18.16.0

5 years ago

18.15.2

5 years ago

18.15.1

5 years ago

18.15.0

5 years ago

18.13.0

5 years ago

18.14.1

5 years ago

18.14.0

5 years ago

18.12.4

5 years ago

18.12.3

5 years ago

18.12.2

5 years ago

18.12.1

6 years ago

18.12.0

6 years ago

18.11.2

6 years ago

18.11.1

6 years ago

18.10.4

6 years ago

18.10.5

6 years ago

18.11.0

6 years ago

18.10.3

6 years ago

18.10.2

6 years ago

18.10.1

6 years ago

18.10.0

6 years ago

18.9.0

6 years ago

18.8.0

6 years ago

18.7.0

6 years ago

18.6.0

6 years ago

18.5.1

6 years ago

18.5.0

6 years ago

18.4.0

6 years ago

18.3.0

6 years ago

18.2.1

6 years ago

18.2.0

6 years ago

18.1.0

6 years ago

18.0.2

6 years ago

18.0.1

6 years ago

18.0.0

6 years ago

17.1.1

6 years ago

17.1.0

6 years ago

17.0.3

6 years ago

17.0.2

6 years ago

17.0.4

6 years ago

17.0.1

6 years ago

17.0.0

6 years ago

17.0.0-alpha3

6 years ago

17.0.0-alpha1

6 years ago

17.0.0-alpha2

6 years ago

16.4.3

6 years ago

16.4.2

6 years ago

16.4.1

6 years ago

16.4.0

6 years ago

16.3.0

6 years ago

16.2.0

6 years ago

16.1.0

6 years ago

16.0.1

6 years ago

16.0.0

6 years ago

16.0.0-alpha3

6 years ago

16.0.0-alpha2

6 years ago

16.0.0-alpha1

6 years ago

15.11.0

6 years ago

15.10.0

6 years ago

15.9.6

6 years ago

15.9.4

6 years ago

15.9.5

6 years ago

15.9.3

6 years ago

15.9.2

6 years ago

15.9.1

6 years ago

15.9.0

6 years ago

15.8.0

6 years ago

15.7.0

6 years ago

15.6.0

6 years ago

15.5.0

6 years ago

15.4.3

6 years ago

15.4.2

6 years ago

15.4.1

6 years ago

15.4.0

6 years ago

15.3.2

6 years ago

15.3.1

6 years ago

15.3.0

6 years ago

15.2.0

6 years ago

15.1.1

6 years ago

15.1.0

6 years ago

15.0.2

6 years ago

15.0.1

6 years ago

15.0.0

6 years ago

14.1.0

6 years ago

14.0.3

6 years ago

14.0.0

6 years ago

14.0.1

6 years ago

14.0.2

6 years ago

13.17.0

6 years ago

13.17.1

6 years ago

13.16.1

6 years ago

13.16.0

6 years ago

13.15.0

6 years ago

13.14.1-alpha.2

6 years ago

13.14.1-alpha.1

6 years ago

13.14.1-alpha.0

6 years ago

13.14.1

6 years ago

13.14.0

6 years ago

13.13.2

6 years ago

13.13.3

6 years ago

13.13.1

6 years ago

13.13.0

6 years ago

13.12.0

6 years ago

13.11.0

6 years ago

13.10.0

6 years ago

13.9.2

6 years ago

13.9.1

6 years ago

13.9.0

6 years ago

13.8.2

6 years ago

13.8.1

6 years ago

13.8.0

6 years ago

13.7.0

6 years ago

13.6.1

6 years ago

13.6.0

6 years ago

13.5.0

6 years ago

13.4.0

6 years ago

13.3.0

6 years ago

13.2.3

6 years ago

13.2.2

6 years ago

13.2.1

6 years ago

13.2.0

6 years ago

13.1.0

6 years ago

13.0.8

6 years ago

13.0.7

6 years ago

13.0.6

6 years ago

13.0.5

6 years ago

13.0.4

6 years ago

13.0.3

6 years ago

13.0.2

7 years ago

13.0.1

7 years ago

13.0.0

7 years ago

13.0.0-alpha.12

7 years ago

13.0.0-alpha.11

7 years ago

13.0.0-alpha.10

7 years ago

13.0.0-alpha.9

7 years ago

13.0.0-alpha.8

7 years ago

13.0.0-alpha.7

7 years ago

13.0.0-alpha.6

7 years ago

13.0.0-alpha.5

7 years ago

13.0.0-alpha.4

7 years ago

13.0.0-alpha.3

7 years ago

13.0.0-alpha.2

7 years ago

13.0.0-alpha.1

7 years ago

13.0.0-alpha.0

7 years ago

12.5.0

7 years ago

12.4.0

7 years ago

12.3.10

7 years ago

12.3.9

7 years ago

12.3.8

7 years ago

12.3.7

7 years ago

12.3.6

7 years ago

12.3.5

7 years ago

12.3.4

7 years ago

12.3.3

7 years ago

12.3.2

7 years ago

12.3.1

7 years ago

12.3.0

7 years ago

12.2.1

7 years ago

10.15.1

7 years ago

12.2.0

7 years ago

10.15.0

7 years ago

12.1.4

7 years ago

12.1.3

7 years ago

12.1.2

7 years ago

12.1.1

7 years ago

10.14.1

7 years ago

12.1.0

7 years ago

11.0.3

7 years ago

11.0.2

7 years ago

11.0.1

7 years ago

11.0.0

7 years ago

10.14.0

7 years ago

10.13.1

7 years ago

10.13.0

7 years ago

10.12.2

7 years ago

10.12.1

7 years ago

10.12.0

7 years ago

10.11.2

7 years ago

10.11.1

7 years ago

10.11.0

7 years ago

10.10.16

7 years ago

10.10.15

7 years ago

10.10.14

7 years ago

10.10.13

7 years ago

10.10.12

7 years ago

10.10.11

7 years ago

10.10.10

7 years ago

10.10.9

7 years ago

10.10.8

7 years ago

10.10.7

7 years ago

10.10.5

7 years ago

10.10.4

7 years ago

10.10.3

7 years ago

10.10.2

7 years ago

10.10.1

7 years ago

10.10.0

7 years ago

10.9.18

7 years ago

10.9.17

7 years ago

10.9.16

7 years ago

10.9.15

7 years ago

10.9.14

7 years ago

10.9.13

7 years ago

10.9.12

7 years ago

10.9.11

7 years ago

10.9.10

7 years ago

10.9.9

7 years ago

10.9.8

7 years ago

10.9.7

7 years ago

10.9.6

7 years ago

10.9.5

7 years ago

10.9.4

7 years ago

10.9.3

7 years ago

10.9.2

7 years ago

10.9.1

7 years ago

10.9.0

7 years ago

10.8.0

7 years ago

10.7.2

7 years ago

10.7.1

7 years ago

10.7.0

7 years ago

10.6.1

7 years ago

10.6.0

7 years ago

10.5.0

7 years ago

10.4.1

7 years ago

10.4.0

7 years ago

10.3.1

7 years ago

10.3.0

7 years ago

10.2.1

7 years ago

10.2.0

7 years ago

10.1.0

7 years ago

10.0.4

7 years ago

10.0.3

7 years ago

10.0.2

7 years ago

10.0.1

7 years ago

10.0.0

7 years ago

9.10.0

7 years ago

9.9.2

7 years ago

9.9.1

7 years ago

9.9.0

7 years ago

9.8.1

7 years ago

9.8.0

7 years ago

9.7.0

7 years ago

9.6.5

7 years ago

9.6.4

7 years ago

9.6.3

7 years ago

9.6.2

7 years ago

9.6.1

7 years ago

9.6.0

7 years ago

9.5.7

7 years ago

9.5.6

7 years ago

9.5.5

7 years ago

9.5.4

7 years ago

9.5.3

7 years ago

9.5.2

7 years ago

9.5.1

7 years ago

9.5.0

7 years ago

9.4.6

7 years ago

9.4.5

7 years ago

9.4.4

7 years ago

9.4.3

7 years ago

9.4.2

7 years ago

9.4.1

7 years ago

9.4.0

7 years ago

9.3.3

7 years ago

9.3.2

7 years ago

9.3.1

7 years ago

9.3.0

7 years ago

9.2.2

7 years ago

9.2.1

7 years ago

9.2.0

7 years ago

9.1.2

7 years ago

9.1.1

7 years ago

9.1.0

7 years ago

9.0.3

7 years ago

9.0.2

7 years ago

9.0.1

7 years ago

9.0.0

7 years ago

8.6.3

7 years ago

8.6.2

7 years ago

8.6.1

7 years ago

8.6.0

7 years ago

8.5.2

7 years ago

8.5.1

7 years ago

8.5.0

7 years ago

8.4.0

7 years ago

8.3.4

7 years ago

8.3.3

7 years ago

8.3.2

7 years ago

8.3.1

7 years ago

8.3.0

7 years ago

8.2.0

7 years ago

8.1.0

7 years ago

8.0.1

7 years ago

8.0.0

7 years ago

7.3.10

7 years ago

7.3.9

7 years ago

7.3.8

7 years ago

7.3.7

7 years ago

7.3.6

7 years ago

7.3.5

7 years ago

7.3.4

7 years ago

7.3.3

7 years ago

7.3.2

7 years ago

7.3.1

7 years ago

7.3.0

7 years ago

7.2.4

7 years ago

7.2.3

7 years ago

7.2.2

7 years ago

7.2.1

7 years ago

7.2.0

7 years ago

7.1.0

7 years ago

7.0.1

7 years ago

7.0.0

7 years ago

6.10.1

7 years ago

6.10.0

7 years ago

6.9.0

7 years ago

6.8.0

7 years ago

6.7.0

7 years ago

6.6.0

7 years ago

6.5.2

7 years ago

6.5.1

7 years ago

6.5.0

7 years ago

6.4.1

7 years ago

6.4.0

7 years ago

6.3.2

7 years ago

6.3.1

7 years ago

6.3.0

7 years ago

6.2.1

7 years ago

6.2.0

7 years ago

6.1.0

7 years ago

6.0.0

7 years ago

5.4.0

7 years ago

5.3.0

7 years ago

5.2.0

7 years ago

5.1.0

7 years ago

5.0.4

7 years ago

5.0.2

7 years ago

5.0.1

7 years ago

5.0.0

7 years ago

4.9.0

7 years ago

4.8.1

7 years ago

4.8.0

7 years ago

4.7.4

7 years ago

4.7.3

7 years ago

4.7.2

7 years ago

4.7.1

7 years ago

4.7.0

7 years ago

4.6.0

7 years ago

4.5.2

7 years ago

4.5.1

7 years ago

4.5.0

7 years ago

4.4.1

7 years ago

4.4.0

7 years ago

4.3.0

7 years ago

4.2.0

7 years ago

4.1.1

7 years ago

4.1.0

7 years ago

4.0.0

7 years ago

3.10.3

7 years ago

3.10.2

7 years ago

3.10.1

7 years ago

3.10.0

7 years ago

3.9.0

7 years ago

3.8.0

7 years ago

3.7.0

7 years ago

3.6.1

7 years ago

3.6.0

7 years ago

3.5.0

7 years ago

3.4.0

7 years ago

3.3.1

7 years ago

3.3.0

7 years ago

3.2.0

7 years ago

3.1.0

7 years ago

3.0.5

7 years ago

3.0.4

7 years ago

3.0.3

7 years ago

3.0.2

7 years ago

3.0.1

7 years ago

3.0.0

7 years ago

2.12.1

7 years ago

2.12.0

7 years ago

2.11.0

7 years ago

2.10.0

7 years ago

2.9.0

7 years ago

2.8.0

8 years ago

2.7.1

8 years ago

2.7.0

8 years ago

2.6.0

8 years ago

2.5.0

8 years ago

2.4.1

8 years ago

2.4.0

8 years ago

2.3.0

8 years ago

2.2.0

8 years ago

2.1.1

8 years ago

2.1.0

8 years ago

2.0.0

8 years ago

1.1.0

8 years ago

1.0.1

8 years ago

1.0.0

8 years ago

0.2.0

8 years ago

0.1.0

8 years ago