@instructure/ui-table 9.1.1-pr-snapshot-1720014507835 → 9.1.1-pr-snapshot-1720090208194

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/CHANGELOG.md CHANGED
@@ -3,12 +3,9 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
- ## [9.1.1-pr-snapshot-1720014507835](https://github.com/instructure/instructure-ui/compare/v9.1.0...v9.1.1-pr-snapshot-1720014507835) (2024-07-03)
6
+ ## [9.1.1-pr-snapshot-1720090208194](https://github.com/instructure/instructure-ui/compare/v9.1.0...v9.1.1-pr-snapshot-1720090208194) (2024-07-04)
7
7
 
8
-
9
- ### Features
10
-
11
- * **ui-table:** remove restriction for children types and add documentation ([00e3026](https://github.com/instructure/instructure-ui/commit/00e30266d178c977fe828868b5dc000717dd8e1d))
8
+ **Note:** Version bump only for package @instructure/ui-table
12
9
 
13
10
 
14
11
 
@@ -25,11 +25,12 @@ var _dec, _class, _Body;
25
25
 
26
26
  /** @jsx jsx */
27
27
  import { Component, Children } from 'react';
28
- import { safeCloneElement, omitProps } from '@instructure/ui-react-utils';
28
+ import { matchComponentTypes, safeCloneElement, omitProps } from '@instructure/ui-react-utils';
29
29
  import { View } from '@instructure/ui-view';
30
30
  import { withStyle, jsx } from '@instructure/emotion';
31
31
  import generateStyle from './styles';
32
32
  import generateComponentTheme from './theme';
33
+ import { Row } from '../Row';
33
34
  import { allowedProps, propTypes } from './props';
34
35
 
35
36
  /**
@@ -58,12 +59,12 @@ let Body = (_dec = withStyle(generateStyle, generateComponentTheme), _dec(_class
58
59
  as: isStacked ? 'div' : 'tbody',
59
60
  css: styles === null || styles === void 0 ? void 0 : styles.body,
60
61
  role: isStacked ? 'rowgroup' : void 0
61
- }), Children.map(children, child => safeCloneElement(child, {
62
+ }), Children.map(children, child => matchComponentTypes(child, [Row]) ? safeCloneElement(child, {
62
63
  key: child.props.name,
63
64
  hover,
64
65
  isStacked,
65
66
  headers
66
- })));
67
+ }) : null));
67
68
  }
68
69
  }, _Body.displayName = "Body", _Body.componentId = 'Table.Body', _Body.allowedProps = allowedProps, _Body.propTypes = propTypes, _Body.defaultProps = {
69
70
  children: null
@@ -23,8 +23,10 @@
23
23
  */
24
24
 
25
25
  import PropTypes from 'prop-types';
26
+ import { Children as ChildrenPropTypes } from '@instructure/ui-prop-types';
27
+ import { Row } from '../Row';
26
28
  const propTypes = {
27
- children: PropTypes.node,
29
+ children: ChildrenPropTypes.oneOf([Row]),
28
30
  hover: PropTypes.bool,
29
31
  isStacked: PropTypes.bool,
30
32
  headers: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.node, PropTypes.func]))
@@ -23,8 +23,10 @@
23
23
  */
24
24
 
25
25
  import PropTypes from 'prop-types';
26
+ import { Children as ChildrenPropTypes } from '@instructure/ui-prop-types';
27
+ import { Row } from '../Row';
26
28
  const propTypes = {
27
- children: PropTypes.node,
29
+ children: ChildrenPropTypes.oneOf([Row]),
28
30
  isStacked: PropTypes.bool,
29
31
  renderSortLabel: PropTypes.oneOfType([PropTypes.node, PropTypes.func])
30
32
  };
@@ -25,11 +25,14 @@ var _dec, _class, _Row;
25
25
 
26
26
  /** @jsx jsx */
27
27
  import { Component, Children } from 'react';
28
- import { omitProps, safeCloneElement } from '@instructure/ui-react-utils';
28
+ import { omitProps, matchComponentTypes, safeCloneElement } from '@instructure/ui-react-utils';
29
29
  import { View } from '@instructure/ui-view';
30
30
  import { withStyle, jsx } from '@instructure/emotion';
