- { groupTimestamp }
- { groupPadlock }
- { thread }
-
- { keyRequestInfo }
- { reactionsRow }
- { actionBar }
-
- {
- // The avatar goes after the event tile as it's absolutely positioned to be over the
- // event tile line, so needs to be later in the DOM so it appears on top (this avoids
- // the need for further z-indexing chaos)
- }
- { avatar }
+ let msgOptionClasses = classNames(
+ "mx_EventTile_msgOption",
+ { "sc_readReceipts_empty": !this.props.readReceipts || this.props.readReceipts.length === 0 },
+ );
+ const msgOption = (
+
+ { ircTimestamp }
+ { ircPadlock }
+
+ { groupPadlock }
+
+
+ { sender }
+ { thread }
+
+
+ { keyRequestInfo }
+ { reactionsRow }
+ { actionBar }
+
+
+ {
+ // The avatar goes after the event tile as it's absolutely positioned to be over the
+ // event tile line, so needs to be later in the DOM so it appears on top (this avoids
+ // the need for further z-indexing chaos)
+ }
+ { avatar }
+ { msgOption }
+
+ );
+ } else {
+ // tab-index=-1 to allow it to be focusable but do not add tab stop for it, primarily for screen readers
+ return (
+
+ { ircTimestamp }
+ { !this.props.useBubbleLayout ? msgOption : null }
+ { sender }
+ { ircPadlock }
+
+ { groupTimestamp }
+ { groupPadlock }
+ { thread }
+
+ { keyRequestInfo }
+ { reactionsRow }
+ { actionBar }
+
+ {
+ // The avatar goes after the event tile as it's absolutely positioned to be over the
+ // event tile line, so needs to be later in the DOM so it appears on top (this avoids
+ // the need for further z-indexing chaos)
+ }
+ { avatar }
+ { this.props.useBubbleLayout ? msgOption : null }
+
+ );
+ }
}
}
}