diff --git a/.babelrc b/.babelrc
deleted file mode 100644
index 420173781..000000000
--- a/.babelrc
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- "presets": ["es2015", "stage-0", "react"],
- "env": {
- "development": {
- "plugins": [
- ["react-transform", {
- "transforms": [{
- "transform": "react-transform-hmr",
- "imports": ["react"],
- "locals": ["module"]
- }, {
- "transform": "react-transform-catch-errors",
- "imports": ["react", "redbox-react"]
- }]
- }]
- ]
- }
- }
-}
diff --git a/.bumpedrc b/.bumpedrc
index 04826e51e..f283773fc 100644
--- a/.bumpedrc
+++ b/.bumpedrc
@@ -23,7 +23,7 @@ plugins:
'Commiting new version':
plugin: 'bumped-terminal'
- command: 'git add CHANGELOG.md package.json && git commit package.json -m "Release $newVersion"'
+ command: 'git add CHANGELOG.md package.json && git commit CHANGELOG.md package.json -m "Release $newVersion"'
'Detecting problem before publish':
plugin: 'bumped-terminal'
diff --git a/.eslintignore b/.eslintignore
index b04f9cd23..f574f775b 100644
--- a/.eslintignore
+++ b/.eslintignore
@@ -1,3 +1,10 @@
**/node_modules/
**/build/
+docs/
+spec/
lib
+karma.conf.js
+gulpfile.js
+tests.webpack*
+server.js
+webpack*
diff --git a/.eslintrc b/.eslintrc
deleted file mode 100644
index 50fa67e3a..000000000
--- a/.eslintrc
+++ /dev/null
@@ -1,227 +0,0 @@
-{
- "env": {
- "browser": true,
- "node": true,
- "mocha": true,
- "es6": true
- },
-
- "ecmaFeatures": {
- "jsx": true,
- "templateStrings": true,
- "superInFunctions": false,
- "classes": true,
- "modules": true
- },
-
- "parser": "babel-eslint",
-
- "plugins": [
- "babel",
- "react"
- ],
-
- "rules": {
- "block-scoped-var": [0],
- "brace-style": [2, "1tbs", {
- "allowSingleLine": true
- }],
- "camelcase": [0],
- "comma-dangle": [2, "never"],
- "comma-spacing": [2],
- "comma-style": [2, "last"],
- "complexity": [0, 11],
- "constructor-super": [2],
- "consistent-return": [0],
- "consistent-this": [0, "that"],
- "curly": [2, "multi-line"],
- "default-case": [2],
- "dot-notation": [2, {
- "allowKeywords": true
- }],
- "eol-last": [2],
- "eqeqeq": [2],
- "func-names": [0],
- "func-style": [0, "declaration"],
- "generator-star-spacing": [2, "after"],
- "guard-for-in": [0],
- "handle-callback-err": [0],
- "key-spacing": [2, {
- "beforeColon": false,
- "afterColon": true
- }],
- "quotes": [2, "single", "avoid-escape"],
- "max-depth": [0, 4],
- "max-len": [0, 80, 4],
- "max-nested-callbacks": [0, 2],
- "max-params": [0, 3],
- "max-statements": [0, 10],
- "new-parens": [2],
- "new-cap": [0],
- "newline-after-var": [0],
- "no-alert": [2],
- "no-array-constructor": [2],
- "no-bitwise": [0],
- "no-caller": [2],
- "no-catch-shadow": [2],
- "no-cond-assign": [2],
- "no-console": [0],
- "no-constant-condition": [1],
- "no-continue": [2],
- "no-control-regex": [2],
- "no-debugger": [2],
- "no-delete-var": [2],
- "no-div-regex": [0],
- "no-dupe-args": [2],
- "no-dupe-keys": [2],
- "no-duplicate-case": [2],
- "no-else-return": [0],
- "no-empty": [2],
- "no-empty-character-class": [2],
- "no-eq-null": [0],
- "no-eval": [2],
- "no-ex-assign": [2],
- "no-extend-native": [1],
- "no-extra-bind": [2],
- "no-extra-boolean-cast": [2],
- "no-extra-parens": [0],
- "no-extra-semi": [1],
- "no-fallthrough": [2],
- "no-floating-decimal": [2],
- "no-func-assign": [2],
- "no-implied-eval": [2],
- "no-inline-comments": [0],
- "no-inner-declarations": [2, "functions"],
- "no-invalid-regexp": [2],
- "no-irregular-whitespace": [2],
- "no-iterator": [2],
- "no-label-var": [2],
- "no-labels": [2],
- "no-lone-blocks": [2],
- "no-lonely-if": [2],
- "no-loop-func": [2],
- "no-mixed-requires": [0, false],
- "no-mixed-spaces-and-tabs": [2, false],
- "no-multi-spaces": [2],
- "no-multi-str": [2],
- "no-multiple-empty-lines": [2, {
- "max": 2
- }],
- "no-native-reassign": [1],
- "no-negated-in-lhs": [2],
- "no-nested-ternary": [0],
- "no-new": [2],
- "no-new-func": [2],
- "no-new-object": [2],
- "no-new-require": [0],
- "no-new-wrappers": [2],
- "no-obj-calls": [2],
- "no-octal": [2],
- "no-octal-escape": [2],
- "no-path-concat": [0],
- "no-param-reassign": [2],
- "no-plusplus": [0],
- "no-process-env": [0],
- "no-process-exit": [2],
- "no-proto": [2],
- "no-redeclare": [2],
- "no-regex-spaces": [2],
- "no-reserved-keys": [0],
- "no-restricted-modules": [0],
- "no-return-assign": [2],
- "no-script-url": [2],
- "no-self-compare": [0],
- "no-sequences": [2],
- "no-shadow": [2],
- "no-shadow-restricted-names": [2],
- "semi-spacing": [2],
- "no-spaced-func": [2],
- "no-sparse-arrays": [2],
- "no-sync": [0],
- "no-ternary": [0],
- "no-this-before-super": [2],
- "no-throw-literal": [2],
- "no-trailing-spaces": [2],
- "no-undef": [2],
- "no-undef-init": [2],
- "no-undefined": [0],
- "no-underscore-dangle": [0],
- "no-unreachable": [2],
- "no-unused-expressions": [2, {
- "allowShortCircuit": true
- }],
- "no-unused-vars": [1, {
- "vars": "all",
- "args": "after-used"
- }],
- "no-use-before-define": [2, "nofunc"],
- "no-var": [2],
- "no-void": [0],
- "no-warning-comments": [0, {
- "terms": ["todo", "fixme", "xxx"],
- "location": "start"
- }],
- "no-with": [2],
- "one-var": [0],
- "operator-assignment": [0, "always"],
- "operator-linebreak": [2, "before"],
- "padded-blocks": [0],
- "prefer-const": [2],
- "prefer-spread": [2],
- "quote-props": [0],
- "radix": [0],
- "semi": [2],
- "sort-vars": [0],
- "keyword-spacing": [2, {"after": true}],
- "space-before-function-paren": [2, { "anonymous": "always", "named": "always" }],
- "space-before-blocks": [0, "always"],
- "space-in-brackets": [0, "never", {
- "singleValue": true,
- "arraysInArrays": false,
- "arraysInObjects": false,
- "objectsInArrays": true,
- "objectsInObjects": true,
- "propertyName": false
- }],
- "space-in-parens": [2, "never"],
- "space-infix-ops": [2],
- "space-unary-ops": [2, {
- "words": true,
- "nonwords": false
- }],
- "spaced-line-comment": [0, "always"],
- "strict": [1],
- "use-isnan": [2],
- "valid-jsdoc": [0],
- "valid-typeof": [2],
- "vars-on-top": [0],
- "wrap-iife": [2],
- "wrap-regex": [2],
- "yoda": [2, "never", {
- "exceptRange": true
- }],
- "babel/object-shorthand": [2],
- "react/display-name": 0,
- "react/jsx-boolean-value": 1,
- "react/jsx-closing-bracket-location": 0,
- "react/jsx-curly-spacing": 1,
- "react/jsx-max-props-per-line": 0,
- "react/jsx-indent-props": 0,
- "react/jsx-no-duplicate-props": 1,
- "react/jsx-no-undef": 1,
- "react/jsx-pascal-case": 1,
- "react/sort-prop-types": 1,
- "react/jsx-sort-props": 0,
- "react/jsx-uses-react": 1,
- "react/jsx-uses-vars": 1,
- "react/no-danger": 0,
- "react/no-did-mount-set-state": 0,
- "react/no-did-update-set-state": 1,
- "react/no-multi-comp": 0,
- "react/no-unknown-property": 1,
- "react/prop-types": [2, {"ignore": ["onMouseDown", "onTouchStart"]}],
- "react/react-in-jsx-scope": 1,
- "react/self-closing-comp": 1,
- "react/sort-comp": 1
- }
-}
diff --git a/.eslintrc.js b/.eslintrc.js
new file mode 100644
index 000000000..268379270
--- /dev/null
+++ b/.eslintrc.js
@@ -0,0 +1,52 @@
+module.exports = {
+ parser: 'babel-eslint',
+ parserOptions: {
+ ecmaVersion: 6
+ },
+ extends: 'airbnb',
+ env: {
+ browser: true,
+ es6: true,
+ jest: true,
+ node: true
+ },
+ plugins: [
+ 'compat',
+ 'import',
+ 'jest',
+ 'jsx-a11y',
+ 'react'
+ ],
+ rules: {
+ 'compat/compat': 'error',
+ 'func-names': 'off',
+ 'global-require': 'off',
+ 'import/prefer-default-export': 'off',
+ 'import/no-extraneous-dependencies': [
+ 'error',
+ {
+ devDependencies: true,
+ optionalDependencies: false,
+ peerDependencies: false
+ }
+ ],
+ 'jsx-a11y/click-events-have-key-events': 'off',
+ 'jsx-a11y/label-has-for': 'off',
+ 'jsx-a11y/label-has-associated-control': [
+ 'error', {
+ depth: 3,
+ },
+ ],
+ 'jsx-a11y/no-noninteractive-element-interactions': 'off',
+ 'jsx-a11y/no-noninteractive-tabindex': 'off',
+ 'jsx-a11y/no-static-element-interactions': 'off',
+ 'no-underscore-dangle': 'off',
+ 'no-use-before-define': 'off',
+ 'react/destructuring-assignment': 'off',
+ 'react/jsx-filename-extension': 'off',
+ 'react/jsx-no-bind': 'error',
+ 'react/no-find-dom-node': 'off',
+ 'react/require-default-props': 'off',
+ 'react/sort-prop-types': 'error'
+ }
+}
\ No newline at end of file
diff --git a/.gitignore b/.gitignore
index 6781ff041..6a870dda2 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,5 +1,43 @@
+# See https://help.github.com/ignore-files/ for more about ignoring files.
+# Logs
+logs
+*.log
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+deploy.log*
+
+# Runtime data
+pids
+*.pid
+*.seed
+*.pid.lock
+
+# Production
build
-node_modules
-npm-debug.log
+dist
+out
+lib
+
+# Dependency directories
+node_modules/
+
+# App directories
+public/styles
+public/js/*
+!public/js/plugins
+
+# OS files
+.DS_Store
+._*
+
+# Config files
+.env
+
+# IDE files
.idea
-.DS_Store
\ No newline at end of file
+.vscode
+
+# Test coverage folder
+.coverage
+/coverage
\ No newline at end of file
diff --git a/.nvmrc b/.nvmrc
index 9e3a93350..758bb9c82 100644
--- a/.nvmrc
+++ b/.nvmrc
@@ -1 +1 @@
-4.4.3
+7.10.0
diff --git a/.sass-lint.yml b/.sass-lint.yml
deleted file mode 100644
index abd6057ef..000000000
--- a/.sass-lint.yml
+++ /dev/null
@@ -1,397 +0,0 @@
-options:
- formatter: stylish
- merge-default-rules: false
-rules:
- border-zero: 1
- brace-style:
- - 1
- - allow-single-line: true
- class-name-format:
- - 0
- - convention: hyphenatedlowercase
- clean-import-paths:
- - 1
- - filename-extension: false
- leading-underscore: false
- empty-line-between-blocks:
- - 0
- - ignore-single-line-rulesets: true
- extends-before-declarations: 0
- extends-before-mixins: 0
- final-newline:
- - 1
- - include: true
- force-attribute-nesting: 0
- force-element-nesting: 0
- force-pseudo-nesting: 0
- function-name-format:
- - 1
- - allow-leading-underscore: true
- convention: hyphenatedlowercase
- hex-length:
- - 1
- - style: short
- hex-notation:
- - 1
- - style: lowercase
- id-name-format:
- - 0
- - convention: hyphenatedlowercase
- indentation:
- - 1
- - size: 2
- leading-zero:
- - 0
- - include: false
- mixin-name-format:
- - 1
- - allow-leading-underscore: true
- convention: hyphenatedlowercase
- mixins-before-declarations: 0
- nesting-depth: 0
- no-color-literals: 0
- no-css-comments: 1
- no-debug: 1
- no-duplicate-properties:
- - 1
- - exclude: []
- no-empty-rulesets: 1
- no-ids: 1
- no-important: 0
- no-invalid-hex: 1
- no-mergeable-selectors: 0
- no-misspelled-properties:
- - 1
- - extra-properties:
- - composes
- no-qualifying-elements:
- - 0
- - allow-element-with-attribute: false
- allow-element-with-class: false
- allow-element-with-id: false
- no-trailing-zero: 1
- no-url-protocols: 1
- placeholder-in-extend: 0
- property-sort-order:
- - 1
- - ignore-custom-properties: false
- order:
- - $variable
- - $extend
- - $include
- - composes
- - position
- - top
- - right
- - bottom
- - left
- - z-index
- - '-webkit-box-sizing'
- - '-moz-box-sizing'
- - box-sizing
- - display
- - float
- - width
- - min-width
- - max-width
- - height
- - min-height
- - max-height
- - flex
- - flex-align
- - flex-direction
- - flex-flow
- - flex-grow
- - flex-order
- - flex-pack
- - flex-wrap
- - align-content
- - align-items
- - justify-content
- - padding
- - padding-top
- - padding-right
- - padding-bottom
- - padding-left
- - margin
- - margin-top
- - margin-right
- - margin-bottom
- - margin-left
- - overflow
- - overflow-x
- - overflow-y
- - '-webkit-overflow-scrolling'
- - '-ms-overflow-x'
- - '-ms-overflow-y'
- - '-ms-overflow-style'
- - clip
- - clear
- - font
- - font-family
- - font-size
- - font-style
- - font-weight
- - font-variant
- - font-size-adjust
- - font-stretch
- - font-effect
- - font-emphasize
- - font-emphasize-position
- - font-emphasize-style
- - font-smooth
- - '-webkit-hyphens'
- - '-moz-hyphens'
- - hyphens
- - line-height
- - color
- - text-align
- - '-webkit-text-align-last'
- - '-moz-text-align-last'
- - '-ms-text-align-last'
- - text-align-last
- - text-emphasis
- - text-emphasis-color
- - text-emphasis-style
- - text-emphasis-position
- - text-decoration
- - text-indent
- - text-justify
- - text-outline
- - '-ms-text-overflow'
- - text-overflow
- - text-overflow-ellipsis
- - text-overflow-mode
- - text-shadow
- - text-transform
- - text-wrap
- - '-webkit-text-size-adjust'
- - '-ms-text-size-adjust'
- - letter-spacing
- - '-ms-word-break'
- - word-break
- - word-spacing
- - '-ms-word-wrap'
- - word-wrap
- - '-moz-tab-size'
- - '-o-tab-size'
- - tab-size
- - white-space
- - vertical-align
- - list-style
- - list-style-position
- - list-style-type
- - list-style-image
- - pointer-events
- - '-ms-touch-action'
- - touch-action
- - cursor
- - visibility
- - zoom
- - table-layout
- - empty-cells
- - caption-side
- - border-spacing
- - border-collapse
- - content
- - quotes
- - counter-reset
- - counter-increment
- - resize
- - '-webkit-user-select'
- - '-moz-user-select'
- - '-ms-user-select'
- - '-o-user-select'
- - user-select
- - nav-index
- - nav-up
- - nav-right
- - nav-down
- - nav-left
- - background
- - background-color
- - background-image
- - "-ms-filter:\\'progid:DXImageTransform.Microsoft.gradient"
- - 'filter:progid:DXImageTransform.Microsoft.gradient'
- - 'filter:progid:DXImageTransform.Microsoft.AlphaImageLoader'
- - filter
- - background-repeat
- - background-attachment
- - background-position
- - background-position-x
- - background-position-y
- - '-webkit-background-clip'
- - '-moz-background-clip'
- - background-clip
- - background-origin
- - '-webkit-background-size'
- - '-moz-background-size'
- - '-o-background-size'
- - background-size
- - border
- - border-color
- - border-style
- - border-width
- - border-top
- - border-top-color
- - border-top-style
- - border-top-width
- - border-right
- - border-right-color
- - border-right-style
- - border-right-width
- - border-bottom
- - border-bottom-color
- - border-bottom-style
- - border-bottom-width
- - border-left
- - border-left-color
- - border-left-style
- - border-left-width
- - border-radius
- - border-top-left-radius
- - border-top-right-radius
- - border-bottom-right-radius
- - border-bottom-left-radius
- - '-webkit-border-image'
- - '-moz-border-image'
- - '-o-border-image'
- - border-image
- - '-webkit-border-image-source'
- - '-moz-border-image-source'
- - '-o-border-image-source'
- - border-image-source
- - '-webkit-border-image-slice'
- - '-moz-border-image-slice'
- - '-o-border-image-slice'
- - border-image-slice
- - '-webkit-border-image-width'
- - '-moz-border-image-width'
- - '-o-border-image-width'
- - border-image-width
- - '-webkit-border-image-outset'
- - '-moz-border-image-outset'
- - '-o-border-image-outset'
- - border-image-outset
- - '-webkit-border-image-repeat'
- - '-moz-border-image-repeat'
- - '-o-border-image-repeat'
- - border-image-repeat
- - outline
- - outline-width
- - outline-style
- - outline-color
- - outline-offset
- - '-webkit-box-shadow'
- - '-moz-box-shadow'
- - box-shadow
- - 'filter:progid:DXImageTransform.Microsoft.Alpha(Opacity'
- - "-ms-filter:\\'progid:DXImageTransform.Microsoft.Alpha"
- - opacity
- - '-ms-interpolation-mode'
- - '-webkit-transition'
- - '-moz-transition'
- - '-ms-transition'
- - '-o-transition'
- - transition
- - '-webkit-transition-delay'
- - '-moz-transition-delay'
- - '-ms-transition-delay'
- - '-o-transition-delay'
- - transition-delay
- - '-webkit-transition-timing-function'
- - '-moz-transition-timing-function'
- - '-ms-transition-timing-function'
- - '-o-transition-timing-function'
- - transition-timing-function
- - '-webkit-transition-duration'
- - '-moz-transition-duration'
- - '-ms-transition-duration'
- - '-o-transition-duration'
- - transition-duration
- - '-webkit-transition-property'
- - '-moz-transition-property'
- - '-ms-transition-property'
- - '-o-transition-property'
- - transition-property
- - transform-style
- - '-webkit-transform'
- - '-moz-transform'
- - '-ms-transform'
- - '-o-transform'
- - transform
- - '-webkit-transform-origin'
- - '-moz-transform-origin'
- - '-ms-transform-origin'
- - '-o-transform-origin'
- - transform-origin
- - '-webkit-animation'
- - '-moz-animation'
- - '-ms-animation'
- - '-o-animation'
- - animation
- - '-webkit-animation-name'
- - '-moz-animation-name'
- - '-ms-animation-name'
- - '-o-animation-name'
- - animation-name
- - '-webkit-animation-duration'
- - '-moz-animation-duration'
- - '-ms-animation-duration'
- - '-o-animation-duration'
- - animation-duration
- - '-webkit-animation-play-state'
- - '-moz-animation-play-state'
- - '-ms-animation-play-state'
- - '-o-animation-play-state'
- - animation-play-state
- - '-webkit-animation-timing-function'
- - '-moz-animation-timing-function'
- - '-ms-animation-timing-function'
- - '-o-animation-timing-function'
- - animation-timing-function
- - '-webkit-animation-delay'
- - '-moz-animation-delay'
- - '-ms-animation-delay'
- - '-o-animation-delay'
- - animation-delay
- - '-webkit-animation-iteration-count'
- - '-moz-animation-iteration-count'
- - '-ms-animation-iteration-count'
- - '-o-animation-iteration-count'
- - animation-iteration-count
- - '-webkit-animation-direction'
- - '-moz-animation-direction'
- - '-ms-animation-direction'
- - '-o-animation-direction'
- - animation-direction
- - backface-visibility
- - will-change
- - fill
- quotes:
- - 1
- - style: double
- shorthand-values: 1
- single-line-per-selector: 0
- space-after-bang:
- - 1
- - include: false
- space-after-colon: 1
- space-after-comma: 0
- space-before-bang:
- - 1
- - include: true
- space-before-brace:
- - 1
- - include: true
- space-before-colon: 1
- space-between-parens:
- - 1
- - include: false
- trailing-semicolon: 1
- url-quotes: 1
- variable-name-format:
- - 1
- - allow-leading-underscore: true
- convention: hyphenatedlowercase
- zero-unit: 1
diff --git a/.travis.yml b/.travis.yml
index 32f6e0478..73da33078 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -3,9 +3,10 @@ sudo: false
language: node_js
node_js:
- - 6
- - 4
-
+ - "node"
+ - "lts/*"
+
script:
- npm run lint
+ - npm run ts
- npm test
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 743b17061..8be3d3899 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,7 +1,567 @@
+
+## 2.0.0-beta.12 (2018-06-02)
+
+* Add `accept` property to `BrowseButton` (#1533) ([934ffd2](https://github.com/react-toolbox/react-toolbox/commit/934ffd2)), closes [#1533](https://github.com/react-toolbox/react-toolbox/issues/1533)
+* Add `multiple` property to `BrowseButton` (#1656) ([071a4d3](https://github.com/react-toolbox/react-toolbox/commit/071a4d3)), closes [#1656](https://github.com/react-toolbox/react-toolbox/issues/1656)
+* Add default export TypeScript type to IconButton (#1577) ([79e031e](https://github.com/react-toolbox/react-toolbox/commit/79e031e)), closes [#1577](https://github.com/react-toolbox/react-toolbox/issues/1577)
+* Add falsy key example to AutocompleteTest ([f24d128](https://github.com/react-toolbox/react-toolbox/commit/f24d128))
+* Add missing Input import ([51a335b](https://github.com/react-toolbox/react-toolbox/commit/51a335b)), closes [#1792](https://github.com/react-toolbox/react-toolbox/issues/1792)
+* Add onEscKeyDown and onOverlayClick fallbacks ([4347125](https://github.com/react-toolbox/react-toolbox/commit/4347125))
+* Add postcss-apply to buid task and to webpack ([82f7118](https://github.com/react-toolbox/react-toolbox/commit/82f7118))
+* Add support for treeshaking (#1423) ([d2eee5a](https://github.com/react-toolbox/react-toolbox/commit/d2eee5a)), closes [#1423](https://github.com/react-toolbox/react-toolbox/issues/1423)
+* Add ThemeProvider Typescript type (#1576) ([7403d5d](https://github.com/react-toolbox/react-toolbox/commit/7403d5d)), closes [#1576](https://github.com/react-toolbox/react-toolbox/issues/1576)
+* Add title to image ([f815fb5](https://github.com/react-toolbox/react-toolbox/commit/f815fb5))
+* Add transition to hover effect in list items ([d9a0d7e](https://github.com/react-toolbox/react-toolbox/commit/d9a0d7e))
+* Add variables for the App Bar's font size and weight. (#1518) ([f93040e](https://github.com/react-toolbox/react-toolbox/commit/f93040e)), closes [#1518](https://github.com/react-toolbox/react-toolbox/issues/1518)
+* Add workaround to `is-component-of-type` for `react-hot-loader@^3` (#1569) ([431abb1](https://github.com/react-toolbox/react-toolbox/commit/431abb1)), closes [#1569](https://github.com/react-toolbox/react-toolbox/issues/1569)
+* Added label to InputTheme interface (#1501) ([6290cf5](https://github.com/react-toolbox/react-toolbox/commit/6290cf5)), closes [#1501](https://github.com/react-toolbox/react-toolbox/issues/1501)
+* Added missing `|` (#1403) ([8df122a](https://github.com/react-toolbox/react-toolbox/commit/8df122a)), closes [#1403](https://github.com/react-toolbox/react-toolbox/issues/1403)
+* Added required?: boolean; (#1491) ([27caadb](https://github.com/react-toolbox/react-toolbox/commit/27caadb)), closes [#1491](https://github.com/react-toolbox/react-toolbox/issues/1491)
+* adds a span wrapper to the component button in case of its disabled and have mouse enter and mouse l ([0286630](https://github.com/react-toolbox/react-toolbox/commit/0286630))
+* Allow autoFocus on Autocomplete component ([a828091](https://github.com/react-toolbox/react-toolbox/commit/a828091))
+* Allow pass inverse to IconMenu (#1490) ([4722904](https://github.com/react-toolbox/react-toolbox/commit/4722904)), closes [#1490](https://github.com/react-toolbox/react-toolbox/issues/1490)
+* Allow to change FontIcon for Tab by passing it into the factory (#1439) ([d6bdf20](https://github.com/react-toolbox/react-toolbox/commit/d6bdf20)), closes [#1439](https://github.com/react-toolbox/react-toolbox/issues/1439)
+* allows the Portal HOC root element to receive a style props. This allows coordinate runtime position ([0e299a6](https://github.com/react-toolbox/react-toolbox/commit/0e299a6)), closes [#1502](https://github.com/react-toolbox/react-toolbox/issues/1502)
+* Apply padding 0 to everything but buttons in ListItemAction (#1571) ([f44833a](https://github.com/react-toolbox/react-toolbox/commit/f44833a)), closes [#1571](https://github.com/react-toolbox/react-toolbox/issues/1571)
+* Avoid undefined className when ProgressBar mode is determinate ([7db3e34](https://github.com/react-toolbox/react-toolbox/commit/7db3e34))
+* Change tab style for ripple to work with Tabs (#1519) ([cd6a130](https://github.com/react-toolbox/react-toolbox/commit/cd6a130)), closes [#1519](https://github.com/react-toolbox/react-toolbox/issues/1519)
+* Check whether the query key has a value rather than whether it's truthy ([f79aaff](https://github.com/react-toolbox/react-toolbox/commit/f79aaff))
+* Disabled input should be dashed not dotted ([a46f095](https://github.com/react-toolbox/react-toolbox/commit/a46f095))
+* Do not show scrollbar on autocomplete component IE11 (#1515) ([f8f528c](https://github.com/react-toolbox/react-toolbox/commit/f8f528c)), closes [#1515](https://github.com/react-toolbox/react-toolbox/issues/1515)
+* Docs/Install: Fix typos, clarify language (#1566) ([2124c8c](https://github.com/react-toolbox/react-toolbox/commit/2124c8c)), closes [#1566](https://github.com/react-toolbox/react-toolbox/issues/1566)
+* Document usage with Create React App (#1482) ([d5b49a2](https://github.com/react-toolbox/react-toolbox/commit/d5b49a2)), closes [#1482](https://github.com/react-toolbox/react-toolbox/issues/1482)
+* Don't handle key events if slider is disabled ([6925570](https://github.com/react-toolbox/react-toolbox/commit/6925570))
+* Enable onKeyDown and onKeyUp props on Autocomplete component ([2c92c37](https://github.com/react-toolbox/react-toolbox/commit/2c92c37))
+* Event passed for Radiogroup (#1544) ([6fd1421](https://github.com/react-toolbox/react-toolbox/commit/6fd1421)), closes [#1544](https://github.com/react-toolbox/react-toolbox/issues/1544)
+* Feature/tabs a11y (#1513) ([94f6493](https://github.com/react-toolbox/react-toolbox/commit/94f6493)), closes [#1513](https://github.com/react-toolbox/react-toolbox/issues/1513)
+* fix #1611 (#1612) ([df175e7](https://github.com/react-toolbox/react-toolbox/commit/df175e7)), closes [#1611](https://github.com/react-toolbox/react-toolbox/issues/1611) [#1612](https://github.com/react-toolbox/react-toolbox/issues/1612)
+* Fix AppBar doc (#1407) ([06cbc41](https://github.com/react-toolbox/react-toolbox/commit/06cbc41)), closes [#1407](https://github.com/react-toolbox/react-toolbox/issues/1407)
+* Fix bug where dropdowns don't close (#1548) ([13520e3](https://github.com/react-toolbox/react-toolbox/commit/13520e3)), closes [#1548](https://github.com/react-toolbox/react-toolbox/issues/1548)
+* Fix compatibility with typescript 2.4+ (#1615) ([b381db4](https://github.com/react-toolbox/react-toolbox/commit/b381db4)), closes [#1615](https://github.com/react-toolbox/react-toolbox/issues/1615)
+* Fix date-picker animation in IE11 (#1586) ([54d0cb5](https://github.com/react-toolbox/react-toolbox/commit/54d0cb5)), closes [#1586](https://github.com/react-toolbox/react-toolbox/issues/1586)
+* Fix eslint errors ([f006708](https://github.com/react-toolbox/react-toolbox/commit/f006708))
+* Fix lint issue (#1624) ([6d43f88](https://github.com/react-toolbox/react-toolbox/commit/6d43f88)), closes [#1624](https://github.com/react-toolbox/react-toolbox/issues/1624)
+* Fix media queries panel height calculations (#1467) ([4a13ff2](https://github.com/react-toolbox/react-toolbox/commit/4a13ff2)), closes [#1467](https://github.com/react-toolbox/react-toolbox/issues/1467)
+* Fix mismatch between NPM published version and package.json version ([ecbdb12](https://github.com/react-toolbox/react-toolbox/commit/ecbdb12))
+* Fix mixed up type definitions for Dropdown ([47d2f18](https://github.com/react-toolbox/react-toolbox/commit/47d2f18))
+* Fix Mobile Safari issues. (#1282) ([e15ee8e](https://github.com/react-toolbox/react-toolbox/commit/e15ee8e)), closes [#1282](https://github.com/react-toolbox/react-toolbox/issues/1282)
+* Fix package.json ([e1f320c](https://github.com/react-toolbox/react-toolbox/commit/e1f320c))
+* Fix README on example project description (#1497) ([eb04045](https://github.com/react-toolbox/react-toolbox/commit/eb04045)), closes [#1497](https://github.com/react-toolbox/react-toolbox/issues/1497) [/github.com/react-toolbox/react-toolbox/pull/1251#issuecomment-302403914](https://github.com//github.com/react-toolbox/react-toolbox/pull/1251/issues/issuecomment-302403914)
+* Fix tests ([9a9396f](https://github.com/react-toolbox/react-toolbox/commit/9a9396f))
+* Fix travis ([32e4096](https://github.com/react-toolbox/react-toolbox/commit/32e4096))
+* Fix travis ([71341d9](https://github.com/react-toolbox/react-toolbox/commit/71341d9))
+* Fix tsc errors ([6357bed](https://github.com/react-toolbox/react-toolbox/commit/6357bed))
+* Fix typescript bindings. (#1564) ([de69a14](https://github.com/react-toolbox/react-toolbox/commit/de69a14)), closes [#1564](https://github.com/react-toolbox/react-toolbox/issues/1564) [#1407](https://github.com/react-toolbox/react-toolbox/issues/1407)
+* fixed browser button fires onChange event twice (#1557) ([c1a2dba](https://github.com/react-toolbox/react-toolbox/commit/c1a2dba)), closes [#1557](https://github.com/react-toolbox/react-toolbox/issues/1557)
+* Fixes #1452 (#1454) ([9619d85](https://github.com/react-toolbox/react-toolbox/commit/9619d85)), closes [#1452](https://github.com/react-toolbox/react-toolbox/issues/1452) [#1454](https://github.com/react-toolbox/react-toolbox/issues/1454) [#1452](https://github.com/react-toolbox/react-toolbox/issues/1452)
+* Handle onChange in errored input in docs ([c6a7b5b](https://github.com/react-toolbox/react-toolbox/commit/c6a7b5b))
+* Importing PropTypes from prop-types rather than react (#1413) ([ae09770](https://github.com/react-toolbox/react-toolbox/commit/ae09770)), closes [#1413](https://github.com/react-toolbox/react-toolbox/issues/1413)
+* Issue 1459: Replace onClick handler in Dropdown component to onMouseDown (#1521) ([736f23e](https://github.com/react-toolbox/react-toolbox/commit/736f23e)), closes [#1521](https://github.com/react-toolbox/react-toolbox/issues/1521)
+* Link text has text-transform: capitalize, contrary to Material specs, is removed. ([470ffae](https://github.com/react-toolbox/react-toolbox/commit/470ffae))
+* ListItem component theme prop extends ListItemTextTheme. ([11c3fb1](https://github.com/react-toolbox/react-toolbox/commit/11c3fb1))
+* ListItem legend may be a node as well (#1496) ([a6eb5c5](https://github.com/react-toolbox/react-toolbox/commit/a6eb5c5)), closes [#1496](https://github.com/react-toolbox/react-toolbox/issues/1496)
+* Made role on input field a property (#1553) ([fc9c180](https://github.com/react-toolbox/react-toolbox/commit/fc9c180)), closes [#1553](https://github.com/react-toolbox/react-toolbox/issues/1553)
+* Make checkbox border color according to spec ([4670098](https://github.com/react-toolbox/react-toolbox/commit/4670098))
+* Make checkbox centered between table edge and next column start ([b660bcc](https://github.com/react-toolbox/react-toolbox/commit/b660bcc))
+* Move Input#validPresent to utils#isValuePresent ([1dafc56](https://github.com/react-toolbox/react-toolbox/commit/1dafc56))
+* Move tsd task to gulpfile ([a9518b6](https://github.com/react-toolbox/react-toolbox/commit/a9518b6))
+* onchange ([4d64c73](https://github.com/react-toolbox/react-toolbox/commit/4d64c73))
+* Pass the theme prop to TableRow child components ([73b2594](https://github.com/react-toolbox/react-toolbox/commit/73b2594)), closes [#1805](https://github.com/react-toolbox/react-toolbox/issues/1805)
+* Remove box-shadow on required inputs ([14eb6ca](https://github.com/react-toolbox/react-toolbox/commit/14eb6ca))
+* Remove discord link in README.md (#1593) ([16ae9bf](https://github.com/react-toolbox/react-toolbox/commit/16ae9bf)), closes [#1593](https://github.com/react-toolbox/react-toolbox/issues/1593) [#107](https://github.com/react-toolbox/react-toolbox/issues/107)
+* Remove max-height from dialog along with hidden overflow ([2eb27c7](https://github.com/react-toolbox/react-toolbox/commit/2eb27c7))
+* Remove unknown prop multilineHint which React reports as passed to textarea ([478c9ae](https://github.com/react-toolbox/react-toolbox/commit/478c9ae))
+* requestAnimationFrame will only trigger if the browser window is visible. If the browser tab is put ([fb5d0e1](https://github.com/react-toolbox/react-toolbox/commit/fb5d0e1)), closes [#1604](https://github.com/react-toolbox/react-toolbox/issues/1604)
+* Revert "Update components to use css-transition-group 2" ([752cdd3](https://github.com/react-toolbox/react-toolbox/commit/752cdd3))
+* small typo error corrected. ([f78c084](https://github.com/react-toolbox/react-toolbox/commit/f78c084))
+* solve #1444 and #1359. (#1587) ([843b88a](https://github.com/react-toolbox/react-toolbox/commit/843b88a)), closes [#1444](https://github.com/react-toolbox/react-toolbox/issues/1444) [#1359](https://github.com/react-toolbox/react-toolbox/issues/1359) [#1587](https://github.com/react-toolbox/react-toolbox/issues/1587)
+* Typescript definitions validation (#1163) ([91cb46d](https://github.com/react-toolbox/react-toolbox/commit/91cb46d)), closes [#1163](https://github.com/react-toolbox/react-toolbox/issues/1163)
+* Update Autocomplete TypeScript declaration file and readme with key callbacks ([b79c3da](https://github.com/react-toolbox/react-toolbox/commit/b79c3da))
+* Update CHANGELOG.md (#1399) ([0d21c02](https://github.com/react-toolbox/react-toolbox/commit/0d21c02)), closes [#1399](https://github.com/react-toolbox/react-toolbox/issues/1399)
+* Update DatePicker.d.ts (#1411) ([e572dd7](https://github.com/react-toolbox/react-toolbox/commit/e572dd7)), closes [#1411](https://github.com/react-toolbox/react-toolbox/issues/1411)
+* update defaults in input component config.css ([25172c5](https://github.com/react-toolbox/react-toolbox/commit/25172c5))
+* Update dependencies ([be80e0b](https://github.com/react-toolbox/react-toolbox/commit/be80e0b))
+* Update enzyme config files ([d313e11](https://github.com/react-toolbox/react-toolbox/commit/d313e11))
+* Update readme for Autocomplete (#1657) ([4ca6747](https://github.com/react-toolbox/react-toolbox/commit/4ca6747)), closes [#1657](https://github.com/react-toolbox/react-toolbox/issues/1657) [/github.com/react-toolbox/react-toolbox/blob/8e2b688954d4b413a602bb59a89254e752f20b0f/components/autocomplete/Autocomplete.d.ts#L54](https://github.com//github.com/react-toolbox/react-toolbox/blob/8e2b688954d4b413a602bb59a89254e752f20b0f/components/autocomplete/Autocomplete.d.ts/issues/L54)
+* Update README.md ([afb6532](https://github.com/react-toolbox/react-toolbox/commit/afb6532))
+* Update README.md ([3d8cd66](https://github.com/react-toolbox/react-toolbox/commit/3d8cd66))
+* Update readme.md (#1478) ([f90958d](https://github.com/react-toolbox/react-toolbox/commit/f90958d)), closes [#1478](https://github.com/react-toolbox/react-toolbox/issues/1478)
+* Update tests to use css-transition-group 2 ([ab2e789](https://github.com/react-toolbox/react-toolbox/commit/ab2e789))
+* Update tests to use Enzyme 3 ([c510029](https://github.com/react-toolbox/react-toolbox/commit/c510029))
+* Update tests to use react-dom/test-utils ([08ca837](https://github.com/react-toolbox/react-toolbox/commit/08ca837))
+* Update URLs to new .io domain ([b0a7533](https://github.com/react-toolbox/react-toolbox/commit/b0a7533))
+* Update versions ([7e4c12e](https://github.com/react-toolbox/react-toolbox/commit/7e4c12e))
+* Updated dependencies (#1448) ([2981da4](https://github.com/react-toolbox/react-toolbox/commit/2981da4)), closes [#1448](https://github.com/react-toolbox/react-toolbox/issues/1448)
+* Upgrade react-transition-group ([ced94a4](https://github.com/react-toolbox/react-toolbox/commit/ced94a4))
+* Upgrade to node 7 ([66a47bb](https://github.com/react-toolbox/react-toolbox/commit/66a47bb))
+* Use code instead of keyCode ([f8a7e88](https://github.com/react-toolbox/react-toolbox/commit/f8a7e88))
+* Use hover effect on selected table row as well ([889e9ca](https://github.com/react-toolbox/react-toolbox/commit/889e9ca))
+* Use innerRef to blur input ([a7d0c5b](https://github.com/react-toolbox/react-toolbox/commit/a7d0c5b))
+* Use proper code values in KEYS constant đ€Šđ»ââïž ([6fa13f1](https://github.com/react-toolbox/react-toolbox/commit/6fa13f1))
+* Use window.requestAnimationFrame in Tabs.js ([bc05c69](https://github.com/react-toolbox/react-toolbox/commit/bc05c69))
+* TypeScript: snack-bar label accepts element ([40aa354](https://github.com/react-toolbox/react-toolbox/commit/40aa354))
+* Portal: Fix Invalid "style" PropType (#1664) ([8b7fc07](https://github.com/react-toolbox/react-toolbox/commit/8b7fc07)), closes [#1664](https://github.com/react-toolbox/react-toolbox/issues/1664)
+* IconMenu: active prop (#1662). ([0103d95](https://github.com/react-toolbox/react-toolbox/commit/0103d95)), closes [#1662](https://github.com/react-toolbox/react-toolbox/issues/1662)
+* IconMenu: active prop (#1662). ([74bd2dc](https://github.com/react-toolbox/react-toolbox/commit/74bd2dc)), closes [#1662](https://github.com/react-toolbox/react-toolbox/issues/1662)
+* IconMenu: active prop (#1662). more tests. ([bf790d7](https://github.com/react-toolbox/react-toolbox/commit/bf790d7)), closes [#1662](https://github.com/react-toolbox/react-toolbox/issues/1662)
+* IconMenu: active prop (fixes #1662). ([0f51c06](https://github.com/react-toolbox/react-toolbox/commit/0f51c06)), closes [#1662](https://github.com/react-toolbox/react-toolbox/issues/1662)
+* fix: of -> or in documentation ([31fac7b](https://github.com/react-toolbox/react-toolbox/commit/31fac7b))
+
+
+
+
+# 2.0.0-beta.8 (2017-04-06)
+
+* Add callback functions to slider for when slider starts being dragged, and when it stops. (#1287) ([f5c1138](https://github.com/react-toolbox/react-toolbox/commit/f5c1138))
+* Add chinese localization (#1290) ([9a916e0](https://github.com/react-toolbox/react-toolbox/commit/9a916e0))
+* Add npm pretest script (#1396) ([ade338f](https://github.com/react-toolbox/react-toolbox/commit/ade338f))
+* Add possibility to render component as AppBar title ([cd3fefc](https://github.com/react-toolbox/react-toolbox/commit/cd3fefc))
+* Added missing onKey(Down|Up) input property definitions (#1318) ([4ff1cc9](https://github.com/react-toolbox/react-toolbox/commit/4ff1cc9))
+* Autocomplete accepting suggestionMatch none (#1289) ([b75214c](https://github.com/react-toolbox/react-toolbox/commit/b75214c))
+* Bugfix[AutoComplete]: showAllSuggestions state should be true if showSuggestionsWhenValueIsSet is tr ([3e834cb](https://github.com/react-toolbox/react-toolbox/commit/3e834cb))
+* Dev dialog overflow (#1303) ([3dde4c4](https://github.com/react-toolbox/react-toolbox/commit/3dde4c4))
+* Don't spread state in setState, it's already done by react (#1336) ([d5f2c98](https://github.com/react-toolbox/react-toolbox/commit/d5f2c98))
+* Esc key event listener leakage fixed (#1376) ([a4f8da5](https://github.com/react-toolbox/react-toolbox/commit/a4f8da5)), closes [#1376](https://github.com/react-toolbox/react-toolbox/issues/1376)
+* Fix #1368 (#1369) ([509e846](https://github.com/react-toolbox/react-toolbox/commit/509e846)), closes [#1368](https://github.com/react-toolbox/react-toolbox/issues/1368) [#1369](https://github.com/react-toolbox/react-toolbox/issues/1369)
+* Fix allowCreate in Autocomplete when value prop is an object (#1334) ([da85a69](https://github.com/react-toolbox/react-toolbox/commit/da85a69)), closes [#1334](https://github.com/react-toolbox/react-toolbox/issues/1334)
+* Fix error in events.js transitionEventNamesFor method (#1294) ([73bf3be](https://github.com/react-toolbox/react-toolbox/commit/73bf3be)), closes [#1294](https://github.com/react-toolbox/react-toolbox/issues/1294)
+* Fix GitHub brand typo (#1356) ([9beb7fc](https://github.com/react-toolbox/react-toolbox/commit/9beb7fc)), closes [#1356](https://github.com/react-toolbox/react-toolbox/issues/1356)
+* Fix TableCell definition (#1386) ([991a430](https://github.com/react-toolbox/react-toolbox/commit/991a430)), closes [#1386](https://github.com/react-toolbox/react-toolbox/issues/1386)
+* Fixes #1221 (#1324) ([ec5f15d](https://github.com/react-toolbox/react-toolbox/commit/ec5f15d)), closes [#1221](https://github.com/react-toolbox/react-toolbox/issues/1221) [#1324](https://github.com/react-toolbox/react-toolbox/issues/1324)
+* Fixes #1242 ([34faf74](https://github.com/react-toolbox/react-toolbox/commit/34faf74)), closes [#1242](https://github.com/react-toolbox/react-toolbox/issues/1242)
+* Fixes Ripple event error in case props.ripple === false (#1344) ([ad6f303](https://github.com/react-toolbox/react-toolbox/commit/ad6f303)), closes [#1344](https://github.com/react-toolbox/react-toolbox/issues/1344)
+* fixes table clone element when child is null (#1326) ([7231a7c](https://github.com/react-toolbox/react-toolbox/commit/7231a7c)), closes [#1326](https://github.com/react-toolbox/react-toolbox/issues/1326)
+* Lock node version on package.json (#1394) ([d86f774](https://github.com/react-toolbox/react-toolbox/commit/d86f774))
+* Release 2.0.0-beta.8 ([1181acd](https://github.com/react-toolbox/react-toolbox/commit/1181acd))
+* Restore linter run in travis ([bd926ae](https://github.com/react-toolbox/react-toolbox/commit/bd926ae))
+* Run builds from last node LTS and stable ([a5a9a0a](https://github.com/react-toolbox/react-toolbox/commit/a5a9a0a))
+* Small fixes ([56a730e](https://github.com/react-toolbox/react-toolbox/commit/56a730e))
+* Tabs pointer not being updated (#1224) (#1325) ([5de4e73](https://github.com/react-toolbox/react-toolbox/commit/5de4e73)), closes [#1224](https://github.com/react-toolbox/react-toolbox/issues/1224)
+* Update AppBar.js ([4ef719a](https://github.com/react-toolbox/react-toolbox/commit/4ef719a))
+* Update FontIcon.js (#1321) ([697b4d6](https://github.com/react-toolbox/react-toolbox/commit/697b4d6)), closes [#1320](https://github.com/react-toolbox/react-toolbox/issues/1320)
+* Update install.md (#1398) ([4cc87db](https://github.com/react-toolbox/react-toolbox/commit/4cc87db))
+* Update readme.md (#1363) ([c5bf439](https://github.com/react-toolbox/react-toolbox/commit/c5bf439)), closes [#1362](https://github.com/react-toolbox/react-toolbox/issues/1362) [#1363](https://github.com/react-toolbox/react-toolbox/issues/1363)
+* Upgrade nvm node version ([3477520](https://github.com/react-toolbox/react-toolbox/commit/3477520))
+* WIP ([fdd7873](https://github.com/react-toolbox/react-toolbox/commit/fdd7873))
+* WIP ([4b713c3](https://github.com/react-toolbox/react-toolbox/commit/4b713c3))
+* feat(slider): add buffer prop to Slider (#1317) ([0bd575f](https://github.com/react-toolbox/react-toolbox/commit/0bd575f))
+
+
+
+
+# 2.0.0-beta.7 (2017-03-08)
+
+* `disabled` suggestionMatch in d.ts (#1241) ([8e2b688](https://github.com/react-toolbox/react-toolbox/commit/8e2b688))
+* Add $input-icon-right-space var to add the correct spacing to the input based on Material Spec. (#11 ([0360eb8](https://github.com/react-toolbox/react-toolbox/commit/0360eb8))
+* Allow numbers for Input value prop. Fixes #1180 ([ba29686](https://github.com/react-toolbox/react-toolbox/commit/ba29686)), closes [#1180](https://github.com/react-toolbox/react-toolbox/issues/1180)
+* Allow to reference Input via Autocomplete (#1255) ([3d2329a](https://github.com/react-toolbox/react-toolbox/commit/3d2329a))
+* Custom label and value keys for Dropdown (#1273) ([6295ca4](https://github.com/react-toolbox/react-toolbox/commit/6295ca4))
+* Eslint plugin compat ([dc60b07](https://github.com/react-toolbox/react-toolbox/commit/dc60b07))
+* Export all from table (#1244) ([6bbba4a](https://github.com/react-toolbox/react-toolbox/commit/6bbba4a))
+* Fix #1219 ([e366bed](https://github.com/react-toolbox/react-toolbox/commit/e366bed)), closes [#1219](https://github.com/react-toolbox/react-toolbox/issues/1219)
+* Fix error in "flat" property description (#1265) ([53e09d9](https://github.com/react-toolbox/react-toolbox/commit/53e09d9)), closes [#1265](https://github.com/react-toolbox/react-toolbox/issues/1265)
+* Fix ripple overflowing outside the boundaries of list item (#1215) ([8a4b628](https://github.com/react-toolbox/react-toolbox/commit/8a4b628)), closes [#1215](https://github.com/react-toolbox/react-toolbox/issues/1215) [#1205](https://github.com/react-toolbox/react-toolbox/issues/1205)
+* fix typo in app_bar readme.md (#1247) ([27535a9](https://github.com/react-toolbox/react-toolbox/commit/27535a9)), closes [#1247](https://github.com/react-toolbox/react-toolbox/issues/1247)
+* fixed broken link (#1181) ([61b4845](https://github.com/react-toolbox/react-toolbox/commit/61b4845)), closes [#1181](https://github.com/react-toolbox/react-toolbox/issues/1181)
+* Fixes #1086 (#1212) ([60b147f](https://github.com/react-toolbox/react-toolbox/commit/60b147f)), closes [#1086](https://github.com/react-toolbox/react-toolbox/issues/1086) [#1212](https://github.com/react-toolbox/react-toolbox/issues/1212)
+* Fixes #1195 ([0f4a16a](https://github.com/react-toolbox/react-toolbox/commit/0f4a16a)), closes [#1195](https://github.com/react-toolbox/react-toolbox/issues/1195)
+* handle defaultValue to (#1178) ([c6ce6aa](https://github.com/react-toolbox/react-toolbox/commit/c6ce6aa))
+* How to hide AppBar icon based on permanentAt value (#1194) ([498bb46](https://github.com/react-toolbox/react-toolbox/commit/498bb46))
+* Import Ramda values function directly (#1209) ([75a219b](https://github.com/react-toolbox/react-toolbox/commit/75a219b))
+* Invalid appBarIconVisible calculation (#1239) ([bde478e](https://github.com/react-toolbox/react-toolbox/commit/bde478e)), closes [#1231](https://github.com/react-toolbox/react-toolbox/issues/1231)
+* Move `react-style-proptype` to non-dev deps (#1190) ([a0e1392](https://github.com/react-toolbox/react-toolbox/commit/a0e1392))
+* Move eslint-plugin-babel to devDependencies (#1222) ([558040d](https://github.com/react-toolbox/react-toolbox/commit/558040d))
+* Move gulp-rimraf to devDependencies (#1214) ([632411b](https://github.com/react-toolbox/react-toolbox/commit/632411b))
+* Release 2.0.0-beta.7 ([5baf015](https://github.com/react-toolbox/react-toolbox/commit/5baf015))
+* Remove tests from build and remove sinon ([23b4537](https://github.com/react-toolbox/react-toolbox/commit/23b4537))
+* Remove unnecessary reference to sliderLength in knobOffset method (#1271) ([e7f5210](https://github.com/react-toolbox/react-toolbox/commit/e7f5210))
+* Update Changelog ([fa3f5e9](https://github.com/react-toolbox/react-toolbox/commit/fa3f5e9))
+* Update README.md for PostCSS instead of SASS (#1251) ([9354f4b](https://github.com/react-toolbox/react-toolbox/commit/9354f4b))
+* Use Jest đ and upgrade Webpack and other dependencies ([b48c17d](https://github.com/react-toolbox/react-toolbox/commit/b48c17d))
+* Bugfix: Propert selector for disabled value in Dropdown ([cec890b](https://github.com/react-toolbox/react-toolbox/commit/cec890b))
+
+
+
+
+# 2.0.0-beta.6 (2017-01-28)
+
+* Fix tests ([1427e75](https://github.com/react-toolbox/react-toolbox/commit/1427e75))
+* Import TabTheme interface at Tabs TS definition ([bc18e56](https://github.com/react-toolbox/react-toolbox/commit/bc18e56))
+* Release 2.0.0-beta.6 ([6588093](https://github.com/react-toolbox/react-toolbox/commit/6588093))
+* Update CHANGELOG.md ([399efe8](https://github.com/react-toolbox/react-toolbox/commit/399efe8))
+* Update dependencies ([ff55f5a](https://github.com/react-toolbox/react-toolbox/commit/ff55f5a))
+* Update dependencies and linter (#1180) ([9d6ec1e](https://github.com/react-toolbox/react-toolbox/commit/9d6ec1e))
+* Use isComponentOfType in Tabs. Fixes #1155 ([2224eb6](https://github.com/react-toolbox/react-toolbox/commit/2224eb6)), closes [#1155](https://github.com/react-toolbox/react-toolbox/issues/1155)
+
+
+
+
+# 2.0.0-beta.5 (2017-01-24)
+
+* Ability to override default isComponentOfType implementation (#1164) ([49d6605](https://github.com/react-toolbox/react-toolbox/commit/49d6605))
+* Add backers and Sponsors (#1137) ([46f5353](https://github.com/react-toolbox/react-toolbox/commit/46f5353))
+* Add development note ([815b31b](https://github.com/react-toolbox/react-toolbox/commit/815b31b))
+* Add inverse to (#1147) ([7161518](https://github.com/react-toolbox/react-toolbox/commit/7161518))
+* Add NavDrawer to spec ([b7c50ea](https://github.com/react-toolbox/react-toolbox/commit/b7c50ea))
+* Add ripple for Tabs. Fixes #377 ([792f8ac](https://github.com/react-toolbox/react-toolbox/commit/792f8ac)), closes [#377](https://github.com/react-toolbox/react-toolbox/issues/377)
+* Add ROADMAP đ” ([c145c34](https://github.com/react-toolbox/react-toolbox/commit/c145c34))
+* Add suggestionMatch option to disable filtering (#1122) ([d3fe9f9](https://github.com/react-toolbox/react-toolbox/commit/d3fe9f9))
+* Add title to the GitHub Icon ([1ffd4d3](https://github.com/react-toolbox/react-toolbox/commit/1ffd4d3))
+* Added proper type definitions for dialog actions so typescript users can pass on props to the genera ([f8bd867](https://github.com/react-toolbox/react-toolbox/commit/f8bd867))
+* Allow null children in List ([9ef7209](https://github.com/react-toolbox/react-toolbox/commit/9ef7209))
+* Alternative text for the FontIcon ([51d58eb](https://github.com/react-toolbox/react-toolbox/commit/51d58eb))
+* Better icons alignment ([0c2a296](https://github.com/react-toolbox/react-toolbox/commit/0c2a296))
+* Check if element exists in ripple when it's reset ([5049571](https://github.com/react-toolbox/react-toolbox/commit/5049571))
+* Enable dynamic source for single value Autocomplete (#1120) ([d80dc82](https://github.com/react-toolbox/react-toolbox/commit/d80dc82))
+* Expose onEscKeyDown on Drawer component (#1150) ([65f8120](https://github.com/react-toolbox/react-toolbox/commit/65f8120))
+* Fix right arrow appearing when window is re-sized ([78895c0](https://github.com/react-toolbox/react-toolbox/commit/78895c0))
+* Fixes #1030 ([31788ea](https://github.com/react-toolbox/react-toolbox/commit/31788ea)), closes [#1030](https://github.com/react-toolbox/react-toolbox/issues/1030)
+* Fixes #1055 ([13688ed](https://github.com/react-toolbox/react-toolbox/commit/13688ed)), closes [#1055](https://github.com/react-toolbox/react-toolbox/issues/1055)
+* Fixes #1085 ([c874616](https://github.com/react-toolbox/react-toolbox/commit/c874616)), closes [#1085](https://github.com/react-toolbox/react-toolbox/issues/1085)
+* Fixes #1119 ([52f6c4a](https://github.com/react-toolbox/react-toolbox/commit/52f6c4a)), closes [#1119](https://github.com/react-toolbox/react-toolbox/issues/1119)
+* Fixes #1127 ([7e26773](https://github.com/react-toolbox/react-toolbox/commit/7e26773)), closes [#1127](https://github.com/react-toolbox/react-toolbox/issues/1127)
+* Fixes #1128 ([45b92b1](https://github.com/react-toolbox/react-toolbox/commit/45b92b1)), closes [#1128](https://github.com/react-toolbox/react-toolbox/issues/1128)
+* Fixes #1130 ([fa4a9ba](https://github.com/react-toolbox/react-toolbox/commit/fa4a9ba)), closes [#1130](https://github.com/react-toolbox/react-toolbox/issues/1130)
+* Fixes #1133 ([5b1c92d](https://github.com/react-toolbox/react-toolbox/commit/5b1c92d)), closes [#1133](https://github.com/react-toolbox/react-toolbox/issues/1133)
+* Fixes #1139 ([63ef656](https://github.com/react-toolbox/react-toolbox/commit/63ef656)), closes [#1139](https://github.com/react-toolbox/react-toolbox/issues/1139)
+* Fixes #1159 ([cee3fb2](https://github.com/react-toolbox/react-toolbox/commit/cee3fb2)), closes [#1159](https://github.com/react-toolbox/react-toolbox/issues/1159)
+* Fixes #1171 ([181e5c2](https://github.com/react-toolbox/react-toolbox/commit/181e5c2)), closes [#1171](https://github.com/react-toolbox/react-toolbox/issues/1171)
+* Fixes #1172 ([b4edcbc](https://github.com/react-toolbox/react-toolbox/commit/b4edcbc)), closes [#1172](https://github.com/react-toolbox/react-toolbox/issues/1172)
+* Fixes #1173 ([d11ac37](https://github.com/react-toolbox/react-toolbox/commit/d11ac37)), closes [#1173](https://github.com/react-toolbox/react-toolbox/issues/1173)
+* Grammar tweaks (#1113) ([21fe247](https://github.com/react-toolbox/react-toolbox/commit/21fe247))
+* Migrate styles to PostCSS (#666) ([81acda7](https://github.com/react-toolbox/react-toolbox/commit/81acda7)), closes [#966](https://github.com/react-toolbox/react-toolbox/issues/966) [#965](https://github.com/react-toolbox/react-toolbox/issues/965) [#976](https://github.com/react-toolbox/react-toolbox/issues/976) [#1021](https://github.com/react-toolbox/react-toolbox/issues/1021) [#1038](https://github.com/react-toolbox/react-toolbox/issues/1038) [#1061](https://github.com/react-toolbox/react-toolbox/issues/1061) [#1032](https://github.com/react-toolbox/react-toolbox/issues/1032) [#1064](https://github.com/react-toolbox/react-toolbox/issues/1064)
+* Pass children to FontIcon ([ad30d7b](https://github.com/react-toolbox/react-toolbox/commit/ad30d7b))
+* Release 2.0.0-beta.5 ([69be656](https://github.com/react-toolbox/react-toolbox/commit/69be656))
+* Remove diacritic signs in query and suggestions (#1115) ([2e3cb68](https://github.com/react-toolbox/react-toolbox/commit/2e3cb68))
+* Restructure typescript definitions (#1114) ([f365724](https://github.com/react-toolbox/react-toolbox/commit/f365724))
+* Update Button README.md (#1081) ([6c10414](https://github.com/react-toolbox/react-toolbox/commit/6c10414))
+* Typescript: document Input methods (#1154) ([eff4b84](https://github.com/react-toolbox/react-toolbox/commit/eff4b84))
+* feat(a11y): add alt attribute to set alternative text for the icon or image (#1102) ([3859c46](https://github.com/react-toolbox/react-toolbox/commit/3859c46))
+
+
+
+
+## 1.3.4 (2017-01-05)
+
+* Declare immutability-helper as direct dependency ([85b6010](https://github.com/react-toolbox/react-toolbox/commit/85b6010))
+* Downgrade node-sass ([0116d5d](https://github.com/react-toolbox/react-toolbox/commit/0116d5d))
+* fix few missing propTypes ([ca8e4c6](https://github.com/react-toolbox/react-toolbox/commit/ca8e4c6))
+* Fix linter ([8b25e96](https://github.com/react-toolbox/react-toolbox/commit/8b25e96))
+* Fixes #1032 ([323ea32](https://github.com/react-toolbox/react-toolbox/commit/323ea32)), closes [#1032](https://github.com/react-toolbox/react-toolbox/issues/1032)
+* Fixes #1034 ([bf00d92](https://github.com/react-toolbox/react-toolbox/commit/bf00d92)), closes [#1034](https://github.com/react-toolbox/react-toolbox/issues/1034)
+* Fixes #750 ([fa97709](https://github.com/react-toolbox/react-toolbox/commit/fa97709)), closes [#750](https://github.com/react-toolbox/react-toolbox/issues/750)
+* Fixes #750 ([f7da37a](https://github.com/react-toolbox/react-toolbox/commit/f7da37a)), closes [#750](https://github.com/react-toolbox/react-toolbox/issues/750)
+* Release 1.3.4 ([8f61374](https://github.com/react-toolbox/react-toolbox/commit/8f61374))
+* Update documentation dependencies ([d765913](https://github.com/react-toolbox/react-toolbox/commit/d765913))
+* update typings to 1.3.3 ([b5e0c62](https://github.com/react-toolbox/react-toolbox/commit/b5e0c62))
+
+
+
+
+## 1.3.3 (2016-12-17)
+
+* Add disabled dropdown item feature & add its test cases & update docs ([b419f44](https://github.com/react-toolbox/react-toolbox/commit/b419f44))
+* Added safety check on vals ([3d4d93b](https://github.com/react-toolbox/react-toolbox/commit/3d4d93b))
+* Cleaned up isValueAnObject check ([d38abd1](https://github.com/react-toolbox/react-toolbox/commit/d38abd1))
+* Fix broken example in Card component ([3e67d35](https://github.com/react-toolbox/react-toolbox/commit/3e67d35))
+* Fixes #1025 ([c18ffa4](https://github.com/react-toolbox/react-toolbox/commit/c18ffa4)), closes [#1025](https://github.com/react-toolbox/react-toolbox/issues/1025)
+* refactor propTypes more descriptive ([f006875](https://github.com/react-toolbox/react-toolbox/commit/f006875))
+* Reformat ([7c6f5ae](https://github.com/react-toolbox/react-toolbox/commit/7c6f5ae))
+* relaxing propTypes of Input & Autocomplete ([ce3fbfc](https://github.com/react-toolbox/react-toolbox/commit/ce3fbfc))
+* Release 1.3.3 ([f66c24b](https://github.com/react-toolbox/react-toolbox/commit/f66c24b))
+* Update dependencies ([3550f3c](https://github.com/react-toolbox/react-toolbox/commit/3550f3c))
+
+
+
+
+## 1.3.2 (2016-12-06)
+
+* Added onQueryChange description to readme ([7d19b9a](https://github.com/react-toolbox/react-toolbox/commit/7d19b9a))
+* Added showSelectedWhenNotInSource to AutocompleteTheme ([afb0f29](https://github.com/react-toolbox/react-toolbox/commit/afb0f29))
+* Allow Tooltip factory to use string native components ([b3f9934](https://github.com/react-toolbox/react-toolbox/commit/b3f9934))
+* Build ([5a491aa](https://github.com/react-toolbox/react-toolbox/commit/5a491aa))
+* Enable theming of Input component inside Dropdown component. ([c5b1473](https://github.com/react-toolbox/react-toolbox/commit/c5b1473))
+* Fixes #1016 ([5b39cfd](https://github.com/react-toolbox/react-toolbox/commit/5b39cfd)), closes [#1016](https://github.com/react-toolbox/react-toolbox/issues/1016)
+* Make chips avatar detection work when decorated ([0613cf7](https://github.com/react-toolbox/react-toolbox/commit/0613cf7))
+* Make Tooltip use currentTarget instead of target when calculating the position ([1e0aaec](https://github.com/react-toolbox/react-toolbox/commit/1e0aaec))
+* Release 1.3.2 ([66090ab](https://github.com/react-toolbox/react-toolbox/commit/66090ab))
+* Removed lib ([71b7f51](https://github.com/react-toolbox/react-toolbox/commit/71b7f51))
+* Updated readme to include new showSelectedWhenNotInSource prop ([b83980d](https://github.com/react-toolbox/react-toolbox/commit/b83980d))
+* Updated selectedPosition description in readme ([d19249f](https://github.com/react-toolbox/react-toolbox/commit/d19249f))
+
+
+
+
+## 1.3.1 (2016-11-30)
+
+* Added logic to show selected chips even if they don't exist in source (showSelectedWhenNotInSource). ([e301116](https://github.com/react-toolbox/react-toolbox/commit/e301116))
+* Built ([c3f3510](https://github.com/react-toolbox/react-toolbox/commit/c3f3510))
+* Dropdown auto fix ([2f5e0f5](https://github.com/react-toolbox/react-toolbox/commit/2f5e0f5))
+* Fixes #1001 ([4378f46](https://github.com/react-toolbox/react-toolbox/commit/4378f46)), closes [#1001](https://github.com/react-toolbox/react-toolbox/issues/1001)
+* Fixes #1007 ([d8a30f3](https://github.com/react-toolbox/react-toolbox/commit/d8a30f3)), closes [#1007](https://github.com/react-toolbox/react-toolbox/issues/1007)
+* Fixes #236 ([4c154e8](https://github.com/react-toolbox/react-toolbox/commit/4c154e8)), closes [#236](https://github.com/react-toolbox/react-toolbox/issues/236)
+* Fixes #964 ([8734ece](https://github.com/react-toolbox/react-toolbox/commit/8734ece)), closes [#964](https://github.com/react-toolbox/react-toolbox/issues/964)
+* Fixes #999 ([049b3f6](https://github.com/react-toolbox/react-toolbox/commit/049b3f6)), closes [#999](https://github.com/react-toolbox/react-toolbox/issues/999)
+* Published lib ([942d56f](https://github.com/react-toolbox/react-toolbox/commit/942d56f))
+* Release 1.3.1 ([a8e1bb7](https://github.com/react-toolbox/react-toolbox/commit/a8e1bb7))
+* Tidy up ([3237ad0](https://github.com/react-toolbox/react-toolbox/commit/3237ad0))
+
+
+
+
+# 1.3.0 (2016-11-25)
+
+* Add "tooltipShowOnClick" to Tooltip component ([056551e](https://github.com/react-toolbox/react-toolbox/commit/056551e))
+* Add example of multiword icon name ([9d8c975](https://github.com/react-toolbox/react-toolbox/commit/9d8c975))
+* Add internal ip to easily test other devices ([c3a614c](https://github.com/react-toolbox/react-toolbox/commit/c3a614c))
+* Add no localization ([7eb6680](https://github.com/react-toolbox/react-toolbox/commit/7eb6680))
+* Add no localization ([fb855bd](https://github.com/react-toolbox/react-toolbox/commit/fb855bd))
+* add required attribute to DropdownProps interface ([6eda1f9](https://github.com/react-toolbox/react-toolbox/commit/6eda1f9))
+* Add Tabs' `inverse` and `hideMode` props in d.ts ([001a871](https://github.com/react-toolbox/react-toolbox/commit/001a871))
+* Add tooltipShowOnClick to README ([3c468d1](https://github.com/react-toolbox/react-toolbox/commit/3c468d1))
+* Added enabled and disabled date properties to date picker. ([6f0db34](https://github.com/react-toolbox/react-toolbox/commit/6f0db34))
+* added extension topic at readme.md ([c6706ae](https://github.com/react-toolbox/react-toolbox/commit/c6706ae))
+* Added german time settings ([5918895](https://github.com/react-toolbox/react-toolbox/commit/5918895))
+* Added german time to docs ([2657a94](https://github.com/react-toolbox/react-toolbox/commit/2657a94))
+* Adds a hook to get the autocomplete query value. ([8052a77](https://github.com/react-toolbox/react-toolbox/commit/8052a77))
+* Adds missing file ([350463c](https://github.com/react-toolbox/react-toolbox/commit/350463c))
+* Adds type definitions. Makes it possible to hide the Chips. ([fb263f4](https://github.com/react-toolbox/react-toolbox/commit/fb263f4))
+* Error in allowBlank ([f0f996e](https://github.com/react-toolbox/react-toolbox/commit/f0f996e))
+* Extend extensions ([77a1db6](https://github.com/react-toolbox/react-toolbox/commit/77a1db6))
+* Extract reused logic. ([f7a3b6d](https://github.com/react-toolbox/react-toolbox/commit/f7a3b6d))
+* fix (#942): slider increments with steps ([66a630c](https://github.com/react-toolbox/react-toolbox/commit/66a630c)), closes [#942](https://github.com/react-toolbox/react-toolbox/issues/942)
+* fix (#943): prevent navdrawer toggle when clicking on it ([95b7403](https://github.com/react-toolbox/react-toolbox/commit/95b7403)), closes [#943](https://github.com/react-toolbox/react-toolbox/issues/943)
+* Fix #250 ([8964781](https://github.com/react-toolbox/react-toolbox/commit/8964781)), closes [#250](https://github.com/react-toolbox/react-toolbox/issues/250)
+* Fix #297 ([276e891](https://github.com/react-toolbox/react-toolbox/commit/276e891)), closes [#297](https://github.com/react-toolbox/react-toolbox/issues/297)
+* Fix #409 ([091a1fa](https://github.com/react-toolbox/react-toolbox/commit/091a1fa)), closes [#409](https://github.com/react-toolbox/react-toolbox/issues/409)
+* Fix #866 ([e240cf2](https://github.com/react-toolbox/react-toolbox/commit/e240cf2)), closes [#866](https://github.com/react-toolbox/react-toolbox/issues/866)
+* Fix #877 ([d0a9032](https://github.com/react-toolbox/react-toolbox/commit/d0a9032)), closes [#877](https://github.com/react-toolbox/react-toolbox/issues/877)
+* Fix #883 ([1fefbae](https://github.com/react-toolbox/react-toolbox/commit/1fefbae)), closes [#883](https://github.com/react-toolbox/react-toolbox/issues/883)
+* Fix #894 ([00da4dd](https://github.com/react-toolbox/react-toolbox/commit/00da4dd)), closes [#894](https://github.com/react-toolbox/react-toolbox/issues/894)
+* Fix #898 ([2e2a8fd](https://github.com/react-toolbox/react-toolbox/commit/2e2a8fd)), closes [#898](https://github.com/react-toolbox/react-toolbox/issues/898)
+* Fix #900 ([956ea57](https://github.com/react-toolbox/react-toolbox/commit/956ea57)), closes [#900](https://github.com/react-toolbox/react-toolbox/issues/900)
+* Fix #902 ([9cd7fba](https://github.com/react-toolbox/react-toolbox/commit/9cd7fba)), closes [#902](https://github.com/react-toolbox/react-toolbox/issues/902)
+* Fix #904 ([173cff0](https://github.com/react-toolbox/react-toolbox/commit/173cff0)), closes [#904](https://github.com/react-toolbox/react-toolbox/issues/904)
+* Fix #910 ([25bba26](https://github.com/react-toolbox/react-toolbox/commit/25bba26)), closes [#910](https://github.com/react-toolbox/react-toolbox/issues/910)
+* Fix #915 ([cc9a782](https://github.com/react-toolbox/react-toolbox/commit/cc9a782)), closes [#915](https://github.com/react-toolbox/react-toolbox/issues/915)
+* Fix #930 ([00a0a9f](https://github.com/react-toolbox/react-toolbox/commit/00a0a9f)), closes [#930](https://github.com/react-toolbox/react-toolbox/issues/930)
+* Fix #939 ([941e41d](https://github.com/react-toolbox/react-toolbox/commit/941e41d)), closes [#939](https://github.com/react-toolbox/react-toolbox/issues/939)
+* Fix #941 ([02b38e8](https://github.com/react-toolbox/react-toolbox/commit/02b38e8)), closes [#941](https://github.com/react-toolbox/react-toolbox/issues/941)
+* Fix #953 ([fb52c00](https://github.com/react-toolbox/react-toolbox/commit/fb52c00)), closes [#953](https://github.com/react-toolbox/react-toolbox/issues/953)
+* Fix #983 ([6fb1bcd](https://github.com/react-toolbox/react-toolbox/commit/6fb1bcd)), closes [#983](https://github.com/react-toolbox/react-toolbox/issues/983)
+* Fix Autocomplete mouse selection. ([a1ad40e](https://github.com/react-toolbox/react-toolbox/commit/a1ad40e))
+* Fix code style. ([4cd756d](https://github.com/react-toolbox/react-toolbox/commit/4cd756d))
+* Fix linter issue with trailing comma in time utils ([adf3567](https://github.com/react-toolbox/react-toolbox/commit/adf3567))
+* Fix sunday to be first day of week ([e74e58e](https://github.com/react-toolbox/react-toolbox/commit/e74e58e))
+* Implementing tab pagination per material design specifications. ([d498170](https://github.com/react-toolbox/react-toolbox/commit/d498170))
+* Inject and use FontIcon and minor rendering changes for Tabs ([ad0bcc3](https://github.com/react-toolbox/react-toolbox/commit/ad0bcc3))
+* Latest build ([e40c774](https://github.com/react-toolbox/react-toolbox/commit/e40c774))
+* Pass event to selection. ([5c79ef0](https://github.com/react-toolbox/react-toolbox/commit/5c79ef0))
+* Refactor ([0683e7d](https://github.com/react-toolbox/react-toolbox/commit/0683e7d))
+* Release 1.3.0 ([8b4c9bc](https://github.com/react-toolbox/react-toolbox/commit/8b4c9bc))
+* Remove unneeded timeouts from Tabs ([9a1b7d5](https://github.com/react-toolbox/react-toolbox/commit/9a1b7d5))
+* Removes onQueryChange from props that are passed down to the Input element in Autocomplete ([9d732f4](https://github.com/react-toolbox/react-toolbox/commit/9d732f4))
+* Restrict dependencies to major versions only. ([525c6b1](https://github.com/react-toolbox/react-toolbox/commit/525c6b1))
+* Update deps ([ccf8c35](https://github.com/react-toolbox/react-toolbox/commit/ccf8c35))
+* Update Google URLs ([df81465](https://github.com/react-toolbox/react-toolbox/commit/df81465))
+* Update instructions for running docs locally ([a73fab2](https://github.com/react-toolbox/react-toolbox/commit/a73fab2))
+* Update react-css-themr (~1.6.0) ([9deddd8](https://github.com/react-toolbox/react-toolbox/commit/9deddd8))
+* Use 3 letter day name instead of 2 + . ([40ba89c](https://github.com/react-toolbox/react-toolbox/commit/40ba89c))
+* Use 3 letter name instead of 2 plus . ([a488728](https://github.com/react-toolbox/react-toolbox/commit/a488728))
+* Use 3 letter name instead of 2+. for shortname day ([47c314b](https://github.com/react-toolbox/react-toolbox/commit/47c314b))
+
+
+
+
+## 1.2.5 (2016-11-03)
+
+* Add AppBar example ([ebf523d](https://github.com/react-toolbox/react-toolbox/commit/ebf523d))
+* Release 1.2.5 ([e7b0d46](https://github.com/react-toolbox/react-toolbox/commit/e7b0d46))
+* remove icon from Snackbar ([736eeeb](https://github.com/react-toolbox/react-toolbox/commit/736eeeb))
+* Run build ([03a334c](https://github.com/react-toolbox/react-toolbox/commit/03a334c))
+* Support elements in icon attribute in IconButton ([62f55ca](https://github.com/react-toolbox/react-toolbox/commit/62f55ca))
+* Use AppBar attributes instead of IconButton in example ([2e20479](https://github.com/react-toolbox/react-toolbox/commit/2e20479))
+
+
+
+
+## 1.2.4 (2016-11-01)
+
+* [chore] Added lint-staged along with the config. ([c1e84e4](https://github.com/react-toolbox/react-toolbox/commit/c1e84e4))
+* * Added multiline height, see #811 ([a50c1c4](https://github.com/react-toolbox/react-toolbox/commit/a50c1c4))
+* * Fixed indentation. ([7856f92](https://github.com/react-toolbox/react-toolbox/commit/7856f92))
+* * Fixed trailing comma. ([8d62c8f](https://github.com/react-toolbox/react-toolbox/commit/8d62c8f))
+* Add event to autocomplete onBlur ([b2ad418](https://github.com/react-toolbox/react-toolbox/commit/b2ad418))
+* Add onDismiss for TimePicker ([d59a139](https://github.com/react-toolbox/react-toolbox/commit/d59a139))
+* Add optional cancel handler in dialog dismiss ([c2da4d8](https://github.com/react-toolbox/react-toolbox/commit/c2da4d8))
+* Downgrade normalize ([0063cc3](https://github.com/react-toolbox/react-toolbox/commit/0063cc3))
+* fix handleMultipleChange in autocomplete spec ([690a79a](https://github.com/react-toolbox/react-toolbox/commit/690a79a))
+* Fix red border in required inputs at Firefox fixes #916 ([879d0c2](https://github.com/react-toolbox/react-toolbox/commit/879d0c2)), closes [#916](https://github.com/react-toolbox/react-toolbox/issues/916)
+* Fix Switch white-space ([17c791a](https://github.com/react-toolbox/react-toolbox/commit/17c791a))
+* fix type of theme.required fixing issue #867 ([be81e4d](https://github.com/react-toolbox/react-toolbox/commit/be81e4d))
+* Fixed issue with rendering calendar incorrectly when first day of a month is Sunday ([5cea4e3](https://github.com/react-toolbox/react-toolbox/commit/5cea4e3))
+* fixed layout for IE ([53e016e](https://github.com/react-toolbox/react-toolbox/commit/53e016e))
+* Fixed ListDividerProps ([03feeaf](https://github.com/react-toolbox/react-toolbox/commit/03feeaf))
+* Fixed onTouchMove ([aa890c6](https://github.com/react-toolbox/react-toolbox/commit/aa890c6))
+* Ignore yarn.lock ([fcbce30](https://github.com/react-toolbox/react-toolbox/commit/fcbce30))
+* Implement disabled state for Slider and Progressi Bar ([c5f05fb](https://github.com/react-toolbox/react-toolbox/commit/c5f05fb))
+* Latest build ([be37dcd](https://github.com/react-toolbox/react-toolbox/commit/be37dcd))
+* Latest build ([2e36de4](https://github.com/react-toolbox/react-toolbox/commit/2e36de4))
+* merge ([aec132c](https://github.com/react-toolbox/react-toolbox/commit/aec132c))
+* merge ([3815afc](https://github.com/react-toolbox/react-toolbox/commit/3815afc))
+* merge ([0e5b053](https://github.com/react-toolbox/react-toolbox/commit/0e5b053))
+* Moves the enter check to onKeyDown ([466aac2](https://github.com/react-toolbox/react-toolbox/commit/466aac2))
+* Pass currently active suggestion to onBlur handler ([9931ac4](https://github.com/react-toolbox/react-toolbox/commit/9931ac4))
+* Pass linter ([57320a0](https://github.com/react-toolbox/react-toolbox/commit/57320a0))
+* Propagate disabled to Input in Slider ([b66d10d](https://github.com/react-toolbox/react-toolbox/commit/b66d10d))
+* Proper images links ([dfc9b3e](https://github.com/react-toolbox/react-toolbox/commit/dfc9b3e))
+* Relative css and js for docs ([d722183](https://github.com/react-toolbox/react-toolbox/commit/d722183))
+* Release 1.2.4 ([ccb396f](https://github.com/react-toolbox/react-toolbox/commit/ccb396f))
+* Restrict package versions ([d3e7f1f](https://github.com/react-toolbox/react-toolbox/commit/d3e7f1f))
+* Run build ([d4587d9](https://github.com/react-toolbox/react-toolbox/commit/d4587d9))
+* ts def typo fix and addtions ([3e170c5](https://github.com/react-toolbox/react-toolbox/commit/3e170c5))
+* Update deps adding eslint-plugin-airbnb ([5b00bc3](https://github.com/react-toolbox/react-toolbox/commit/5b00bc3))
+
+
+
+
+## 1.2.3 (2016-10-12)
+
+* Add attributes for ok & cancel labels ([e99a396](https://github.com/react-toolbox/react-toolbox/commit/e99a396)), closes [#805](https://github.com/react-toolbox/react-toolbox/issues/805)
+* Add onScroll prop to Panel ([0df0854](https://github.com/react-toolbox/react-toolbox/commit/0df0854))
+* Added ::after pseudo to CardMedia to fix issue in FF ([42543f4](https://github.com/react-toolbox/react-toolbox/commit/42543f4))
+* Added required to Dropdown ([f912729](https://github.com/react-toolbox/react-toolbox/commit/f912729))
+* Added Ukrainian locale ([c9dc848](https://github.com/react-toolbox/react-toolbox/commit/c9dc848))
+* Fix Overlay event bug ([a88174a](https://github.com/react-toolbox/react-toolbox/commit/a88174a))
+* Fixed typo in dateLocales for russian locale ([c768a72](https://github.com/react-toolbox/react-toolbox/commit/c768a72))
+* Latest build ([0641a0d](https://github.com/react-toolbox/react-toolbox/commit/0641a0d))
+* Release 1.2.3 ([dd1d5d1](https://github.com/react-toolbox/react-toolbox/commit/dd1d5d1))
+* Remove importants ([f8c0c7f](https://github.com/react-toolbox/react-toolbox/commit/f8c0c7f))
+* Updated to show hint on input if lable is empty ([1fa9a0a](https://github.com/react-toolbox/react-toolbox/commit/1fa9a0a))
+
+
+
+
+## 1.2.2 (2016-10-08)
+
+* * example container for pager ([9019239](https://github.com/react-toolbox/react-toolbox/commit/9019239))
+* * fixed ([07d1d51](https://github.com/react-toolbox/react-toolbox/commit/07d1d51))
+* * fixed code linting ([ff7dd4d](https://github.com/react-toolbox/react-toolbox/commit/ff7dd4d))
+* + BrowseButton ([724fafa](https://github.com/react-toolbox/react-toolbox/commit/724fafa))
+* + Pager control, actually it is not defined at matereal design but definitely it is helpful to have. ([183dfe0](https://github.com/react-toolbox/react-toolbox/commit/183dfe0))
+* + pushed file browser button branch ([089c5b6](https://github.com/react-toolbox/react-toolbox/commit/089c5b6))
+* add emphasis to note ([b8516b4](https://github.com/react-toolbox/react-toolbox/commit/b8516b4))
+* add missing styles for lgTablet and smTablet layout breakpoints ([d7abd10](https://github.com/react-toolbox/react-toolbox/commit/d7abd10))
+* Add normalize as a dependency ([a93bcd7](https://github.com/react-toolbox/react-toolbox/commit/a93bcd7))
+* Add onBlur and onFocus props in Autocomplete component ([9edc8bd](https://github.com/react-toolbox/react-toolbox/commit/9edc8bd))
+* Add table header model details to docs for table ([4e93e13](https://github.com/react-toolbox/react-toolbox/commit/4e93e13))
+* Added row click support ([d374cc5](https://github.com/react-toolbox/react-toolbox/commit/d374cc5))
+* adjust scss after testing ([6940013](https://github.com/react-toolbox/react-toolbox/commit/6940013))
+* Apply Checkbox style property to internal .check ([2ce1d4c](https://github.com/react-toolbox/react-toolbox/commit/2ce1d4c)), closes [#791](https://github.com/react-toolbox/react-toolbox/issues/791)
+* Changes double quotes to single quotes ([02cd7b5](https://github.com/react-toolbox/react-toolbox/commit/02cd7b5))
+* Correct docs for CardTitle component ([df97407](https://github.com/react-toolbox/react-toolbox/commit/df97407))
+* Fix #787 ([390e769](https://github.com/react-toolbox/react-toolbox/commit/390e769)), closes [#787](https://github.com/react-toolbox/react-toolbox/issues/787)
+* Fix #813 ([e4339de](https://github.com/react-toolbox/react-toolbox/commit/e4339de)), closes [#813](https://github.com/react-toolbox/react-toolbox/issues/813)
+* Fix #814 ([f4f5ae8](https://github.com/react-toolbox/react-toolbox/commit/f4f5ae8)), closes [#814](https://github.com/react-toolbox/react-toolbox/issues/814)
+* Fix #816 ([a59395e](https://github.com/react-toolbox/react-toolbox/commit/a59395e)), closes [#816](https://github.com/react-toolbox/react-toolbox/issues/816)
+* Fix #819 ([9d3bba3](https://github.com/react-toolbox/react-toolbox/commit/9d3bba3)), closes [#819](https://github.com/react-toolbox/react-toolbox/issues/819)
+* Fix #841 ([feaa28e](https://github.com/react-toolbox/react-toolbox/commit/feaa28e)), closes [#841](https://github.com/react-toolbox/react-toolbox/issues/841)
+* Fix #845 ([a1f10a8](https://github.com/react-toolbox/react-toolbox/commit/a1f10a8)), closes [#845](https://github.com/react-toolbox/react-toolbox/issues/845)
+* fix active year style in date picker. ([405c23e](https://github.com/react-toolbox/react-toolbox/commit/405c23e))
+* Fix import warning using npm types and typescript ([5795b41](https://github.com/react-toolbox/react-toolbox/commit/5795b41))
+* Fix linter errors ([8c21e30](https://github.com/react-toolbox/react-toolbox/commit/8c21e30))
+* Fix linter errors ([5611365](https://github.com/react-toolbox/react-toolbox/commit/5611365))
+* Fix multiple default exports in Datepicker ([b67f4c7](https://github.com/react-toolbox/react-toolbox/commit/b67f4c7))
+* Fix small typo đ ([c7ef9ea](https://github.com/react-toolbox/react-toolbox/commit/c7ef9ea))
+* Fixed Tooltip TypeError when quickly hovering between multiple tooltips ([ca1de73](https://github.com/react-toolbox/react-toolbox/commit/ca1de73))
+* Fixes #794 ([70b0a3f](https://github.com/react-toolbox/react-toolbox/commit/70b0a3f)), closes [#794](https://github.com/react-toolbox/react-toolbox/issues/794)
+* Fixes #797 ([3113618](https://github.com/react-toolbox/react-toolbox/commit/3113618)), closes [#797](https://github.com/react-toolbox/react-toolbox/issues/797)
+* Fixing issue where closing an overlay on top of another overlay re-enables document body scrolling u ([1c259ff](https://github.com/react-toolbox/react-toolbox/commit/1c259ff))
+* Latest build ([f34f378](https://github.com/react-toolbox/react-toolbox/commit/f34f378))
+* Latest build ([991ab80](https://github.com/react-toolbox/react-toolbox/commit/991ab80))
+* Latest build ([edbfd30](https://github.com/react-toolbox/react-toolbox/commit/edbfd30))
+* Latest build ([0d7d78f](https://github.com/react-toolbox/react-toolbox/commit/0d7d78f))
+* Latest build ([dea1414](https://github.com/react-toolbox/react-toolbox/commit/dea1414))
+* Makes sure that overlay: hidden is removed from the body tag when an overlay is closed in IE11. ([bcb091b](https://github.com/react-toolbox/react-toolbox/commit/bcb091b))
+* minor style tweak in spec. ([3c6273e](https://github.com/react-toolbox/react-toolbox/commit/3c6273e))
+* navbar hide on scroll behavior. ([4d5f4cf](https://github.com/react-toolbox/react-toolbox/commit/4d5f4cf))
+* Only add scroll AppBar listener if hideable and remove ReactDOM ([7dfd3c5](https://github.com/react-toolbox/react-toolbox/commit/7dfd3c5))
+* Pass down theme from Card title to nested Avatar ([f077403](https://github.com/react-toolbox/react-toolbox/commit/f077403))
+* Re-apply changes ([0fb83bf](https://github.com/react-toolbox/react-toolbox/commit/0fb83bf))
+* Release 1.2.2 ([e90a188](https://github.com/react-toolbox/react-toolbox/commit/e90a188))
+* Removed duplicate export from Datepicker ([7c39493](https://github.com/react-toolbox/react-toolbox/commit/7c39493))
+* Removed semvar lock from travis ci node versions ([8b51938](https://github.com/react-toolbox/react-toolbox/commit/8b51938))
+* Replace onMouseDown with onClick in DatePicker and TimePicker ([ac8b6d6](https://github.com/react-toolbox/react-toolbox/commit/ac8b6d6))
+* Russian locale ([b8d59f7](https://github.com/react-toolbox/react-toolbox/commit/b8d59f7))
+* Small style change ([e549e25](https://github.com/react-toolbox/react-toolbox/commit/e549e25))
+* Use guard clause instead of conditional ([d01ff6d](https://github.com/react-toolbox/react-toolbox/commit/d01ff6d))
+* Bugfix: Typescript definitions can now be copied over on Windows ([ee6f0d7](https://github.com/react-toolbox/react-toolbox/commit/ee6f0d7))
+* appbar: fonticon -> iconbutton ([67d4628](https://github.com/react-toolbox/react-toolbox/commit/67d4628))
+
+
+
+
+## 1.2.1 (2016-09-06)
+
+* Change active tab display to flex ([199befe](https://github.com/react-toolbox/react-toolbox/commit/199befe))
+* Fix #768 ([48c04c0](https://github.com/react-toolbox/react-toolbox/commit/48c04c0)), closes [#768](https://github.com/react-toolbox/react-toolbox/issues/768)
+* Fix #770 ([bbee9ef](https://github.com/react-toolbox/react-toolbox/commit/bbee9ef)), closes [#770](https://github.com/react-toolbox/react-toolbox/issues/770)
+* Release 1.2.1 ([3b5c6bd](https://github.com/react-toolbox/react-toolbox/commit/3b5c6bd))
+
+
+
+
+# 1.2.0 (2016-09-03)
+
+* đ ([ace21d9](https://github.com/react-toolbox/react-toolbox/commit/ace21d9))
+* Add app_bar title, leftIcon and rightIcon props. ([d4c0c4d](https://github.com/react-toolbox/react-toolbox/commit/d4c0c4d))
+* Add bumped changelog support ([7468d31](https://github.com/react-toolbox/react-toolbox/commit/7468d31))
+* add fullscreen dialog. ([179323c](https://github.com/react-toolbox/react-toolbox/commit/179323c))
+* Add onClick propType ([f760447](https://github.com/react-toolbox/react-toolbox/commit/f760447))
+* Add onTouchStart to ListItem ([6f7a543](https://github.com/react-toolbox/react-toolbox/commit/6f7a543))
+* add tab icons. ([5c2406d](https://github.com/react-toolbox/react-toolbox/commit/5c2406d))
+* Adding hideMode to Tabs ([8e0b64f](https://github.com/react-toolbox/react-toolbox/commit/8e0b64f)), closes [#709](https://github.com/react-toolbox/react-toolbox/issues/709)
+* Ajust pointer ([6ddaf9a](https://github.com/react-toolbox/react-toolbox/commit/6ddaf9a))
+* Better tabs with icons ([6a488b3](https://github.com/react-toolbox/react-toolbox/commit/6a488b3))
+* build new version ([d48799b](https://github.com/react-toolbox/react-toolbox/commit/d48799b))
+* Clone RadioButton children in RadioGroup ([c71f580](https://github.com/react-toolbox/react-toolbox/commit/c71f580))
+* Commit build ([e2d7517](https://github.com/react-toolbox/react-toolbox/commit/e2d7517))
+* DI change in AppBar ([fcea0e4](https://github.com/react-toolbox/react-toolbox/commit/fcea0e4))
+* Explicit deps ([49024c8](https://github.com/react-toolbox/react-toolbox/commit/49024c8))
+* Fix #630 ([ccc1699](https://github.com/react-toolbox/react-toolbox/commit/ccc1699)), closes [#630](https://github.com/react-toolbox/react-toolbox/issues/630)
+* Fix #697 - Autocomplete KeyUp enter fix ([a61aa5c](https://github.com/react-toolbox/react-toolbox/commit/a61aa5c)), closes [#697](https://github.com/react-toolbox/react-toolbox/issues/697)
+* Fix #711 ([abf91d3](https://github.com/react-toolbox/react-toolbox/commit/abf91d3)), closes [#711](https://github.com/react-toolbox/react-toolbox/issues/711)
+* Fix #713 ([b528ab1](https://github.com/react-toolbox/react-toolbox/commit/b528ab1)), closes [#713](https://github.com/react-toolbox/react-toolbox/issues/713)
+* Fix #733 ([ae5865f](https://github.com/react-toolbox/react-toolbox/commit/ae5865f)), closes [#733](https://github.com/react-toolbox/react-toolbox/issues/733)
+* Fix #755 ([d86e4a5](https://github.com/react-toolbox/react-toolbox/commit/d86e4a5)), closes [#755](https://github.com/react-toolbox/react-toolbox/issues/755)
+* Fix linting issues ([80a8a9e](https://github.com/react-toolbox/react-toolbox/commit/80a8a9e))
+* Fix ripple ([006559e](https://github.com/react-toolbox/react-toolbox/commit/006559e))
+* Fix table border ([64a859e](https://github.com/react-toolbox/react-toolbox/commit/64a859e))
+* Fixed errors for Typescript 2.0.2 ([34313b8](https://github.com/react-toolbox/react-toolbox/commit/34313b8))
+* Fixed linting errors. ([8dedcfc](https://github.com/react-toolbox/react-toolbox/commit/8dedcfc))
+* Import React namespace, fix problem with @types ([def8643](https://github.com/react-toolbox/react-toolbox/commit/def8643))
+* Latest build ([cd72ffb](https://github.com/react-toolbox/react-toolbox/commit/cd72ffb))
+* Make Table multi-selectable again ([dcd53a4](https://github.com/react-toolbox/react-toolbox/commit/dcd53a4))
+* Passes IconMenu's theme to the inner Menu. ([9d7e3db](https://github.com/react-toolbox/react-toolbox/commit/9d7e3db))
+* Release 1.2.0 ([9bed502](https://github.com/react-toolbox/react-toolbox/commit/9bed502))
+* Remove overly strict children propType validation. fixes #641 ([e2ed42b](https://github.com/react-toolbox/react-toolbox/commit/e2ed42b)), closes [#641](https://github.com/react-toolbox/react-toolbox/issues/641)
+* Remove unnecessary spread ([9312522](https://github.com/react-toolbox/react-toolbox/commit/9312522))
+* Replace onMouseDown wth onClick in Dropdown ([83011cb](https://github.com/react-toolbox/react-toolbox/commit/83011cb))
+* Replace react-addons-update with immutability-helper as Facebook are deprecating their addon ([29b04f2](https://github.com/react-toolbox/react-toolbox/commit/29b04f2))
+* Support for fixed & inverse color tabs. ([9bf1c8e](https://github.com/react-toolbox/react-toolbox/commit/9bf1c8e))
+* Theme is now passed on to tab subcomponents ([b220c70](https://github.com/react-toolbox/react-toolbox/commit/b220c70))
+* Update index.d.ts ([f37626a](https://github.com/react-toolbox/react-toolbox/commit/f37626a))
+* Update readme.md ([0ea3849](https://github.com/react-toolbox/react-toolbox/commit/0ea3849))
+* Update README.md ([b653700](https://github.com/react-toolbox/react-toolbox/commit/b653700))
+* use Event.currentTarget in Calendar.changeViewMonth ([8a91ab3](https://github.com/react-toolbox/react-toolbox/commit/8a91ab3))
+
+
+
## 1.1.2 (2016-08-11)
* 1.1.2 release ([0dcec60](https://github.com/react-toolbox/react-toolbox/commit/0dcec60))
+* Added ability to navigate calendar with keyboard ([ad2a8e8](https://github.com/react-toolbox/react-toolbox/commit/ad2a8e8))
* Added missing modules ([afc2124](https://github.com/react-toolbox/react-toolbox/commit/afc2124))
* Added Touch events to the base props ([30f1623](https://github.com/react-toolbox/react-toolbox/commit/30f1623))
* fix for target missing id ([b557561](https://github.com/react-toolbox/react-toolbox/commit/b557561))
diff --git a/README.md b/README.md
index bfb6c699f..55d0d8c55 100644
--- a/README.md
+++ b/README.md
@@ -1,8 +1,11 @@
-#
+#
-[](https://www.npmjs.com/package/react-toolbox) [](https://travis-ci.org/react-toolbox/react-toolbox) [](https://www.npmjs.org/package/react-toolbox) [](https://discord.gg/0ZcbPKXt5bW9FLzM) [](https://paypal.me/javivelasco)
+[](https://www.npmjs.com/package/react-toolbox) [](https://travis-ci.org/react-toolbox/react-toolbox) [](https://www.npmjs.org/package/react-toolbox) [](https://paypal.me/javivelasco) [](#backers)
+[](#sponsors)
-React Toolbox is a set of [React](http://facebook.github.io/react/) components that implement [Google's Material Design specification](https://www.google.com/design/spec/material-design/introduction.html). It's powered by [CSS Modules](https://github.com/css-modules/css-modules) and harmoniously integrates with your [webpack](http://webpack.github.io/) workflow, although you can use any other module bundler. You can take a tour through our documentation website and try the components live!
+React Toolbox is a set of [React](http://facebook.github.io/react/) components that implement [Google's Material Design specification](https://material.google.com/). It's powered by [CSS Modules](https://github.com/css-modules/css-modules) and harmoniously integrates with your [webpack](http://webpack.github.io/) workflow, although you can use any other module bundler. You can take a tour through our documentation website and try the components live!
+
+**Note:** â ïž This source code refers to the [future version](https://github.com/react-toolbox/react-toolbox/blob/dev/ROADMAP.md). To check the source for `1.x` go to `master` branch. There is a [migration guide](https://github.com/react-toolbox/react-toolbox/wiki/Migrating-from-version-1.3-to-2.0) so you can start working with 2.0-beta.x now!
## Installation
@@ -14,11 +17,76 @@ $ npm install --save react-toolbox
## Prerequisites
-React Toolbox uses [CSS Modules](https://github.com/css-modules/css-modules) by default to import stylesheets written in [SASS](http://sass-lang.com/). In case you want to import the components already bundled with CSS, your module bundler should be able to require these SASS modules.
+React Toolbox uses [CSS Modules](https://github.com/css-modules/css-modules) by default to import stylesheets written using [PostCSS](https://github.com/postcss/postcss) & [postcss-preset-env](https://preset-env.cssdb.org/) features. In case you want to import the components already bundled with CSS, your module bundler should be able to require these PostCSS modules.
+
+Although we recommend [webpack](https://webpack.github.io/), you are free to use whatever module bundler you want as long as it can compile and require PostCSS files located in your `node_modules`. If you are experiencing require errors, make sure your configuration satisfies this requirement.
+
+Of course this is a set of React components so you should be familiar with [React](https://facebook.github.io/react/). If want to customize your components via themes, you may want to take a look to [react-css-themr](https://github.com/javivelasco/react-css-themr) which is used by React Toolbox to make components easily themeable.
-Although we recommend [webpack](https://webpack.github.io/), you are free to use whatever module bundler you want as long as it can compile and require SASS files located in your `node_modules`. If you are experiencing require errors, make sure your configuration satisfies this requirement.
+### Usage in Create React App Projects
-Of course this is a set of React components so you should be familiar with [React](https://facebook.github.io/react/). If want to customize your components via themes, you may want to take a look to [react-css-themr](https://github.com/javivelasco/react-css-themr) which is used by React Toolbox to make component easily themeable.
+[Create React App](https://github.com/facebookincubator/create-react-app) does not allow to change the default configuration, so you need an additional build step to configure `react-toolbox` in its project.
+
+Follow [these instructions](https://github.com/react-toolbox/react-toolbox-themr) to add `react-toolbox` to a project created with Create React App.
+
+### Usage in Webpack Projects (*Not* Create React App)
+
+```bash
+npm install postcss-loader --save-dev
+npm install postcss postcss-preset-env postcss-calc --save
+```
+
+Configure webpack 1.x loader for .css files to use postcss:
+```js
+ {
+ test: /\.css$/,
+ loaders: [
+ 'style-loader',
+ 'css-loader?sourceMap&modules&importLoaders=1&localIdentName=[name]__[local]___[hash:base64:5]!postcss?sourceMap&sourceComments',
+ ],
+ },
+```
+Declare plugins to be used by postcss (as part of webpack's config object):
+```js
+ // webpack.config.js
+ postcss: () => {
+ return [
+ /* eslint-disable global-require */
+ require('postcss-preset-env')({
+ stage: 0, // required to get all features that were from cssnext without enabling them one by one
+ features: {
+ 'custom-properties': {
+ preserve: false, // required to output values instead of variables
+ },
+ 'color-mod-function': true, // required to use color-mod()
+ }
+ }),
+ require('postcss-calc'), // required as postcss-preset-env doesn't have a reduce calc() funtion that cssnext did
+ /* eslint-enable global-require */
+ ];
+ },
+```
+
+Configure webpack 2.x or 3.x loader for .css files to use postcss:
+```js
+ // webpack.config.js
+ {
+ test: /\.css$/,
+ use: [
+ "style-loader",
+ {
+ loader: "css-loader",
+ options: {
+ modules: true, // default is false
+ sourceMap: true,
+ importLoaders: 1,
+ localIdentName: "[name]--[local]--[hash:base64:8]"
+ }
+ },
+ "postcss-loader"
+ ]
+ }
+```
## Basic usage
@@ -35,7 +103,14 @@ ReactDOM.render(
);
```
-Take into account that any required style will be included in the final CSS so your final would include `Button` styles in this case. It's more convenient to import components this way (or with raw imports) because if you require from the project root, every stylesheet of React Toolbox will be included, even if you don't use it.
+>**Note:** if you use it with Create React App, you need to make this additional change:
+>
+>```diff
+>- import {Button} from 'react-toolbox/lib/button';
+>+ import Button from 'react-toolbox/lib/button/Button';
+>```
+
+Take into account that any required style will be included in the final CSS so your final CSS would include `Button` styles in this case. It's more efficient to import components this way (`from 'react-toolbox/lib/button'`) (or with raw imports) because if you require from the project root (i.e. `from 'react-toolbox'`), every stylesheet of React Toolbox will be included, even if you don't use it.
## Importing components
@@ -44,17 +119,17 @@ First let's take a look on how the components are structured in the project. The
```
|- /app_bar
|---- AppBar.js
- |---- _config.scss
+ |---- config.css
|---- index.js
|---- readme.md
- |---- theme.scss
+ |---- theme.css
```
-As you can see in the previous block, each folder includes: a Javascript file for each component/subcomponent; a README with documentation, an index Javascript file that imports and injects styles and dependencies for you, a default theme SASS stylesheet and a configuration partial with configuration variables. Depending on whether you want the styles to be directly bundled or not, you can import components in **two** different ways.
+As you can see in the previous block, each folder includes: a Javascript file for each component/subcomponent; a README with documentation, an index Javascript file that imports and injects styles and dependencies for you, a default theme PostCSS/preset-env stylesheet and a config.css with configuration variables (CSS Custom Properties). Depending on whether you want the styles to be directly bundled or not, you can import components in **two** different ways.
### Bundled component
-You import from the index file so the imported component comes with all dependencies and themes already required and injected for you. This means that the CSS for each dependency will be bundled in your final CSS automatically and the component markup includes the classnames to be styled. For example:
+If you import from the index file, the imported component comes with all dependencies and themes already required and injected for you. This means that the CSS for each dependency will be bundled in your final CSS automatically and the component markup includes the classnames to be styled. For example:
```js
import { AppBar } from 'react-toolbox/lib/app_bar';
@@ -62,7 +137,7 @@ import { AppBar } from 'react-toolbox/lib/app_bar';
### Raw component
-You import from the component definition so the imported component is bundled with its dependencies but it does not require any style for you. This means that no CSS will be bundled and the component markup will **not** include any classname. It's your responsibility to provide a theme to the component to be properly style and you can do it via properties or context. For example:
+If you import from the component definition, the imported component is bundled with its dependencies, but it does not include any styles. This means no CSS will be bundled, and the component markup will **not** include any classname. It's your responsibility to provide a theme to the component to be properly styled. You can do so via properties or context. For example:
```js
import { AppBar } from 'react-toolbox/lib/app_bar/AppBar.js';
@@ -70,14 +145,14 @@ import { AppBar } from 'react-toolbox/lib/app_bar/AppBar.js';
## Customizing components
-Every component accepts a `theme` property intended to provide a [CSS Module import object](https://github.com/css-modules/css-modules) that will be used by the component to assign local classnames to its DOM nodes. Therefore, each one implements a documented **classname API** so if you want to customize a component, you just need to provide a theme object with the appropriated classname mapping.
+Every component accepts a `theme` property intended to provide a [CSS Module import object](https://github.com/css-modules/css-modules) that will be used by the component to assign local classnames to its DOM nodes. Therefore, each one implements a documented **classname API**. So if you want to customize a component, you just need to provide a theme object with the appropriate classname mapping.
-If the component has already a theme injected, the properties you pass will be merged with the injected. In this way, you can **add** classnames to the nodes of a specific component and use them to add or to override styles. For example, if you want to customize the `AppBar` to be purple:
+If the component already has a theme injected, the properties you pass will be merged with the injected theme. In this way, you can **add** classnames to the nodes of a specific component and use them to add or to override styles. For example, if you want to customize the `AppBar` to be purple:
```js
import React from 'react';
import { AppBar } from 'react-toolbox/lib/app_bar';
-import theme from './PurpleAppBar.scss';
+import theme from './PurpleAppBar.css';
const PurpleAppBar = (props) => (
@@ -87,99 +162,131 @@ export default PurpleAppBar;
```
-```scss
+```css
.appBar {
background-color: #800080;
}
```
-In this case we are **adding** styles to an `AppBar` component that already has some styles injected. It works because the component background by default has the same priority as the one we added. There will be cases where the original rule is more restrictive. For those cases you would need to boost priority using the same restrictions as in the original stylesheet. Feel free to take a look into the original themes or just check the selectors you want to override in DevTools.
+In this case we are **adding** styles to a specific instance of an `AppBar` component that already has its default styles injected. It works because the component background by default has the same priority as the one we added. There will be cases where the original rule is more restrictive. For those cases you would need to boost priority using the same restrictions as in the original stylesheet. Feel free to take a look into the default theme.css files or just check the selectors you want to override in DevTools.
-If the component has no styles injected, you should provide a theme object implementing the full API. You are free to require the CSS Module you want but take into account that every classname is there for a reason. You can either provide a theme via prop or via context as we will see later.
+If the component has no styles injected, you should provide a theme object implementing the full API. You are free to require the CSS Module you want but take into account that every classname is there for a reason. You can either provide a theme via prop or via context as described in the next section.
-## Theming
+### Customizing all instances of a component type
-You can afford theming in multiple ways. First of all, you have to understand that React Toolbox stylesheets are written in SASS and configured using the **config** files we saw earlier. Also you may want to check [colors](https://github.com/react-toolbox/react-toolbox/blob/dev/components/_colors.scss) and [globals](https://github.com/react-toolbox/react-toolbox/blob/dev/components/_globals.scss) files to get an overview on the **variables** you have to override to get the results you want.
+Install [react-css-themr](https://github.com/javivelasco/react-css-themr) with `npm install react-css-themr --save`
-In most scenarios you can get more customized themes by overriding those variables and compiling stylesheets with them. For example, you can create a `_theme.scss` SASS file:
+Create a CSS Module theme style file for each component type, for example for `Button`:
-```scss
-@import "http://github.com/~react-toolbox/lib/colors";
+```css
+# /css/button.css
-$color-primary: $palette-blue-500;
-$color-primary-dark: $palette-blue-700;
+.button {
+ text-transform: uppercase;
+}
```
-This file should be prepended to each stylesheet compilation which can be achieved in multiple ways.
+Create a theme file that imports each component's custom theme style under the special theme key listed in that widgets's documentation, i.e.:
-### Using SASS Loader
+```js
+# theme.js
-If you are using [Webpack](http://webpack.github.io/) as module bundler, you are probably using [sass-loader](https://github.com/jtangelder/sass-loader) as well. What we want to do is to prepend to each SASS file compilation a bunch of variables to override and this can be done with the `data` option. For example:
+import RTButton from './css/button.css';
+import RTDatePicker from './css/datepicker.css';
+
+export default {
+ RTButton, RTDatePicker,
+};
+```
+
+Wrap your component tree with ThemeProvider at the desired level in your component hierarchy. You can maintain different themes, each importing differently styled css files \(i.e. `import RTButton from './css/adminAreaButton.css'`\) and can provide each one at different points in the tree.
```js
-sassLoader: {
- data: '@import "' + path.resolve(__dirname, 'theme/_theme.scss') + '";'
+import React from 'react';
+import { ThemeProvider } from 'react-css-themr';
+import theme from './theme';
+
+class App extends React.Component {
+ render() {
+ return (
+
+
+ ...
+
+
+ );
+ }
}
+export default App;
```
-In this case we are prepending the theme import to each SASS compilation so the primary color will be changed in every single stylesheet. If you are not using webpack maybe your loader still has a similar option, otherwise don't worry, there are solutions.
-
-### Using SASS imports and props
+## Theming (configuration variables)
-Remember that you can import components without styles and provide those styles using the theme property. For example, a theme for a button customized with the previous theme file would be like:
+You can apply theming in multiple ways. First of all, you have to understand that React Toolbox stylesheets are written using PostCSS with postcss-preset-env features and use CSS Custom Properties from the **config** files we saw earlier. In addition, there are some global CSS Properties imported by each component: [colors](https://github.com/react-toolbox/react-toolbox/blob/dev/components/colors.module.css) and [variables](https://github.com/react-toolbox/react-toolbox/blob/dev/components/variables.module.css). You can override both the global and component-specific **variables** to get the results you want using one of the methods below.
-```scss
-@import "http://github.com/theme.scss";
-@import "http://github.com/~react-toolbox/lib/button/theme";
-```
+### Settings configuration variables in JavaScript
-Then, when you use a button you can inject the appropriated theme:
+You can override both the global and component-specific CSS Custom Properties at build-time by supplying an object with these variable names and your desired values to the PostCSS `custom-properties` plugin. i.e. if using [postcss-preset-env](https://github.com/csstools/postcss-preset-env) in webpack:
```js
-import { Button } from 'react-toolbox/lib/button/Button';
-import buttonTheme from './theme/button.scss';
-
-const ThemedButton = (props) => (
-
-);
-
-export default ThemedButton;
+// This can also be stored in a separate file:
+const reactToolboxVariables = {
+ 'color-text': '#444548',
+ /* Note that you can use global colors and variables */
+ 'color-primary': 'var(--palette-blue-500)',
+ 'button-height': '30px',
+};
+
+// webpack's config object: (webpack.config.js)
+const config = {
+...
+ postcss: () => {
+ return [
+ /* eslint-disable global-require */
+ require('postcss-preset-env')({
+ stage: 0, // required to get all features that were from cssnext without enabling them one by one
+ features: {
+ 'custom-properties': {
+ preserve: false, // required to output values instead of variables
+ importFrom: reactToolboxVariables, // see postcss-preset-env for config options
+ },
+ 'color-mod-function': true, // required to use color-mod()
+ }
+ }),
+ require('postcss-calc'), // required as postcss-preset-env doesn't have a reduce calc() funtion that cssnext did
+ /* optional - see next section */
+ require('postcss-modules-values'),
+ /* eslint-enable global-require */
+ ];
+ },
+}
```
-With this technique you have to create wrappers for every component and this is not cool at all... but don't worry, we can provide the theme via context to avoid this.
+### Settings configuration variables using CSS Module Values
-### Using SASS imports and context
+Instead of using a JavaScript object for variables, you can use [CSS Module Values](https://github.com/css-modules/css-modules/blob/master/docs/values-variables.md) (`npm install postcss-modules-values --save`) and the [modules-values-extract](https://github.com/alexhisen/modules-values-extract) utility to declare these variables in component-specific theme `.css` files, where you would typically store additional style overrides.
-This is a good moment to check out [react-css-themr](http://github.com/javivelasco/react-css-themr) if you still didn't. Every component in React Toolbox has a key assigned that can be used to provide a default CSS Module. You can create a theme like:
+CSS Module Values also offer the advantage that importing a css file with @value declarations makes these values properties of the imported style object, i.e.:
-```js
-export default {
- RTRipple: require('./ripple.scss'),
- RTButton: require('./button.scss')
-}
-```
+```css
+# variables.css
-Check for each component what key uses. Then, when you have a theme object fully imported and customized for each component your application uses, you can use it like we list here:
+@value buttonPrimaryBackgroundColor: #9c3990;
+```
```js
-import React from 'react';
-import { render } from 'react-dom';
-import { ThemeProvider } from 'react-css-themr';
-import theme from './theme/theme.js';
-import App from './App.js';
+import styleVariables from './css/variables.css';
-render(
-
-
-
-, document.getElementById('app'))
+styleVariables.buttonPrimaryBackgroundColor
```
-A couple of things here. First you need to use raw components to get this styles properly applied. Second, you have to add dependency themes by yourself. For example, the `Button` requires `Ripple` so you have to provide styles for both of them.
+In [this demo project](https://github.com/alexhisen/mobx-forms-demo), modules-values-extract utility is used to extract all @values with dashes in their name from all css files in the `/css` folder and to feed them to customProperties in [webpack](https://github.com/alexhisen/mobx-forms-demo/blob/master/webpack.config.js). In the demo project, variables that are not specific to a particular component are in [variables.css](https://github.com/alexhisen/mobx-forms-demo/blob/master/src/css/variables.css) and button-specific variables are in [button.css](https://github.com/alexhisen/mobx-forms-demo/blob/master/src/css/button.css). Note that button.css also imports certain values from variables.css just to demonstrate this capability \(the import can also be used in a @value declaration\) and it uses CSS overrides instead of color variables that exist in the React-Toolbox Button component to show an alternative method if the variables are not sufficient.
+
+> **IMPORTANT: Changes to the module values do not take effect immediately with Webpack Hot-Module-Reload - webpack / webpack-dev-server must be restarted!**
## Roboto Font and Material Design Icons
-React Toolbox assumes that you are importing [Roboto Font](https://fonts.google.com/specimen/Roboto) and [Material Design Icons](https://www.google.com/design/icons/).
+React Toolbox assumes that you are importing [Roboto Font](https://fonts.google.com/specimen/Roboto) and [Material Design Icons](https://material.io/icons/).
In order to import the fonts for you, we'd need to include them in the CSS which is considered a bad practice. If you are not including them in your app, go to the linked sites and follow the instructions.
@@ -189,7 +296,9 @@ The only requirement for SSR is to be able to require ES6 and CSS Modules in the
## Examples
-For now we have a [repository example](https://github.com/react-toolbox/react-toolbox-example) demonstrating configuration and some basic customization. For now it's not using SSR rendering but it shouldn't be difficult to implement an example so it will come soon. Feel free to PR your example project or to add some use cases to the repository.
+For now we have a [repository example](https://github.com/react-toolbox/react-toolbox-example) demonstrating configuration and some basic customization. For now it's not using SSR rendering but it shouldn't be difficult to implement an example so it will come soon. Feel free to PR your example project or to add some use cases to the repository:
+
+Another 2.x demo project is https://github.com/alexhisen/mobx-forms-demo
## TypeScript
@@ -207,6 +316,7 @@ To start the documentation site locally, you'll need to install the dependencies
```
$ git clone https://github.com/react-toolbox/react-toolbox.git
+$ cd react-toolbox/
$ npm install
$ cd docs/
$ npm install
@@ -215,6 +325,85 @@ $ npm start
Local documentation will then be available at `http://localhost:8081/`.
+## Extensions
+
+We don't officially support components that are not covered by [Google Material Design](https://www.google.com/design/spec/material-design/introduction.html). If you want to implement some complementary component feel free to open a PR adding your a link in this section:
+
+[on github: react-toolbox-additions](https://github.com/MaximKomlev/react-toolbox-additions) and [on npm: react-toolbox-additions](https://www.npmjs.com/package/react-toolbox-additions).
+
+Form generation and validation using React-Toolbox form widgets - [mobx-schema-form](https://github.com/alexhisen/mobx-schema-form)
+
+## Support
+
+### Backers
+Support us with a monthly donation and help us continue our activities. [[Become a backer](https://opencollective.com/react-toolbox#backer)]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+### Sponsors
+Become a sponsor and get your logo on our README on Github with a link to your site. [[Become a sponsor](https://opencollective.com/react-toolbox#sponsor)]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
## License
This project is licensed under the terms of the [MIT license](https://github.com/react-toolbox/react-toolbox/blob/master/LICENSE).
diff --git a/ROADMAP.md b/ROADMAP.md
new file mode 100644
index 000000000..2b1ff11af
--- /dev/null
+++ b/ROADMAP.md
@@ -0,0 +1,75 @@
+This document defines a manifesto and the main Roadmap đ” ideas for [React Toolbox](www.react-toolbox.io). It's not a fixed document and of course it's open to change. You can leave your feedback in [this gist](https://gist.github.com/javivelasco/259d2087c2a8c3e8f2c5c720d1fd3f2e) or you can also do it [through an issue](https://github.com/react-toolbox/react-toolbox/issues/new).
+
+## The Manifesto
+
+React Toolbox is a project intended to ship the *best* [Material Design](https://material.io/guidelines/) components for React. It is focused on the following principles:
+
+- **Quality over quantity**: we rather develop a bunch components close to perfection than a lot of unmaintainable buggy components.
+- **Pixel perfection**: every component should be nailed to the spec. We will pay attention to every single detail at both visual and interaction levels.
+- **Flexibility**: components should be as decoupled as possible from opinionated styling libraries/tools. They should be easy to theme and customize.
+- **Easy adoption**: the project should be integrated as easy as technology permits. The adoption has to be unobtrusive in a consumer project avoiding boilerplate.
+- **Exhaustive testing**: every component should be intensively tested, keeping priority of testing tasks and code coverage on top.
+
+## Where is this project going?
+
+The current **stable version** is `1.x.x`. There will be *no active development* on this apart from accepting and releasing patches and small new features. It works with [SASS](http://sass-lang.com/) and [CSS Modules](https://github.com/css-modules/css-modules) and it can be integrated by enabling some boilerplate configuration in [Webpack](https://webpack.github.io/). The version **under active development** is released as `2.0.0-beta.x` from the `dev` branch. It will be officially released as an stable version as the following objectives are covered:
+
+1. **Decouple styles**: although we consider CSS Modules + PostCSS a good approach for styling, it's far from being perfect. React Toolbox should be open to other alternatives such as [styled-components](https://styled-components.com/) and [other](https://github.com/rtsao/styletron) `css-in-js` [libraries](http://fela.js.org/) that vanish any need for configuration. To achieve this, every component should be refactored to an approach independent from the styling solution.
+2. **Reduce selector priority**: we use [react-css-themr](https://github.com/javivelasco/react-css-themr) to customize components using objects implementing a shape of nodes classNames. This strategy works good but it implies reducing the css selector priority to the minimum. Most components have selector priority too high and they need to be refactored in order to make customization as easier. This can be done with 1.
+3. **Simplify integration**: the project should be easy to adopt in any stack. To achieve this, we recently released [react-toolbox-themr](https://github.com/react-toolbox/react-toolbox-themr) to generate custom CSS builds. We should test and improve its API. Also, being open to `css-in-js` will help with this: setup would no longer be needed.
+4. **Refactor problematic components**: there are some components like `Autocomplete`, `Table` and `Dropdown` that are not flexible at all. They are based on collections passed by props and this is a huge caveat for most applications. Those components should be completely re-written. Some of them like `Layout` and `Table` are already done, but there is still a lot to do.
+5. **Extract state**: `Autocomplete` or `Dropdown` are doing too much internally with state and this is a source of bugs. Every component should be modeled as stateless and optionally wrapped with [recompose](https://github.com/acdlite/recompose) (or something similar) to encapsulate and provide state. This make components more flexible and easy to test.
+6. **Improve test coverage**: the project was initially set with a test suite based in [mocha](https://mochajs.org/). We find [jest](https://facebook.github.io/jest/) way more appropriated thanks to features like snapshot testing and its easy setup. We will migrate the test suite to Jest and write tests for every single component following the [boy scout rule](http://programmer.97things.oreilly.com/wiki/index.php/The_Boy_Scout_Rule).
+7. **Improve documentation and playground**: there are some issues with the current documentation: too many clicks to load a component, no `require` implementation in the playground, no way to try out styling with css-modules... Also there are missing tutorials on customization and configuration and no structure into different pages. Documentation will be redesigned and filled with more pages that will be accesible through the repository.
+
+All of this work to get an stable next version doesn't mean you can't use react-toolbox just now. The development on the `dev` branch will be under constant releases and, except from big API changes in refactored components, it will be easy to upgrade and to use. It's perfectly *safe* to start using `2.0.0-beta.x` **today**! Note that from now on we will put more effort on writing CHANGELOGS.
+
+## FAQ
+
+### How can I help and contribute to the project?
+
+React Toolbox is **not funded** and officially is developed and maintained by [one single person](http://twitter.com/javivelasco) Time is limited đ and any help or contribution is very appreciated. You can help:
+
+- Backing the project in Open Collective (pending approval) or [donating via Paypal](https://paypal.me/javivelasco).
+- Reviewing, labeling, answering and closing issues.
+- Fixing bugs documented in pending issues.
+- Writing tests for existing components.
+- Reviewing active Pull Requests.
+- Giving feedback. Your opinion matters!
+
+### CSS Modules or CSS in JS?
+
+Using CSS Modules implies many benefits like caching, server side rendering or good performance. Also, it can solve issues like selector collisions or unwanted cascading. The downside is the amount of boilerplate needed to make it run, and the coupling it generates to build tools. This is pretty much fixed by [react-toolbox-themr](https://github.com/react-toolbox/react-toolbox-themr) but there are some issues like colocation or bundling that are well covered by css-in-js tools. This means that the primary approach it's still css modules but we will be progressively migrating components to an strategy that makes easy to switch to css-in-js. In the future it should be possible to create your own *react-toolbox-styletron* distribution without too much effort.
+
+### How are you decoupling from styling?
+
+We've found very interesting the abstraction of *component nodes*. Instead of considering a complex component composed by styled DOM nodes, you can think of a component that orchestrates many smaller components. Those smaller components are transformed into a single styled node. More or less the idea implemented in [styled-components](https://styled-components.com/). It would be something like this:
+
+```jsx
+const Button = ({ primary, secondary, label, icon }) => (
+
+
+ {label}
+
+);
+```
+
+What this means is that the nodes that compose a component can be injected using Dependency Injection, so they can be styled with whatever strategy you want outside the component.
+
+### How are you handling customization and theming?
+
+The strategy of passing down CSS modules that get merged with nodes classnames as described in react-css-themr is still very powerful and it works with css-in-js (not inline styles of course). We are keeping this customization API but depending on the styling approach you can also use DI to fully customize component nodes. Priority of selectors would no longer be an issue after we migrate styles to flat classnames; only modifiers will be nested.
+
+About theming, it depends on how the styling is handled. In general there would be a set of variables to modify project wide styling aspects. It could be with JS as in styled-components or with custom properties using postcss.
+
+### When are you releasing?
+
+There is no fixed date, sorry. Being an open source project, it depends on contributors and we don't always have as much time to dedicate as we would want. We are working on the project constantly with some peaks but the beta versions will be released being usable and without too many bugs so you don't have to wait for a final version to start using the new features!
+
+### Is there any migration guide to 2.0?
+
+There is a [migration guide](https://github.com/react-toolbox/react-toolbox/wiki/Migrating-from-version-1.3-to-2.0) in the wiki.
+
+### When will be released the new playground?
+
+I [published a Tweet](https://twitter.com/javivelasco/status/765292988402630656) some time ago with a recording of the new playground. The core for this is ready but there are way bigger priorities than redesigning a site that is functional. Also, awesome [Danny Saltaren](http://dsaltaren.com/) is working in a new design for the site. As we update the documentation and get some objectives covered it will be eventually included.
diff --git a/babel.config.js b/babel.config.js
new file mode 100644
index 000000000..0b2856212
--- /dev/null
+++ b/babel.config.js
@@ -0,0 +1,35 @@
+module.exports = function (api) {
+ const env = api.env();
+ api.cache.using(() => env === 'development');
+
+ return {
+ presets: ['@babel/preset-env', '@babel/preset-react'],
+ plugins: [
+ '@babel/plugin-transform-runtime',
+ // Stage 0
+ '@babel/plugin-proposal-function-bind',
+
+ // Stage 1
+ '@babel/plugin-proposal-export-default-from',
+ '@babel/plugin-proposal-logical-assignment-operators',
+ ['@babel/plugin-proposal-optional-chaining', { loose: false }],
+ ['@babel/plugin-proposal-pipeline-operator', { proposal: 'minimal' }],
+ ['@babel/plugin-proposal-nullish-coalescing-operator', { loose: false }],
+ '@babel/plugin-proposal-do-expressions',
+
+ // Stage 2
+ ['@babel/plugin-proposal-decorators', { legacy: true }],
+ '@babel/plugin-proposal-function-sent',
+ '@babel/plugin-proposal-export-namespace-from',
+ '@babel/plugin-proposal-numeric-separator',
+ '@babel/plugin-proposal-throw-expressions',
+
+ // Stage 3
+ '@babel/plugin-syntax-dynamic-import',
+ '@babel/plugin-syntax-import-meta',
+ ['@babel/plugin-proposal-class-properties', { loose: false }],
+ '@babel/plugin-proposal-json-strings',
+ 'react-hot-loader/babel',
+ ],
+ };
+};
diff --git a/components/ThemeProvider.d.ts b/components/ThemeProvider.d.ts
new file mode 100644
index 000000000..f3884c411
--- /dev/null
+++ b/components/ThemeProvider.d.ts
@@ -0,0 +1,3 @@
+import {ThemeProvider} from 'react-css-themr'
+
+export default ThemeProvider
diff --git a/components/ThemeProvider.js b/components/ThemeProvider.js
new file mode 100644
index 000000000..2620cb55a
--- /dev/null
+++ b/components/ThemeProvider.js
@@ -0,0 +1 @@
+export { ThemeProvider as default } from 'react-css-themr';
diff --git a/components/__mocks__/react-css-themr.js b/components/__mocks__/react-css-themr.js
new file mode 100644
index 000000000..749303b52
--- /dev/null
+++ b/components/__mocks__/react-css-themr.js
@@ -0,0 +1,7 @@
+export function themr() {
+ return (Component) => {
+ Component.defaultProps = Component.defaultProps || {}; // eslint-disable-line no-param-reassign
+ Component.defaultProps.theme = {}; // eslint-disable-line no-param-reassign
+ return Component;
+ };
+}
diff --git a/components/_colors.scss b/components/_colors.scss
deleted file mode 100644
index c2eb5099c..000000000
--- a/components/_colors.scss
+++ /dev/null
@@ -1,301 +0,0 @@
-//-- Color definitions taken from Material Design Lite
-
-// Red
-$palette-red-50: rgb(255,235,238);
-$palette-red-100: rgb(255,205,210);
-$palette-red-200: rgb(239,154,154);
-$palette-red-300: rgb(229,115,115);
-$palette-red-400: rgb(239,83,80);
-$palette-red-500: rgb(244,67,54);
-$palette-red-600: rgb(229,57,53);
-$palette-red-700: rgb(211,47,47);
-$palette-red-800: rgb(198,40,40);
-$palette-red-900: rgb(183,28,28);
-$palette-red-a100: rgb(255,138,128);
-$palette-red-a200: rgb(255,82,82);
-$palette-red-a400: rgb(255,23,68);
-$palette-red-a700: rgb(213,0,0);
-
-// Pink
-$palette-pink-50: rgb(252,228,236);
-$palette-pink-100: rgb(248,187,208);
-$palette-pink-200: rgb(244,143,177);
-$palette-pink-300: rgb(240,98,146);
-$palette-pink-400: rgb(236,64,122);
-$palette-pink-500: rgb(233,30,99);
-$palette-pink-600: rgb(216,27,96);
-$palette-pink-700: rgb(194,24,91);
-$palette-pink-800: rgb(173,20,87);
-$palette-pink-900: rgb(136,14,79);
-$palette-pink-a100: rgb(255,128,171);
-$palette-pink-a200: rgb(255,64,129);
-$palette-pink-a400: rgb(245,0,87);
-$palette-pink-a700: rgb(197,17,98);
-
-// Purple
-$palette-purple-50: rgb(243,229,245);
-$palette-purple-100: rgb(225,190,231);
-$palette-purple-200: rgb(206,147,216);
-$palette-purple-300: rgb(186,104,200);
-$palette-purple-400: rgb(171,71,188);
-$palette-purple-500: rgb(156,39,176);
-$palette-purple-600: rgb(142,36,170);
-$palette-purple-700: rgb(123,31,162);
-$palette-purple-800: rgb(106,27,154);
-$palette-purple-900: rgb(74,20,140);
-$palette-purple-a100: rgb(234,128,252);
-$palette-purple-a200: rgb(224,64,251);
-$palette-purple-a400: rgb(213,0,249);
-$palette-purple-a700: rgb(170,0,255);
-
-//Deep Purple
-$palette-deep-purple-50: rgb(237,231,246);
-$palette-deep-purple-100: rgb(209,196,233);
-$palette-deep-purple-200: rgb(179,157,219);
-$palette-deep-purple-300: rgb(149,117,205);
-$palette-deep-purple-400: rgb(126,87,194);
-$palette-deep-purple-500: rgb(103,58,183);
-$palette-deep-purple-600: rgb(94,53,177);
-$palette-deep-purple-700: rgb(81,45,168);
-$palette-deep-purple-800: rgb(69,39,160);
-$palette-deep-purple-900: rgb(49,27,146);
-$palette-deep-purple-a100: rgb(179,136,255);
-$palette-deep-purple-a200: rgb(124,77,255);
-$palette-deep-purple-a400: rgb(101,31,255);
-$palette-deep-purple-a700: rgb(98,0,234);
-
-// Indigo
-$palette-indigo-50: rgb(232,234,246);
-$palette-indigo-100: rgb(197,202,233);
-$palette-indigo-200: rgb(159,168,218);
-$palette-indigo-300: rgb(121,134,203);
-$palette-indigo-400: rgb(92,107,192);
-$palette-indigo-500: rgb(63,81,181);
-$palette-indigo-600: rgb(57,73,171);
-$palette-indigo-700: rgb(48,63,159);
-$palette-indigo-800: rgb(40,53,147);
-$palette-indigo-900: rgb(26,35,126);
-$palette-indigo-a100: rgb(140,158,255);
-$palette-indigo-a200: rgb(83,109,254);
-$palette-indigo-a400: rgb(61,90,254);
-$palette-indigo-a700: rgb(48,79,254);
-
-// Blue
-$palette-blue-50: rgb(227,242,253);
-$palette-blue-100: rgb(187,222,251);
-$palette-blue-200: rgb(144,202,249);
-$palette-blue-300: rgb(100,181,246);
-$palette-blue-400: rgb(66,165,245);
-$palette-blue-500: rgb(33,150,243);
-$palette-blue-600: rgb(30,136,229);
-$palette-blue-700: rgb(25,118,210);
-$palette-blue-800: rgb(21,101,192);
-$palette-blue-900: rgb(13,71,161);
-$palette-blue-a100: rgb(130,177,255);
-$palette-blue-a200: rgb(68,138,255);
-$palette-blue-a400: rgb(41,121,255);
-$palette-blue-a700: rgb(41,98,255);
-
-// Light Blue
-$palette-light-blue-50: rgb(225,245,254);
-$palette-light-blue-100: rgb(179,229,252);
-$palette-light-blue-200: rgb(129,212,250);
-$palette-light-blue-300: rgb(79,195,247);
-$palette-light-blue-400: rgb(41,182,246);
-$palette-light-blue-500: rgb(3,169,244);
-$palette-light-blue-600: rgb(3,155,229);
-$palette-light-blue-700: rgb(2,136,209);
-$palette-light-blue-800: rgb(2,119,189);
-$palette-light-blue-900: rgb(1,87,155);
-$palette-light-blue-a100: rgb(128,216,255);
-$palette-light-blue-a200: rgb(64,196,255);
-$palette-light-blue-a400: rgb(0,176,255);
-$palette-light-blue-a700: rgb(0,145,234);
-
-// Cyan
-$palette-cyan-50: rgb(224,247,250);
-$palette-cyan-100: rgb(178,235,242);
-$palette-cyan-200: rgb(128,222,234);
-$palette-cyan-300: rgb(77,208,225);
-$palette-cyan-400: rgb(38,198,218);
-$palette-cyan-500: rgb(0,188,212);
-$palette-cyan-600: rgb(0,172,193);
-$palette-cyan-700: rgb(0,151,167);
-$palette-cyan-800: rgb(0,131,143);
-$palette-cyan-900: rgb(0,96,100);
-$palette-cyan-a100: rgb(132,255,255);
-$palette-cyan-a200: rgb(24,255,255);
-$palette-cyan-a400: rgb(0,229,255);
-$palette-cyan-a700: rgb(0,184,212);
-
-// Teal
-$palette-teal-50: rgb(224,242,241);
-$palette-teal-100: rgb(178,223,219);
-$palette-teal-200: rgb(128,203,196);
-$palette-teal-300: rgb(77,182,172);
-$palette-teal-400: rgb(38,166,154);
-$palette-teal-500: rgb(0,150,136);
-$palette-teal-600: rgb(0,137,123);
-$palette-teal-700: rgb(0,121,107);
-$palette-teal-800: rgb(0,105,92);
-$palette-teal-900: rgb(0,77,64);
-$palette-teal-a100: rgb(167,255,235);
-$palette-teal-a200: rgb(100,255,218);
-$palette-teal-a400: rgb(29,233,182);
-$palette-teal-a700: rgb(0,191,165);
-
-// Green
-$palette-green-50: rgb(232,245,233);
-$palette-green-100: rgb(200,230,201);
-$palette-green-200: rgb(165,214,167);
-$palette-green-300: rgb(129,199,132);
-$palette-green-400: rgb(102,187,106);
-$palette-green-500: rgb(76,175,80);
-$palette-green-600: rgb(67,160,71);
-$palette-green-700: rgb(56,142,60);
-$palette-green-800: rgb(46,125,50);
-$palette-green-900: rgb(27,94,32);
-$palette-green-a100: rgb(185,246,202);
-$palette-green-a200: rgb(105,240,174);
-$palette-green-a400: rgb(0,230,118);
-$palette-green-a700: rgb(0,200,83);
-
-// Green
-$palette-light-green-50: rgb(241,248,233);
-$palette-light-green-100: rgb(220,237,200);
-$palette-light-green-200: rgb(197,225,165);
-$palette-light-green-300: rgb(174,213,129);
-$palette-light-green-400: rgb(156,204,101);
-$palette-light-green-500: rgb(139,195,74);
-$palette-light-green-600: rgb(124,179,66);
-$palette-light-green-700: rgb(104,159,56);
-$palette-light-green-800: rgb(85,139,47);
-$palette-light-green-900: rgb(51,105,30);
-$palette-light-green-a100: rgb(204,255,144);
-$palette-light-green-a200: rgb(178,255,89);
-$palette-light-green-a400: rgb(118,255,3);
-$palette-light-green-a700: rgb(100,221,23);
-
-// Lime
-$palette-lime-50: rgb(249,251,231);
-$palette-lime-100: rgb(240,244,195);
-$palette-lime-200: rgb(230,238,156);
-$palette-lime-300: rgb(220,231,117);
-$palette-lime-400: rgb(212,225,87);
-$palette-lime-500: rgb(205,220,57);
-$palette-lime-600: rgb(192,202,51);
-$palette-lime-700: rgb(175,180,43);
-$palette-lime-800: rgb(158,157,36);
-$palette-lime-900: rgb(130,119,23);
-$palette-lime-a100: rgb(244,255,129);
-$palette-lime-a200: rgb(238,255,65);
-$palette-lime-a400: rgb(198,255,0);
-$palette-lime-a700: rgb(174,234,0);
-
-// Yellow
-$palette-yellow-50: rgb(255,253,231);
-$palette-yellow-100: rgb(255,249,196);
-$palette-yellow-200: rgb(255,245,157);
-$palette-yellow-300: rgb(255,241,118);
-$palette-yellow-400: rgb(255,238,88);
-$palette-yellow-500: rgb(255,235,59);
-$palette-yellow-600: rgb(253,216,53);
-$palette-yellow-700: rgb(251,192,45);
-$palette-yellow-800: rgb(249,168,37);
-$palette-yellow-900: rgb(245,127,23);
-$palette-yellow-a100: rgb(255,255,141);
-$palette-yellow-a200: rgb(255,255,0);
-$palette-yellow-a400: rgb(255,234,0);
-$palette-yellow-a700: rgb(255,214,0);
-
-// Amber
-$palette-amber-50: rgb(255,248,225);
-$palette-amber-100: rgb(255,236,179);
-$palette-amber-200: rgb(255,224,130);
-$palette-amber-300: rgb(255,213,79);
-$palette-amber-400: rgb(255,202,40);
-$palette-amber-500: rgb(255,193,7);
-$palette-amber-600: rgb(255,179,0);
-$palette-amber-700: rgb(255,160,0);
-$palette-amber-800: rgb(255,143,0);
-$palette-amber-900: rgb(255,111,0);
-$palette-amber-a100: rgb(255,229,127);
-$palette-amber-a200: rgb(255,215,64);
-$palette-amber-a400: rgb(255,196,0);
-$palette-amber-a700: rgb(255,171,0);
-
-// Orange
-$palette-orange-50: rgb(255,243,224);
-$palette-orange-100: rgb(255,224,178);
-$palette-orange-200: rgb(255,204,128);
-$palette-orange-300: rgb(255,183,77);
-$palette-orange-400: rgb(255,167,38);
-$palette-orange-500: rgb(255,152,0);
-$palette-orange-600: rgb(251,140,0);
-$palette-orange-700: rgb(245,124,0);
-$palette-orange-800: rgb(239,108,0);
-$palette-orange-900: rgb(230,81,0);
-$palette-orange-a100: rgb(255,209,128);
-$palette-orange-a200: rgb(255,171,64);
-$palette-orange-a400: rgb(255,145,0);
-$palette-orange-a700: rgb(255,109,0);
-
-// Deep Orange
-$palette-deep-orange-50: rgb(251,233,231);
-$palette-deep-orange-100: rgb(255,204,188);
-$palette-deep-orange-200: rgb(255,171,145);
-$palette-deep-orange-300: rgb(255,138,101);
-$palette-deep-orange-400: rgb(255,112,67);
-$palette-deep-orange-500: rgb(255,87,34);
-$palette-deep-orange-600: rgb(244,81,30);
-$palette-deep-orange-700: rgb(230,74,25);
-$palette-deep-orange-800: rgb(216,67,21);
-$palette-deep-orange-900: rgb(191,54,12);
-$palette-deep-orange-a100: rgb(255,158,128);
-$palette-deep-orange-a200: rgb(255,110,64);
-$palette-deep-orange-a400: rgb(255,61,0);
-$palette-deep-orange-a700: rgb(221,44,0);
-
-// Brown
-$palette-brown-50: rgb(239,235,233);
-$palette-brown-100: rgb(215,204,200);
-$palette-brown-200: rgb(188,170,164);
-$palette-brown-300: rgb(161,136,127);
-$palette-brown-400: rgb(141,110,99);
-$palette-brown-500: rgb(121,85,72);
-$palette-brown-600: rgb(109,76,65);
-$palette-brown-700: rgb(93,64,55);
-$palette-brown-800: rgb(78,52,46);
-$palette-brown-900: rgb(62,39,35);
-
-// Grey
-$palette-grey-50: rgb(250,250,250);
-$palette-grey-100: rgb(245,245,245);
-$palette-grey-200: rgb(238,238,238);
-$palette-grey-300: rgb(224,224,224);
-$palette-grey-400: rgb(189,189,189);
-$palette-grey-500: rgb(158,158,158);
-$palette-grey-600: rgb(117,117,117);
-$palette-grey-700: rgb(97,97,97);
-$palette-grey-800: rgb(66,66,66);
-$palette-grey-900: rgb(33,33,33);
-
-// Blue Grey
-$palette-blue-grey-50: rgb(236,239,241);
-$palette-blue-grey-100: rgb(207,216,220);
-$palette-blue-grey-200: rgb(176,190,197);
-$palette-blue-grey-300: rgb(144,164,174);
-$palette-blue-grey-400: rgb(120,144,156);
-$palette-blue-grey-500: rgb(96,125,139);
-$palette-blue-grey-600: rgb(84,110,122);
-$palette-blue-grey-700: rgb(69,90,100);
-$palette-blue-grey-800: rgb(55,71,79);
-$palette-blue-grey-900: rgb(38,50,56);
-
-$color-black: rgb(0,0,0);
-$color-white: rgb(255,255,255);
-
-//-- The two possible colors for overlayed text.
-$styleguide-generate-template: false !default;
-$color-dark-contrast: $color-white !default;
-$color-light-contrast: $color-black !default;
diff --git a/components/_globals.scss b/components/_globals.scss
deleted file mode 100644
index 191881082..000000000
--- a/components/_globals.scss
+++ /dev/null
@@ -1,81 +0,0 @@
-//-- Color configuration
-$color-divider: $palette-grey-200 !default;
-$color-background: $color-white !default;
-$color-text: $palette-grey-900 !default;
-$color-text-secondary: $palette-grey-600 !default;
-
-$color-primary: $palette-indigo-500 !default;
-$color-primary-dark: $palette-indigo-700 !default;
-$color-accent: $palette-pink-a200 !default;
-$color-accent-dark: $palette-pink-700 !default;
-$color-primary-contrast: $color-dark-contrast !default;
-$color-accent-contrast: $color-dark-contrast !default;
-
-//-- Sizing
-$unit: 1rem !default;
-
-// -- Fonts
-$preferred-font: "Roboto", "Helvetica", "Arial", sans-serif !default;
-$font-size: 1.6 * $unit !default;
-$font-size-tiny: 1.2 * $unit !default;
-$font-size-small: 1.4 * $unit !default;
-$font-size-normal: $font-size !default;
-$font-size-big: 1.8 * $unit !default;
-$font-weight-thin: 300 !default;
-$font-weight-normal: 400 !default;
-$font-weight-semi-bold: 500 !default;
-$font-weight-bold: 700 !default;
-
-//-- Shadows
-$shadow-key-umbra-opacity: 0.2 !default;
-$shadow-key-penumbra-opacity: 0.14 !default;
-$shadow-ambient-shadow-opacity: 0.12 !default;
-
-//-- Depth Shadows
-$zdepth-shadow-1: 0 1px 6px rgba(0,0,0,.12), 0 1px 4px rgba(0,0,0,.24);
-$zdepth-shadow-2: 0 3px 10px rgba(0,0,0,.16), 0 3px 10px rgba(0,0,0,.23);
-$zdepth-shadow-3: 0 10px 30px rgba(0,0,0,.19), 0 6px 10px rgba(0,0,0,.23);
-$zdepth-shadow-4: 0 14px 45px rgba(0,0,0,.25), 0 10px 18px rgba(0,0,0,.22);
-$zdepth-shadow-5: 0 19px 60px rgba(0,0,0,.3), 0 15px 20px rgba(0,0,0,.22);
-
-//-- Animation
-$animation-duration: .35s;
-$animation-delay: $animation-duration / 5;
-$animation-curve-fast-out-slow-in: cubic-bezier(0.4, 0, 0.2, 1) !default;
-$animation-curve-linear-out-slow-in: cubic-bezier(0, 0, 0.2, 1) !default;
-$animation-curve-fast-out-linear-in: cubic-bezier(0.4, 0, 1, 1) !default;
-$animation-curve-default: $animation-curve-fast-out-slow-in !default;
-
-//-- Indexes
-$z-index-highest: 300 !default;
-$z-index-higher: 200 !default;
-$z-index-high: 100 !default;
-$z-index-normal: 1 !default;
-$z-index-low: -100 !default;
-$z-index-lower: -200 !default;
-
-//-- Breakpoints
-// height of app bar
-// https://www.google.com/design/spec/layout/metrics-keylines.html#metrics-keylines-keylines-spacing
-$standard-increment-mobile: (5.6 * $unit) !default;
-$standard-increment-desktop: (6.4 * $unit) !default;
-
-// https://www.google.com/design/spec/layout/metrics-keylines.html#metrics-keylines-baseline-grids
-$baseline-grid: (0.8 * $unit) !default;
-$layout-gutter-width-sm: ($baseline-grid * 2) !default;
-$layout-gutter-width: ($baseline-grid * 3) !default;
-
-// https://www.google.com/design/spec/layout/responsive-ui.html#responsive-ui-breakpoints
-// 4 columns
-$layout-breakpoint-xxs: 480px !default;
-// 8 columns
-$layout-breakpoint-xs: 600px !default;
-// 12 columns
-$layout-breakpoint-sm-tablet: 720px !default;
-$layout-breakpoint-sm: 840px !default;
-$layout-breakpoint-md: 960px !default;
-$layout-breakpoint-lg-tablet: 1024px !default;
-$layout-breakpoint-lg: 1280px !default;
-$layout-breakpoint-xl: 1440px !default;
-$layout-breakpoint-xxl: 1600px !default;
-$layout-breakpoint-xxxl: 1920px !default;
diff --git a/components/_mixins.scss b/components/_mixins.scss
deleted file mode 100644
index 40490c702..000000000
--- a/components/_mixins.scss
+++ /dev/null
@@ -1,260 +0,0 @@
-// scss-lint:disable VendorPrefix
-@mixin typo-preferred-font($use-preferred: true) {
- @if $use-preferred {
- font-family: $preferred-font;
- }
-}
-
-@mixin typo-display-4($color-contrast: false, $use-preferred: true) {
- @include typo-preferred-font($use-preferred);
- font-size: $unit * 11.2;
- font-weight: 300;
- line-height: 1;
- letter-spacing: -.04em;
-
- @if $color-contrast {
- opacity: .54;
- }
-}
-
-@mixin typo-display-3($color-contrast: false, $use-preferred: true) {
- @include typo-preferred-font($use-preferred);
- font-size: $unit * 5.6;
- font-weight: 400;
- line-height: 1.35;
- letter-spacing: -.02em;
-
- @if $color-contrast {
- opacity: .54;
- }
-}
-
-@mixin typo-display-2($color-contrast: false, $use-preferred: true) {
- @include typo-preferred-font($use-preferred);
- font-size: $unit * 4.5;
- font-weight: 400;
- line-height: $unit * 4.8;
-
- @if $color-contrast {
- opacity: .54;
- }
-}
-
-@mixin typo-display-1($color-contrast: false, $use-preferred: true) {
- @include typo-preferred-font($use-preferred);
- font-size: $unit * 3.4;
- font-weight: 400;
- line-height: $unit * 4;
-
- @if $color-contrast {
- opacity: .54;
- }
-}
-
-@mixin typo-headline($color-contrast: false, $use-preferred: true) {
- @include typo-preferred-font($use-preferred);
- font-size: $unit * 2.4;
- font-weight: 400;
- line-height: $unit * 3.2;
- -moz-osx-font-smoothing: grayscale;
-
- @if $color-contrast {
- opacity: .87;
- }
-}
-
-@mixin typo-title($color-contrast: false, $use-preferred: true) {
- @include typo-preferred-font($use-preferred);
- font-size: $unit * 2;
- font-weight: 500;
- line-height: 1;
- letter-spacing: .02em;
-
- @if $color-contrast {
- opacity: .87;
- }
-}
-
-@mixin typo-subhead($color-contrast: false, $use-preferred: true) {
- @include typo-preferred-font($use-preferred);
- font-size: $unit * 1.6;
- font-weight: 400;
- line-height: $unit * 2.4;
- letter-spacing: .04em;
-
- @if $color-contrast {
- opacity: .87;
- }
-}
-
-@mixin typo-subhead-2($color-contrast: false, $use-preferred: true) {
- @include typo-preferred-font($use-preferred);
- font-size: $unit * 1.6;
- font-weight: 400;
- line-height: $unit * 2.8;
- letter-spacing: .04em;
-
- @if $color-contrast {
- opacity: .87;
- }
-}
-
-@mixin typo-body-2($color-contrast: false, $use-preferred: false) {
- @include typo-preferred-font($use-preferred);
- font-size: $unit * 1.4;
- line-height: $unit * 2.4;
- letter-spacing: 0;
-
- @if $use-preferred {
- font-weight: 500;
- } @else {
- font-weight: bold;
- }
-
- @if $color-contrast {
- opacity: .87;
- }
-}
-
-@mixin typo-body-1($color-contrast: false, $use-preferred: false) {
- @include typo-preferred-font($use-preferred);
- font-size: $unit * 1.4;
- font-weight: 400;
- line-height: $unit * 2.4;
- letter-spacing: 0;
-
- @if $color-contrast {
- opacity: .87;
- }
-}
-
-@mixin typo-caption($color-contrast: false, $use-preferred: false) {
- @include typo-preferred-font($use-preferred);
- font-size: $unit * 1.2;
- font-weight: 400;
- line-height: 1;
- letter-spacing: 0;
-
- @if $color-contrast {
- opacity: .54;
- }
-}
-
-@mixin typo-blockquote($color-contrast: false, $use-preferred: true) {
- @include typo-preferred-font($use-preferred);
- position: relative;
- font-size: $unit * 2.4;
- font-style: italic;
- font-weight: 300;
- line-height: 1.35;
- letter-spacing: .08em;
-
- &:before {
- position: absolute;
- left: -.5em;
- content: "â";
- }
-
- &:after {
- margin-left: -.05em;
- content: "â";
- }
-
- @if $color-contrast {
- opacity: .54;
- }
-}
-
-@mixin typo-menu($color-contrast: false, $use-preferred: true) {
- @include typo-preferred-font($use-preferred);
- font-size: $unit * 1.4;
- font-weight: 500;
- line-height: 1;
- letter-spacing: 0;
-
- @if $color-contrast {
- opacity: .87;
- }
-}
-
-@mixin typo-button($color-contrast: false, $use-preferred: true) {
- @include typo-preferred-font($use-preferred);
- font-size: $unit * 1.4;
- font-weight: 500;
- line-height: 1;
- text-transform: uppercase;
- letter-spacing: 0;
-
- @if $color-contrast {
- opacity: .87;
- }
-}
-
-//-- Shadows
-@mixin focus-shadow() {
- box-shadow: 0 0 8px rgba(0, 0, 0, .18), 0 8px 16px rgba(0, 0, 0, .36);
-}
-
-@mixin shadow-2dp() {
- box-shadow: 0 2px 2px 0 rgba(0, 0, 0, $shadow-key-penumbra-opacity),
- 0 3px 1px -2px rgba(0, 0, 0, $shadow-key-umbra-opacity),
- 0 1px 5px 0 rgba(0, 0, 0, $shadow-ambient-shadow-opacity);
-}
-
-@mixin shadow-3dp() {
- box-shadow: 0 3px 4px 0 rgba(0, 0, 0, $shadow-key-penumbra-opacity),
- 0 3px 3px -2px rgba(0, 0, 0, $shadow-key-umbra-opacity),
- 0 1px 8px 0 rgba(0, 0, 0, $shadow-ambient-shadow-opacity);
-}
-
-@mixin shadow-4dp() {
- box-shadow: 0 4px 5px 0 rgba(0, 0, 0, $shadow-key-penumbra-opacity),
- 0 1px 10px 0 rgba(0, 0, 0, $shadow-ambient-shadow-opacity),
- 0 2px 4px -1px rgba(0, 0, 0, $shadow-key-umbra-opacity);
-}
-
-@mixin shadow-6dp() {
- box-shadow: 0 6px 10px 0 rgba(0, 0, 0, $shadow-key-penumbra-opacity),
- 0 1px 18px 0 rgba(0, 0, 0, $shadow-ambient-shadow-opacity),
- 0 3px 5px -1px rgba(0, 0, 0, $shadow-key-umbra-opacity);
-}
-
-@mixin shadow-8dp() {
- box-shadow: 0 8px 10px 1px rgba(0, 0, 0, $shadow-key-penumbra-opacity),
- 0 3px 14px 2px rgba(0, 0, 0, $shadow-ambient-shadow-opacity),
- 0 5px 5px -3px rgba(0, 0, 0, $shadow-key-umbra-opacity);
-}
-
-@mixin shadow-16dp() {
- box-shadow: 0 16px 24px 2px rgba(0, 0, 0, $shadow-key-penumbra-opacity),
- 0 6px 30px 5px rgba(0, 0, 0, $shadow-ambient-shadow-opacity),
- 0 8px 10px -5px rgba(0, 0, 0, $shadow-key-umbra-opacity);
-}
-
-//-- Animations
-@mixin material-animation-fast-out-slow-in($duration: .2s) {
- transition-timing-function: $animation-curve-fast-out-slow-in;
- transition-duration: $duration;
-}
-
-@mixin material-animation-linear-out-slow-in($duration: .2s) {
- transition-timing-function: $animation-curve-linear-out-slow-in;
- transition-duration: $duration;
-}
-
-@mixin material-animation-fast-out-linear-in($duration: .2s) {
- transition-timing-function: $animation-curve-fast-out-linear-in;
- transition-duration: $duration;
-}
-
-@mixin material-animation-default($duration: .2s) {
- transition-timing-function: $animation-curve-default;
- transition-duration: $duration;
-}
-
-@mixin no-webkit-scrollbar {
- &::-webkit-scrollbar {
- width: 0;
- height: 0;
- }
-}
diff --git a/components/animations/index.js b/components/animations/index.js
deleted file mode 100644
index 3ab27eca0..000000000
--- a/components/animations/index.js
+++ /dev/null
@@ -1,4 +0,0 @@
-export SlideLeft from './slide-left.scss';
-export SlideRight from './slide-right.scss';
-export ZoomIn from './zoom-in.scss';
-export ZoomOut from './zoom-out.scss';
diff --git a/components/animations/slide-left.scss b/components/animations/slide-left.scss
deleted file mode 100644
index aba039958..000000000
--- a/components/animations/slide-left.scss
+++ /dev/null
@@ -1,26 +0,0 @@
-.enter, .leave {
- position: absolute;
- transition-timing-function: ease-in-out;
- transition-duration: .35s;
- transition-property: transform, opacity;
-}
-
-.enter {
- opacity: 0;
- transform: translate3d(-100%, 0, 0);
-
- &.enterActive {
- opacity: 1;
- transform: translate3d(0, 0, 0);
- }
-}
-
-.leave {
- opacity: 1;
- transform: translate3d(0, 0, 0);
-
- &.leaveActive {
- opacity: 0;
- transform: translate3d(100%, 0, 0);
- }
-}
diff --git a/components/animations/slide-right.scss b/components/animations/slide-right.scss
deleted file mode 100644
index 95d0e15d9..000000000
--- a/components/animations/slide-right.scss
+++ /dev/null
@@ -1,29 +0,0 @@
-.enter, .leave {
- position: absolute;
-}
-
-.enterActive, .leaveActive {
- transition-timing-function: ease-in-out;
- transition-duration: 350ms;
- transition-property: transform, opacity;
-}
-
-.enter {
- opacity: 0;
- transform: translateX(100%);
-
- &.enterActive {
- opacity: 1;
- transform: translateX(0);
- }
-}
-
-.leave {
- opacity: 1;
- transform: translateX(0);
-
- &.leaveActive {
- opacity: 0;
- transform: translateX(-100%);
- }
-}
diff --git a/components/animations/zoom-in.scss b/components/animations/zoom-in.scss
deleted file mode 100644
index d752e9401..000000000
--- a/components/animations/zoom-in.scss
+++ /dev/null
@@ -1,33 +0,0 @@
-@import "http://github.com/colors";
-@import "http://github.com/globals";
-@import "http://github.com/mixins";
-
-.enter, .leave {
- position: absolute;
-}
-
-.enterActive, .leaveActive {
- transition: transform, opacity;
- transition-timing-function: $animation-curve-fast-out-slow-in;
- transition-duration: 500ms;
-}
-
-.enter {
- opacity: 0;
- transform: scale(0.85);
-
- &.enterActive {
- opacity: 1;
- transform: scale(1);
- }
-}
-
-.leave {
- opacity: 1;
- transform: scale(1);
-
- &.leaveActive {
- opacity: 0;
- transform: scale(1.25);
- }
-}
diff --git a/components/animations/zoom-out.scss b/components/animations/zoom-out.scss
deleted file mode 100644
index cf1500fc1..000000000
--- a/components/animations/zoom-out.scss
+++ /dev/null
@@ -1,33 +0,0 @@
-@import "http://github.com/colors";
-@import "http://github.com/globals";
-@import "http://github.com/mixins";
-
-.enter, .leave {
- position: absolute;
-}
-
-.enterActive, .leaveActive {
- transition: transform, opacity;
- transition-timing-function: $animation-curve-fast-out-slow-in;
- transition-duration: 500ms;
-}
-
-.enter {
- opacity: 0;
- transform: scale(1.25);
-
- &.enterActive {
- opacity: 1;
- transform: scale(1);
- }
-}
-
-.leave {
- opacity: 1;
- transform: scale(1);
-
- &.leaveActive {
- opacity: 0;
- transform: scale(0.85);
- }
-}
diff --git a/lib/app_bar/index.d.ts b/components/app_bar/AppBar.d.ts
similarity index 77%
rename from lib/app_bar/index.d.ts
rename to components/app_bar/AppBar.d.ts
index fb868bb1a..3df288673 100644
--- a/lib/app_bar/index.d.ts
+++ b/components/app_bar/AppBar.d.ts
@@ -17,7 +17,7 @@ export interface AppBarTheme {
/**
* Used as the app bar title.
*/
- title ?: string;
+ title?: string;
/**
* Added to the left icon app bar element.
*/
@@ -26,9 +26,13 @@ export interface AppBarTheme {
* Added to the right icon app bar element.
*/
rightIcon?: string;
+ /**
+ * Added to the root element when the app bar is hidden during scroll.
+ */
+ scrollHide?: string;
}
-interface AppBarProps extends ReactToolbox.Props {
+export interface AppBarProps extends ReactToolbox.Props {
/**
* Children to pass through the component.
*/
@@ -39,7 +43,7 @@ interface AppBarProps extends ReactToolbox.Props {
*/
fixed?: boolean;
/**
- * If true, the AppBar shows a shadow.
+ * If true, the AppBar doesn't show a shadow.
* @default false
*/
flat?: boolean;
@@ -50,7 +54,7 @@ interface AppBarProps extends ReactToolbox.Props {
/**
* If it exists it is used as the AppBar left icon
*/
- leftIcon?: string;
+ leftIcon?: React.ReactNode;
/**
* Called when the left icon is clicked
*/
@@ -58,11 +62,16 @@ interface AppBarProps extends ReactToolbox.Props {
/**
* If it exists it is used as the AppBar right icon
*/
- rightIcon?: string;
+ rightIcon?: React.ReactNode;
/**
* Called when the righticon is clicked
*/
onRightIconClick?: Function;
+ /**
+ * Whether AppBar should be hidden during scroll.
+ * @default false
+ */
+ scrollHide?: boolean;
/**
* Classnames object defining the component style.
*/
diff --git a/components/app_bar/AppBar.js b/components/app_bar/AppBar.js
index 00913f706..93627fc07 100644
--- a/components/app_bar/AppBar.js
+++ b/components/app_bar/AppBar.js
@@ -1,8 +1,9 @@
-import React, { PropTypes } from 'react';
-import classnames from 'classnames';
+import React from 'react';
+import PropTypes from 'prop-types';
+import cn from 'classnames';
import { themr } from 'react-css-themr';
-import { APP_BAR } from '../identifiers.js';
-import InjectIconButton from '../button/IconButton.js';
+import { APP_BAR } from '../identifiers';
+import InjectIconButton from '../button/IconButton';
const factory = (IconButton) => {
class AppBar extends React.Component {
@@ -13,42 +14,47 @@ const factory = (IconButton) => {
flat: PropTypes.bool,
leftIcon: PropTypes.oneOfType([
PropTypes.string,
- PropTypes.element
+ PropTypes.element,
]),
onLeftIconClick: PropTypes.func,
onRightIconClick: PropTypes.func,
rightIcon: PropTypes.oneOfType([
PropTypes.string,
- PropTypes.element
+ PropTypes.element,
]),
scrollHide: PropTypes.bool,
theme: PropTypes.shape({
appBar: PropTypes.string,
fixed: PropTypes.string,
flat: PropTypes.string,
+ inner: PropTypes.string,
leftIcon: PropTypes.string,
rightIcon: PropTypes.string,
- title: PropTypes.string
+ scrollHide: PropTypes.string,
+ title: PropTypes.string,
}),
- title: PropTypes.string
+ title: PropTypes.oneOfType([
+ PropTypes.string,
+ PropTypes.element,
+ ]),
};
static defaultProps = {
className: '',
fixed: false,
flat: false,
- scrollHide: false
+ scrollHide: false,
};
- state = {hidden: false, height: 0};
+ state = { hidden: false, height: 0 }; // eslint-disable-line react/no-unused-state
- componentDidMount () {
+ componentDidMount() {
if (this.props.scrollHide) {
this.initializeScroll();
}
}
- componentWillReceiveProps (nextProps) {
+ componentWillReceiveProps(nextProps) {
if (!this.props.scrollHide && nextProps.scrollHide) {
this.initializeScroll();
}
@@ -58,58 +64,84 @@ const factory = (IconButton) => {
}
}
- componentWillUnmount () {
+ componentWillUnmount() {
if (this.props.scrollHide) {
this.endScroll();
}
}
+ handleScroll = () => {
+ const scrollDiff = this.curScroll - window.scrollY;
+ this.setState(state => ({
+ hidden: scrollDiff < 0
+ && window.scrollY !== undefined
+ && window.scrollY > state.height,
+ }));
+ this.curScroll = window.scrollY;
+ };
+
initializeScroll = () => {
window.addEventListener('scroll', this.handleScroll);
const { height } = this.rootNode.getBoundingClientRect();
this.curScroll = window.scrollY;
- this.setState({height});
- };
+ this.setState({ height }); // eslint-disable-line react/no-unused-state
+ }
- endScroll = () => {
+ endScroll() {
window.removeEventListener('scroll', this.handleScroll);
- };
+ }
- handleScroll = () => {
- const scrollDiff = this.curScroll - window.scrollY;
- const hidden = scrollDiff < 0 && window.scrollY !== undefined && window.scrollY > this.state.height;
- this.setState({hidden});
- this.curScroll = window.scrollY;
- };
+ render() {
+ const {
+ children,
+ leftIcon,
+ onLeftIconClick,
+ onRightIconClick,
+ rightIcon,
+ theme,
+ title,
+ } = this.props;
- render () {
- const { children, leftIcon, onLeftIconClick, onRightIconClick, rightIcon, theme, title } = this.props;
- const className = classnames(theme.appBar, {
+ const className = cn(theme.appBar, {
[theme.fixed]: this.props.fixed,
[theme.flat]: this.props.flat,
- [theme.scrollHide]: this.state.hidden
+ [theme.scrollHide]: this.state.hidden,
}, this.props.className);
+ const renderedTitle = typeof title === 'string'
+ ?
+ );
+ }
}
return Autocomplete;
};
const Autocomplete = factory(InjectChip, InjectInput);
-export default themr(AUTOCOMPLETE)(Autocomplete);
+export default themr(AUTOCOMPLETE, null, { withRef: true })(Autocomplete);
export { factory as autocompleteFactory };
export { Autocomplete };
diff --git a/components/autocomplete/_config.scss b/components/autocomplete/_config.scss
deleted file mode 100644
index e0280558e..000000000
--- a/components/autocomplete/_config.scss
+++ /dev/null
@@ -1,7 +0,0 @@
-$autocomplete-color-primary-contrast: $color-primary-contrast !default;
-$autocomplete-color-primary: $color-primary !default;
-$autocomplete-overflow-max-height: 45vh !default;
-$autocomplete-suggestion-active-background: $palette-grey-200 !default;
-$autocomplete-suggestion-padding: $unit !default;
-$autocomplete-suggestions-background: $color-white !default;
-$autocomplete-value-margin: $unit * .25 $unit * .5 $unit * .25 0 !default;
diff --git a/components/autocomplete/config.module.css b/components/autocomplete/config.module.css
new file mode 100644
index 000000000..2f98ac0d4
--- /dev/null
+++ b/components/autocomplete/config.module.css
@@ -0,0 +1,10 @@
+:root {
+ --autocomplete-border-size: calc(var(--input-field-height) / 7);
+ --autocomplete-color-primary-contrast: var(--color-primary-contrast);
+ --autocomplete-color-primary: var(--color-primary);
+ --autocomplete-overflow-max-height: 45vh;
+ --autocomplete-suggestion-active-background: var(--palette-grey-200);
+ --autocomplete-suggestion-padding: var(--unit);
+ --autocomplete-suggestions-background: var(--color-white);
+ --autocomplete-value-margin: calc(var(--unit) * 0.25) calc(var(--unit) * 0.5) calc(var(--unit) * 0.25) 0;
+}
diff --git a/components/autocomplete/index.d.ts b/components/autocomplete/index.d.ts
index 2826c62d9..3a02c8779 100644
--- a/components/autocomplete/index.d.ts
+++ b/components/autocomplete/index.d.ts
@@ -1,106 +1,4 @@
-import * as React from "react";
-import ReactToolbox from "../index";
-
-export interface AutocompleteTheme {
- /**
- * Used for a suggestion when it's active.
- */
- active?: string;
- /**
- * Used for the root element.
- */
- autocomplete?: string;
- /**
- * Used when the input is focused.
- */
- focus?: string;
- /**
- * Used to style the Input component.
- */
- input?: string;
- /**
- * Used for the label.
- */
- label?: string;
- /**
- * Used to style each suggestion.
- */
- suggestion?: string;
- /**
- * Used to style the suggestions container.
- */
- suggestions?: string;
- /**
- * Used for the suggestions when it's opening to the top.
- */
- up?: string;
- /**
- * Classname used for a single value.
- */
- value?: string;
- /**
- * Classname used for the values container.
- */
- values?: string;
-}
-
-interface AutocompleteProps extends ReactToolbox.Props {
- /**
- * Determines the opening direction. It can be auto, up or down.
- * @default auto
- */
- direction?: "auto" | "up" | "down";
- /**
- * If true, component will be disabled.
- */
- disabled?: boolean;
- /**
- * Sets the error string for the internal input element.
- * @default false
- */
- error?: string;
- /**
- * The text string to use for the floating label element.
- */
- label?: string;
- /**
- * If true, component can hold multiple values.
- */
- multiple?: boolean;
- /**
- * Callback function that is fired when the components's value changes.
- * @default auto
- */
- onChange?: Function;
- /**
- * Determines if the selected list is shown above or below input. It can be above or below.
- * @default above
- */
- selectedPosition?: "above" | "below";
- /**
- * If true, the list of suggestions will not be filtered when a value is selected.
- * @default false
- */
- showSuggestionsWHenValueIsSet?: boolean;
- /**
- * Object of key/values or array representing all items suggested.
- */
- source?: any;
- /**
- * Determines how suggestions are supplied.
- * @default start
- */
- suggestionMatch?: "start" | "anywhere" | "word";
- /**
- * Classnames object defining the component style.
- */
- theme?: AutocompleteTheme;
- /**
- * Value or array of values currently selected component.
- */
- value?: any;
-}
-
-export class Autocomplete extends React.Component { }
-
+import { Autocomplete } from './Autocomplete';
+export { AutocompleteProps, AutocompleteTheme } from './Autocomplete';
+export { Autocomplete };
export default Autocomplete;
diff --git a/components/autocomplete/index.js b/components/autocomplete/index.js
index fce2d72dc..4acb3accd 100644
--- a/components/autocomplete/index.js
+++ b/components/autocomplete/index.js
@@ -1,12 +1,12 @@
-import { AUTOCOMPLETE } from '../identifiers.js';
import { themr } from 'react-css-themr';
-import { autocompleteFactory } from './Autocomplete.js';
-import Chip from '../chip';
-import Input from '../input';
-import theme from './theme.scss';
+import { AUTOCOMPLETE } from '../identifiers';
+import { autocompleteFactory } from './Autocomplete';
+import { Chip } from '../chip';
+import { Input } from '../input';
+import theme from './theme.module.css';
const Autocomplete = autocompleteFactory(Chip, Input);
-const ThemedAutocomplete = themr(AUTOCOMPLETE, theme)(Autocomplete);
+const ThemedAutocomplete = themr(AUTOCOMPLETE, theme, { withRef: true })(Autocomplete);
export default ThemedAutocomplete;
export { ThemedAutocomplete as Autocomplete };
diff --git a/components/autocomplete/readme.md b/components/autocomplete/readme.md
index 79b2fdee6..0a2abcbe4 100644
--- a/components/autocomplete/readme.md
+++ b/components/autocomplete/readme.md
@@ -41,35 +41,42 @@ If you want to provide a theme via context, the component key is `RTAutocomplete
## Properties
-| Name | Type | Default | Description|
+| Name | Type | Default | Description|
|:-----|:-----|:-----|:-----|
-| `allowCreate` | `Bool` | `false` | Determines if user can create a new option with the current typed value |
-| `className` | `String` | `''` | Sets a class to style of the Component.|
-| `direction` | `String` | `auto` | Determines the opening direction. It can be `auto`, `top` or `down`.|
-| `disabled` | `Bool` | `false` | If true, component will be disabled.|
-| `error` | `String` | | Sets the error string for the internal input element.|
-| `label` | `String` | | The text string to use for the floating label element.|
-| `multiple` | `Bool` | `true` | If true, component can hold multiple values.|
-| `onBlur` | `Function` | | Callback function that is fired when component is blurred.|
-| `onChange` | `Function` | | Callback function that is fired when the components's value changes.|
-| `onFocus` | `Function` | | Callback function that is fired when component is focused.|
-| `source` | `Object` or `Array` | | Object of key/values or array representing all items suggested. |
-| `selectedPosition` | `String` | `above` | Determines if the selected list is shown above or below input. It can be `above` or `below`. |
-| `showSuggestionsWhenValueIsSet` | `Bool` | `false` | If true, the list of suggestions will not be filtered when a value is selected, until the query is modified. |
-| `suggestionMatch` | `String` | `start` | Determines how suggestions are supplied. It can be `start` (query matches the start of a suggestion), `anywhere` (query matches anywhere inside the suggestion), or `word` (query matches the start of a word in the suggestion). |
-| `value` | `String` or `Array` | | Value or array of values currently selected component.|
+| `allowCreate` | `Bool` | `false` | Determines if user can create a new option with the current typed value |
+| `className` | `String` | `''` | Sets a class to style of the Component.|
+| `direction` | `String` | `auto` | Determines the opening direction. It can be `auto`, `up` or `down`. |
+| `disabled` | `Bool` | `false` | If true, component will be disabled. |
+| `error` | `String` or `Node` | | Sets the error string for the internal input element. |
+| `keepFocusOnChange` | `Bool` | `false` | Whether component should keep focus after value change. |
+| `label` | `String` or `Node` | | The text string to use for the floating label element. |
+| `multiple` | `Bool` | `true` | If true, component can hold multiple values. |
+| `onBlur` | `Function` | | Callback function that is fired when component is blurred. |
+| `onChange` | `Function` | | Callback function that is fired when the components's value changes. |
+| `onFocus` | `Function` | | Callback function that is fired when component is focused. |
+| `onKeyDown` | `Function` | | Callback function that is fired when a key is pressed down. |
+| `onKeyUp` | `Function` | | Callback function that is fired when a key is lifted up. |
+| `onQueryChange` | `Function` | | Callback function that is fired when the components's query input value changes. |
+| `query` | `String` | | This property has to be used in case the `source` is not static and will be changing during search for `multiple={false}` autocomplete, content of the `query` has to be managed by the `onQueryChange` callback. |
+| `source` | `Object` or `Array` | | Object of key/values or array representing all items suggested. |
+| `selectedPosition` | `String` | `above` | Determines if the selected list is shown above or below input. It can be `above`, `below` or `none`. |
+| `showSelectedWhenNotInSource` | `Bool` | `false` | Determines if the selected list is shown if the `value` keys don't exist in the source. Only works if passing the `value` prop as an Object. |
+| `showSuggestionsWhenValueIsSet` | `Bool` | `false` | If true, the list of suggestions will not be filtered when a value is selected, until the query is modified. |
+| `suggestionMatch` | `String` | `start` | Determines how suggestions are supplied. It can be `start` (query matches the start of a suggestion), `anywhere` (query matches anywhere inside the suggestion), `word` (query matches the start of a word in the suggestion) or `disabled` (disable filtering of provided source, all items are shown). |
+| `value` | `String`, `Array` or `Object` | | Value or array of values currently selected component. |
Additional properties will be passed to the Input Component so you can use `hint`, `name` ... etc.
## Theme
+This component uses an `Input` under the covers. The theme object is passed down namespaced under `input` keyword. This means you can use the same theme classNames from `Input` component but namespaced with `input`. For example, to style the label you have to use `inputLabel` className.
+
| Name | Description|
|:---------|:-----------|
| `active` | Used for a suggestion when it's active.|
| `autocomplete` | Used for the root element.|
| `focus` | Used when the input is focused.|
| `input` | Used to style the `Input` component.|
-| `label` | Used for the label.|
| `suggestion` | Used to style each suggestion.|
| `suggestions` | Used to style the suggestions container.|
| `up` | Used for the suggestions when it's opening to the top.|
diff --git a/components/autocomplete/theme.module.css b/components/autocomplete/theme.module.css
new file mode 100644
index 000000000..069e1e4f1
--- /dev/null
+++ b/components/autocomplete/theme.module.css
@@ -0,0 +1,89 @@
+@import 'http://github.com/colors.module.css';
+@import 'http://github.com/variables.module.css';
+@import 'http://github.com/input/config.module.css';
+@import 'http://github.com/config.module.css';
+
+.suggestions {
+ background-color: var(--autocomplete-suggestions-background);
+ list-style: none;
+ max-height: 0;
+ overflow-x: hidden;
+ overflow-y: auto;
+ padding: 0;
+ position: absolute;
+ transition-duration: var(--animation-duration);
+ transition-property: max-height, box-shadow;
+ transition-timing-function: var(--animation-curve-default);
+ visibility: hidden;
+ width: 100%;
+ z-index: var(--z-index-high);
+
+ &::-webkit-scrollbar {
+ height: 0;
+ width: 0;
+ }
+
+ &:not(.up) {
+ margin-top: calc(-1 * var(--input-padding));
+ }
+
+ &.up {
+ bottom: 0;
+ }
+}
+
+.autocomplete {
+ padding: var(--unit) 0;
+ position: relative;
+
+ @apply --reset;
+
+ &.focus {
+ & .suggestions {
+ box-shadow: var(--zdepth-shadow-1);
+ max-height: var(--autocomplete-overflow-max-height);
+ -ms-overflow-style: none;
+ visibility: visible;
+ }
+ }
+}
+
+.values {
+ flex-direction: row;
+ flex-wrap: wrap;
+ list-style: none;
+ margin: 0;
+ padding: 0 0 calc(var(--unit) / 2) 0;
+}
+
+.value {
+ margin: var(--autocomplete-value-margin);
+}
+
+.suggestion {
+ cursor: pointer;
+ font-size: var(--input-field-font-size);
+ padding: var(--autocomplete-suggestion-padding);
+
+ &.active {
+ background-color: var(--autocomplete-suggestion-active-background);
+ }
+}
+
+.input {
+ position: relative;
+
+ &::after {
+ border-left: var(--autocomplete-border-size) solid transparent;
+ border-right: var(--autocomplete-border-size) solid transparent;
+ border-top: var(--autocomplete-border-size) solid var(--input-text-bottom-border-color);
+ content: '';
+ height: 0;
+ pointer-events: none;
+ position: absolute;
+ right: var(--input-chevron-offset);
+ top: 50%;
+ transition: transform var(--animation-duration) var(--animation-curve-default);
+ width: 0;
+ }
+}
diff --git a/components/autocomplete/theme.scss b/components/autocomplete/theme.scss
deleted file mode 100644
index 320f8c8ef..000000000
--- a/components/autocomplete/theme.scss
+++ /dev/null
@@ -1,85 +0,0 @@
-@import "http://github.com/colors";
-@import "http://github.com/globals";
-@import "http://github.com/mixins";
-@import "http://github.com/config";
-@import "http://github.com/input/config";
-
-.autocomplete {
- position: relative;
- padding: $unit 0;
- &.focus {
- .label {
- color: $autocomplete-color-primary;
- }
- .suggestions {
- max-height: $autocomplete-overflow-max-height;
- visibility: visible;
- box-shadow: $zdepth-shadow-1;
- }
- }
-}
-
-.label {
- font-size: $font-size-tiny;
- color: $color-text-secondary;
- transition: color $animation-duration $animation-curve-default;
-}
-
-.values {
- flex-direction: row;
- flex-wrap: wrap;
- padding-bottom: $unit / 2;
-}
-
-.value {
- margin: $autocomplete-value-margin;
-}
-
-.suggestions {
- @include no-webkit-scrollbar;
- position: absolute;
- z-index: $z-index-high;
- width: 100%;
- max-height: 0;
- overflow-x: hidden;
- overflow-y: auto;
- visibility: hidden;
- background-color: $autocomplete-suggestions-background;
- transition-timing-function: $animation-curve-default;
- transition-duration: $animation-duration;
- transition-property: max-height, box-shadow;
- &:not(.up) {
- margin-top: - $input-padding;
- }
- &.up {
- bottom: 0;
- }
-}
-
-.suggestion {
- padding: $autocomplete-suggestion-padding;
- font-size: $input-field-font-size;
- cursor: pointer;
- &.active {
- background-color: $autocomplete-suggestion-active-background;
- }
-}
-
-.input {
- position: relative;
- &:after {
- $size: ($input-field-height / 7);
- $border: $size solid transparent;
- position: absolute;
- top: 50%;
- right: $input-chevron-offset;
- width: 0;
- height: 0;
- pointer-events: none;
- content: "";
- border-top: $size solid $input-text-bottom-border-color;
- border-right: $border;
- border-left: $border;
- transition: transform $animation-duration $animation-curve-default;
- }
-}
diff --git a/lib/avatar/index.d.ts b/components/avatar/Avatar.d.ts
similarity index 82%
rename from lib/avatar/index.d.ts
rename to components/avatar/Avatar.d.ts
index c2ddc6950..15c7af048 100644
--- a/lib/avatar/index.d.ts
+++ b/components/avatar/Avatar.d.ts
@@ -16,23 +16,24 @@ export interface AvatarTheme {
letter?: string;
}
-interface AvatarProps extends ReactToolbox.Props {
+export interface AvatarProps extends ReactToolbox.Props {
/**
* Children to pass through the component.
*/
children?: React.ReactNode;
/**
* Set to true if your image is not squared so it will be used as a cover for the element.
+ * @default false
*/
cover?: boolean;
/**
* A key to identify an Icon from Material Design Icons or a custom Icon Element.
*/
- icon?: React.ReactNode | string;
+ icon?: React.ReactNode;
/**
* An image source or an image element.
*/
- image?: React.ReactNode | string;
+ image?: React.ReactNode;
/**
* Classnames object defining the component style.
*/
@@ -41,6 +42,10 @@ interface AvatarProps extends ReactToolbox.Props {
* A title for the image. If no image is provided, the first letter will be displayed as the avatar.
*/
title?: string;
+ /**
+ * Additional properties for component root element.
+ */
+ [key: string]: any;
}
export class Avatar extends React.Component { }
diff --git a/components/avatar/Avatar.js b/components/avatar/Avatar.js
index 9023663b2..7dfbfc0fb 100644
--- a/components/avatar/Avatar.js
+++ b/components/avatar/Avatar.js
@@ -1,21 +1,25 @@
-import React, { PropTypes } from 'react';
+import React from 'react';
+import PropTypes from 'prop-types';
import classnames from 'classnames';
import { themr } from 'react-css-themr';
-import { AVATAR } from '../identifiers.js';
-import InjectFontIcon from '../font_icon/FontIcon.js';
+import { AVATAR } from '../identifiers';
+import InjectFontIcon from '../font_icon/FontIcon';
const factory = (FontIcon) => {
- const Avatar = ({children, className, cover, icon, image, theme, title, ...other}) => (
-