31
31
  import generateStyle from './styles';
32
32
  import generateComponentTheme from './theme';
33
+ import { ColHeader } from '../ColHeader';
34
+ import { RowHeader } from '../RowHeader';
35
+ import { Cell } from '../Cell';
33
36
  import { allowedProps, propTypes } from './props';
34
37
 
35
38
  /**
@@ -58,11 +61,23 @@ let Row = (_dec = withStyle(generateStyle, generateComponentTheme), _dec(_class
58
61
  css: styles === null || styles === void 0 ? void 0 : styles.row,
59
62
  role: isStacked ? 'row' : void 0
60
63
  }), Children.toArray(children).filter(Boolean).map((child, index) => {
61
- return safeCloneElement(child, {
62
- key: child.props.name,
63
- isStacked,
64
- header: headers && headers[index]
65
- });
64
+ if (matchComponentTypes(child, [ColHeader])) {
65
+ return child;
66
+ }
67
+ if (matchComponentTypes(child, [RowHeader])) {
68
+ return safeCloneElement(child, {
69
+ key: child.props.name,
70
+ isStacked
71
+ });
72
+ }
73
+ if (matchComponentTypes(child, [Cell])) {
74
+ return safeCloneElement(child, {
75
+ key: child.props.name,
76
+ isStacked,
77
+ header: headers && headers[index]
78
+ });
79
+ }
80
+ return null;
66
81
  }));
67
82
  }
68
83
  }, _Row.displayName = "Row", _Row.componentId = 'Table.Row', _Row.allowedProps = allowedProps, _Row.propTypes = propTypes, _Row.defaultProps = {
@@ -23,8 +23,12 @@
23
23
  */
24
24
 
25
25
  import PropTypes from 'prop-types';
26
+ import { Children as ChildrenPropTypes } from '@instructure/ui-prop-types';
27
+ import { ColHeader } from '../ColHeader';
28
+ import { RowHeader } from '../RowHeader';
29
+ import { Cell } from '../Cell';
26
30
  const propTypes = {
27
- children: PropTypes.node,
31
+ children: ChildrenPropTypes.oneOf([ColHeader, RowHeader, Cell]),
28
32
  hover: PropTypes.bool,
29
33
  isStacked: PropTypes.bool,
30
34
  headers: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.node, PropTypes.func]))
package/es/Table/index.js CHANGED
@@ -26,7 +26,7 @@ var _dec, _class, _Table;
26
26
 
27
27
  /** @jsx jsx */
28
28
  import { Component, Children } from 'react';
29
- import { safeCloneElement, omitProps } from '@instructure/ui-react-utils';
29
+ import { matchComponentTypes, safeCloneElement, omitProps } from '@instructure/ui-react-utils';
30
30
  import { View } from '@instructure/ui-view';
31
31
  import { ScreenReaderContent } from '@instructure/ui-a11y-content';
32
32
  import { withStyle, jsx } from '@instructure/emotion';
@@ -70,13 +70,17 @@ let Table = (_dec = withStyle(generateStyle, generateComponentTheme), _dec(_clas
70
70
  const _ref = Children.toArray(children),
71
71
  _ref2 = _slicedToArray(_ref, 1),
72
72
  head = _ref2[0];
73
- const _Children$toArray = Children.toArray(head.props.children),
74
- _Children$toArray2 = _slicedToArray(_Children$toArray, 1),
75
- row = _Children$toArray2[0];
76
- if (!row) return void 0;
77
- return Children.map(row.props.children, colHeader => {
78
- return colHeader.props.children;
79
- });
73
+ if (matchComponentTypes(head, [Head])) {
74
+ const _Children$toArray = Children.toArray(head.props.children),
75
+ _Children$toArray2 = _slicedToArray(_Children$toArray, 1),
76
+ row = _Children$toArray2[0];
77
+ if (matchComponentTypes(row, [Row])) {
78
+ return Children.map(row.props.children, colHeader => {
79
+ return matchComponentTypes(colHeader, [ColHeader]) ? colHeader.props.children : void 0;
80
+ });
81
+ }
82
+ }
83
+ return void 0;
80
84
  }
81
85
  render() {
82
86
  const _this$props3 = this.props,
@@ -96,12 +100,21 @@ let Table = (_dec = withStyle(generateStyle, generateComponentTheme), _dec(_clas
96
100
  role: isStacked ? 'table' : void 0,
97
101
  "aria-label": isStacked ? caption : void 0
98
102
  }), !isStacked && jsx("caption", null, jsx(ScreenReaderContent, null, caption)), Children.map(children, child => {
99
- return safeCloneElement(child, {
100
- key: child.props.name,
101
- isStacked,
102
- hover,
103
- headers
104
- });
103
+ if (matchComponentTypes(child, [Head])) {
104
+ return safeCloneElement(child, {
105
+ key: child.props.name,
106
+ isStacked
107
+ });
108
+ }
109
+ if (matchComponentTypes(child, [Body])) {
110
+ return safeCloneElement(child, {
111
+ key: child.props.name,
112
+ isStacked,
113
+ hover,
114
+ headers
115
+ });
116
+ }
117
+ return null;
105
118
  }));
106
119
  }
