From a711bb3ea6d5d49151c73ee31fac81833c2755a3 Mon Sep 17 00:00:00 2001 From: Emily Plummer Date: Tue, 13 Aug 2019 17:10:01 -0700 Subject: [PATCH 001/113] create getting started docs --- pages/components/docs/getting-started.md | 50 +++++++++++++++++++++++- 1 file changed, 49 insertions(+), 1 deletion(-) diff --git a/pages/components/docs/getting-started.md b/pages/components/docs/getting-started.md index 6e63bf5ea90..1ebd4932aa5 100644 --- a/pages/components/docs/getting-started.md +++ b/pages/components/docs/getting-started.md @@ -1 +1,49 @@ -### Coming soon +# Getting Started + +To get started using Primer Components, run `npm i @primer/components` in your application. + +You can now start importing Primer Components! There are a few ways to import Primer Components. You can either: + +Import them individually from the main bundle + +``` +import {Box, Flex} from '@primer/components' +``` + +or, if you've configured your application to tree-shake with webpack, you can import them indivdually from the `src` folder: + +``` +import Box from '@primer/components/src/Box' +import Flex from '@primer/components/src/Flex' + +``` + + +## Installing Peer Dependencies + +Primer Components is shipped with a few libraries labeled as peer dependencies. These libraries are separated because they are commonly already installed in the host project. This keeps the bundle size down and allows you to specify the version number you'd like in your own project. + +Before getting started using Primer Components, make sure that the following libraries are installed in your host project: + +- `styled-components` at versions 4.0.0 or higher +- `react` at versions 16.8.0 and higher + + +## BaseStyles + +In order to set basic color, font-family, and line-heights across your project, you will need to establish base Primer styles for your app by wrapping all of your Primer components in ``: + +```jsx +import {BaseStyles, Box, Heading} from '@primer/components' + +export default MyApp () => ( + + + Hello, world! +

This will get Primer text styles.

