@primer/components 29.1.1-rc.0f976d3a → 30.0.0-rc.48fd5c94
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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,
|