107
120
  }, _Table.displayName = "Table", _Table.componentId = 'Table', _Table.allowedProps = allowedProps, _Table.propTypes = propTypes, _Table.defaultProps = {
package/es/Table/props.js CHANGED
@@ -23,10 +23,13 @@
23
23
  */
24
24
 
25
25
  import PropTypes from 'prop-types';
26
+ import { Children as ChildrenPropTypes } from '@instructure/ui-prop-types';
26
27
  import { ThemeablePropTypes } from '@instructure/emotion';
28
+ import { Head } from './Head';
29
+ import { Body } from './Body';
27
30
  const propTypes = {
28
31
  caption: PropTypes.node.isRequired,
29
- children: PropTypes.node,
32
+ children: ChildrenPropTypes.oneOf([Head, Body]),
30
33
  margin: ThemeablePropTypes.spacing,
31
34
  elementRef: PropTypes.func,
32
35
  hover: PropTypes.bool,
@@ -6,12 +6,14 @@ Object.defineProperty(exports, "__esModule", {
6
6
  });
7
7
  exports.default = exports.Body = void 0;
8
8
  var _react = require("react");
9
+ var _matchComponentTypes = require("@instructure/ui-react-utils/lib/matchComponentTypes.js");
9
10
  var _safeCloneElement = require("@instructure/ui-react-utils/lib/safeCloneElement.js");
10
11
  var _omitProps = require("@instructure/ui-react-utils/lib/omitProps.js");
11
12
  var _View = require("@instructure/ui-view/lib/View");
12
13
  var _emotion = require("@instructure/emotion");
13
14
  var _styles = _interopRequireDefault(require("./styles"));
14
15
  var _theme = _interopRequireDefault(require("./theme"));
16
+ var _Row = require("../Row");
15
17
  var _props = require("./props");
16
18
  var _dec, _class, _Body;
17
19
  /*
@@ -64,12 +66,12 @@ let Body = exports.Body = (_dec = (0, _emotion.withStyle)(_styles.default, _them
64
66
  as: isStacked ? 'div' : 'tbody',
65
67
  css: styles === null || styles === void 0 ? void 0 : styles.body,
66
68
  role: isStacked ? 'rowgroup' : void 0
67
- }), _react.Children.map(children, child => (0, _safeCloneElement.safeCloneElement)(child, {
69
+ }), _react.Children.map(children, child => (0, _matchComponentTypes.matchComponentTypes)(child, [_Row.Row]) ? (0, _safeCloneElement.safeCloneElement)(child, {
68
70
  key: child.props.name,
69
71
  hover,
70
72
  isStacked,
71
73
  headers
72
- })));
74
+ }) : null));
73
75
  }
74
76
  }, _Body.displayName = "Body", _Body.componentId = 'Table.Body', _Body.allowedProps = _props.allowedProps, _Body.propTypes = _props.propTypes, _Body.defaultProps = {
75
77
  children: null
@@ -6,6 +6,8 @@ Object.defineProperty(exports, "__esModule", {
6
6
  });
7
7
  exports.propTypes = exports.allowedProps = void 0;
8
8
  var _propTypes = _interopRequireDefault(require("prop-types"));
9
+ var _Children = require("@instructure/ui-prop-types/lib/Children.js");
10
+ var _Row = require("../Row");
9
11
  /*
10
12
  * The MIT License (MIT)
11
13
  *
@@ -31,7 +33,7 @@ var _propTypes = _interopRequireDefault(require("prop-types"));
31
33
  */
32
34
 
33
35
  const propTypes = exports.propTypes = {
34
- children: _propTypes.default.node,
36
+ children: _Children.Children.oneOf([_Row.Row]),
35
37
  hover: _propTypes.default.bool,
36
38
  isStacked: _propTypes.default.bool,
37
39
  headers: _propTypes.default.arrayOf(_propTypes.default.oneOfType([_propTypes.default.node, _propTypes.default.func]))
@@ -6,6 +6,8 @@ Object.defineProperty(exports, "__esModule", {
6
6
  });
7
7
  exports.propTypes = exports.allowedProps = void 0;
8
8
  var _propTypes = _interopRequireDefault(require("prop-types"));
9
+ var _Children = require("@instructure/ui-prop-types/lib/Children.js");
10
+ var _Row = require("../Row");
9
11
  /*
10
12
  * The MIT License (MIT)
11
13
  *
@@ -31,7 +33,7 @@ var _propTypes = _interopRequireDefault(require("prop-types"));
31
33
  */
32
34
 
33
35
  const propTypes = exports.propTypes = {
34
- children: _propTypes.default.node,
36
+ children: _Children.Children.oneOf([_Row.Row]),
35
37
  isStacked: _propTypes.default.bool,
36
38
  renderSortLabel: _propTypes.default.oneOfType([_propTypes.default.node, _propTypes.default.func])
37
39
  };
@@ -7,11 +7,15 @@ Object.defineProperty(exports, "__esModule", {
7
7
  exports.default = exports.Row = void 0;
8
8
  var _react = require("react");
9
9
  var _omitProps = require("@instructure/ui-react-utils/lib/omitProps.js");
10
+ var _matchComponentTypes = require("@instructure/ui-react-utils/lib/matchComponentTypes.js");
10
11
  var _safeCloneElement = require("@instructure/ui-react-utils/lib/safeCloneElement.js");
11
12
  var _View = require("@instructure/ui-view/lib/View");
12
13
  var _emotion = require("@instructure/emotion");
13
14
  var _styles = _interopRequireDefault(require("./styles"));
14
15
  var _theme = _interopRequireDefault(require("./theme"));
16
+ var _ColHeader = require("../ColHeader");
17
+ var _RowHeader = require("../RowHeader");
18
+ var _Cell = require("../Cell");
15
19
  var _props = require("./props");
16
20
  var _dec, _class, _Row;
17
21
  /*
@@ -64,11 +68,23 @@ let Row = exports.Row = (_dec = (0, _emotion.withStyle)(_styles.default, _theme.
64
68
  css: styles === null || styles === void 0 ? void 0 : styles.row,
65
69
  role: isStacked ? 'row' : void 0
66
70
  }), _react.Children.toArray(children).filter(Boolean).map((child, index) => {
67
- return (0, _safeCloneElement.safeCloneElement)(child, {
68
- key: child.props.name,
69
- isStacked,
70
- header: headers && headers[index]
71
- });
71
+ if ((0, _matchComponentTypes.matchComponentTypes)(child, [_ColHeader.ColHeader])) {
72
+ return child;
73
+ }
74
+ if ((0, _matchComponentTypes.matchComponentTypes)(child, [_RowHeader.RowHeader])) {
75
+ return (0, _safeCloneElement.safeCloneElement)(child, {
76
+ key: child.props.name,
77
+ isStacked
78
+ });
79
+ }
80
+ if ((0, _matchComponentTypes.matchComponentTypes)(child, [_Cell.Cell])) {
81
+ return (0, _safeCloneElement.safeCloneElement)(child, {
82
+ key: child.props.name,
83
+ isStacked,
84
+ header: headers && headers[index]
85
+ });
86
+ }
87
+ return null;
72
88
  }));
73
89
  }
74
90
  }, _Row.displayName = "Row", _Row.componentId = 'Table.Row', _Row.allowedProps = _props.allowedProps, _Row.propTypes = _props.propTypes, _Row.defaultProps = {
@@ -6,6 +6,10 @@ Object.defineProperty(exports, "__esModule", {
6
6
  });
7
7
  exports.propTypes = exports.allowedProps = void 0;
8
8
  var _propTypes = _interopRequireDefault(require("prop-types"));
9
+ var _Children = require("@instructure/ui-prop-types/lib/Children.js");
10
+ var _ColHeader = require("../ColHeader");
11
+ var _RowHeader = require("../RowHeader");
12
+ var _Cell = require("../Cell");
9
13
  /*
10
14
  * The MIT License (MIT)
11
15
  *
@@ -31,7 +35,7 @@ var _propTypes = _interopRequireDefault(require("prop-types"));
31
35
  */
32
36
 
33
37
  const propTypes = exports.propTypes = {
34
- children: _propTypes.default.node,
38
+ children: _Children.Children.oneOf([_ColHeader.ColHeader, _RowHeader.RowHeader, _Cell.Cell]),
35
39
  hover: _propTypes.default.bool,
36
40
  isStacked: _propTypes.default.bool,
37
41
  headers: _propTypes.default.arrayOf(_propTypes.default.oneOfType([_propTypes.default.node, _propTypes.default.func]))
@@ -7,6 +7,7 @@ Object.defineProperty(exports, "__esModule", {
7
7
  exports.default = exports.Table = void 0;
8
8
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
9
9
  var _react = require("react");
10
+ var _matchComponentTypes = require("@instructure/ui-react-utils/lib/matchComponentTypes.js");
10
11
  var _safeCloneElement = require("@instructure/ui-react-utils/lib/safeCloneElement.js");
11
12
  var _omitProps = require("@instructure/ui-react-utils/lib/omitProps.js");
12
13
  var _View = require("@instructure/ui-view/lib/View");
@@ -76,13 +77,17 @@ let Table = exports.Table = (_dec = (0, _emotion.withStyle)(_styles.default, _th
76
77
  const _ref = _react.Children.toArray(children),
77
78
  _ref2 = (0, _slicedToArray2.default)(_ref, 1),
78
79
  head = _ref2[0];
79
- const _Children$toArray = _react.Children.toArray(head.props.children),
80
- _Children$toArray2 = (0, _slicedToArray2.default)(_Children$toArray, 1),
81
- row = _Children$toArray2[0];
82
- if (!row) return void 0;
83
- return _react.Children.map(row.props.children, colHeader => {
84
- return colHeader.props.children;
85
- });
80
+ if ((0, _matchComponentTypes.matchComponentTypes)(head, [_Head.Head])) {
81
+ const _Children$toArray = _react.Children.toArray(head.props.children),
82
+ _Children$toArray2 = (0, _slicedToArray2.default)(_Children$toArray, 1),
83
+ row = _Children$toArray2[0];
84
+ if ((0, _matchComponentTypes.matchComponentTypes)(row, [_Row.Row])) {
85
+ return _react.Children.map(row.props.children, colHeader => {
86
+ return (0, _matchComponentTypes.matchComponentTypes)(colHeader, [_ColHeader.ColHeader]) ? colHeader.props.children : void 0;
87
+ });
88
+ }
89
+ }
90
+ return void 0;
86
91
  }
87
92
  render() {
88
93
  const _this$props3 = this.props,
@@ -102,12 +107,21 @@ let Table = exports.Table = (_dec = (0, _emotion.withStyle)(_styles.default, _th
102
107
  role: isStacked ? 'table' : void 0,
103
108
  "aria-label": isStacked ? caption : void 0
104
109
  }), !isStacked && (0, _emotion.jsx)("caption", null, (0, _emotion.jsx)(_ScreenReaderContent.ScreenReaderContent, null, caption)), _react.Children.map(children, child => {
105
- return (0, _safeCloneElement.safeCloneElement)(child, {
106
- key: child.props.name,
107
- isStacked,
108
- hover,
109
- headers
110
- });
110
+ if ((0, _matchComponentTypes.matchComponentTypes)(child, [_Head.Head])) {
111
+ return (0, _safeCloneElement.safeCloneElement)(child, {
112
+ key: child.props.name,
113
+ isStacked
114
+ });
115
+ }
116
+ if ((0, _matchComponentTypes.matchComponentTypes)(child, [_Body.Body])) {
117
+ return (0, _safeCloneElement.safeCloneElement)(child, {
118
+ key: child.props.name,
119
+ isStacked,
120
+ hover,
121
+ headers
122
+ });
123
+ }
124
+ return null;
111
125
  }));
112
126
  }
113
127
  }, _Table.displayName = "Table", _Table.componentId = 'Table', _Table.allowedProps = _props.allowedProps, _Table.propTypes = _props.propTypes, _Table.defaultProps = {
@@ -6,7 +6,10 @@ Object.defineProperty(exports, "__esModule", {
6
6
  });
7
7
  exports.propTypes = exports.allowedProps = void 0;
8
8
  var _propTypes = _interopRequireDefault(require("prop-types"));
9
+ var _Children = require("@instructure/ui-prop-types/lib/Children.js");
9
10
  var _emotion = require("@instructure/emotion");
11
+ var _Head = require("./Head");
12
+ var _Body = require("./Body");
10
13
  /*
11
14
  * The MIT License (MIT)
12
15
  *
@@ -33,7 +36,7 @@ var _emotion = require("@instructure/emotion");
33
36
 
34
37
  const propTypes = exports.propTypes = {
35
38
  caption: _propTypes.default.node.isRequired,
36
- children: _propTypes.default.node,
39
+ children: _Children.Children.oneOf([_Head.Head, _Body.Body]),
37
40
  margin: _emotion.ThemeablePropTypes.spacing,
38
41
  elementRef: _propTypes.default.func,
39
42
  hover: _propTypes.default.bool,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@instructure/ui-table",
3
- "version": "9.1.1-pr-snapshot-1720014507835",
3
+ "version": "9.1.1-pr-snapshot-1720090208194",
4
4
  "description": "A styled HTML table component",
5
5
  "author": "Instructure, Inc. Engineering and Product Design",
6
6
  "module": "./es/index.js",
@@ -23,24 +23,24 @@
23
23
  },
24
24
  "license": "MIT",
25
25
  "devDependencies": {
26
- "@instructure/ui-babel-preset": "9.1.1-pr-snapshot-1720014507835",
27
- "@instructure/ui-color-utils": "9.1.1-pr-snapshot-1720014507835",
28
- "@instructure/ui-test-utils": "9.1.1-pr-snapshot-1720014507835",
29
- "@instructure/ui-themes": "9.1.1-pr-snapshot-1720014507835"
26
+ "@instructure/ui-babel-preset": "9.1.1-pr-snapshot-1720090208194",
27
+ "@instructure/ui-color-utils": "9.1.1-pr-snapshot-1720090208194",
28
+ "@instructure/ui-test-utils": "9.1.1-pr-snapshot-1720090208194",
29
+ "@instructure/ui-themes": "9.1.1-pr-snapshot-1720090208194"
30
30
  },
31
31
  "dependencies": {
32
32
  "@babel/runtime": "^7.24.5",
33
- "@instructure/console": "9.1.1-pr-snapshot-1720014507835",
34
- "@instructure/emotion": "9.1.1-pr-snapshot-1720014507835",
35
- "@instructure/shared-types": "9.1.1-pr-snapshot-1720014507835",
36
- "@instructure/ui-a11y-content": "9.1.1-pr-snapshot-1720014507835",
37
- "@instructure/ui-icons": "9.1.1-pr-snapshot-1720014507835",
38
- "@instructure/ui-prop-types": "9.1.1-pr-snapshot-1720014507835",
39
- "@instructure/ui-react-utils": "9.1.1-pr-snapshot-1720014507835",
40
- "@instructure/ui-simple-select": "9.1.1-pr-snapshot-1720014507835",
41
- "@instructure/ui-testable": "9.1.1-pr-snapshot-1720014507835",
42
- "@instructure/ui-utils": "9.1.1-pr-snapshot-1720014507835",
43
- "@instructure/ui-view": "9.1.1-pr-snapshot-1720014507835",
33
+ "@instructure/console": "9.1.1-pr-snapshot-1720090208194",
34
+ "@instructure/emotion": "9.1.1-pr-snapshot-1720090208194",
35
+ "@instructure/shared-types": "9.1.1-pr-snapshot-1720090208194",
36
+ "@instructure/ui-a11y-content": "9.1.1-pr-snapshot-1720090208194",
37
+ "@instructure/ui-icons": "9.1.1-pr-snapshot-1720090208194",
38
+ "@instructure/ui-prop-types": "9.1.1-pr-snapshot-1720090208194",
39
+ "@instructure/ui-react-utils": "9.1.1-pr-snapshot-1720090208194",
40
+ "@instructure/ui-simple-select": "9.1.1-pr-snapshot-1720090208194",
41
+ "@instructure/ui-testable": "9.1.1-pr-snapshot-1720090208194",
42
+ "@instructure/ui-utils": "9.1.1-pr-snapshot-1720090208194",
43
+ "@instructure/ui-view": "9.1.1-pr-snapshot-1720090208194",
44
44
  "prop-types": "^15.8.1"
45
45
  },
46
46
  "peerDependencies": {
@@ -25,12 +25,17 @@
25
25
  /** @jsx jsx */
26
26
  import { Component, Children } from 'react'
27
27
 
28
- import { safeCloneElement, omitProps } from '@instructure/ui-react-utils'
28
+ import {
29
+ matchComponentTypes,
30
+ safeCloneElement,
31
+ omitProps
32
+ } from '@instructure/ui-react-utils'
29
33
  import { View } from '@instructure/ui-view'
30
34
  import { withStyle, jsx } from '@instructure/emotion'
31
35
 
32
36
  import generateStyle from './styles'
33
37
  import generateComponentTheme from './theme'
38
+ import { Row } from '../Row'
34
39
  import type { TableBodyProps } from './props'
35
40
  import type { RowChild } from '../props'
36
41
  import { allowedProps, propTypes } from './props'
@@ -71,12 +76,14 @@ class Body extends Component<TableBodyProps> {
71
76
  role={isStacked ? 'rowgroup' : undefined}
72
77
  >
73
78
  {Children.map(children as RowChild[], (child) =>
74
- safeCloneElement(child, {
75
- key: child.props.name,
76
- hover,
77
- isStacked,
78
- headers
79
- })
79
+ matchComponentTypes(child, [Row])
80
+ ? safeCloneElement(child, {
81
+ key: child.props.name,
82
+ hover,
83
+ isStacked,
84
+ headers
85
+ })
86
+ : null
80
87
  )}
81
88
  </View>
82
89
  )
@@ -24,6 +24,9 @@
24
24
  import React from 'react'
25
25
  import PropTypes from 'prop-types'
26
26
 
27
+ import { Children as ChildrenPropTypes } from '@instructure/ui-prop-types'
28
+
29
+ import { Row } from '../Row'
27
30
  import type { TableRowProps } from '../Row/props'
28
31
 
29
32
  import type {
@@ -54,7 +57,7 @@ type TableBodyProps = TableBodyOwnProps &
54
57
  type TableBodyStyle = ComponentStyle<'body'>
55
58
 
56
59
  const propTypes: PropValidators<PropKeys> = {
57
- children: PropTypes.node,
60
+ children: ChildrenPropTypes.oneOf([Row]),
58
61
  hover: PropTypes.bool,
59
62
  isStacked: PropTypes.bool,
60
63
  headers: PropTypes.arrayOf(
@@ -25,6 +25,10 @@
25
25
  import React from 'react'
26
26
  import PropTypes from 'prop-types'
27
27
 
28
+ import { Children as ChildrenPropTypes } from '@instructure/ui-prop-types'
29
+
30
+ import { Row } from '../Row'
31
+
28
32
  import type {
29
33
  OtherHTMLAttributes,
30
34
  PropValidators,
@@ -52,7 +56,7 @@ type TableHeadProps = TableHeadOwnProps &
52
56
  type TableHeadStyle = ComponentStyle<'head'>
53
57
 
54
58
  const propTypes: PropValidators<PropKeys> = {
55
- children: PropTypes.node,
59
+ children: ChildrenPropTypes.oneOf([Row]),
56
60
  isStacked: PropTypes.bool,
57
61
  renderSortLabel: PropTypes.oneOfType([PropTypes.node, PropTypes.func])
58
62
  }