simple-table-core 3.6.9 → 3.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ARIA row layer.
|
|
3
|
+
*
|
|
4
|
+
* The table renders cells as absolutely-positioned, virtualized, FLIP-animated
|
|
5
|
+
* elements. The ARIA `grid` pattern, however, requires the hierarchy
|
|
6
|
+
* `grid → rowgroup → row → gridcell/columnheader`; a flat list of cells under
|
|
7
|
+
* the section (rowgroup) makes validators (axe) report the cells as disallowed
|
|
8
|
+
* children of the rowgroup and as missing their required `row` parent.
|
|
9
|
+
*
|
|
10
|
+
* `aria-owns` does NOT solve this: axe (and the ARIA tree) still treat a cell
|
|
11
|
+
* as a child of its DOM parent, so the cell remains an invalid rowgroup child.
|
|
12
|
+
* The cells must therefore be real DOM descendants of a `role="row"` element.
|
|
13
|
+
*
|
|
14
|
+
* To get that hierarchy without disturbing the carefully-tuned positioning and
|
|
15
|
+
* animation machinery, the row element uses `display: contents`: it generates
|
|
16
|
+
* no box, establishes no containing block, and takes part in no layout, so its
|
|
17
|
+
* absolutely-positioned cell children are laid out exactly as if they were
|
|
18
|
+
* still direct children of the section. It is still present in the
|
|
19
|
+
* accessibility tree (axe's screen-reader visibility check only looks at
|
|
20
|
+
* `display:none` / `visibility` / `content-visibility` / `aria-hidden`, never
|
|
21
|
+
* at box size), so it provides the required `row` layer for free.
|
|
22
|
+
*/
|
|
23
|
+
/**
|
|
24
|
+
* Return the `role="row"` element for `rowKey` inside `container`, creating it
|
|
25
|
+
* (as a zero-box `display: contents` element) on first use. Refreshes
|
|
26
|
+
* `aria-rowindex` when it changes. New cells should be appended to the returned
|
|
27
|
+
* element so they become DOM descendants of a row.
|
|
28
|
+
*/
|
|
29
|
+
export declare const getOrCreateRowElement: (container: HTMLElement, rowKey: string, ariaRowIndex: number) => HTMLElement;
|
|
30
|
+
/**
|
|
31
|
+
* Remove row elements that no longer contain any cells. Retained animation
|
|
32
|
+
* "ghost" cells keep their row alive until they finish and remove themselves,
|
|
33
|
+
* so we prune purely on emptiness rather than on a live-row set.
|
|
34
|
+
*/
|
|
35
|
+
export declare const reconcileRowElements: (container: HTMLElement) => void;
|
|
36
|
+
/** Remove every row element tracked for `container`. */
|
|
37
|
+
export declare const cleanupAriaRows: (container: HTMLElement) => void;
|