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