Skip to content

Commit dc2122c

Browse files
Merge pull request #235 from commitd/stuarthendren/issue233
Adds Hidden component
2 parents 5139a4b + 31f61a8 commit dc2122c

File tree

7 files changed

+104
-32
lines changed

7 files changed

+104
-32
lines changed

package-lock.json

Lines changed: 33 additions & 28 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -152,8 +152,8 @@
152152
"devDependencies": {
153153
"@commitlint/cli": "^12.1.4",
154154
"@commitlint/config-conventional": "^12.1.4",
155-
"@fontsource/dosis": "^4.5.0",
156-
"@fontsource/inter": "^4.5.0",
155+
"@fontsource/dosis": "^4.5.1",
156+
"@fontsource/inter": "^4.5.1",
157157
"@size-limit/preset-small-lib": "^5.0.1",
158158
"@storybook/addon-docs": "^6.3.12",
159159
"@storybook/addon-essentials": "^6.3.12",
@@ -201,8 +201,8 @@
201201
"typescript": "^4.4.2"
202202
},
203203
"dependencies": {
204-
"@committed/hooks": "^0.4.0",
205-
"@mdi/js": "^6.4.95",
204+
"@committed/hooks": "^0.5.0",
205+
"@mdi/js": "^6.5.95",
206206
"@radix-ui/colors": "^0.1.7",
207207
"@radix-ui/react-accordion": "0.1.1",
208208
"@radix-ui/react-alert-dialog": "0.1.1",
@@ -221,6 +221,7 @@
221221
"@radix-ui/react-switch": "0.1.1",
222222
"@radix-ui/react-tabs": "0.1.1",
223223
"@radix-ui/react-tooltip": "0.1.1",
224+
"@radix-ui/react-visually-hidden": "^0.1.1",
224225
"@stitches/react": "^1.2.5"
225226
}
226227
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
import React from 'react'
2+
import { Story, Meta } from '@storybook/react'
3+
import { Close } from '../Icons'
4+
import { Button } from '../Button'
5+
import { Hidden } from '.'
6+
7+
export default {
8+
title: 'Components/Hidden',
9+
component: Hidden,
10+
} as Meta
11+
12+
export const Default: Story = (args) => (
13+
<Button>
14+
<Close />
15+
<Hidden>Settings</Hidden>
16+
</Button>
17+
)

src/components/Hidden/Hidden.test.tsx

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
import React from 'react'
2+
import { renderLight, renderDark } from 'test-utils'
3+
import { Default } from './Hidden.stories'
4+
5+
it('renders light without error', () => {
6+
const { asFragment } = renderLight(<Default />)
7+
expect(asFragment()).toBeDefined()
8+
})
9+
10+
it('renders dark without error', () => {
11+
const { asFragment } = renderDark(<Default />)
12+
expect(asFragment()).toBeDefined()
13+
})

src/components/Hidden/Hidden.tsx

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
import React, { ElementRef, ComponentPropsWithoutRef, forwardRef } from 'react'
2+
import { useBoolean, useKeyboard } from '@committed/hooks'
3+
import { Root } from '@radix-ui/react-visually-hidden'
4+
5+
/**
6+
* Hidden component
7+
*
8+
* Visually hides the component while preserving the content in a screen accessible way.
9+
*
10+
* Based on [Radix VisuallyHidden](https://www.radix-ui.com/docs/primitives/utilities/visually-hidden).
11+
*
12+
* Has additional development mode function to show the hidden element when `alt` is pressed.
13+
*/
14+
export const Hidden = forwardRef<
15+
ElementRef<typeof Root>,
16+
ComponentPropsWithoutRef<typeof Root>
17+
>(({ children, ...props }, forwardedRef) => {
18+
const [forceShow, { setTrue, setFalse }] = useBoolean(false)
19+
useKeyboard('', setFalse, { event: 'keyup', development: true })
20+
useKeyboard('alt', setTrue, {
21+
event: 'keydown',
22+
ignoreRepeat: true,
23+
development: true,
24+
})
25+
26+
if (forceShow) {
27+
return <span>{children}</span>
28+
}
29+
return (
30+
<Root {...props} ref={forwardedRef}>
31+
{children}
32+
</Root>
33+
)
34+
})

src/components/Hidden/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export * from './Hidden'

src/components/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,3 +46,4 @@ export * from './Tooltip'
4646
export * from './ThemeSwitch'
4747
export * from './Popover'
4848
export * from './Skeleton'
49+
export * from './Hidden'

0 commit comments

Comments
 (0)