@instructure/ui-table 8.14.1-snapshot.46 → 8.14.1-snapshot.47
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.
- package/es/Table/Body/index.js +2 -1
- package/es/Table/Body/props.js +0 -3
- package/es/Table/Cell/index.js +1 -0
- package/es/Table/Cell/props.js +0 -4
- package/es/Table/ColHeader/index.js +3 -2
- package/es/Table/ColHeader/props.js +0 -30
- package/es/Table/Head/index.js +25 -21
- package/es/Table/Head/props.js +0 -3
- package/es/Table/Row/index.js +1 -0
- package/es/Table/Row/props.js +0 -3
- package/es/Table/RowHeader/index.js +1 -0
- package/es/Table/RowHeader/props.js +0 -4
- package/es/Table/index.js +8 -7
- package/es/Table/props.js +0 -28
- package/lib/Table/Body/index.js +2 -1
- package/lib/Table/Body/props.js +0 -3
- package/lib/Table/Cell/index.js +1 -0
- package/lib/Table/Cell/props.js +0 -4
- package/lib/Table/ColHeader/index.js +5 -2
- package/lib/Table/ColHeader/props.js +0 -30
- package/lib/Table/Head/index.js +29 -23
- package/lib/Table/Head/props.js +0 -3
- package/lib/Table/Row/index.js +1 -0
- package/lib/Table/Row/props.js +0 -3
- package/lib/Table/RowHeader/index.js +1 -0
- package/lib/Table/RowHeader/props.js +0 -4
- package/lib/Table/index.js +10 -7
- package/lib/Table/props.js +0 -28
- package/package.json +17 -17
- package/src/Table/Body/index.tsx +14 -12
- package/src/Table/Body/props.ts +5 -4
- package/src/Table/Cell/index.tsx +1 -0
- package/src/Table/Cell/props.ts +5 -5
- package/src/Table/ColHeader/index.tsx +6 -15
- package/src/Table/ColHeader/props.ts +29 -26
- package/src/Table/Head/index.tsx +38 -21
- package/src/Table/Head/props.ts +4 -4
- package/src/Table/Row/index.tsx +3 -4
- package/src/Table/Row/props.ts +5 -4
- package/src/Table/RowHeader/index.tsx +1 -0
- package/src/Table/RowHeader/props.ts +4 -4
- package/src/Table/index.tsx +14 -10
- package/src/Table/props.ts +24 -24
- package/tsconfig.build.tsbuildinfo +1 -1
- package/types/Table/Body/index.d.ts +4 -3
- package/types/Table/Body/index.d.ts.map +1 -1
- package/types/Table/Body/props.d.ts +5 -1
- package/types/Table/Body/props.d.ts.map +1 -1
- package/types/Table/Cell/index.d.ts +5 -4
- package/types/Table/Cell/index.d.ts.map +1 -1
- package/types/Table/Cell/props.d.ts +5 -2
- package/types/Table/Cell/props.d.ts.map +1 -1
- package/types/Table/ColHeader/index.d.ts +11 -6
- package/types/Table/ColHeader/index.d.ts.map +1 -1
- package/types/Table/ColHeader/props.d.ts +28 -2
- package/types/Table/ColHeader/props.d.ts.map +1 -1
- package/types/Table/Head/index.d.ts +6 -5
- package/types/Table/Head/index.d.ts.map +1 -1
- package/types/Table/Head/props.d.ts +4 -1
- package/types/Table/Head/props.d.ts.map +1 -1
- package/types/Table/Row/index.d.ts +3 -2
- package/types/Table/Row/index.d.ts.map +1 -1
- package/types/Table/Row/props.d.ts +5 -1
- package/types/Table/Row/props.d.ts.map +1 -1
- package/types/Table/RowHeader/index.d.ts +3 -2
- package/types/Table/RowHeader/index.d.ts.map +1 -1
- package/types/Table/RowHeader/props.d.ts +4 -1
- package/types/Table/RowHeader/props.d.ts.map +1 -1
- package/types/Table/index.d.ts +7 -6
- package/types/Table/index.d.ts.map +1 -1
- package/types/Table/props.d.ts +24 -1
- package/types/Table/props.d.ts.map +1 -1
package/src/Table/index.tsx
CHANGED
@@ -23,7 +23,7 @@
|
|
23
23
|
*/
|
24
24
|
|
25
25
|
/** @jsx jsx */
|
26
|
-
import { Component, Children, ReactElement } from 'react'
|
26
|
+
import React, { Component, Children, ReactElement } from 'react'
|
27
27
|
|
28
28
|
import {
|
29
29
|
matchComponentTypes,
|
@@ -45,12 +45,15 @@ import { ColHeader } from './ColHeader'
|
|
45
45
|
import { RowHeader } from './RowHeader'
|
46
46
|
import { Cell } from './Cell'
|
47
47
|
import type { TableProps } from './props'
|
48
|
+
import type { TableHeadProps } from './Head/props'
|
49
|
+
import type { TableRowProps } from './Row/props'
|
48
50
|
import { allowedProps, propTypes } from './props'
|
49
51
|
|
50
52
|
/**
|
51
53
|
---
|
52
54
|
category: components
|
53
55
|
---
|
56
|
+
@tsProps
|
54
57
|
**/
|
55
58
|
@withStyle(generateStyle, generateComponentTheme)
|
56
59
|
class Table extends Component<TableProps> {
|
@@ -94,17 +97,20 @@ class Table extends Component<TableProps> {
|
|
94
97
|
|
95
98
|
getHeaders() {
|
96
99
|
const { children } = this.props
|
97
|
-
const [head] = Children.toArray(children)
|
100
|
+
const [head] = Children.toArray(children) as React.ComponentElement<
|
101
|
+
TableHeadProps,
|
102
|
+
Head
|
103
|
+
>[]
|
98
104
|
|
99
105
|
if (matchComponentTypes(head, [Head])) {
|
100
|
-
|
101
|
-
|
106
|
+
const [row] = Children.toArray(
|
107
|
+
head.props.children
|
108
|
+
) as React.ComponentElement<TableRowProps, Row>[]
|
102
109
|
|
103
110
|
if (matchComponentTypes(row, [Row])) {
|
104
|
-
// @ts-expect-error ts-migrate(2339) FIXME: Property 'props' does not exist on type 'string | ... Remove this comment to see the full error message
|
105
111
|
return Children.map(row.props.children, (colHeader) => {
|
106
112
|
return matchComponentTypes(colHeader, [ColHeader])
|
107
|
-
? colHeader.props.children
|
113
|
+
? (colHeader as ColHeader).props.children
|
108
114
|
: null
|
109
115
|
})
|
110
116
|
}
|
@@ -138,15 +144,13 @@ class Table extends Component<TableProps> {
|
|
138
144
|
{Children.map(children, (child) => {
|
139
145
|
if (matchComponentTypes(child, [Head])) {
|
140
146
|
return safeCloneElement(child as ReactElement, {
|
141
|
-
|
142
|
-
key: child.props.name,
|
147
|
+
key: (child as Head).props.name,
|
143
148
|
isStacked
|
144
149
|
})
|
145
150
|
}
|
146
151
|
if (matchComponentTypes(child, [Body])) {
|
147
152
|
return safeCloneElement(child as ReactElement, {
|
148
|
-
|
149
|
-
key: child.props.name,
|
153
|
+
key: (child as Body).props.name,
|
150
154
|
isStacked,
|
151
155
|
hover,
|
152
156
|
headers
|
package/src/Table/props.ts
CHANGED
@@ -42,11 +42,34 @@ import type {
|
|
42
42
|
} from '@instructure/shared-types'
|
43
43
|
|
44
44
|
type TableOwnProps = {
|
45
|
-
|
45
|
+
/**
|
46
|
+
* Provide a screen reader friendly description. Anything passed to this
|
47
|
+
* prop will be wrapped by `<ScreenReaderContent>` when it is rendered.
|
48
|
+
*/
|
49
|
+
caption?: React.ReactNode
|
50
|
+
/**
|
51
|
+
* Valid values are `0`, `none`, `auto`, `xxx-small`, `xx-small`, `x-small`,
|
52
|
+
* `small`, `medium`, `large`, `x-large`, `xx-large`. Apply these values via
|
53
|
+
* familiar CSS-like shorthand. For example: `margin="small auto large"`.
|
54
|
+
*/
|
46
55
|
margin?: Spacing
|
56
|
+
/**
|
57
|
+
* Provide a reference to the underlying html element
|
58
|
+
*/
|
47
59
|
elementRef?: (element: Element | null) => void
|
60
|
+
/**
|
61
|
+
* Highlight each row on hover
|
62
|
+
*/
|
48
63
|
hover?: boolean
|
64
|
+
/**
|
65
|
+
* `auto` lets the browser determine table column widths based on cell content,
|
66
|
+
* while `fixed` forces columns of equal width. `stacked` renders table in one
|
67
|
+
* column to be more readable on narrow screens
|
68
|
+
*/
|
49
69
|
layout?: 'auto' | 'fixed' | 'stacked'
|
70
|
+
/**
|
71
|
+
* Build table via `Table.Head` and `Table.Body`
|
72
|
+
*/
|
50
73
|
children?: React.ReactNode
|
51
74
|
}
|
52
75
|
|
@@ -61,34 +84,11 @@ type TableProps = TableOwnProps &
|
|
61
84
|
type TableStyle = ComponentStyle<'table'>
|
62
85
|
|
63
86
|
const propTypes: PropValidators<PropKeys> = {
|
64
|
-
/**
|
65
|
-
* Provide a screen reader friendly description. Anything passed to this
|
66
|
-
* prop will be wrapped by `<ScreenReaderContent>` when it is rendered.
|
67
|
-
*/
|
68
87
|
caption: PropTypes.node.isRequired,
|
69
|
-
/**
|
70
|
-
* Build table via `Table.Head` and `Table.Body`
|
71
|
-
*/
|
72
88
|
children: ChildrenPropTypes.oneOf([Head, Body]),
|
73
|
-
/**
|
74
|
-
* Valid values are `0`, `none`, `auto`, `xxx-small`, `xx-small`, `x-small`,
|
75
|
-
* `small`, `medium`, `large`, `x-large`, `xx-large`. Apply these values via
|
76
|
-
* familiar CSS-like shorthand. For example: `margin="small auto large"`.
|
77
|
-
*/
|
78
89
|
margin: ThemeablePropTypes.spacing,
|
79
|
-
/**
|
80
|
-
* Provide a reference to the underlying html element
|
81
|
-
*/
|
82
90
|
elementRef: PropTypes.func,
|
83
|
-
/**
|
84
|
-
* Highlight each row on hover
|
85
|
-
*/
|
86
91
|
hover: PropTypes.bool,
|
87
|
-
/**
|
88
|
-
* `auto` lets the browser determine table column widths based on cell content,
|
89
|
-
* while `fixed` forces columns of equal width. `stacked` renders table in one
|
90
|
-
* column to be more readable on narrow screens
|
91
|
-
*/
|
92
92
|
layout: PropTypes.oneOf(['auto', 'fixed', 'stacked'])
|
93
93
|
}
|
94
94
|
|