@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.
Files changed (72) hide show
  1. package/es/Table/Body/index.js +2 -1
  2. package/es/Table/Body/props.js +0 -3
  3. package/es/Table/Cell/index.js +1 -0
  4. package/es/Table/Cell/props.js +0 -4
  5. package/es/Table/ColHeader/index.js +3 -2
  6. package/es/Table/ColHeader/props.js +0 -30
  7. package/es/Table/Head/index.js +25 -21
  8. package/es/Table/Head/props.js +0 -3
  9. package/es/Table/Row/index.js +1 -0
  10. package/es/Table/Row/props.js +0 -3
  11. package/es/Table/RowHeader/index.js +1 -0
  12. package/es/Table/RowHeader/props.js +0 -4
  13. package/es/Table/index.js +8 -7
  14. package/es/Table/props.js +0 -28
  15. package/lib/Table/Body/index.js +2 -1
  16. package/lib/Table/Body/props.js +0 -3
  17. package/lib/Table/Cell/index.js +1 -0
  18. package/lib/Table/Cell/props.js +0 -4
  19. package/lib/Table/ColHeader/index.js +5 -2
  20. package/lib/Table/ColHeader/props.js +0 -30
  21. package/lib/Table/Head/index.js +29 -23
  22. package/lib/Table/Head/props.js +0 -3
  23. package/lib/Table/Row/index.js +1 -0
  24. package/lib/Table/Row/props.js +0 -3
  25. package/lib/Table/RowHeader/index.js +1 -0
  26. package/lib/Table/RowHeader/props.js +0 -4
  27. package/lib/Table/index.js +10 -7
  28. package/lib/Table/props.js +0 -28
  29. package/package.json +17 -17
  30. package/src/Table/Body/index.tsx +14 -12
  31. package/src/Table/Body/props.ts +5 -4
  32. package/src/Table/Cell/index.tsx +1 -0
  33. package/src/Table/Cell/props.ts +5 -5
  34. package/src/Table/ColHeader/index.tsx +6 -15
  35. package/src/Table/ColHeader/props.ts +29 -26
  36. package/src/Table/Head/index.tsx +38 -21
  37. package/src/Table/Head/props.ts +4 -4
  38. package/src/Table/Row/index.tsx +3 -4
  39. package/src/Table/Row/props.ts +5 -4
  40. package/src/Table/RowHeader/index.tsx +1 -0
  41. package/src/Table/RowHeader/props.ts +4 -4
  42. package/src/Table/index.tsx +14 -10
  43. package/src/Table/props.ts +24 -24
  44. package/tsconfig.build.tsbuildinfo +1 -1
  45. package/types/Table/Body/index.d.ts +4 -3
  46. package/types/Table/Body/index.d.ts.map +1 -1
  47. package/types/Table/Body/props.d.ts +5 -1
  48. package/types/Table/Body/props.d.ts.map +1 -1
  49. package/types/Table/Cell/index.d.ts +5 -4
  50. package/types/Table/Cell/index.d.ts.map +1 -1
  51. package/types/Table/Cell/props.d.ts +5 -2
  52. package/types/Table/Cell/props.d.ts.map +1 -1
  53. package/types/Table/ColHeader/index.d.ts +11 -6
  54. package/types/Table/ColHeader/index.d.ts.map +1 -1
  55. package/types/Table/ColHeader/props.d.ts +28 -2
  56. package/types/Table/ColHeader/props.d.ts.map +1 -1
  57. package/types/Table/Head/index.d.ts +6 -5
  58. package/types/Table/Head/index.d.ts.map +1 -1
  59. package/types/Table/Head/props.d.ts +4 -1
  60. package/types/Table/Head/props.d.ts.map +1 -1
  61. package/types/Table/Row/index.d.ts +3 -2
  62. package/types/Table/Row/index.d.ts.map +1 -1
  63. package/types/Table/Row/props.d.ts +5 -1
  64. package/types/Table/Row/props.d.ts.map +1 -1
  65. package/types/Table/RowHeader/index.d.ts +3 -2
  66. package/types/Table/RowHeader/index.d.ts.map +1 -1
  67. package/types/Table/RowHeader/props.d.ts +4 -1
  68. package/types/Table/RowHeader/props.d.ts.map +1 -1
  69. package/types/Table/index.d.ts +7 -6
  70. package/types/Table/index.d.ts.map +1 -1
  71. package/types/Table/props.d.ts +24 -1
  72. package/types/Table/props.d.ts.map +1 -1
@@ -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
- // @ts-expect-error ts-migrate(2339) FIXME: Property 'props' does not exist on type 'string | ... Remove this comment to see the full error message
101
- const [row] = Children.toArray(head.props.children)
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
- // @ts-expect-error ts-migrate(2533) FIXME: Object is possibly 'null' or 'undefined'.
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
- // @ts-expect-error ts-migrate(2533) FIXME: Object is possibly 'null' or 'undefined'.
149
- key: child.props.name,
153
+ key: (child as Body).props.name,
150
154
  isStacked,
151
155
  hover,
152
156
  headers
@@ -42,11 +42,34 @@ import type {
42
42
  } from '@instructure/shared-types'
43
43
 
44
44
  type TableOwnProps = {
45
- caption: React.ReactNode
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