patrickrgaffney / rmwc

A React wrapper for Material Design (Web) Components

Home Page:https://jamesmfriedman.github.io/rmwc/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

CircleCI codecov npm npm npm Chat Backers on Open Collective Sponsors on Open Collective

RMWC - React Material Web Components

A React wrapper for the official Material Design (Web) Components v0.44.0 https://jamesmfriedman.github.io/rmwc/

Features:

  • Uses Google's official material-components-web library
  • Includes Addon components for ones missing from the official spec
  • Works in React 16.3.x and up
  • First class Typescript Support
  • Server side rendering support
  • Individually packaged and released components

Try it in the Code Sandbox

Recent updates

V5 is officially out! RMWC has been completely rewritten in Typescript while also knocking out about a years worth of tech debt and improving things across the board. You can expect better typing, better performance, better integration with material-components-web, and just better everything. All of this was done with as few breaking changes as possible, so upgrading should be relatively painless.

Your quick migration guide:

  • React 16.3 is the new min version to take advantage of React Fragments, Ref Forwarding, and the new Context Api. If you need React 15 support, you'll have to stay on 4.x.x and below.
  • The library has been rewritten in Typescript instead of Flow. At this time, Flow types are no longer supported. Please comment on issue #407 If you're interested in bringing these back
  • Changelog couldn't be generated for this release, see the release notes for the full details ๐Ÿš€ https://opencollective.com/rmwc/updates/5-0-0-a-giant-leap-for-rmwc

View all release notes ๐Ÿ‘‰ https://opencollective.com/rmwc/updates

View the changelog for detailed updates: https://github.com/jamesmfriedman/rmwc/blob/master/CHANGELOG.md

Goals

  • To create the thinnest, lightest, and spec compliant wrapper around Google Material Design Components for the Web https://material.io/components/web/
  • To utilize the Foundation javascript classes from material-components-web
  • To be as unobtrusive and sensible as possible.
  • To fill the gaps in material-components-web with custom React community driven components.

Doesn't Google have their own React Wrapper?

Yes, and here are the differences.

  • RMWC is feature complete! It contains all of the components in the MDC catalog.
  • RMWC Includes Addon components for ones missing from the official spec
  • RMWC 4.x.x and below supports React 15
  • RMWC 4.x.x includes Flow support
  • RMWC has tested server side rendering support
  • RMWC favors deprecations over breaking changes whenever possible
  • RMWC has interactive polished documentation
  • RMWC is about 8 months older than Google's.
  • RMWC is being used by by companies of all sizes with all sorts of use cases, it's not going anywhere.

The MDC team has been nothing but collaborative and kind, even in pursuing their own React wrapper. Both libraries individually package components, so you can use this one, that one, or a mix of both if you want to. There are multiple production apps running RMWC, so this library will continue to exist and be improved. Hopefully in the future there can be a convergence point, but in the meantime you can weigh both libraries on their own merits.

Installation

  • npm i rmwc --save or yarn add rmwc

Additional information is available in the Installation Guide

Usage

Read the docs on how to Usage

Why?

Read the docs on Methodology

About Breaking Changes

Read the docs on Methodology

To run the tests

  • On MacOS Sierra and higher, install watchman to fix a filesystem issue with Jest. brew install watchman
  • npm test

To run the docs / contribute

  • git clone https://github.com/jamesmfriedman/rmwc.git
  • cd rmwc
  • npm install
  • npm start

Contributions

This project exists thanks to all the people who contribute. [Contribute].

Backers

Thank you to all our backers! ๐Ÿ™ [Become a backer]

Sponsors

Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [Become a sponsor]

About

A React wrapper for Material Design (Web) Components

https://jamesmfriedman.github.io/rmwc/

License:MIT License


Languages

Language:TypeScript 76.0%Language:JavaScript 18.9%Language:CSS 4.2%Language:HTML 0.8%