+
+
+) +``` + +This will set the `color`, `font-family`, and `line-height` CSS properties to the same ones used [to style `` in Primer CSS](https://github.com/primer/css/blob/master/src/base/base.scss#L15-L20). From 00c7cc90daa639f0ef8fb62bb05bf3f6b78faedc Mon Sep 17 00:00:00 2001 From: Emily Plummer Date: Tue, 13 Aug 2019 17:14:04 -0700 Subject: [PATCH 002/113] add getting started to side nav --- pages/doc-components/SideNav.js | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/pages/doc-components/SideNav.js b/pages/doc-components/SideNav.js index b6efde09ec7..bd4700721ae 100644 --- a/pages/doc-components/SideNav.js +++ b/pages/doc-components/SideNav.js @@ -41,6 +41,17 @@ const SideNav = ({router}) => ( > + + + Getting Started + + Date: Thu, 15 Aug 2019 15:27:24 -0700 Subject: [PATCH 003/113] 5 things you need to know --- pages/components/docs/5-things | 57 ++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 pages/components/docs/5-things diff --git a/pages/components/docs/5-things b/pages/components/docs/5-things new file mode 100644 index 00000000000..eb30d5f706e --- /dev/null +++ b/pages/components/docs/5-things @@ -0,0 +1,57 @@ +# 5 things you need to know about Primer Components + +1. The `as` prop +The `as` prop is a feature that all of our components get from [styled-components]. It allows you to pass a HTML tag or another component to a Primer Component to be rendered as the base tag of that component. + + +For example, say you are using a `Button` component, and you really need to apply `Flex` styles to it. You can compose `Flex` and `Button` like so: + +``` + From 1938aea7fabbf620e3171c5dc65c4351fccc89dc Mon Sep 17 00:00:00 2001 From: Emily Plummer Date: Mon, 19 Aug 2019 08:53:27 -0700 Subject: [PATCH 017/113] update docs --- pages/components/docs/core-concepts | 54 +++++++++++++---------------- 1 file changed, 24 insertions(+), 30 deletions(-) diff --git a/pages/components/docs/core-concepts b/pages/components/docs/core-concepts index 18fb41c9f11..20c0ee493ce 100644 --- a/pages/components/docs/core-concepts +++ b/pages/components/docs/core-concepts @@ -1,35 +1,6 @@ # Core concepts -## The `as` prop -The `as` prop is a feature that all of our components get from [styled-components](https://www.styled-components.com). It allows you to pass a HTML tag or another component to a Primer Component to be rendered as the base tag of that component. - - -For example, say you are using a `Button` component, and you really need to apply `Flex` styles to it. You can compose `Flex` and `Button` like so: - -``` - + +``` From f97d05c5164f16085112bd261a42cefd63842dbd Mon Sep 17 00:00:00 2001 From: Emily Plummer Date: Mon, 19 Aug 2019 08:53:44 -0700 Subject: [PATCH 018/113] ignore cache --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index ce81f9ae886..abac98732db 100644 --- a/.gitignore +++ b/.gitignore @@ -7,3 +7,4 @@ coverage/ dist/ node_modules +.cache From 05d637e9a1cb4c281dd43069ccd48a1ea012cce1 Mon Sep 17 00:00:00 2001 From: Emily Plummer Date: Mon, 19 Aug 2019 09:17:15 -0700 Subject: [PATCH 019/113] update docs --- pages/components/docs/core-concepts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pages/components/docs/core-concepts b/pages/components/docs/core-concepts index 20c0ee493ce..336117cbfe5 100644 --- a/pages/components/docs/core-concepts +++ b/pages/components/docs/core-concepts @@ -25,6 +25,8 @@ When push comes to shove and you just _really_ need to add a custom CSS rule, yo ``` +Please note that you will need to have the **[styled-components babel plugin](https://www.styled-components.com/docs/tooling#babel-plugin)** set up in your project in order to use the `css` prop. + ## Types of components We categorize our components into 3 general types. Building block components, pattern components, and helper components. Understanding how these types of components interact with each other can help you better understand how to get the most out of Primer Components. From 4580a593d0c8d78c9a763cde717ee270bb0df29a Mon Sep 17 00:00:00 2001 From: Emily Plummer Date: Tue, 20 Aug 2019 09:17:08 -0700 Subject: [PATCH 020/113] update version --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 89d4456c914..26ec45a86c8 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@primer/components", - "version": "13.3.1", + "version": "13.3.2", "description": "Primer react components", "main": "dist/index.umd.js", "module": "dist/index.esm.js", From 47d1a9234ac19d5979ee3448dcfcff5437aa5785 Mon Sep 17 00:00:00 2001 From: Emily Plummer Date: Wed, 24 Jul 2019 15:57:52 -0700 Subject: [PATCH 021/113] update tests --- src/__tests__/__snapshots__/Dropdown.js.snap | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/__tests__/__snapshots__/Dropdown.js.snap b/src/__tests__/__snapshots__/Dropdown.js.snap index 84169ffd2d2..2f72f09e850 100644 --- a/src/__tests__/__snapshots__/Dropdown.js.snap +++ b/src/__tests__/__snapshots__/Dropdown.js.snap @@ -119,12 +119,12 @@ exports[`Dropdown matches the snapshots 1`] = `
hi
Date: Thu, 25 Jul 2019 12:22:29 -0700 Subject: [PATCH 022/113] update tests --- package-lock.json | 482 ++++++++++++++++++++++++++------------- package.json | 3 +- src/__tests__/Details.js | 77 +------ 3 files changed, 338 insertions(+), 224 deletions(-) diff --git a/package-lock.json b/package-lock.json index a3aa4b8a1bb..ea0fc076846 100644 --- a/package-lock.json +++ b/package-lock.json @@ -905,6 +905,17 @@ "integrity": "sha512-h4t4jFjtm1YV7UirAFuSuFGyLa+NNxjdkq6DpFLANNQY5rHueFZHVY+8Cu1HYVP6DrheB0kv4m5xPjo7eKT7yQ==", "dev": true }, + "@jest/types": { + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.8.0.tgz", + "integrity": "sha512-g17UxVr2YfBtaMUxn9u/4+siG1ptg9IGYAYwvpwn61nBg779RXnjE/m7CxYcIzEt0AbHZZAHSEZNhkE2WxURVg==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^1.1.1", + "@types/yargs": "^12.0.9" + } + }, "@mdx-js/loader": { "version": "0.15.0", "resolved": "https://registry.npmjs.org/@mdx-js/loader/-/loader-0.15.0.tgz", @@ -992,6 +1003,12 @@ "resolved": "https://registry.npmjs.org/@reach/utils/-/utils-0.2.3.tgz", "integrity": "sha512-zM9rA8jDchr05giMhL95dPeYkK67cBQnIhCVrOKKqgWGsv+2GE/HZqeptvU4zqs0BvIqsThwov+YxVNVh5csTQ==" }, + "@sheerun/mutationobserver-shim": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@sheerun/mutationobserver-shim/-/mutationobserver-shim-0.3.2.tgz", + "integrity": "sha512-vTCdPp/T/Q3oSqwHmZ5Kpa9oI7iLtGl3RQaA/NyLHikvcrPxACkkKVr/XzkSPJWXHRhKGzVvb0urJsbMlRxi1Q==", + "dev": true + }, "@styled-system/background": { "version": "5.0.5", "resolved": "https://registry.npmjs.org/@styled-system/background/-/background-5.0.5.tgz", @@ -1197,18 +1214,134 @@ } } }, + "@testing-library/dom": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-5.6.0.tgz", + "integrity": "sha512-nAsRvQLr/b6TGNjuHMEbWXCNPLrQYnzqa/KKQZL7wBOtfptUxsa4Ah9aqkHW0ZmCSFmUDj4nFUxWPVTeMu0iCw==", + "dev": true, + "requires": { + "@babel/runtime": "^7.4.5", + "@sheerun/mutationobserver-shim": "^0.3.2", + "aria-query": "3.0.0", + "pretty-format": "^24.8.0", + "wait-for-expect": "^1.2.0" + }, + "dependencies": { + "@babel/runtime": { + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.5.5.tgz", + "integrity": "sha512-28QvEGyQyNkB0/m2B4FU7IEZGK2NUrcMtT6BZEFALTguLk+AUT6ofsHtPk5QyjAdUkpMJ+/Em+quwz4HOt30AQ==", + "dev": true, + "requires": { + "regenerator-runtime": "^0.13.2" + } + }, + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "aria-query": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-3.0.0.tgz", + "integrity": "sha1-ZbP8wcoRVajJrmTW7uKX8V1RM8w=", + "dev": true, + "requires": { + "ast-types-flow": "0.0.7", + "commander": "^2.11.0" + } + }, + "pretty-format": { + "version": "24.8.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-24.8.0.tgz", + "integrity": "sha512-P952T7dkrDEplsR+TuY7q3VXDae5Sr7zmQb12JU/NDQa/3CH7/QW0yvqLcGN6jL+zQFKaoJcPc+yJxMTGmosqw==", + "dev": true, + "requires": { + "@jest/types": "^24.8.0", + "ansi-regex": "^4.0.0", + "ansi-styles": "^3.2.0", + "react-is": "^16.8.4" + } + }, + "regenerator-runtime": { + "version": "0.13.3", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz", + "integrity": "sha512-naKIZz2GQ8JWh///G7L3X6LaQUAMp2lvb1rvwwsURe/VXwD6VMfr+/1NuNw3ag8v2kY1aQ/go5SNn79O9JU7yw==", + "dev": true + } + } + }, + "@testing-library/react": { + "version": "8.0.6", + "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-8.0.6.tgz", + "integrity": "sha512-/4oeS0eatnHvAf9yuxIg1/8pjl1OrtWN7SLpDFEdxFjllIAEL09xXhA88C93vvlN+8enZa+xlXJ8ecohECT6Yg==", + "dev": true, + "requires": { + "@babel/runtime": "^7.5.4", + "@testing-library/dom": "^5.5.4" + }, + "dependencies": { + "@babel/runtime": { + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.5.5.tgz", + "integrity": "sha512-28QvEGyQyNkB0/m2B4FU7IEZGK2NUrcMtT6BZEFALTguLk+AUT6ofsHtPk5QyjAdUkpMJ+/Em+quwz4HOt30AQ==", + "dev": true, + "requires": { + "regenerator-runtime": "^0.13.2" + } + }, + "regenerator-runtime": { + "version": "0.13.3", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz", + "integrity": "sha512-naKIZz2GQ8JWh///G7L3X6LaQUAMp2lvb1rvwwsURe/VXwD6VMfr+/1NuNw3ag8v2kY1aQ/go5SNn79O9JU7yw==", + "dev": true + } + } + }, "@types/estree": { "version": "0.0.39", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", "dev": true }, + "@types/istanbul-lib-coverage": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz", + "integrity": "sha512-hRJD2ahnnpLgsj6KWMYSrmXkM3rm2Dl1qkx6IOFD5FnuNPXJIG5L0dhgKXCYTRMGzU4n0wImQ/xfmRc4POUFlg==", + "dev": true + }, + "@types/istanbul-lib-report": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-1.1.1.tgz", + "integrity": "sha512-3BUTyMzbZa2DtDI2BkERNC6jJw2Mr2Y0oGI7mRxYNBPxppbtEK1F66u3bKwU2g+wxwWI7PAoRpJnOY1grJqzHg==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "*" + } + }, + "@types/istanbul-reports": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.1.tgz", + "integrity": "sha512-UpYjBi8xefVChsCoBpKShdxTllC9pwISirfoZsUa2AAdQg/Jd2KQGtSbw+ya7GPo7x/wAPlH6JBhKhAsXUEZNA==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "*", + "@types/istanbul-lib-report": "*" + } + }, "@types/node": { "version": "10.11.0", "resolved": "https://registry.npmjs.org/@types/node/-/node-10.11.0.tgz", "integrity": "sha512-R4Dvw6KjSYn/SpvjRchBOwXr14vVVcFXCtnM3f0aLvlJS8a599rrcEoihcP2/+Z/f75E5GNPd4aWM7j1yei9og==", "dev": true }, + "@types/yargs": { + "version": "12.0.12", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-12.0.12.tgz", + "integrity": "sha512-SOhuU4wNBxhhTHxYaiG5NY4HBhDIDnJF60GU+2LqHAdKKer86//e4yg69aENCtQ04n0ovz+tq2YPME5t5yp4pw==", + "dev": true + }, "@webassemblyjs/ast": { "version": "1.7.8", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.7.8.tgz", @@ -1469,7 +1602,7 @@ }, "acorn-jsx": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz", + "resolved": "http://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz", "integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=", "dev": true, "requires": { @@ -1478,7 +1611,7 @@ "dependencies": { "acorn": { "version": "3.3.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", + "resolved": "http://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=", "dev": true } @@ -1602,7 +1735,7 @@ }, "readable-stream": { "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "dev": true, "requires": { @@ -1994,7 +2127,7 @@ }, "chalk": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { @@ -2307,7 +2440,7 @@ }, "babel-plugin-istanbul": { "version": "4.1.6", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-4.1.6.tgz", + "resolved": "http://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-4.1.6.tgz", "integrity": "sha512-PWP9FQ1AhZhS01T/4qLSKoHGY/xvkZdVBGlKM/HuxxS3+sC66HhTNR7+MpbO/so/cz/wY94MeSWJuP1hXIPfwQ==", "dev": true, "requires": { @@ -2363,67 +2496,67 @@ }, "babel-plugin-syntax-async-functions": { "version": "6.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz", + "resolved": "http://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz", "integrity": "sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU=", "dev": true }, "babel-plugin-syntax-async-generators": { "version": "6.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-generators/-/babel-plugin-syntax-async-generators-6.13.0.tgz", + "resolved": "http://registry.npmjs.org/babel-plugin-syntax-async-generators/-/babel-plugin-syntax-async-generators-6.13.0.tgz", "integrity": "sha1-a8lj67FuzLrmuStZbrfzXDQqi5o=", "dev": true }, "babel-plugin-syntax-class-constructor-call": { "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-class-constructor-call/-/babel-plugin-syntax-class-constructor-call-6.18.0.tgz", + "resolved": "http://registry.npmjs.org/babel-plugin-syntax-class-constructor-call/-/babel-plugin-syntax-class-constructor-call-6.18.0.tgz", "integrity": "sha1-nLnTn+Q8hgC+yBRkVt3L1OGnZBY=", "dev": true }, "babel-plugin-syntax-class-properties": { "version": "6.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-class-properties/-/babel-plugin-syntax-class-properties-6.13.0.tgz", + "resolved": "http://registry.npmjs.org/babel-plugin-syntax-class-properties/-/babel-plugin-syntax-class-properties-6.13.0.tgz", "integrity": "sha1-1+sjt5oxf4VDlixQW4J8fWysJ94=", "dev": true }, "babel-plugin-syntax-decorators": { "version": "6.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-decorators/-/babel-plugin-syntax-decorators-6.13.0.tgz", + "resolved": "http://registry.npmjs.org/babel-plugin-syntax-decorators/-/babel-plugin-syntax-decorators-6.13.0.tgz", "integrity": "sha1-MSVjtNvePMgGzuPkFszurd0RrAs=", "dev": true }, "babel-plugin-syntax-dynamic-import": { "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-dynamic-import/-/babel-plugin-syntax-dynamic-import-6.18.0.tgz", + "resolved": "http://registry.npmjs.org/babel-plugin-syntax-dynamic-import/-/babel-plugin-syntax-dynamic-import-6.18.0.tgz", "integrity": "sha1-jWomIpyDdFqZgqRBBRVyyqF5sdo=", "dev": true }, "babel-plugin-syntax-exponentiation-operator": { "version": "6.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz", + "resolved": "http://registry.npmjs.org/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz", "integrity": "sha1-nufoM3KQ2pUoggGmpX9BcDF4MN4=", "dev": true }, "babel-plugin-syntax-export-extensions": { "version": "6.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-export-extensions/-/babel-plugin-syntax-export-extensions-6.13.0.tgz", + "resolved": "http://registry.npmjs.org/babel-plugin-syntax-export-extensions/-/babel-plugin-syntax-export-extensions-6.13.0.tgz", "integrity": "sha1-cKFITw+QiaToStRLrDU8lbmxJyE=", "dev": true }, "babel-plugin-syntax-flow": { "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-flow/-/babel-plugin-syntax-flow-6.18.0.tgz", + "resolved": "http://registry.npmjs.org/babel-plugin-syntax-flow/-/babel-plugin-syntax-flow-6.18.0.tgz", "integrity": "sha1-TDqyCiryaqIM0lmVw5jE63AxDI0=", "dev": true }, "babel-plugin-syntax-jsx": { "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz", + "resolved": "http://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz", "integrity": "sha1-CvMqmm4Tyno/1QaeYtew9Y0NiUY=", "dev": true }, "babel-plugin-syntax-object-rest-spread": { "version": "6.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz", + "resolved": "http://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz", "integrity": "sha1-/WU28rzhODb/o6VFjEkDpZe7O/U=", "dev": true }, @@ -2744,7 +2877,7 @@ }, "regjsgen": { "version": "0.2.0", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", + "resolved": "http://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=", "dev": true }, @@ -3254,7 +3387,7 @@ }, "browserify-aes": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "resolved": "http://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", "dev": true, "requires": { @@ -3291,7 +3424,7 @@ }, "browserify-rsa": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", + "resolved": "http://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", "dev": true, "requires": { @@ -3376,7 +3509,7 @@ }, "buffer": { "version": "4.9.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", + "resolved": "http://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", "dev": true, "requires": { @@ -3578,17 +3711,29 @@ "dev": true }, "cheerio": { - "version": "1.0.0-rc.2", - "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.2.tgz", - "integrity": "sha1-S59TqBsn5NXawxwP/Qz6A8xoMNs=", + "version": "1.0.0-rc.3", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.3.tgz", + "integrity": "sha512-0td5ijfUPuubwLUu0OBoe98gZj8C/AA+RW3v67GPlGOrvxWjZmBXiBCRU+I8VEiNyJzjth40POfHiz2RB3gImA==", "dev": true, "requires": { "css-select": "~1.2.0", - "dom-serializer": "~0.1.0", + "dom-serializer": "~0.1.1", "entities": "~1.1.1", "htmlparser2": "^3.9.1", "lodash": "^4.15.0", "parse5": "^3.0.1" + }, + "dependencies": { + "dom-serializer": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.1.tgz", + "integrity": "sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA==", + "dev": true, + "requires": { + "domelementtype": "^1.3.0", + "entities": "^1.1.1" + } + } } }, "chokidar": { @@ -3791,12 +3936,6 @@ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", "dev": true }, - "colors": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/colors/-/colors-0.5.1.tgz", - "integrity": "sha1-fQAj6usVTo7p/Oddy5I9DtFmd3Q=", - "dev": true - }, "combined-stream": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz", @@ -3868,7 +4007,7 @@ }, "readable-stream": { "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "dev": true, "requires": { @@ -4005,7 +4144,7 @@ }, "create-hash": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "resolved": "http://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", "dev": true, "requires": { @@ -4018,7 +4157,7 @@ }, "create-hmac": { "version": "1.1.7", - "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "resolved": "http://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", "dev": true, "requires": { @@ -4052,13 +4191,13 @@ "dependencies": { "node-fetch": { "version": "2.1.2", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.1.2.tgz", + "resolved": "http://registry.npmjs.org/node-fetch/-/node-fetch-2.1.2.tgz", "integrity": "sha1-q4hOjn5X44qUR1POxwb3iNF2i7U=", "dev": true }, "whatwg-fetch": { "version": "2.0.4", - "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz", + "resolved": "http://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz", "integrity": "sha512-dcQ1GWpOD/eEQ97k66aiEVpNnapVj90/+R+SXTPYGHpYBBypfKJEQjLrvMZ7YXbKm21gXd4NcuxUTjiv1YtLng==", "dev": true } @@ -4573,7 +4712,7 @@ }, "diffie-hellman": { "version": "5.0.3", - "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "resolved": "http://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", "dev": true, "requires": { @@ -4694,7 +4833,7 @@ }, "duplexer": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", + "resolved": "http://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=", "dev": true }, @@ -4718,7 +4857,7 @@ }, "readable-stream": { "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "dev": true, "requires": { @@ -4840,18 +4979,20 @@ "dev": true }, "enzyme": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/enzyme/-/enzyme-3.5.1.tgz", - "integrity": "sha512-nRC9k3BbkcsZvheCfsbDH4SwG7pjhqv6SOwb1/pfR85WhLUcfG9zEJLId/8RAiDNNiDc+unlwMnN6kywlYucAg==", + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/enzyme/-/enzyme-3.10.0.tgz", + "integrity": "sha512-p2yy9Y7t/PFbPoTvrWde7JIYB2ZyGC+NgTNbVEGvZ5/EyoYSr9aG/2rSbVvyNvMHEhw9/dmGUJHWtfQIEiX9pg==", "dev": true, "requires": { "array.prototype.flat": "^1.2.1", "cheerio": "^1.0.0-rc.2", "function.prototype.name": "^1.1.0", "has": "^1.0.3", + "html-element-map": "^1.0.0", "is-boolean-object": "^1.0.0", "is-callable": "^1.1.4", "is-number-object": "^1.0.3", + "is-regex": "^1.0.4", "is-string": "^1.0.4", "is-subset": "^0.1.1", "lodash.escape": "^4.0.1", @@ -4984,7 +5125,7 @@ }, "eslint": { "version": "4.19.1", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-4.19.1.tgz", + "resolved": "http://registry.npmjs.org/eslint/-/eslint-4.19.1.tgz", "integrity": "sha512-bT3/1x1EbZB7phzYu7vCr1v3ONuzDtX8WjuM9c0iYxe+cq+pwcKEoQjl7zd3RpC6YOLgnSy3cTN58M2jcoPDIQ==", "dev": true, "requires": { @@ -5108,7 +5249,7 @@ "dependencies": { "inquirer": { "version": "5.2.0", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-5.2.0.tgz", + "resolved": "http://registry.npmjs.org/inquirer/-/inquirer-5.2.0.tgz", "integrity": "sha512-E9BmnJbAKLPGonz0HeWHtbKf+EeSP93paWO3ZYoUpq/aowXvYGjjCSuashhXPpzbArIjBbji39THkxTz9ZeEUQ==", "dev": true, "requires": { @@ -5512,7 +5653,7 @@ }, "external-editor": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.2.0.tgz", + "resolved": "http://registry.npmjs.org/external-editor/-/external-editor-2.2.0.tgz", "integrity": "sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A==", "dev": true, "requires": { @@ -5821,7 +5962,7 @@ }, "readable-stream": { "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "dev": true, "requires": { @@ -5927,7 +6068,7 @@ }, "chalk": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { @@ -5973,7 +6114,7 @@ }, "readable-stream": { "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "dev": true, "requires": { @@ -6048,8 +6189,7 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true, - "optional": true + "dev": true }, "aproba": { "version": "1.2.0", @@ -6073,15 +6213,13 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true, - "optional": true + "dev": true }, "brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, - "optional": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -6098,22 +6236,19 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", - "dev": true, - "optional": true + "dev": true }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true, - "optional": true + "dev": true }, "console-control-strings": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", - "dev": true, - "optional": true + "dev": true }, "core-util-is": { "version": "1.0.2", @@ -6244,8 +6379,7 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true, - "optional": true + "dev": true }, "ini": { "version": "1.3.5", @@ -6259,7 +6393,6 @@ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", "dev": true, - "optional": true, "requires": { "number-is-nan": "^1.0.0" } @@ -6276,7 +6409,6 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "dev": true, - "optional": true, "requires": { "brace-expansion": "^1.1.7" } @@ -6285,15 +6417,13 @@ "version": "0.0.8", "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", - "dev": true, - "optional": true + "dev": true }, "minipass": { "version": "2.2.4", "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.2.4.tgz", "integrity": "sha512-hzXIWWet/BzWhYs2b+u7dRHlruXhwdgvlTMDKC6Cb1U7ps6Ac6yQlR39xsbjWJE377YTCtKwIXIpJ5oP+j5y8g==", "dev": true, - "optional": true, "requires": { "safe-buffer": "^5.1.1", "yallist": "^3.0.0" @@ -6314,7 +6444,6 @@ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", "dev": true, - "optional": true, "requires": { "minimist": "0.0.8" } @@ -6403,8 +6532,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", - "dev": true, - "optional": true + "dev": true }, "object-assign": { "version": "4.1.1", @@ -6418,7 +6546,6 @@ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "dev": true, - "optional": true, "requires": { "wrappy": "1" } @@ -6514,8 +6641,7 @@ "version": "5.1.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", - "dev": true, - "optional": true + "dev": true }, "safer-buffer": { "version": "2.1.2", @@ -6557,7 +6683,6 @@ "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "dev": true, - "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -6579,7 +6704,6 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, - "optional": true, "requires": { "ansi-regex": "^2.0.0" } @@ -6628,15 +6752,13 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true, - "optional": true + "dev": true }, "yallist": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.2.tgz", "integrity": "sha1-hFK0u36Dx8GI2AQcGoN8dz1ti7k=", - "dev": true, - "optional": true + "dev": true } } }, @@ -7338,6 +7460,23 @@ "integrity": "sha1-wc56MWjIxmFAM6S194d/OyJfnDg=", "dev": true }, + "html-element-map": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/html-element-map/-/html-element-map-1.1.0.tgz", + "integrity": "sha512-iqiG3dTZmy+uUaTmHarTL+3/A2VW9ox/9uasKEZC+R/wAtUrTcRlXPSaPqsnWPfIu8wqn09jQNwMRqzL54jSYA==", + "dev": true, + "requires": { + "array-filter": "^1.0.0" + }, + "dependencies": { + "array-filter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-1.0.0.tgz", + "integrity": "sha1-uveeYubvTCpMC4MSMtr/7CUfnYM=", + "dev": true + } + } + }, "html-encoding-sniffer": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", @@ -7360,44 +7499,40 @@ "dev": true }, "htmlparser2": { - "version": "3.9.2", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.9.2.tgz", - "integrity": "sha1-G9+HrMoPP55T+k/M6w9LTLsAszg=", + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", + "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", "dev": true, "requires": { - "domelementtype": "^1.3.0", + "domelementtype": "^1.3.1", "domhandler": "^2.3.0", "domutils": "^1.5.1", "entities": "^1.1.1", "inherits": "^2.0.1", - "readable-stream": "^2.0.2" + "readable-stream": "^3.1.1" }, "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "domelementtype": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", + "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", "dev": true }, "readable-stream": { - "version": "2.3.6", - "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.4.0.tgz", + "integrity": "sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ==", "dev": true, "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" } }, "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.2.0.tgz", + "integrity": "sha512-6YqyX6ZWEYguAxgZzHGL7SsCeGx3V2TtOTqZz1xSTSWnqsbWwbptafNyvf/ACquZUXV3DANr5BDIwNYe1mN42w==", "dev": true, "requires": { "safe-buffer": "~5.1.0" @@ -9480,7 +9615,7 @@ }, "load-json-file": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "resolved": "http://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", "dev": true, "requires": { @@ -9829,7 +9964,7 @@ }, "readable-stream": { "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "dev": true, "requires": { @@ -9873,7 +10008,7 @@ "dependencies": { "load-json-file": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "resolved": "http://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", "dev": true, "requires": { @@ -9978,7 +10113,7 @@ }, "readable-stream": { "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "dev": true, "requires": { @@ -10194,7 +10329,7 @@ }, "mkdirp": { "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "resolved": "http://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", "dev": true, "requires": { @@ -10203,7 +10338,7 @@ "dependencies": { "minimist": { "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "resolved": "http://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", "dev": true } @@ -10294,16 +10429,24 @@ "dev": true }, "nearley": { - "version": "2.15.1", - "resolved": "https://registry.npmjs.org/nearley/-/nearley-2.15.1.tgz", - "integrity": "sha512-8IUY/rUrKz2mIynUGh8k+tul1awMKEjeHHC5G3FHvvyAW6oq4mQfNp2c0BMea+sYZJvYcrrM6GmZVIle/GRXGw==", + "version": "2.16.0", + "resolved": "https://registry.npmjs.org/nearley/-/nearley-2.16.0.tgz", + "integrity": "sha512-Tr9XD3Vt/EujXbZBv6UAHYoLUSMQAxSsTnm9K3koXzjzNWY195NqALeyrzLZBKzAkL3gl92BcSogqrHjD8QuUg==", "dev": true, "requires": { + "commander": "^2.19.0", "moo": "^0.4.3", - "nomnom": "~1.6.2", "railroad-diagrams": "^1.0.0", "randexp": "0.4.6", "semver": "^5.4.1" + }, + "dependencies": { + "commander": { + "version": "2.20.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.0.tgz", + "integrity": "sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==", + "dev": true + } } }, "neo-async": { @@ -10590,7 +10733,7 @@ }, "readable-stream": { "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "dev": true, "requires": { @@ -10670,7 +10813,7 @@ }, "chalk": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { @@ -10856,16 +10999,6 @@ } } }, - "nomnom": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/nomnom/-/nomnom-1.6.2.tgz", - "integrity": "sha1-hKZqJgF0QI/Ft3oY+IjszET7aXE=", - "dev": true, - "requires": { - "colors": "0.5.x", - "underscore": "~1.4.4" - } - }, "nopt": { "version": "3.0.6", "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", @@ -11004,6 +11137,12 @@ "integrity": "sha1-CqYOyZiaCz7Xlc9NBvYs8a1lObY=", "dev": true }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true + }, "object-visit": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", @@ -11034,15 +11173,15 @@ } }, "object.entries": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.0.4.tgz", - "integrity": "sha1-G/mk3SKI9bM/Opk9JXZh8F0WGl8=", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.0.tgz", + "integrity": "sha512-l+H6EQ8qzGRxbkHOd5I/aHRhHDKoQXQ8g0BYt4uSweQU1/J6dZUOyWh9a2Vky35YCKjzmgxOzta2hH6kf9HuXA==", "dev": true, "requires": { - "define-properties": "^1.1.2", - "es-abstract": "^1.6.1", - "function-bind": "^1.1.0", - "has": "^1.0.1" + "define-properties": "^1.1.3", + "es-abstract": "^1.12.0", + "function-bind": "^1.1.1", + "has": "^1.0.3" } }, "object.getownpropertydescriptors": { @@ -11245,7 +11384,7 @@ }, "readable-stream": { "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "dev": true, "requires": { @@ -11505,7 +11644,7 @@ }, "chalk": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { @@ -11884,9 +12023,9 @@ "dev": true }, "raf": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/raf/-/raf-3.4.0.tgz", - "integrity": "sha512-pDP/NMRAXoTfrhCfyfSEwJAKLaxBU9eApMeBPB1TkDouZmvPerIClV8lTAd+uF8ZiTaVl69e1FCxQrAd/VTjGw==", + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/raf/-/raf-3.4.1.tgz", + "integrity": "sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==", "dev": true, "requires": { "performance-now": "^2.1.0" @@ -12240,7 +12379,7 @@ }, "readable-stream": { "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "dev": true, "requires": { @@ -12943,7 +13082,7 @@ }, "load-json-file": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "resolved": "http://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", "dev": true, "requires": { @@ -12956,7 +13095,7 @@ }, "os-locale": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "resolved": "http://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", "dev": true, "requires": { @@ -13242,7 +13381,7 @@ }, "sha.js": { "version": "2.4.11", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "resolved": "http://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", "dev": true, "requires": { @@ -13668,7 +13807,7 @@ }, "readable-stream": { "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "dev": true, "requires": { @@ -13716,7 +13855,7 @@ }, "readable-stream": { "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "dev": true, "requires": { @@ -13771,7 +13910,7 @@ }, "readable-stream": { "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "dev": true, "requires": { @@ -13828,14 +13967,41 @@ } }, "string.prototype.trim": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.1.2.tgz", - "integrity": "sha1-0E3iyJ4Tf019IG8Ia17S+ua+jOo=", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.0.tgz", + "integrity": "sha512-9EIjYD/WdlvLpn987+ctkLf0FfvBefOCuiEr2henD8X+7jfwPnyvTdmW8OJhj5p+M0/96mBdynLWkxUr+rHlpg==", "dev": true, "requires": { - "define-properties": "^1.1.2", - "es-abstract": "^1.5.0", - "function-bind": "^1.0.2" + "define-properties": "^1.1.3", + "es-abstract": "^1.13.0", + "function-bind": "^1.1.1" + }, + "dependencies": { + "es-abstract": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.13.0.tgz", + "integrity": "sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.0", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "is-callable": "^1.1.4", + "is-regex": "^1.0.4", + "object-keys": "^1.0.12" + } + }, + "es-to-primitive": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz", + "integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==", + "dev": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + } } }, "string_decoder": { @@ -14112,7 +14278,7 @@ "dependencies": { "rimraf": { "version": "2.2.8", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz", + "resolved": "http://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz", "integrity": "sha1-5Dm+Kq7jJzIZUnMPmaiSnk/FBYI=", "dev": true } @@ -14319,7 +14485,7 @@ }, "load-json-file": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "resolved": "http://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", "dev": true, "requires": { @@ -14408,7 +14574,7 @@ }, "through": { "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "resolved": "http://registry.npmjs.org/through/-/through-2.3.8.tgz", "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", "dev": true }, @@ -14828,12 +14994,6 @@ } } }, - "underscore": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.4.4.tgz", - "integrity": "sha1-YaajIBBiKvoHljvzJSA88SI51gQ=", - "dev": true - }, "unescape": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/unescape/-/unescape-0.2.0.tgz", @@ -15238,6 +15398,12 @@ "browser-process-hrtime": "^0.1.2" } }, + "wait-for-expect": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/wait-for-expect/-/wait-for-expect-1.2.0.tgz", + "integrity": "sha512-EJhKpA+5UHixduMBEGhTFuLuVgQBKWxkFbefOdj2bbk2/OpA5Opsc4aUTGmF+qJ+v3kTGxDRNYwKaT4j6g5n8Q==", + "dev": true + }, "walker": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz", @@ -15521,7 +15687,7 @@ }, "table": { "version": "4.0.3", - "resolved": "https://registry.npmjs.org/table/-/table-4.0.3.tgz", + "resolved": "http://registry.npmjs.org/table/-/table-4.0.3.tgz", "integrity": "sha512-S7rnFITmBH1EnyKcvxBh1LjYeQMmnZtCXSEbHcH6S0NoKit24ZuFO/T1vDcLdYsLQkM188PVVhQmzKIuThNkKg==", "dev": true, "requires": { @@ -15619,7 +15785,7 @@ }, "wrap-ansi": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "resolved": "http://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", "dev": true, "requires": { @@ -15750,7 +15916,7 @@ }, "yargs": { "version": "11.1.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-11.1.0.tgz", + "resolved": "http://registry.npmjs.org/yargs/-/yargs-11.1.0.tgz", "integrity": "sha512-NwW69J42EsCSanF8kyn5upxvjp5ds+t3+udGBeTbFnERA+lF541DDpMawzo4z6W/QrzNM18D+BPMiOBibnFV5A==", "dev": true, "requires": { diff --git a/package.json b/package.json index b90a19043ae..d9d933a38d4 100644 --- a/package.json +++ b/package.json @@ -60,11 +60,12 @@ "@mdx-js/mdx": "0.15.0", "@mdx-js/tag": "0.15.0", "@svgr/webpack": "2.4.1", + "@testing-library/react": "8.0.6", "@zeit/next-mdx": "1.1.0", "babel-core": "7.0.0-bridge.0", "babel-plugin-add-react-displayname": "0.0.5", "babel-plugin-styled-components": "1.10.0", - "enzyme": "3.5.1", + "enzyme": "3.10.0", "enzyme-adapter-react-16": "1.5.0", "eslint": "4.19.1", "eslint-plugin-github": "1.0.0", diff --git a/src/__tests__/Details.js b/src/__tests__/Details.js index f6cbbbc6a04..f11ae8027b6 100644 --- a/src/__tests__/Details.js +++ b/src/__tests__/Details.js @@ -3,83 +3,30 @@ import React from 'react' import Details from '../Details' import {mount, render} from '../utils/testing' import {COMMON} from '../constants' +import { render as hooksRender, fireEvent, getByTestId} from '@testing-library/react' describe('Details', () => { it('implements system props', () => { expect(Details).toImplementSystemProps(COMMON) }) - it('Respects the open prop', () => { - expect(mount(
).props().open).toEqual(true) - }) - it('has default theme', () => { expect(Details).toSetDefaultTheme() }) - xit('Renders children as-is', () => { - expect(render(
hi
)).toEqual(render(
hi
)) - expect( - render( -
- hi - bye -
- ) - ).toEqual( - render( -
- hi - bye -
- ) - ) - }) - - xit('Renders with a render prop', () => { - expect(render(
'hi'} />)).toEqual(render(
hi
)) - }) - - xit('Renders with children as a function', () => { - expect(render(
{() => 'hi'}
)).toEqual(render(
hi
)) - }) - - xit('Passes open state to render function', () => { - const renderOpenAsString = ({open}) => String(open) - expect(render(
{renderOpenAsString}
)).toEqual(render(
false
)) - expect(render(
{renderOpenAsString}
)).toEqual(render(
true
)) - }) - it('Can be toggled', () => { - const wrapper = mount( -
- {({open, toggle}) => {open ? 'close' : 'open'}} + const { container } = hooksRender( +
+ {({open}) => {open ? 'open' : 'closed'}}
) - - /** - * XXX note: when using the react element wrapper, the - * selector '[open]' doesn't properly resolve the presence - * of the 'open' HTML attribute. To get around this, we have - * to test the underlying DOM node's actual 'open' - * attribute. - */ - const dom = wrapper.getDOMNode() - const summary = wrapper.find('summary') - - expect(dom.hasAttribute('open')).toEqual(false) - expect(summary.text()).toEqual('open') - - summary.simulate('click') - - expect(dom.hasAttribute('open')).toEqual(true) - expect(summary.text()).toEqual('close') - - summary.simulate('click') - - expect(dom.hasAttribute('open')).toEqual(false) - expect(summary.text()).toEqual('open') - - wrapper.unmount() + const summary = getByTestId(container, 'summary'); + expect(summary.textContent).toBe('closed'); + fireEvent(summary, + new MouseEvent('click', { + bubbles: true, + cancelable: true, + })) + expect(getByTestId(container, 'summary').textContent).toBe('open'); }) }) From 870a4a243cffc1667685b66029493172ebdafa39 Mon Sep 17 00:00:00 2001 From: Emily Plummer Date: Thu, 25 Jul 2019 14:13:33 -0700 Subject: [PATCH 023/113] update docs --- pages/components/docs/Details.md | 26 ++++---------------------- 1 file changed, 4 insertions(+), 22 deletions(-) diff --git a/pages/components/docs/Details.md b/pages/components/docs/Details.md index c3f2f81e225..d6b44b43de9 100644 --- a/pages/components/docs/Details.md +++ b/pages/components/docs/Details.md @@ -3,7 +3,7 @@ The Details component is an HTML `
` element without native browser styling that optionally uses the [render props pattern](https://reactjs.org/docs/render-props.html) to pass its state to child components. -You are responsible for rendering your own ``. To style your summary element like a [Button](./Button), you can use the `is` prop: +You are responsible for rendering your own ``. To style your summary element like a [Button](./Button), you can use the `as` prop: ```jsx @@ -18,18 +18,13 @@ You are responsible for rendering your own ``. To style your summary el ``` ## With children as a function -The render function gets an object with two keys: - -* `open` is a boolean reflecting the `
` element's `open` attribute, and can be used to conditionally show or hide content. -* `toggle` is a function that can be assigned to event handlers to trigger toggling of the `open` state. - -If you use this form or the render prop (see below), **you must attach the `toggle` prop as an event listener**. If you don't the render function will not be called when the element is toggled by the native browser behavior. +The render function gets an object with the `open` prop to allow you to conditionally update UI based on the open state of the dropdown: ```.jsx
- {({open, toggle}) => ( + {({open}) => ( <> -

This should show and hide

@@ -38,18 +33,6 @@ If you use this form or the render prop (see below), **you must attach the `togg
``` -## With render prop -The Details component also accepts a `render` function prop. - -```.jsx -
( - <> - -

This is the content.

- -)} /> -``` - ## System props Details components get `COMMON` system props. Read our [System Props](/components/docs/system-props) doc page for a full list of available props. @@ -59,7 +42,6 @@ Details components get `COMMON` system props. Read our [System Props](/component | Name | Type | Default | Description | | :- | :- | :-: | :- | | open | Boolean | | Sets the open/closed state of the Details component | -| render | Function | | Optional render function, to allow you to handle toggling and open/closed state from a container component. | overlay | Boolean | false | Sets whether or not element will close when user clicks outside of it export const meta = {displayName: 'Details'} From 8cdc34d259cce5fd0ddda0b01d2e061ad805aba8 Mon Sep 17 00:00:00 2001 From: Emily Plummer Date: Mon, 22 Jul 2019 12:59:17 -0700 Subject: [PATCH 024/113] version --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index d9d933a38d4..80d030169be 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@primer/components", - "version": "14.0.0", + "version": "13.3.0", "description": "Primer react components", "main": "dist/index.umd.js", "module": "dist/index.esm.js", From 49e8d17d0ba1ccb5cca04efb5fdf8d51dfa7b602 Mon Sep 17 00:00:00 2001 From: Emily Plummer Date: Fri, 26 Jul 2019 09:52:53 -0700 Subject: [PATCH 025/113] fix button styles --- src/ButtonStyles.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/ButtonStyles.js b/src/ButtonStyles.js index 09da6606198..db9ba888c80 100644 --- a/src/ButtonStyles.js +++ b/src/ButtonStyles.js @@ -23,6 +23,7 @@ const getButtonStyles = theme => { border: 1px solid ${get('colors.button.border')(theme)}; border-radius: 0.25em; appearance: none; + text-decoration: none; &:hover { background-color: ${get('colors.button.hoverBg')(theme)}; From 559a16a114870bbe2f1ade19665d05b99f86d017 Mon Sep 17 00:00:00 2001 From: Emily Plummer Date: Fri, 26 Jul 2019 09:56:21 -0700 Subject: [PATCH 026/113] update snapshots --- src/__tests__/__snapshots__/Dropdown.js.snap | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/__tests__/__snapshots__/Dropdown.js.snap b/src/__tests__/__snapshots__/Dropdown.js.snap index 2f72f09e850..51c5d6593d0 100644 --- a/src/__tests__/__snapshots__/Dropdown.js.snap +++ b/src/__tests__/__snapshots__/Dropdown.js.snap @@ -26,6 +26,8 @@ exports[`Dropdown matches the snapshots 1`] = ` -webkit-appearance: none; -moz-appearance: none; appearance: none; + -webkit-text-decoration: none; + text-decoration: none; font-size: 14px; } @@ -160,6 +162,8 @@ exports[`Dropdown matches the snapshots 2`] = ` -webkit-appearance: none; -moz-appearance: none; appearance: none; + -webkit-text-decoration: none; + text-decoration: none; font-size: 14px; } From ae8dca580d59b7d88c1a3ec29c8ce6655be9f88b Mon Sep 17 00:00:00 2001 From: Emily Plummer Date: Fri, 26 Jul 2019 09:59:10 -0700 Subject: [PATCH 027/113] typos From e5b5ba8e81e2173ffa46e779fbfc580beaade076 Mon Sep 17 00:00:00 2001 From: Emily Plummer Date: Fri, 26 Jul 2019 10:21:58 -0700 Subject: [PATCH 028/113] add whitespace prop to Text --- src/Text.js | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/Text.js b/src/Text.js index 5bce28323f4..40881bab65c 100644 --- a/src/Text.js +++ b/src/Text.js @@ -1,10 +1,20 @@ import styled from 'styled-components' import PropTypes from 'prop-types' +import {system} from 'styled-system' import theme from './theme' import {TYPOGRAPHY, COMMON} from './constants' +const whiteSpace = system({ + whiteSpace: { + property: 'whiteSpace', + cssProperty: 'whiteSpace' + } +}) + const Text = styled.span` - ${TYPOGRAPHY} ${COMMON}; + ${TYPOGRAPHY}; + ${COMMON}; + ${whiteSpace}; ` Text.defaultProps = { From 4079bd09bd9a5e800036f0d05ac71443840bded4 Mon Sep 17 00:00:00 2001 From: Emily Plummer Date: Fri, 26 Jul 2019 10:30:31 -0700 Subject: [PATCH 029/113] move whitespace to TYPOGRAPHY --- src/Text.js | 9 --------- src/constants.js | 21 +++++++++++++++++++-- 2 files changed, 19 insertions(+), 11 deletions(-) diff --git a/src/Text.js b/src/Text.js index 40881bab65c..39a6a027b55 100644 --- a/src/Text.js +++ b/src/Text.js @@ -1,20 +1,11 @@ import styled from 'styled-components' import PropTypes from 'prop-types' -import {system} from 'styled-system' import theme from './theme' import {TYPOGRAPHY, COMMON} from './constants' -const whiteSpace = system({ - whiteSpace: { - property: 'whiteSpace', - cssProperty: 'whiteSpace' - } -}) - const Text = styled.span` ${TYPOGRAPHY}; ${COMMON}; - ${whiteSpace}; ` Text.defaultProps = { diff --git a/src/constants.js b/src/constants.js index bb4e44eb060..42fd88cde1a 100644 --- a/src/constants.js +++ b/src/constants.js @@ -1,12 +1,30 @@ import * as styledSystem from 'styled-system' +import PropTypes from 'prop-types' import systemPropTypes from '@styled-system/prop-types' import themeGet from '@styled-system/theme-get' import theme from './theme' -const {get: getKey, compose} = styledSystem +const {get: getKey, compose, system} = styledSystem export const get = key => themeGet(key, getKey(theme, key)) +const whiteSpace = system({ + whiteSpace: { + property: 'whiteSpace', + cssProperty: 'whiteSpace' + } +}) + +export const TYPOGRAPHY = compose( + styledSystem.typography, + whiteSpace +) + +TYPOGRAPHY.propTypes = { + ...systemPropTypes.typography, + whiteSpace: PropTypes.oneOf(['normal', 'nowrap', 'pre-wrap', 'pre', 'pre-line']) +} + export const COMMON = compose( styledSystem.space, styledSystem.color, @@ -27,7 +45,6 @@ BORDER.propTypes = { // these are 1:1 with styled-system's API now, // so you could consider dropping the abstraction -export const TYPOGRAPHY = styledSystem.typography export const LAYOUT = styledSystem.layout export const POSITION = styledSystem.position export const FLEX = styledSystem.flexbox From 08e81e9905814390345b89e5aa8871ccf723252f Mon Sep 17 00:00:00 2001 From: Emily Plummer Date: Mon, 29 Jul 2019 10:08:40 -0700 Subject: [PATCH 030/113] move margin out of default props --- src/Heading.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/Heading.js b/src/Heading.js index 23b68809378..d70ce9ca6e3 100644 --- a/src/Heading.js +++ b/src/Heading.js @@ -6,12 +6,13 @@ import theme from './theme' const Heading = styled.h1` font-weight: ${get('fontWeights.bold')}; font-size: ${get('fontSizes.5')}; - ${TYPOGRAPHY} ${COMMON}; + margin: 0; + ${TYPOGRAPHY} + ${COMMON}; ` Heading.defaultProps = { theme, - m: 0 } Heading.propTypes = { From 8991aca6f66372f4cc3b4987dd3f652901c1d2e2 Mon Sep 17 00:00:00 2001 From: Emily Plummer Date: Mon, 29 Jul 2019 10:22:05 -0700 Subject: [PATCH 031/113] lint --- src/Heading.js | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/Heading.js b/src/Heading.js index d70ce9ca6e3..23b68809378 100644 --- a/src/Heading.js +++ b/src/Heading.js @@ -6,13 +6,12 @@ import theme from './theme' const Heading = styled.h1` font-weight: ${get('fontWeights.bold')}; font-size: ${get('fontSizes.5')}; - margin: 0; - ${TYPOGRAPHY} - ${COMMON}; + ${TYPOGRAPHY} ${COMMON}; ` Heading.defaultProps = { theme, + m: 0 } Heading.propTypes = { From 92aaf60be1a3d049a6fe9f5ed14b48543be6cdb8 Mon Sep 17 00:00:00 2001 From: Emily Plummer Date: Mon, 29 Jul 2019 10:25:52 -0700 Subject: [PATCH 032/113] fix font size typo --- src/Heading.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Heading.js b/src/Heading.js index 23b68809378..75d9d2dc187 100644 --- a/src/Heading.js +++ b/src/Heading.js @@ -5,7 +5,7 @@ import theme from './theme' const Heading = styled.h1` font-weight: ${get('fontWeights.bold')}; - font-size: ${get('fontSizes.5')}; + font-size: ${get('fontSizes.5')}px; ${TYPOGRAPHY} ${COMMON}; ` From 3341af64e9ce7c7bb58a298da9bed314a398f863 Mon Sep 17 00:00:00 2001 From: Emily Plummer Date: Mon, 29 Jul 2019 10:28:38 -0700 Subject: [PATCH 033/113] add change back --- src/Heading.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Heading.js b/src/Heading.js index 75d9d2dc187..6c87030f89c 100644 --- a/src/Heading.js +++ b/src/Heading.js @@ -6,12 +6,12 @@ import theme from './theme' const Heading = styled.h1` font-weight: ${get('fontWeights.bold')}; font-size: ${get('fontSizes.5')}px; + margin: 0; ${TYPOGRAPHY} ${COMMON}; ` Heading.defaultProps = { - theme, - m: 0 + theme } Heading.propTypes = { From db34c42604d6fd6afa4774573df73c9ccecb992e Mon Sep 17 00:00:00 2001 From: Chang Date: Sat, 27 Jul 2019 12:37:44 +1000 Subject: [PATCH 034/113] fix: wrong links --- pages/components/index.mdx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pages/components/index.mdx b/pages/components/index.mdx index c46959b4afb..86ed4bd98b5 100644 --- a/pages/components/index.mdx +++ b/pages/components/index.mdx @@ -40,7 +40,7 @@ export default () => ( ) ``` -This will set the `color`, `font-family`, and `line-height` CSS properties to the same ones used in [primer-base](https://github.com/primer/primer/blob/master/modules/primer-base/lib/base.scss#L15). +This will set the `color`, `font-family`, and `line-height` CSS properties to the same ones used in [primer-base](https://github.com/primer/css/blob/master/src/base/base.scss#L15). #### Theming @@ -97,7 +97,7 @@ To run `@primer/components` locally when adding or updating components: 1. Install dependencies: `npm install` 1. Run the dev app: `npm start` -> 👉 See [the contributing docs](CONTRIBUTING.md) for more info on code style, testing, and coverage. +> 👉 See [the contributing docs](https://github.com/primer/components/blob/master/CONTRIBUTING.md) for more info on code style, testing, and coverage. ## Principles From 8a8394618adb171d15eba75843a8fcc108105fdf Mon Sep 17 00:00:00 2001 From: Emily Plummer Date: Wed, 31 Jul 2019 13:28:52 -0700 Subject: [PATCH 035/113] commit docs suggestion --- pages/components/index.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pages/components/index.mdx b/pages/components/index.mdx index 86ed4bd98b5..c67f8131ea5 100644 --- a/pages/components/index.mdx +++ b/pages/components/index.mdx @@ -40,7 +40,7 @@ export default () => ( ) ``` -This will set the `color`, `font-family`, and `line-height` CSS properties to the same ones used in [primer-base](https://github.com/primer/css/blob/master/src/base/base.scss#L15). +This will set the `color`, `font-family`, and `line-height` CSS properties to the same ones used [to style `` in Primer CSS](https://github.com/primer/css/blob/master/src/base/base.scss#L15-L20). #### Theming From 7dd007f14bfdce45e5170542bd988e1836c1fb8b Mon Sep 17 00:00:00 2001 From: Emily Plummer Date: Tue, 6 Aug 2019 14:44:52 -0700 Subject: [PATCH 036/113] update types for FlexContainer --- index.d.ts | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/index.d.ts b/index.d.ts index ca3b9fca360..56d0da53877 100644 --- a/index.d.ts +++ b/index.d.ts @@ -51,10 +51,20 @@ declare module '@primer/components' { StyledSystem.BottomProps, StyledSystem.LeftProps {} + interface FlexItemProps + extends BaseProps, + CommonProps, + LayoutProps, + StyledSystem.FlexProps, + StyledSystem.JustifySelfProps, + StyledSystem.AlignSelfProps, + StyledSystem.OrderProps {} + interface FlexContainerProps extends BaseProps, CommonProps, LayoutProps, + FlexItemProps, StyledSystem.FlexBasisProps, StyledSystem.FlexDirectionProps, StyledSystem.FlexWrapProps, @@ -63,15 +73,6 @@ declare module '@primer/components' { StyledSystem.JustifyContentProps, StyledSystem.JustifyItemsProps {} - interface FlexItemProps - extends BaseProps, - CommonProps, - LayoutProps, - StyledSystem.FlexProps, - StyledSystem.JustifySelfProps, - StyledSystem.AlignSelfProps, - StyledSystem.OrderProps {} - export interface FlexProps extends FlexContainerProps, Omit, keyof FlexContainerProps> {} From 94f0be762bcb15175c97d78359282ab1e50a29b4 Mon Sep 17 00:00:00 2001 From: Emily Plummer Date: Tue, 6 Aug 2019 14:45:05 -0700 Subject: [PATCH 037/113] update version --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 80d030169be..97a797641b8 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@primer/components", - "version": "13.3.0", + "version": "13.3.1", "description": "Primer react components", "main": "dist/index.umd.js", "module": "dist/index.esm.js", From 3b76d40c70e3b094d66a9975470e609606e25c30 Mon Sep 17 00:00:00 2001 From: Derrick Marcey Date: Sun, 25 Aug 2019 22:06:39 -0400 Subject: [PATCH 038/113] Adding skeleton for TabNav. --- pages/components/docs/TabNav.md | 49 ++++++++++++++ pages/components/docs/index.js | 1 + src/TabNav.js | 113 ++++++++++++++++++++++++++++++++ src/index.js | 1 + 4 files changed, 164 insertions(+) create mode 100644 pages/components/docs/TabNav.md create mode 100644 src/TabNav.js diff --git a/pages/components/docs/TabNav.md b/pages/components/docs/TabNav.md new file mode 100644 index 00000000000..56df447394f --- /dev/null +++ b/pages/components/docs/TabNav.md @@ -0,0 +1,49 @@ +# TabNav + +Use the TabNav component to style navigation with a minimal underlined selected state, typically used for navigation placed at the top of the page. + +To use TabNav with [react-router](https://github.com/ReactTraining/react-router) or +[react-router-dom](https://www.npmjs.com/package/react-router-dom), pass +`as={NavLink}` and omit the `selected` prop. +This ensures that the NavLink gets `activeClassName='selected'` + +**Attention:** Make sure to properly label your `TabNav` with an `aria-label` to provide context about the type of navigation contained in `TabNav`. + +## Default example + +```.jsx + + Using {''} + + + + Home + + Documentation + Support + +``` + +## System props + +TabNav and TabNav.Link components get `COMMON` system props. Read our [System Props](/components/docs/system-props) doc page for a full list of available props. + +## Component props + +### TabNav + +| Prop name | Type | Description | +| :--------- | :------ | :------------------------------------------------------------------------------------- | +| actions | Node | Place another element, such as a button, to the opposite side of the navigation items. | +| align | String | Use `right` to have navigation items aligned right. | +| full | Boolean | Used to make navigation fill the width of the container. | +| aria-label | String | Used to set the `aria-label` on the top level `