-
Notifications
You must be signed in to change notification settings - Fork 319
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
fix(homepage): a11y errors #1483
Changes from all commits
9a73792
d6eeaf1
73dc138
e9a2636
1d2b644
2ee9a60
212de8a
365f6eb
2c07563
b1222e5
1a16af5
ca834d4
94bb127
b948437
20f84aa
dde5608
7a40db3
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
--- | ||
'@aws-amplify/ui-react': patch | ||
'@aws-amplify/ui': patch | ||
--- | ||
|
||
- fix a11y erros on docs homepage | ||
- fix type errors | ||
- rename css class |
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -3,7 +3,7 @@ import { CopyToClipboard } from 'react-copy-to-clipboard'; | |
|
||
import { Button } from '@aws-amplify/ui-react'; | ||
|
||
export const Copy = ({ text, size, variation }) => { | ||
export const Copy = ({ text, size, variation, className }) => { | ||
const [copied, setCopied] = React.useState(false); | ||
|
||
const copy = () => { | ||
|
@@ -15,7 +15,12 @@ export const Copy = ({ text, size, variation }) => { | |
|
||
return ( | ||
<CopyToClipboard text={text} onCopy={copy}> | ||
<Button size={size} variation={variation} isLoading={copied}> | ||
<Button | ||
size={size} | ||
variation={variation} | ||
isLoading={copied} | ||
className={className} | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. add |
||
> | ||
{copied ? 'Copied!' : 'Copy'} | ||
</Button> | ||
</CopyToClipboard> | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -45,7 +45,7 @@ const getCSPContent = (context: Readonly<HtmlProps>) => { | |
class MyDocument extends Document { | ||
render() { | ||
return ( | ||
<Html> | ||
<Html lang="en-us"> | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. we may eventually use variables for lang There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Can you create a ticket for the docs for a language switcher if it doesn't already exist? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. |
||
<Head> | ||
<meta | ||
httpEquiv="Content-Security-Policy" | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -25,6 +25,8 @@ import { HomePrimitivePreview } from './HomePrimitivePreview'; | |
import { Copy } from '@/components/Copy'; | ||
import { Footer } from '@/components/Layout/Footer'; | ||
|
||
import type { SandpackThemeProp } from '@codesandbox/sandpack-react'; | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. FYI, we are going to remove There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. potentially... there are some potential security issues with it since it uses |
||
|
||
const code = `import { AmplifyProvider, Button, Card, Text, Heading, Flex, Badge, Image, StepperField, useTheme } from '@aws-amplify/ui-react'; | ||
import '@aws-amplify/ui-react/styles.css'; | ||
|
||
|
@@ -100,7 +102,7 @@ const HomePage = ({ colorMode, setThemeOverride, themeOverride }) => { | |
const router = useRouter(); | ||
const { tokens } = useTheme(); | ||
const framework = (router.query.platform as string) ?? 'react'; | ||
const sandPackTheme = { | ||
const sandPackTheme: SandpackThemeProp = { | ||
palette: { | ||
activeText: `${tokens.colors.font.interactive}`, | ||
defaultText: `${tokens.colors.font.secondary}`, | ||
|
@@ -133,7 +135,6 @@ const HomePage = ({ colorMode, setThemeOverride, themeOverride }) => { | |
monoFont: | ||
'"Fira Mono", "DejaVu Sans Mono", Menlo, Consolas, "Liberation Mono", Monaco, "Lucida Console", monospace', | ||
fontSize: '16px', | ||
lineHeight: '1.5', | ||
reesscot marked this conversation as resolved.
Show resolved
Hide resolved
|
||
}, | ||
}; | ||
const installScripts = { | ||
|
@@ -170,16 +171,17 @@ const HomePage = ({ colorMode, setThemeOverride, themeOverride }) => { | |
Get started | ||
<IconChevronRight /> | ||
</Button> | ||
<TextField | ||
label="" | ||
labelHidden={true} | ||
isReadOnly={true} | ||
className="install-code" | ||
outerEndComponent={ | ||
<Copy variation="link" text={frameworkInstallScript} /> | ||
} | ||
value={frameworkInstallScript} | ||
/> | ||
<code className="install-code__container"> | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
|
||
<p className="install-code__content"> | ||
{frameworkInstallScript} | ||
</p> | ||
<Copy | ||
className="install-code__button" | ||
size="" | ||
variation="link" | ||
text={frameworkInstallScript} | ||
/> | ||
</code> | ||
</Flex> | ||
</Card> | ||
<Flex | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -24,6 +24,7 @@ const MenuPrimitive: Primitive<MenuProps, 'div'> = ( | |
size, | ||
trigger, | ||
triggerClassName, | ||
ariaLabel, | ||
onOpenChange, | ||
...rest | ||
}, | ||
|
@@ -33,7 +34,7 @@ const MenuPrimitive: Primitive<MenuProps, 'div'> = ( | |
<DropdownMenuTrigger asChild={true}> | ||
{trigger ?? ( | ||
<MenuButton | ||
role="button" | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. not sure why we need to add it for a button, so removed it There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Did it cause an accessibility error? I vaguely remember that without There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Nope, it doesn't cause any a11y error because it is a button. It would cause error if it's a There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Tested it and the menu button still works correctly. Proceed 👍 |
||
ariaLabel={ariaLabel} | ||
size={size} | ||
testId={MENU_TRIGGER_TEST_ID} | ||
className={classNames( | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -15,11 +15,9 @@ export const RatingIcon: React.FC<RatingIconProps> = ({ | |
className, | ||
}) => { | ||
return ( | ||
<View as="span" className={classNames(`amplify-rating-icon-container`)}> | ||
<View as="label" className={classNames(`amplify-rating-label`)}> | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. not sure what's the There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Yeah, I'm not sure why there's a There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I believe the label tag was a remnant of earlier designs when this component was not read only. Looking at some other rating components out there they use a label and hidden checkbox to mark user selections. @reesscot brought up a good point that we could have customers who are targeting this label for styling and so if we don't need to remove it, then it would be best to leave it in. @0618 other than the extra clutter, was the There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. @jacoblogan yes, "empty label" is a type of a11y error, so I removed it but kept the class selector in this PR. Is that ok? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Makes sense. If it's causing a11y error let's remove it. |
||
<View as="span" className={classNames(className)} color={fill}> | ||
{icon} | ||
</View> | ||
<View as="span" className="amplify-rating-icon-container"> | ||
<View as="span" className={classNames(className)} color={fill}> | ||
{icon} | ||
</View> | ||
</View> | ||
); | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -19,29 +19,25 @@ export const RatingMixedIcon: React.FC<RatingMixedIconProps> = ({ | |
}) => { | ||
const widthPercentage = `${(value % 1) * 100}%`; | ||
return ( | ||
<View as="span" className={classNames(`amplify-rating-icon-container`)}> | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. not sure why we need |
||
<View as="label" className={classNames(`amplify-rating-label`)}> | ||
<View as="span" className="amplify-rating-icon-container"> | ||
<View as="span" className="amplify-rating-label"> | ||
<View | ||
as="span" | ||
className={classNames( | ||
`amplify-rating-icon`, | ||
`amplify-rating-icon-empty` | ||
'amplify-rating-icon', | ||
'amplify-rating-icon-empty' | ||
)} | ||
color={emptyColor} | ||
> | ||
{emptyIcon} | ||
</View> | ||
</View> | ||
<View | ||
as="label" | ||
className={classNames(`amplify-rating-label`)} | ||
width={widthPercentage} | ||
> | ||
<View as="span" className="amplify-rating-label" width={widthPercentage}> | ||
<View | ||
as="span" | ||
className={classNames( | ||
`amplify-rating-icon`, | ||
`amplify-rating-icon-filled` | ||
'amplify-rating-icon', | ||
'amplify-rating-icon-filled' | ||
)} | ||
color={fillColor} | ||
> | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
with the new attributes being added and the structure of some of the components being updated do we want this to be a minor bump instead of a patch?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Good point...
I checked the semver doc
Since we don't have any new features in this PR, I think it's not a MUST.