Skip to content

Commit c56b7b3

Browse files
committed
feat: Add aria labels for folder/file icons in S3 resource selector
1 parent 33c1fcf commit c56b7b3

File tree

4 files changed

+11
-1
lines changed

4 files changed

+11
-1
lines changed

src/s3-resource-selector/__tests__/fixtures.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,8 @@ export const i18nStrings: S3ResourceSelectorProps.I18nStrings = {
8282
labelRefresh: 'Refresh the data',
8383
labelModalDismiss: 'Dismiss the modal',
8484
labelBreadcrumbs: 'S3 navigation',
85+
labelIconFolder: 'Folder',
86+
labelIconFile: 'File',
8587
};
8688

8789
export const buckets: ReadonlyArray<S3ResourceSelectorProps.Bucket> = [

src/s3-resource-selector/interfaces.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -267,6 +267,8 @@ export namespace S3ResourceSelectorProps {
267267
labelBreadcrumbs?: string;
268268
labelExpandBreadcrumbs?: string;
269269
labelClearFilter?: string;
270+
labelIconFile?: string;
271+
labelIconFolder?: string;
270272
}
271273

272274
export interface ChangeDetail {

src/s3-resource-selector/s3-modal/__tests__/objects-table.test.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,9 @@ test('Renders correct table content', async () => {
9999

100100
test('renders separate icons for folder and file', async () => {
101101
const wrapper = await renderTable(<ObjectsTable {...defaultProps} />);
102+
expect(wrapper.findBodyCell(1, 2)!.findIcon()!.getElement()).toHaveAccessibleName('Folder');
102103
expect(wrapper.findBodyCell(1, 2)!.findIcon()!.getElement()).toContainHTML(getIconHTML('folder'));
104+
expect(wrapper.findBodyCell(2, 2)!.findIcon()!.getElement()).toHaveAccessibleName('File');
103105
expect(wrapper.findBodyCell(2, 2)!.findIcon()!.getElement()).toContainHTML(getIconHTML('file'));
104106
});
105107

src/s3-resource-selector/s3-modal/objects-table.tsx

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import React from 'react';
44

55
import { useInternalI18n } from '../../i18n/context';
6+
import { IconProps } from '../../icon/interfaces';
67
import InternalIcon from '../../icon/internal';
78
import { ForwardFocusRef } from '../../internal/hooks/forward-focus';
89
import InternalLink from '../../link/internal';
@@ -92,9 +93,12 @@ export function ObjectsTable({
9293
sortingField: 'Key',
9394
cell: item => {
9495
const isClickable = item.IsFolder || includes(selectableItemsTypes, 'versions');
96+
const iconProps: IconProps = item.IsFolder
97+
? { name: 'folder', ariaLabel: i18nStrings?.labelIconFolder }
98+
: { name: 'file', ariaLabel: i18nStrings?.labelIconFile };
9599
return (
96100
<>
97-
<InternalIcon name={item.IsFolder ? 'folder' : 'file'} />{' '}
101+
<InternalIcon {...iconProps} />{' '}
98102
{isClickable ? (
99103
<InternalLink onFollow={() => item.Key && onDrilldown(item)} variant="link">
100104
{item.Key}

0 commit comments

Comments
 (0)