@@ -59,7 +59,7 @@ interface ViewEventListProps {
59
59
onSelected : ( event : CollectedEvent | undefined ) => void ;
60
60
}
61
61
62
- const ListContainer = styled . table `
62
+ const ListContainer = styled . div < { role : ' table' } > `
63
63
display: block;
64
64
flex-grow: 1;
65
65
position: relative;
@@ -80,7 +80,7 @@ const ListContainer = styled.table`
80
80
}
81
81
` ;
82
82
83
- const Column = styled . td `
83
+ const Column = styled . div < { role : 'cell' | 'columnheader' } > `
84
84
display: block;
85
85
overflow: hidden;
86
86
text-overflow: ellipsis;
@@ -136,7 +136,7 @@ const RowMarker = styled(Column)`
136
136
border-left: 5px solid ${ p => p . theme . containerBackground } ;
137
137
` ;
138
138
139
- const MarkerHeader = styled . td `
139
+ const MarkerHeader = styled . div < { role : 'columnheader' } > `
140
140
flex-basis: 10px;
141
141
flex-shrink: 0;
142
142
` ;
@@ -223,7 +223,7 @@ const BuiltInApiRequestDetails = styled(Column)`
223
223
flex-basis: 1000px;
224
224
` ;
225
225
226
- const EventListRow = styled . tr `
226
+ const EventListRow = styled . div < { role : 'row' } > `
227
227
display: flex;
228
228
flex-direction: row;
229
229
align-items: center;
@@ -289,7 +289,7 @@ const TlsListRow = styled(EventListRow)`
289
289
}
290
290
` ;
291
291
292
- export const TableHeaderRow = styled . tr `
292
+ export const TableHeaderRow = styled . div < { role : 'row' } > `
293
293
height: 38px;
294
294
overflow: hidden;
295
295
width: 100%;
@@ -308,7 +308,7 @@ export const TableHeaderRow = styled.tr`
308
308
padding-right: 18px;
309
309
box-sizing: border-box;
310
310
311
- > td {
311
+ > div[role=columnheader] {
312
312
padding: 5px 0;
313
313
margin-right: 10px;
314
314
min-width: 0px;
@@ -399,6 +399,7 @@ const ExchangeRow = inject('uiStore')(observer(({
399
399
} = exchange ;
400
400
401
401
return < TrafficEventListRow
402
+ role = "row"
402
403
aria-label = {
403
404
`${ _ . startCase ( exchange . category ) } ${
404
405
request . method
@@ -426,9 +427,9 @@ const ExchangeRow = inject('uiStore')(observer(({
426
427
style = { style }
427
428
>
428
429
< RowPin aria-label = { pinned ? 'Pinned' : undefined } pinned = { pinned } />
429
- < RowMarker category = { category } title = { describeEventCategory ( category ) } />
430
- < Method pinned = { pinned } > { request . method } </ Method >
431
- < Status >
430
+ < RowMarker role = 'cell' category = { category } title = { describeEventCategory ( category ) } />
431
+ < Method role = 'cell' pinned = { pinned } > { request . method } </ Method >
432
+ < Status role = 'cell' >
432
433
{
433
434
response === 'aborted'
434
435
? < StatusCode status = { 'aborted' } />
@@ -451,7 +452,7 @@ const ExchangeRow = inject('uiStore')(observer(({
451
452
/>
452
453
}
453
454
</ Status >
454
- < Source >
455
+ < Source role = 'cell' >
455
456
< Icon
456
457
title = { request . source . summary }
457
458
{ ...request . source . icon }
@@ -474,10 +475,10 @@ const ExchangeRow = inject('uiStore')(observer(({
474
475
/>
475
476
}
476
477
</ Source >
477
- < Host title = { request . parsedUrl . host } >
478
+ < Host role = 'cell' title = { request . parsedUrl . host } >
478
479
{ request . parsedUrl . host }
479
480
</ Host >
480
- < PathAndQuery title = { request . parsedUrl . pathname + request . parsedUrl . search } >
481
+ < PathAndQuery role = 'cell' title = { request . parsedUrl . pathname + request . parsedUrl . search } >
481
482
{ request . parsedUrl . pathname + request . parsedUrl . search }
482
483
</ PathAndQuery >
483
484
</ TrafficEventListRow > ;
@@ -505,6 +506,7 @@ const RTCConnectionRow = observer(({
505
506
const { category, pinned } = event ;
506
507
507
508
return < TrafficEventListRow
509
+ role = "row"
508
510
aria-label = {
509
511
`${
510
512
event . closeState ? 'Closed' : 'Open'
@@ -524,17 +526,17 @@ const RTCConnectionRow = observer(({
524
526
style = { style }
525
527
>
526
528
< RowPin pinned = { pinned } />
527
- < RowMarker category = { category } title = { describeEventCategory ( category ) } />
528
- < EventTypeColumn >
529
+ < RowMarker role = 'cell' category = { category } title = { describeEventCategory ( category ) } />
530
+ < EventTypeColumn role = 'cell' >
529
531
{ ! event . closeState && < ConnectedSpinnerIcon /> } WebRTC
530
532
</ EventTypeColumn >
531
- < Source title = { event . source . summary } >
533
+ < Source role = 'cell' title = { event . source . summary } >
532
534
< Icon
533
535
{ ...event . source . icon }
534
536
fixedWidth = { true }
535
537
/>
536
538
</ Source >
537
- < RTCConnectionDetails >
539
+ < RTCConnectionDetails role = 'cell' >
538
540
{
539
541
event . clientURL
540
542
} < ArrowIcon direction = 'right' /> {
@@ -558,6 +560,7 @@ const RTCStreamRow = observer(({
558
560
const { category, pinned } = event ;
559
561
560
562
return < TrafficEventListRow
563
+ role = "row"
561
564
aria-label = {
562
565
`${
563
566
event . closeState ? 'Closed' : 'Open'
@@ -591,25 +594,25 @@ const RTCStreamRow = observer(({
591
594
style = { style }
592
595
>
593
596
< RowPin pinned = { pinned } />
594
- < RowMarker category = { category } title = { describeEventCategory ( category ) } />
595
- < EventTypeColumn >
597
+ < RowMarker role = 'cell' category = { category } title = { describeEventCategory ( category ) } />
598
+ < EventTypeColumn role = 'cell' >
596
599
{ ! event . closeState && < ConnectedSpinnerIcon /> } WebRTC {
597
600
event . isRTCDataChannel ( )
598
601
? 'Data'
599
602
: // RTCMediaTrack:
600
603
'Media'
601
604
}
602
605
</ EventTypeColumn >
603
- < Source title = { event . rtcConnection . source . summary } >
606
+ < Source role = 'cell' title = { event . rtcConnection . source . summary } >
604
607
< Icon
605
608
{ ...event . rtcConnection . source . icon }
606
609
fixedWidth = { true }
607
610
/>
608
611
</ Source >
609
- < RTCEventLabel >
612
+ < RTCEventLabel role = 'cell' >
610
613
< ArrowIcon direction = 'right' /> { event . rtcConnection . remoteURL }
611
614
</ RTCEventLabel >
612
- < RTCEventDetails >
615
+ < RTCEventDetails role = 'cell' >
613
616
{
614
617
event . isRTCDataChannel ( )
615
618
? < >
@@ -658,6 +661,7 @@ const BuiltInApiRow = observer((p: {
658
661
. join ( ', ' ) ;
659
662
660
663
return < TrafficEventListRow
664
+ role = "row"
661
665
aria-label = {
662
666
`${ _ . startCase ( category ) } ${
663
667
api . service . shortName
@@ -680,17 +684,17 @@ const BuiltInApiRow = observer((p: {
680
684
style = { p . style }
681
685
>
682
686
< RowPin pinned = { pinned } />
683
- < RowMarker category = { category } title = { describeEventCategory ( category ) } />
684
- < EventTypeColumn >
687
+ < RowMarker role = 'cell' category = { category } title = { describeEventCategory ( category ) } />
688
+ < EventTypeColumn role = 'cell' >
685
689
{ api . service . shortName } : { apiOperationName }
686
690
</ EventTypeColumn >
687
- < Source title = { request . source . summary } >
691
+ < Source role = 'cell' title = { request . source . summary } >
688
692
< Icon
689
693
{ ...request . source . icon }
690
694
fixedWidth = { true }
691
695
/>
692
696
</ Source >
693
- < BuiltInApiRequestDetails >
697
+ < BuiltInApiRequestDetails role = 'cell' >
694
698
{ apiRequestDescription }
695
699
</ BuiltInApiRequestDetails >
696
700
</ TrafficEventListRow >
@@ -717,6 +721,7 @@ const TlsRow = observer((p: {
717
721
const connectionTarget = tlsEvent . upstreamHostname || 'unknown domain' ;
718
722
719
723
return < TlsListRow
724
+ role = "row"
720
725
aria-label = { `${ description } connection to ${ connectionTarget } ` }
721
726
aria-rowindex = { p . index + 1 }
722
727
data-event-id = { tlsEvent . id }
@@ -774,8 +779,8 @@ export class ViewEventList extends React.Component<ViewEventListProps> {
774
779
render ( ) {
775
780
const { events, filteredEvents, isPaused } = this . props ;
776
781
777
- return < ListContainer >
778
- < TableHeaderRow >
782
+ return < ListContainer role = "table" >
783
+ < TableHeaderRow role = "row" >
779
784
< MarkerHeader role = "columnheader" aria-label = "Category" />
780
785
< Method role = "columnheader" > Method</ Method >
781
786
< Status role = "columnheader" > Status</ Status >
0 commit comments