@primer/components 29.1.1-rc.0f976d3a → 30.0.0-rc.48fd5c94
Sign up to get free protection for your applications and to get access to all the features.
- package/.eslintrc.json +44 -14
- package/CHANGELOG.md +11 -1
- package/contributor-docs/CONTRIBUTING.md +2 -2
- package/contributor-docs/component-contents-api-patterns.md +5 -4
- package/dist/browser.esm.js +130 -130
- package/dist/browser.esm.js.map +1 -1
- package/dist/browser.umd.js +113 -113
- package/dist/browser.umd.js.map +1 -1
- package/docs/content/BorderBox.md +1 -1
- package/docs/content/Box.md +9 -9
- package/docs/content/Breadcrumbs.md +12 -12
- package/docs/content/Buttons.md +15 -13
- package/docs/content/CircleOcticon.md +1 -1
- package/docs/content/CounterLabel.md +5 -3
- package/docs/content/Flash.md +6 -4
- package/docs/content/Flex.md +6 -6
- package/docs/content/FormGroup.md +11 -9
- package/docs/content/Grid.md +6 -6
- package/docs/content/Label.md +3 -1
- package/docs/content/LabelGroup.md +1 -1
- package/docs/content/Pagination.md +4 -4
- package/docs/content/PointerBox.md +2 -2
- package/docs/content/Portal.mdx +13 -8
- package/docs/content/Position.md +26 -23
- package/docs/content/SelectMenu.md +5 -3
- package/docs/content/SideNav.md +5 -5
- package/docs/content/StateLabel.md +8 -6
- package/docs/content/StyledOcticon.md +4 -2
- package/docs/content/Text.md +5 -3
- package/docs/content/TextInput.md +5 -3
- package/docs/content/Timeline.md +13 -13
- package/docs/content/Tooltip.md +1 -1
- package/docs/content/Truncate.md +3 -4
- package/docs/content/anchoredPosition.mdx +1 -1
- package/docs/content/getting-started.md +6 -2
- package/docs/content/linting.md +1 -1
- package/docs/content/overriding-styles.mdx +15 -13
- package/docs/content/primer-theme.md +1 -1
- package/docs/content/theming.md +5 -5
- package/docs/content/useOnEscapePress.mdx +3 -3
- package/docs/content/useOnOutsideClick.mdx +1 -1
- package/lib/Breadcrumbs.d.ts +40 -0
- package/lib/{Breadcrumb.js → Breadcrumbs.js} +31 -21
- package/lib/__tests__/{Breadcrumb.d.ts → Breadcrumbs.d.ts} +0 -0
- package/lib/__tests__/{Breadcrumb.js → Breadcrumbs.js} +7 -9
- package/lib/__tests__/{BreadcrumbItem.d.ts → BreadcrumbsItem.d.ts} +0 -0
- package/lib/__tests__/{BreadcrumbItem.js → BreadcrumbsItem.js} +6 -6
- package/lib/index.d.ts +2 -2
- package/lib/index.js +8 -2
- package/lib-esm/Breadcrumbs.d.ts +40 -0
- package/lib-esm/{Breadcrumb.js → Breadcrumbs.js} +28 -19
- package/lib-esm/__tests__/{Breadcrumb.d.ts → Breadcrumbs.d.ts} +0 -0
- package/lib-esm/__tests__/Breadcrumbs.js +29 -0
- package/lib-esm/__tests__/{BreadcrumbItem.d.ts → BreadcrumbsItem.d.ts} +0 -0
- package/lib-esm/__tests__/{BreadcrumbItem.js → BreadcrumbsItem.js} +7 -7
- package/lib-esm/index.d.ts +2 -2
- package/lib-esm/index.js +1 -1
- package/migrating.md +4 -4
- package/package-lock.json +561 -280
- package/package.json +6 -5
- package/src/{Breadcrumb.tsx → Breadcrumbs.tsx} +27 -13
- package/src/__tests__/Breadcrumbs.tsx +28 -0
- package/src/__tests__/{BreadcrumbItem.tsx → BreadcrumbsItem.tsx} +7 -7
- package/src/__tests__/__snapshots__/{Breadcrumb.tsx.snap → Breadcrumbs.tsx.snap} +3 -3
- package/src/__tests__/__snapshots__/{BreadcrumbItem.tsx.snap → BreadcrumbsItem.tsx.snap} +3 -3
- package/src/index.ts +2 -2
- package/stats.html +1 -1
- package/lib/Breadcrumb.d.ts +0 -23
- package/lib-esm/Breadcrumb.d.ts +0 -23
- package/lib-esm/__tests__/Breadcrumb.js +0 -31
- package/src/__tests__/Breadcrumb.tsx +0 -31
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@primer/components",
|
3
|
-
"version": "
|
3
|
+
"version": "30.0.0-rc.48fd5c94",
|
4
4
|
"description": "Primer react components",
|
5
5
|
"main": "lib/index.js",
|
6
6
|
"module": "lib-esm/index.js",
|
@@ -15,7 +15,7 @@
|
|
15
15
|
"start": "concurrently npm:start:*",
|
16
16
|
"start:docs": "cd docs && npm run develop",
|
17
17
|
"start:storybook": "start-storybook -p 6006",
|
18
|
-
"lint": "eslint '**/*.{js,ts,tsx}'",
|
18
|
+
"lint": "eslint '**/*.{js,ts,tsx,md,mdx}'",
|
19
19
|
"lint:fix": "npm run lint -- --fix",
|
20
20
|
"test": "jest",
|
21
21
|
"test:update": "npm run test -- --updateSnapshot",
|
@@ -56,14 +56,13 @@
|
|
56
56
|
"@types/styled-system__theme-get": "5.0.1",
|
57
57
|
"classnames": "2.3.1",
|
58
58
|
"deepmerge": "4.2.2",
|
59
|
-
"eslint-plugin-primer-react": "0.4.1",
|
60
59
|
"focus-visible": "5.2.0",
|
61
60
|
"styled-system": "5.1.5"
|
62
61
|
},
|
63
62
|
"devDependencies": {
|
64
63
|
"@babel/cli": "7.14.5",
|
65
64
|
"@babel/core": "7.14.8",
|
66
|
-
"@babel/eslint-parser": "7.
|
65
|
+
"@babel/eslint-parser": "7.15.7",
|
67
66
|
"@babel/plugin-proposal-nullish-coalescing-operator": "7.14.5",
|
68
67
|
"@babel/plugin-proposal-optional-chaining": "7.14.5",
|
69
68
|
"@babel/plugin-transform-modules-commonjs": "7.14.5",
|
@@ -79,7 +78,7 @@
|
|
79
78
|
"@storybook/addon-actions": "^6.2.9",
|
80
79
|
"@storybook/addon-essentials": "6.2.9",
|
81
80
|
"@storybook/addon-links": "^6.2.9",
|
82
|
-
"@storybook/react": "6.3.
|
81
|
+
"@storybook/react": "6.3.8",
|
83
82
|
"@testing-library/dom": "7.31.2",
|
84
83
|
"@testing-library/react": "11.2.7",
|
85
84
|
"@testing-library/react-hooks": "7.0.0",
|
@@ -110,7 +109,9 @@
|
|
110
109
|
"eslint-plugin-github": "4.1.3",
|
111
110
|
"eslint-plugin-jest": "24.3.6",
|
112
111
|
"eslint-plugin-jsx-a11y": "6.4.1",
|
112
|
+
"eslint-plugin-mdx": "1.15.1",
|
113
113
|
"eslint-plugin-prettier": "3.4.0",
|
114
|
+
"eslint-plugin-primer-react": "0.4.2",
|
114
115
|
"eslint-plugin-react": "7.24.0",
|
115
116
|
"eslint-plugin-react-hooks": "4.2.0",
|
116
117
|
"jest": "27.0.4",
|
@@ -31,7 +31,7 @@ const Wrapper = styled.li`
|
|
31
31
|
}
|
32
32
|
`
|
33
33
|
|
34
|
-
const
|
34
|
+
const BreadcrumbsBase = styled.nav<SystemFlexProps & SystemCommonProps & SxProp>`
|
35
35
|
display: flex;
|
36
36
|
justify-content: space-between;
|
37
37
|
${COMMON};
|
@@ -39,31 +39,30 @@ const BreadcrumbBase = styled.nav<SystemFlexProps & SystemCommonProps & SxProp>`
|
|
39
39
|
${sx};
|
40
40
|
`
|
41
41
|
|
42
|
-
export type
|
42
|
+
export type BreadcrumbsProps = ComponentProps<typeof BreadcrumbsBase>
|
43
43
|
|
44
|
-
function
|
45
|
-
const classes = classnames(className, 'Breadcrumb')
|
44
|
+
function Breadcrumbs({className, children, theme, ...rest}: React.PropsWithChildren<BreadcrumbsProps>) {
|
46
45
|
const wrappedChildren = React.Children.map(children, child => <Wrapper theme={theme}>{child}</Wrapper>)
|
47
46
|
return (
|
48
|
-
<
|
47
|
+
<BreadcrumbsBase className={className} aria-label="Breadcrumbs" theme={theme} {...rest}>
|
49
48
|
<Box as="ol" my={0} pl={0}>
|
50
49
|
{wrappedChildren}
|
51
50
|
</Box>
|
52
|
-
</
|
51
|
+
</BreadcrumbsBase>
|
53
52
|
)
|
54
53
|
}
|
55
54
|
|
56
|
-
type
|
55
|
+
type StyledBreadcrumbsItemProps = {
|
57
56
|
to?: History.LocationDescriptor
|
58
57
|
selected?: boolean
|
59
58
|
} & SystemCommonProps &
|
60
59
|
SxProp
|
61
60
|
|
62
|
-
const
|
61
|
+
const BreadcrumbsItem = styled.a.attrs<StyledBreadcrumbsItemProps>(props => ({
|
63
62
|
activeClassName: typeof props.to === 'string' ? 'selected' : '',
|
64
63
|
className: classnames(props.selected && SELECTED_CLASS, props.className),
|
65
64
|
'aria-current': props.selected ? 'page' : null
|
66
|
-
}))<
|
65
|
+
}))<StyledBreadcrumbsItemProps>`
|
67
66
|
color: ${get('colors.accent.fg')};
|
68
67
|
display: inline-block;
|
69
68
|
font-size: ${get('fontSizes.1')};
|
@@ -79,9 +78,24 @@ const BreadcrumbItem = styled.a.attrs<StyledBreadcrumbItemProps>(props => ({
|
|
79
78
|
${sx};
|
80
79
|
`
|
81
80
|
|
82
|
-
|
81
|
+
Breadcrumbs.displayName = 'Breadcrumbs'
|
83
82
|
|
84
|
-
|
83
|
+
BreadcrumbsItem.displayName = 'Breadcrumbs.Item'
|
85
84
|
|
86
|
-
export type
|
87
|
-
export default Object.assign(
|
85
|
+
export type BreadcrumbsItemProps = ComponentProps<typeof BreadcrumbsItem>
|
86
|
+
export default Object.assign(Breadcrumbs, {Item: BreadcrumbsItem})
|
87
|
+
|
88
|
+
/**
|
89
|
+
* @deprecated Use the `Breadcrumbs` component instead (i.e. `<Breadcrumb>` → `<Breadcrumbs>`)
|
90
|
+
*/
|
91
|
+
export const Breadcrumb = Object.assign(Breadcrumbs, {Item: BreadcrumbsItem})
|
92
|
+
|
93
|
+
/**
|
94
|
+
* @deprecated Use the `BreadcrumbsProps` type instead
|
95
|
+
*/
|
96
|
+
export type BreadcrumbProps = ComponentProps<typeof BreadcrumbsBase>
|
97
|
+
|
98
|
+
/**
|
99
|
+
* @deprecated Use the `BreadcrumbsItemProps` type instead
|
100
|
+
*/
|
101
|
+
export type BreadcrumbItemProps = ComponentProps<typeof BreadcrumbsItem>
|
@@ -0,0 +1,28 @@
|
|
1
|
+
import React from 'react'
|
2
|
+
import {Breadcrumbs, Breadcrumb} from '..'
|
3
|
+
import {render, behavesAsComponent, checkExports} from '../utils/testing'
|
4
|
+
import {COMMON} from '../constants'
|
5
|
+
import {render as HTMLRender, cleanup} from '@testing-library/react'
|
6
|
+
import {axe, toHaveNoViolations} from 'jest-axe'
|
7
|
+
import 'babel-polyfill'
|
8
|
+
expect.extend(toHaveNoViolations)
|
9
|
+
|
10
|
+
describe('Breadcrumbs', () => {
|
11
|
+
behavesAsComponent({Component: Breadcrumbs, systemPropArray: [COMMON]})
|
12
|
+
|
13
|
+
checkExports('Breadcrumbs', {
|
14
|
+
default: Breadcrumbs,
|
15
|
+
Breadcrumb
|
16
|
+
})
|
17
|
+
|
18
|
+
it('should have no axe violations', async () => {
|
19
|
+
const {container} = HTMLRender(<Breadcrumbs />)
|
20
|
+
const results = await axe(container)
|
21
|
+
expect(results).toHaveNoViolations()
|
22
|
+
cleanup()
|
23
|
+
})
|
24
|
+
|
25
|
+
it('renders a <nav>', () => {
|
26
|
+
expect(render(<Breadcrumbs />).type).toEqual('nav')
|
27
|
+
})
|
28
|
+
})
|
@@ -2,31 +2,31 @@ import {cleanup, render as HTMLRender} from '@testing-library/react'
|
|
2
2
|
import 'babel-polyfill'
|
3
3
|
import {axe, toHaveNoViolations} from 'jest-axe'
|
4
4
|
import React from 'react'
|
5
|
-
import {
|
5
|
+
import {Breadcrumbs} from '..'
|
6
6
|
import {COMMON} from '../constants'
|
7
7
|
import {behavesAsComponent, render} from '../utils/testing'
|
8
8
|
expect.extend(toHaveNoViolations)
|
9
9
|
|
10
|
-
describe('
|
11
|
-
behavesAsComponent({Component:
|
10
|
+
describe('Breadcrumbs.Item', () => {
|
11
|
+
behavesAsComponent({Component: Breadcrumbs.Item, systemPropArray: [COMMON]})
|
12
12
|
|
13
13
|
it('renders an <a> by default', () => {
|
14
|
-
expect(render(<
|
14
|
+
expect(render(<Breadcrumbs.Item />).type).toEqual('a')
|
15
15
|
})
|
16
16
|
|
17
17
|
it('should have no axe violations', async () => {
|
18
|
-
const {container} = HTMLRender(<
|
18
|
+
const {container} = HTMLRender(<Breadcrumbs.Item />)
|
19
19
|
const results = await axe(container)
|
20
20
|
expect(results).toHaveNoViolations()
|
21
21
|
cleanup()
|
22
22
|
})
|
23
23
|
|
24
24
|
it('respects the "selected" prop', () => {
|
25
|
-
expect(render(<
|
25
|
+
expect(render(<Breadcrumbs.Item selected />)).toMatchSnapshot()
|
26
26
|
})
|
27
27
|
|
28
28
|
it('adds activeClassName={SELECTED_CLASS} when it gets a "to" prop', () => {
|
29
29
|
const Link = ({theme: _ignoredTheme, ...props}: Record<string, unknown>) => <div {...props} />
|
30
|
-
expect(render(<
|
30
|
+
expect(render(<Breadcrumbs.Item as={Link} to="#" />)).toMatchSnapshot()
|
31
31
|
})
|
32
32
|
})
|
@@ -1,6 +1,6 @@
|
|
1
1
|
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
2
2
|
|
3
|
-
exports[`
|
3
|
+
exports[`Breadcrumbs renders consistently 1`] = `
|
4
4
|
.c1 {
|
5
5
|
margin-top: 0;
|
6
6
|
margin-bottom: 0;
|
@@ -19,8 +19,8 @@ exports[`Breadcrumb renders consistently 1`] = `
|
|
19
19
|
}
|
20
20
|
|
21
21
|
<nav
|
22
|
-
aria-label="
|
23
|
-
className="c0
|
22
|
+
aria-label="Breadcrumbs"
|
23
|
+
className="c0"
|
24
24
|
>
|
25
25
|
<ol
|
26
26
|
className="c1"
|
@@ -1,6 +1,6 @@
|
|
1
1
|
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
2
2
|
|
3
|
-
exports[`
|
3
|
+
exports[`Breadcrumbs.Item adds activeClassName={SELECTED_CLASS} when it gets a "to" prop 1`] = `
|
4
4
|
.c0 {
|
5
5
|
color: #0969da;
|
6
6
|
display: inline-block;
|
@@ -27,7 +27,7 @@ exports[`Breadcrumb.Item adds activeClassName={SELECTED_CLASS} when it gets a "t
|
|
27
27
|
/>
|
28
28
|
`;
|
29
29
|
|
30
|
-
exports[`
|
30
|
+
exports[`Breadcrumbs.Item renders consistently 1`] = `
|
31
31
|
.c0 {
|
32
32
|
color: #0969da;
|
33
33
|
display: inline-block;
|
@@ -52,7 +52,7 @@ exports[`Breadcrumb.Item renders consistently 1`] = `
|
|
52
52
|
/>
|
53
53
|
`;
|
54
54
|
|
55
|
-
exports[`
|
55
|
+
exports[`Breadcrumbs.Item respects the "selected" prop 1`] = `
|
56
56
|
.c0 {
|
57
57
|
color: #0969da;
|
58
58
|
display: inline-block;
|
package/src/index.ts
CHANGED
@@ -38,8 +38,8 @@ export {default as AvatarStack} from './AvatarStack'
|
|
38
38
|
export type {AvatarStackProps} from './AvatarStack'
|
39
39
|
export {default as BranchName} from './BranchName'
|
40
40
|
export type {BranchNameProps} from './BranchName'
|
41
|
-
export {default as Breadcrumb} from './
|
42
|
-
export type {BreadcrumbProps, BreadcrumbItemProps} from './
|
41
|
+
export {default as Breadcrumbs, Breadcrumb} from './Breadcrumbs'
|
42
|
+
export type {BreadcrumbsProps, BreadcrumbsItemProps, BreadcrumbProps, BreadcrumbItemProps} from './Breadcrumbs'
|
43
43
|
export {
|
44
44
|
default as Button,
|
45
45
|
ButtonDanger,
|