@primer/components 30.3.0-rc.2010c7d4 → 31.0.0-rc.15aa0a10
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 +2 -1
- package/.storybook/preview.js +4 -4
- package/CHANGELOG.md +12 -2
- package/codemods/deprecateUtilityComponents.js +1 -1
- package/contributor-docs/adrs/adr-003-prop-norms.md +72 -0
- package/dist/browser.esm.js +798 -794
- package/dist/browser.esm.js.map +1 -1
- package/dist/browser.umd.js +801 -797
- package/dist/browser.umd.js.map +1 -1
- package/docs/content/Autocomplete.mdx +627 -0
- package/docs/content/TextInputTokens.mdx +89 -0
- package/docs/content/getting-started.md +1 -1
- package/docs/content/overriding-styles.mdx +7 -6
- package/docs/content/theming.md +5 -5
- package/docs/package-lock.json +288 -511
- package/docs/package.json +1 -1
- package/docs/src/@primer/gatsby-theme-doctocat/components/hero.js +14 -12
- package/docs/src/@primer/gatsby-theme-doctocat/nav.yml +2 -0
- package/docs/src/@primer/gatsby-theme-doctocat/primer-components-hero.svg +7 -7
- package/lib/ActionList/Item.js +1 -1
- package/lib/AnchoredOverlay/AnchoredOverlay.d.ts +2 -1
- package/lib/AnchoredOverlay/AnchoredOverlay.js +11 -3
- package/lib/Autocomplete/Autocomplete.d.ts +304 -0
- package/lib/Autocomplete/Autocomplete.js +145 -0
- package/lib/Autocomplete/AutocompleteContext.d.ts +17 -0
- package/lib/Autocomplete/AutocompleteContext.js +11 -0
- package/lib/Autocomplete/AutocompleteInput.d.ts +292 -0
- package/lib/Autocomplete/AutocompleteInput.js +157 -0
- package/lib/Autocomplete/AutocompleteMenu.d.ts +72 -0
- package/lib/Autocomplete/AutocompleteMenu.js +224 -0
- package/lib/Autocomplete/AutocompleteOverlay.d.ts +20 -0
- package/lib/Autocomplete/AutocompleteOverlay.js +80 -0
- package/lib/Autocomplete/index.d.ts +2 -0
- package/lib/Autocomplete/index.js +15 -0
- package/lib/BaseStyles.js +1 -1
- package/lib/BorderBox.js +1 -1
- package/lib/Button/ButtonInvisible.js +1 -1
- package/lib/Caret.js +2 -2
- package/lib/Dialog.js +1 -1
- package/lib/FilteredActionList/FilteredActionList.js +5 -31
- package/lib/Flash.js +16 -16
- package/lib/Label.js +1 -1
- package/lib/Overlay.d.ts +1 -0
- package/lib/Overlay.js +3 -1
- package/lib/ProgressBar.js +1 -1
- package/lib/StateLabel.js +13 -19
- package/lib/Token/_RemoveTokenButton.js +1 -1
- package/lib/__tests__/Autocomplete.test.d.ts +1 -0
- package/lib/__tests__/Autocomplete.test.js +528 -0
- package/lib/__tests__/BorderBox.test.js +1 -1
- package/lib/__tests__/CircleOcticon.test.js +1 -1
- package/lib/__tests__/CounterLabel.test.js +4 -4
- package/lib/__tests__/Flash.test.js +4 -4
- package/lib/__tests__/Link.test.js +1 -1
- package/lib/__tests__/behaviors/scrollIntoViewingArea.test.d.ts +1 -0
- package/lib/__tests__/behaviors/scrollIntoViewingArea.test.js +226 -0
- package/lib/behaviors/scrollIntoViewingArea.d.ts +1 -0
- package/lib/behaviors/scrollIntoViewingArea.js +39 -0
- package/lib/hooks/useOpenAndCloseFocus.d.ts +2 -1
- package/lib/hooks/useOpenAndCloseFocus.js +7 -2
- package/lib/hooks/useOverlay.d.ts +2 -1
- package/lib/hooks/useOverlay.js +4 -2
- package/lib/index.d.ts +2 -0
- package/lib/index.js +8 -0
- package/lib/stories/Autocomplete.stories.js +608 -0
- package/lib/stories/Dialog.stories.js +3 -3
- package/lib/stories/IssueLabelToken.stories.js +1 -1
- package/lib/stories/ProfileToken.stories.js +1 -1
- package/lib/theme-preval.js +370 -3100
- package/lib/utils/testing.d.ts +50 -493
- package/lib/utils/types/MandateProps.d.ts +3 -0
- package/lib/utils/types/MandateProps.js +1 -0
- package/lib/utils/types/index.d.ts +1 -0
- package/lib/utils/types/index.js +13 -0
- package/lib-esm/ActionList/Item.js +1 -1
- package/lib-esm/AnchoredOverlay/AnchoredOverlay.d.ts +2 -1
- package/lib-esm/AnchoredOverlay/AnchoredOverlay.js +11 -3
- package/lib-esm/Autocomplete/Autocomplete.d.ts +304 -0
- package/lib-esm/Autocomplete/Autocomplete.js +123 -0
- package/lib-esm/Autocomplete/AutocompleteContext.d.ts +17 -0
- package/lib-esm/Autocomplete/AutocompleteContext.js +2 -0
- package/lib-esm/Autocomplete/AutocompleteInput.d.ts +292 -0
- package/lib-esm/Autocomplete/AutocompleteInput.js +138 -0
- package/lib-esm/Autocomplete/AutocompleteMenu.d.ts +72 -0
- package/lib-esm/Autocomplete/AutocompleteMenu.js +205 -0
- package/lib-esm/Autocomplete/AutocompleteOverlay.d.ts +20 -0
- package/lib-esm/Autocomplete/AutocompleteOverlay.js +62 -0
- package/lib-esm/Autocomplete/index.d.ts +2 -0
- package/lib-esm/Autocomplete/index.js +1 -0
- package/lib-esm/BaseStyles.js +1 -1
- package/lib-esm/BorderBox.js +1 -1
- package/lib-esm/Button/ButtonInvisible.js +1 -1
- package/lib-esm/Caret.js +2 -2
- package/lib-esm/Dialog.js +1 -1
- package/lib-esm/FilteredActionList/FilteredActionList.js +3 -31
- package/lib-esm/Flash.js +16 -16
- package/lib-esm/Label.js +1 -1
- package/lib-esm/Overlay.d.ts +1 -0
- package/lib-esm/Overlay.js +3 -1
- package/lib-esm/ProgressBar.js +1 -1
- package/lib-esm/StateLabel.js +13 -19
- package/lib-esm/Token/_RemoveTokenButton.js +1 -1
- package/lib-esm/__tests__/Autocomplete.test.d.ts +1 -0
- package/lib-esm/__tests__/Autocomplete.test.js +494 -0
- package/lib-esm/__tests__/BorderBox.test.js +1 -1
- package/lib-esm/__tests__/CircleOcticon.test.js +1 -1
- package/lib-esm/__tests__/CounterLabel.test.js +4 -4
- package/lib-esm/__tests__/Flash.test.js +4 -4
- package/lib-esm/__tests__/Link.test.js +1 -1
- package/lib-esm/__tests__/behaviors/scrollIntoViewingArea.test.d.ts +1 -0
- package/lib-esm/__tests__/behaviors/scrollIntoViewingArea.test.js +224 -0
- package/lib-esm/behaviors/scrollIntoViewingArea.d.ts +1 -0
- package/lib-esm/behaviors/scrollIntoViewingArea.js +30 -0
- package/lib-esm/hooks/useOpenAndCloseFocus.d.ts +2 -1
- package/lib-esm/hooks/useOpenAndCloseFocus.js +7 -2
- package/lib-esm/hooks/useOverlay.d.ts +2 -1
- package/lib-esm/hooks/useOverlay.js +4 -2
- package/lib-esm/index.d.ts +2 -0
- package/lib-esm/index.js +1 -0
- package/lib-esm/stories/Autocomplete.stories.js +549 -0
- package/lib-esm/stories/Dialog.stories.js +3 -3
- package/lib-esm/stories/IssueLabelToken.stories.js +1 -1
- package/lib-esm/stories/ProfileToken.stories.js +1 -1
- package/lib-esm/theme-preval.js +370 -3100
- package/lib-esm/utils/testing.d.ts +50 -493
- package/lib-esm/utils/types/MandateProps.d.ts +3 -0
- package/lib-esm/utils/types/MandateProps.js +1 -0
- package/lib-esm/utils/types/index.d.ts +1 -0
- package/lib-esm/utils/types/index.js +2 -1
- package/package-lock.json +11 -8
- package/package.json +3 -3
- package/src/ActionList/Item.tsx +1 -1
- package/src/AnchoredOverlay/AnchoredOverlay.tsx +14 -3
- package/src/Autocomplete/Autocomplete.tsx +103 -0
- package/src/Autocomplete/AutocompleteContext.tsx +19 -0
- package/src/Autocomplete/AutocompleteInput.tsx +179 -0
- package/src/Autocomplete/AutocompleteMenu.tsx +341 -0
- package/src/Autocomplete/AutocompleteOverlay.tsx +68 -0
- package/src/Autocomplete/index.ts +2 -0
- package/src/BaseStyles.tsx +1 -1
- package/src/BorderBox.tsx +1 -1
- package/src/Button/ButtonInvisible.tsx +7 -2
- package/src/Caret.tsx +2 -2
- package/src/Dialog.tsx +1 -1
- package/src/FilteredActionList/FilteredActionList.tsx +10 -25
- package/src/Flash.tsx +16 -16
- package/src/Label.tsx +1 -1
- package/src/Overlay.tsx +4 -1
- package/src/ProgressBar.tsx +1 -1
- package/src/StateLabel.tsx +12 -20
- package/src/Token/_RemoveTokenButton.tsx +4 -2
- package/src/__tests__/Autocomplete.test.tsx +444 -0
- package/src/__tests__/BorderBox.test.tsx +1 -1
- package/src/__tests__/CircleOcticon.test.tsx +1 -1
- package/src/__tests__/CounterLabel.test.tsx +4 -4
- package/src/__tests__/Flash.test.tsx +4 -4
- package/src/__tests__/Link.test.tsx +1 -1
- package/src/__tests__/__snapshots__/AnchoredOverlay.test.tsx.snap +3 -3
- package/src/__tests__/__snapshots__/Autocomplete.test.tsx.snap +3414 -0
- package/src/__tests__/__snapshots__/Button.test.tsx.snap +9 -1
- package/src/__tests__/__snapshots__/ConfirmationDialog.test.tsx.snap +1 -1
- package/src/__tests__/__snapshots__/SelectPanel.test.tsx.snap +1 -1
- package/src/__tests__/__snapshots__/StateLabel.test.tsx.snap +0 -21
- package/src/__tests__/__snapshots__/TextInputWithTokens.test.tsx.snap +16 -16
- package/src/__tests__/__snapshots__/Token.test.tsx.snap +34 -34
- package/src/__tests__/behaviors/scrollIntoViewingArea.test.ts +195 -0
- package/src/behaviors/scrollIntoViewingArea.ts +27 -0
- package/src/hooks/useOpenAndCloseFocus.ts +7 -2
- package/src/hooks/useOverlay.tsx +4 -2
- package/src/index.ts +2 -0
- package/src/stories/Autocomplete.stories.tsx +572 -0
- package/src/stories/Dialog.stories.tsx +3 -3
- package/src/stories/IssueLabelToken.stories.tsx +1 -1
- package/src/stories/ProfileToken.stories.tsx +1 -1
- package/src/utils/types/MandateProps.ts +19 -0
- package/src/utils/types/index.ts +1 -0
- package/stats.html +1 -1
- package/docs/src/@primer/gatsby-theme-doctocat/components/live-code.js +0 -84
- package/docs/src/@primer/gatsby-theme-doctocat/components/nav-dropdown.js +0 -48
- package/docs/src/@primer/gatsby-theme-doctocat/components/wrap-page-element.js +0 -25
@@ -1,84 +0,0 @@
|
|
1
|
-
import {Box, Text} from '@primer/components'
|
2
|
-
import ClipboardCopy from '@primer/gatsby-theme-doctocat/src/components/clipboard-copy'
|
3
|
-
import LivePreviewWrapper from '@primer/gatsby-theme-doctocat/src/components/live-preview-wrapper'
|
4
|
-
import githubTheme from '@primer/gatsby-theme-doctocat/src/github'
|
5
|
-
import scope from '@primer/gatsby-theme-doctocat/src/live-code-scope'
|
6
|
-
import htmlReactParser from 'html-react-parser'
|
7
|
-
import React, {useState} from 'react'
|
8
|
-
import reactElementToJsxString from 'react-element-to-jsx-string'
|
9
|
-
import {LiveEditor, LiveError, LivePreview, LiveProvider} from 'react-live'
|
10
|
-
import {ThemeContext} from 'styled-components'
|
11
|
-
|
12
|
-
// Temporarily shadowing this file to update the border color of the live examples.
|
13
|
-
// We can remove this file when Doctocat uses functional color variables.
|
14
|
-
|
15
|
-
const languageTransformers = {
|
16
|
-
html: html => htmlToJsx(html),
|
17
|
-
jsx: jsx => wrapWithFragment(jsx)
|
18
|
-
}
|
19
|
-
|
20
|
-
function htmlToJsx(html) {
|
21
|
-
try {
|
22
|
-
const reactElement = htmlReactParser(removeNewlines(html))
|
23
|
-
// The output of htmlReactParser could be a single React element
|
24
|
-
// or an array of React elements. reactElementToJsxString does not accept arrays
|
25
|
-
// so we have to wrap the output in React fragment.
|
26
|
-
return reactElementToJsxString(<>{reactElement}</>)
|
27
|
-
} catch (error) {
|
28
|
-
return wrapWithFragment(html)
|
29
|
-
}
|
30
|
-
}
|
31
|
-
|
32
|
-
function removeNewlines(string) {
|
33
|
-
return string.replace(/(\r\n|\n|\r)/gm, '')
|
34
|
-
}
|
35
|
-
|
36
|
-
function wrapWithFragment(jsx) {
|
37
|
-
// eslint-disable-next-line github/unescaped-html-literal
|
38
|
-
return `<React.Fragment>${jsx}</React.Fragment>`
|
39
|
-
}
|
40
|
-
|
41
|
-
function LiveCode({code, language, noinline}) {
|
42
|
-
const theme = React.useContext(ThemeContext)
|
43
|
-
const [liveCode, setLiveCode] = useState(code)
|
44
|
-
const handleChange = updatedLiveCode => setLiveCode(updatedLiveCode)
|
45
|
-
|
46
|
-
return (
|
47
|
-
<Box display="flex" flexDirection="column" mb={3}>
|
48
|
-
<LiveProvider scope={scope} code={liveCode} transformCode={languageTransformers[language]} noInline={noinline}>
|
49
|
-
<Box
|
50
|
-
sx={{
|
51
|
-
border: '1px solid',
|
52
|
-
borderColor: 'border.default',
|
53
|
-
borderTopRightRadius: 2,
|
54
|
-
borderTopLeftRadius: 2
|
55
|
-
}}
|
56
|
-
>
|
57
|
-
<LivePreviewWrapper>
|
58
|
-
<LivePreview />
|
59
|
-
</LivePreviewWrapper>
|
60
|
-
</Box>
|
61
|
-
<Box position="relative">
|
62
|
-
<LiveEditor
|
63
|
-
onChange={handleChange}
|
64
|
-
theme={githubTheme}
|
65
|
-
ignoreTabKey={true}
|
66
|
-
padding={theme.space[3]}
|
67
|
-
style={{
|
68
|
-
fontFamily: theme.fonts.mono,
|
69
|
-
fontSize: '85%',
|
70
|
-
borderBottomLeftRadius: theme.radii[2],
|
71
|
-
borderBottomRightRadius: theme.radii[2]
|
72
|
-
}}
|
73
|
-
/>
|
74
|
-
<Box position="absolute" top={0} right={0} p={2}>
|
75
|
-
<ClipboardCopy value={liveCode} />
|
76
|
-
</Box>
|
77
|
-
</Box>
|
78
|
-
<Text as={LiveError} m={0} p={3} fontFamily="mono" fontSize={1} color="white" bg="red.5" />
|
79
|
-
</LiveProvider>
|
80
|
-
</Box>
|
81
|
-
)
|
82
|
-
}
|
83
|
-
|
84
|
-
export default LiveCode
|
@@ -1,48 +0,0 @@
|
|
1
|
-
import {Box, StyledOcticon, Details, useDetails, Text, themeGet} from '@primer/components'
|
2
|
-
import {TriangleDownIcon} from '@primer/octicons-react'
|
3
|
-
import React from 'react'
|
4
|
-
import styled from 'styled-components'
|
5
|
-
|
6
|
-
// Temporarily shadowing this component until Doctocat uses the
|
7
|
-
// latest version of the Details or ActionMenu component
|
8
|
-
|
9
|
-
function NavDropdown({title, children}) {
|
10
|
-
const {getDetailsProps} = useDetails({closeOnOutsideClick: true})
|
11
|
-
return (
|
12
|
-
<Details {...getDetailsProps()}>
|
13
|
-
<summary style={{cursor: 'pointer'}}>
|
14
|
-
<Text>{title}</Text>
|
15
|
-
<StyledOcticon icon={TriangleDownIcon} ml={1} />
|
16
|
-
</summary>
|
17
|
-
<Box position="absolute">
|
18
|
-
<Box
|
19
|
-
color="white"
|
20
|
-
bg="gray.8"
|
21
|
-
py={1}
|
22
|
-
mt={2}
|
23
|
-
boxShadow="medium"
|
24
|
-
borderWidth="1px"
|
25
|
-
borderStyle="solid"
|
26
|
-
borderColor="gray.7"
|
27
|
-
borderRadius={2}
|
28
|
-
>
|
29
|
-
{children}
|
30
|
-
</Box>
|
31
|
-
</Box>
|
32
|
-
</Details>
|
33
|
-
)
|
34
|
-
}
|
35
|
-
|
36
|
-
export const NavDropdownItem = styled.a`
|
37
|
-
display: block;
|
38
|
-
padding: ${themeGet('space.2')} ${themeGet('space.3')};
|
39
|
-
color: inherit;
|
40
|
-
text-decoration: none;
|
41
|
-
&:hover {
|
42
|
-
color: ${themeGet('colors.white')};
|
43
|
-
background-color: ${themeGet('colors.blue.5')};
|
44
|
-
text-decoration: none;
|
45
|
-
}
|
46
|
-
`
|
47
|
-
|
48
|
-
export default NavDropdown
|
@@ -1,25 +0,0 @@
|
|
1
|
-
import {BaseStyles, theme, ThemeProvider} from '@primer/components'
|
2
|
-
import SkipLink from '@primer/gatsby-theme-doctocat/src/components/skip-link'
|
3
|
-
import primitives from '@primer/primitives'
|
4
|
-
import deepmerge from 'deepmerge'
|
5
|
-
import React from 'react'
|
6
|
-
|
7
|
-
// Temporarily shadowing this file to wrap the page in our custom ThemeProvider.
|
8
|
-
// We can remove this file when Doctocat uses the custom ThemeProvider.
|
9
|
-
|
10
|
-
// Doctocat still uses presentional color variables.
|
11
|
-
// We can remove this customTheme when Doctocat uses functional color variables
|
12
|
-
const customTheme = deepmerge(theme, {colors: primitives.colors.light.scale})
|
13
|
-
|
14
|
-
function wrapPageElement({element}) {
|
15
|
-
return (
|
16
|
-
<ThemeProvider theme={customTheme}>
|
17
|
-
<BaseStyles>
|
18
|
-
<SkipLink />
|
19
|
-
{element}
|
20
|
-
</BaseStyles>
|
21
|
-
</ThemeProvider>
|
22
|
-
)
|
23
|
-
}
|
24
|
-
|
25
|
-
export default wrapPageElement
|