fix(chart table in dashboard): improve screen reading of table (#26453)
Co-authored-by: Elizabeth Thompson <eschutho@gmail.com>
This commit is contained in:
parent
be7c9490a1
commit
71a950fc80
|
|
@ -16,6 +16,7 @@
|
|||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
|
||||
import React, {
|
||||
useCallback,
|
||||
useRef,
|
||||
|
|
|
|||
|
|
@ -110,6 +110,7 @@ const fixedTableLayout: CSSProperties = { tableLayout: 'fixed' };
|
|||
/**
|
||||
* An HOC for generating sticky header and fixed-height scrollable area
|
||||
*/
|
||||
|
||||
function StickyWrap({
|
||||
sticky = {},
|
||||
width: maxWidth,
|
||||
|
|
@ -215,7 +216,8 @@ function StickyWrap({
|
|||
let sizerTable: ReactElement | undefined;
|
||||
let headerTable: ReactElement | undefined;
|
||||
let footerTable: ReactElement | undefined;
|
||||
let bodyTable: ReactElement | undefined;
|
||||
let fullTable: ReactElement | undefined;
|
||||
|
||||
if (needSizer) {
|
||||
const theadWithRef = React.cloneElement(thead, { ref: theadRef });
|
||||
const tfootWithRef = tfoot && React.cloneElement(tfoot, { ref: tfootRef });
|
||||
|
|
@ -253,6 +255,7 @@ function StickyWrap({
|
|||
style={{
|
||||
overflow: 'hidden',
|
||||
}}
|
||||
aria-hidden="true"
|
||||
>
|
||||
{React.cloneElement(
|
||||
table,
|
||||
|
|
@ -290,20 +293,18 @@ function StickyWrap({
|
|||
scrollFooterRef.current.scrollLeft = e.currentTarget.scrollLeft;
|
||||
}
|
||||
};
|
||||
bodyTable = (
|
||||
|
||||
fullTable = (
|
||||
<div
|
||||
key="body"
|
||||
key="full-table"
|
||||
ref={scrollBodyRef}
|
||||
style={{
|
||||
height: bodyHeight,
|
||||
overflow: 'auto',
|
||||
}}
|
||||
onScroll={sticky.hasHorizontalScroll ? onScroll : undefined}
|
||||
>
|
||||
{React.cloneElement(
|
||||
table,
|
||||
mergeStyleProp(table, fixedTableLayout),
|
||||
colgroup,
|
||||
thead,
|
||||
tbody,
|
||||
)}
|
||||
</div>
|
||||
|
|
@ -315,11 +316,11 @@ function StickyWrap({
|
|||
style={{
|
||||
width: maxWidth,
|
||||
height: sticky.realHeight || maxHeight,
|
||||
overflow: 'hidden',
|
||||
overflow: 'auto',
|
||||
padding: '0',
|
||||
}}
|
||||
>
|
||||
{headerTable}
|
||||
{bodyTable}
|
||||
{fullTable}
|
||||
{footerTable}
|
||||
{sizerTable}
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -32,10 +32,13 @@ export default styled.div`
|
|||
td {
|
||||
min-width: 4.3em;
|
||||
}
|
||||
|
||||
thead > tr > th {
|
||||
position: sticky;
|
||||
top: -1px;
|
||||
padding-right: 0;
|
||||
position: relative;
|
||||
z-index: 100;
|
||||
border-bottom: ${theme.gridUnit / 2}px solid
|
||||
${theme.colors.grayscale.light2};
|
||||
background: ${theme.colors.grayscale.light5};
|
||||
text-align: left;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue