@spothero/ui 15.10.9 → 16.0.0-beta.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.
Files changed (316) hide show
  1. package/.eslintignore +2 -1
  2. package/dex.config.js +1 -1
  3. package/jest.config.json +1 -2
  4. package/package.json +8 -24
  5. package/styles/{v2/components → components}/Accordion/Accordion.stories.js +2 -2
  6. package/styles/{v2/components → components}/Accordion/styles/button.js +1 -1
  7. package/styles/{v2/components → components}/Alert/Alert.jsx +2 -2
  8. package/styles/{v2/components → components}/AutoSuggestSelect/AutoSuggestSelect.jsx +7 -0
  9. package/styles/{v2/components → components}/Button/stories/button.js +1 -1
  10. package/styles/{v2/components → components}/Button/stories/overview.js +1 -1
  11. package/styles/{v2/components → components}/FormControl/FormControl.jsx +2 -0
  12. package/styles/{v2/components → components}/Grid/Grid.stories.js +1 -1
  13. package/styles/{v2/components → components}/Heading/Heading.styles.js +1 -1
  14. package/styles/{v2/components → components}/Image/Image.jsx +23 -2
  15. package/styles/{v2/components → components}/Link/Link.stories.js +2 -2
  16. package/styles/{v2/components → components}/List/List.stories.js +2 -2
  17. package/styles/{v2/components → components}/Modal/Modal.jsx +0 -1
  18. package/styles/{v2/components → components}/Modal/Modal.stories.js +4 -4
  19. package/styles/{v2/components → components}/Popover/Popover.stories.js +1 -1
  20. package/styles/{v2/components → components}/Skeleton/index.js +1 -1
  21. package/styles/{v2/components → components}/Spinner/Spinner.stories.js +1 -1
  22. package/styles/{v2/components → components}/Table/Table.styles.js +1 -1
  23. package/styles/{v2/components → components}/Tabs/Tabs.jsx +2 -3
  24. package/styles/{v2/components → components}/Tabs/combineSizeWithVariant.js +5 -3
  25. package/styles/{v2/components → components}/Text/Text.styles.js +1 -1
  26. package/styles/{v2/components → components}/Text/combineAsWithVariant.js +1 -1
  27. package/styles/{v2/components → components}/ThemeProvider/ThemeProvider.jsx +2 -2
  28. package/styles/{v2/components → components}/ThemeProvider/ThemeProvider.stories.js +2 -2
  29. package/v2/index.js +1 -1
  30. package/v2/index.js.map +1 -1
  31. package/backlog/Alert/Alert.js +0 -37
  32. package/backlog/AutoSuggestInput/AutoSuggestInput.js +0 -474
  33. package/backlog/AutoSuggestInput/AutoSuggestItem.js +0 -99
  34. package/backlog/AutoSuggestInput/AutoSuggestList.js +0 -126
  35. package/backlog/Badge/Badge.js +0 -28
  36. package/backlog/Chart/Chart.js +0 -211
  37. package/backlog/Checkbox/Checkbox.js +0 -167
  38. package/backlog/DateTime/DatePicker.js +0 -279
  39. package/backlog/DateTime/DatePickerCalendar.js +0 -199
  40. package/backlog/DateTime/DatePickerCalendarNavigation.js +0 -102
  41. package/backlog/DateTime/DatePickerCalendarWithRange.js +0 -241
  42. package/backlog/DateTime/DateTimePicker.js +0 -216
  43. package/backlog/DateTime/DateTimeRangePicker.js +0 -530
  44. package/backlog/DateTime/TimePicker.js +0 -180
  45. package/backlog/DateTime/date-time-assertions.js +0 -66
  46. package/backlog/DateTime/index.js +0 -55
  47. package/backlog/ErrorBoundary/ErrorBoundary.js +0 -125
  48. package/backlog/Flyout/Flyout.js +0 -198
  49. package/backlog/Form/Form.js +0 -193
  50. package/backlog/Form/FormElementError.js +0 -24
  51. package/backlog/Form/FormGroup.js +0 -30
  52. package/backlog/Form/FormGroupError.js +0 -28
  53. package/backlog/Form/index.js +0 -39
  54. package/backlog/GooglePlacesSearchInput/GooglePlacesSearchInput.js +0 -253
  55. package/backlog/GooglePlacesSearchInput/PoweredByGoogle.js +0 -38
  56. package/backlog/GooglePlacesSearchInput/index.js +0 -23
  57. package/backlog/HorizontalRule/HorizontalRule.js +0 -30
  58. package/backlog/Label/Label.js +0 -31
  59. package/backlog/Notification/Notification.js +0 -178
  60. package/backlog/Notification/NotificationContainer.js +0 -131
  61. package/backlog/Notification/NotificationPropTypes.js +0 -37
  62. package/backlog/Notification/index.js +0 -23
  63. package/backlog/PasswordControl/PasswordControl.js +0 -201
  64. package/backlog/Portal/Portal.js +0 -110
  65. package/backlog/PulseLoader/PulseLoader.js +0 -62
  66. package/backlog/Radio/Radio.js +0 -135
  67. package/backlog/Radio/RadioGroup.js +0 -123
  68. package/backlog/Radio/index.js +0 -23
  69. package/backlog/RenderInBody/RenderInBody.js +0 -103
  70. package/backlog/Select/Select.js +0 -275
  71. package/backlog/Select/SelectItemPropTypes.js +0 -32
  72. package/backlog/Select/index.js +0 -23
  73. package/backlog/SelectControlled/SelectControlled.js +0 -270
  74. package/backlog/SelectControlled/index.js +0 -15
  75. package/backlog/Sprite/Sprite.js +0 -24
  76. package/backlog/Tabs/Tab.js +0 -94
  77. package/backlog/Tabs/TabContent.js +0 -56
  78. package/backlog/Tabs/TabNavigation.js +0 -108
  79. package/backlog/Tabs/TabPanel.js +0 -29
  80. package/backlog/Tabs/Tabs.js +0 -126
  81. package/backlog/Tabs/index.js +0 -47
  82. package/backlog/TextArea/TextArea.js +0 -155
  83. package/backlog/TextInput/TextInput.js +0 -230
  84. package/backlog/TextInput/TextInputPropTypes.js +0 -114
  85. package/backlog/TextInput/index.js +0 -23
  86. package/backlog/Tooltip/Tooltip.js +0 -249
  87. package/backlog/index.js +0 -393
  88. package/backlog/v1/components/Button/Button.js +0 -64
  89. package/backlog/v1/components/Button/button-props.js +0 -48
  90. package/backlog/v1/components/Image/Image.js +0 -193
  91. package/backlog/v1/components/Loader/Loader.js +0 -51
  92. package/backlog/v1/components/Modal/Modal.js +0 -325
  93. package/backlog/v1/components/Modal/ModalContent.js +0 -154
  94. package/backlog/v1/components/Modal/ModalFooter.js +0 -89
  95. package/backlog/v1/components/Modal/index.js +0 -31
  96. package/backlog/v1/components/Panel/Panel.js +0 -209
  97. package/backlog/v1/components/Table/Table.js +0 -336
  98. package/backlog/v1/components/Table/TableCell.js +0 -28
  99. package/backlog/v1/components/Table/TableCellPropTypes.js +0 -22
  100. package/backlog/v1/components/Table/TableControls.js +0 -56
  101. package/backlog/v1/components/Table/TableFooter.js +0 -63
  102. package/backlog/v1/components/Table/TableHeading.js +0 -126
  103. package/backlog/v1/components/Table/TableHeadingPropTypes.js +0 -35
  104. package/backlog/v1/components/Table/TableSortSelector.js +0 -125
  105. package/backlog/v1/components/Table/TableSortType.js +0 -11
  106. package/backlog/v1/components/Table/index.js +0 -47
  107. package/backlog/v1/components/TextButton/TextButton.js +0 -74
  108. package/backlog/v1/components/index.js +0 -75
  109. package/backlog/v1/utils/deprecate.js +0 -61
  110. package/styles/Alert/_Alert.scss +0 -51
  111. package/styles/AutoSuggestInput/_AutoSuggestInput.scss +0 -116
  112. package/styles/Badge/_Badge.scss +0 -33
  113. package/styles/Chart/_Chart.scss +0 -105
  114. package/styles/Chart/_chartist-settings.scss +0 -131
  115. package/styles/Chart/_chartist.scss +0 -295
  116. package/styles/Checkbox/_Checkbox.scss +0 -173
  117. package/styles/DateTime/_DatePicker.scss +0 -61
  118. package/styles/DateTime/_DatePickerCalendar.scss +0 -159
  119. package/styles/DateTime/_DateTime.scss +0 -4
  120. package/styles/DateTime/_DateTimePicker.scss +0 -46
  121. package/styles/DateTime/_TimePicker.scss +0 -30
  122. package/styles/ErrorBoundary/_ErrorBoundary.scss +0 -18
  123. package/styles/Flyout/_Flyout.scss +0 -73
  124. package/styles/Form/_Form.scss +0 -53
  125. package/styles/GooglePlacesSearchInput/_GooglePlacesSearchInput.scss +0 -3
  126. package/styles/GooglePlacesSearchInput/_PoweredByGoogle.scss +0 -21
  127. package/styles/HorizontalRule/_HorizontalRule.scss +0 -48
  128. package/styles/Label/_Label.scss +0 -6
  129. package/styles/Notification/_Notification.scss +0 -113
  130. package/styles/PasswordControl/_PasswordControl.scss +0 -86
  131. package/styles/PulseLoader/_PulseLoader.scss +0 -60
  132. package/styles/Radio/_Radio.scss +0 -93
  133. package/styles/Select/_Select.scss +0 -94
  134. package/styles/Tabs/_Tabs.scss +0 -57
  135. package/styles/TextArea/_TextArea.scss +0 -26
  136. package/styles/TextInput/_TextInput.scss +0 -43
  137. package/styles/Tooltip/_Tooltip.scss +0 -108
  138. package/styles/_index.scss +0 -34
  139. package/styles/common/sass/_control-sizing.scss +0 -5
  140. package/styles/common/sass/_disable-scrolling.scss +0 -7
  141. package/styles/common/sass/_forms.scss +0 -72
  142. package/styles/index.js +0 -50
  143. package/styles/v1/components/Button/Button.jsx +0 -48
  144. package/styles/v1/components/Button/Button.spec.js +0 -76
  145. package/styles/v1/components/Button/_Button.scss +0 -178
  146. package/styles/v1/components/Button/button-props.js +0 -30
  147. package/styles/v1/components/Button/stories/button.js +0 -20
  148. package/styles/v1/components/Button/stories/index.stories.js +0 -92
  149. package/styles/v1/components/Button/stories/overview.js +0 -87
  150. package/styles/v1/components/Button/stories/types.js +0 -31
  151. package/styles/v1/components/Image/Image.jsx +0 -175
  152. package/styles/v1/components/Image/Image.spec.js +0 -113
  153. package/styles/v1/components/Image/_Image.scss +0 -24
  154. package/styles/v1/components/Image/stories/Cloudinary.stories.js +0 -39
  155. package/styles/v1/components/Image/stories/Display.stories.js +0 -92
  156. package/styles/v1/components/Loader/Loader.jsx +0 -54
  157. package/styles/v1/components/Loader/Loader.spec.js +0 -67
  158. package/styles/v1/components/Loader/_Loader.scss +0 -18
  159. package/styles/v1/components/Loader/stories/Display.stories.js +0 -55
  160. package/styles/v1/components/Modal/Modal.jsx +0 -315
  161. package/styles/v1/components/Modal/Modal.spec.js +0 -293
  162. package/styles/v1/components/Modal/ModalContent.jsx +0 -126
  163. package/styles/v1/components/Modal/ModalFooter.jsx +0 -53
  164. package/styles/v1/components/Modal/_Modal.scss +0 -262
  165. package/styles/v1/components/Modal/index.js +0 -3
  166. package/styles/v1/components/Modal/stories/Content.stories.js +0 -314
  167. package/styles/v1/components/Modal/stories/Display.stories.js +0 -208
  168. package/styles/v1/components/Modal/stories/Methods.stories.js +0 -44
  169. package/styles/v1/components/Modal/stories/Width.stories.js +0 -82
  170. package/styles/v1/components/Modal/stories/helpers/ReduxConsumer.jsx +0 -21
  171. package/styles/v1/components/Panel/Panel.jsx +0 -202
  172. package/styles/v1/components/Panel/Panel.spec.js +0 -196
  173. package/styles/v1/components/Panel/_Panel.scss +0 -55
  174. package/styles/v1/components/Panel/stories/Display.stories.js +0 -82
  175. package/styles/v1/components/Panel/stories/Methods.stories.js +0 -76
  176. package/styles/v1/components/Table/Table.jsx +0 -367
  177. package/styles/v1/components/Table/Table.spec.js +0 -526
  178. package/styles/v1/components/Table/TableCell.jsx +0 -17
  179. package/styles/v1/components/Table/TableCellPropTypes.js +0 -10
  180. package/styles/v1/components/Table/TableControls.jsx +0 -61
  181. package/styles/v1/components/Table/TableFooter.jsx +0 -72
  182. package/styles/v1/components/Table/TableHeading.jsx +0 -58
  183. package/styles/v1/components/Table/TableHeadingPropTypes.js +0 -20
  184. package/styles/v1/components/Table/TableSortSelector.jsx +0 -63
  185. package/styles/v1/components/Table/TableSortType.js +0 -4
  186. package/styles/v1/components/Table/_Table.scss +0 -263
  187. package/styles/v1/components/Table/index.js +0 -5
  188. package/styles/v1/components/Table/stories/Display.stories.js +0 -194
  189. package/styles/v1/components/Table/stories/Methods.stories.js +0 -141
  190. package/styles/v1/components/Table/stories/helpers/TableCellEmail.jsx +0 -25
  191. package/styles/v1/components/Table/stories/helpers/TableCustomRow.jsx +0 -35
  192. package/styles/v1/components/Table/stories/helpers/TableHeadingEmail.jsx +0 -20
  193. package/styles/v1/components/Table/stories/helpers/table-data.js +0 -26
  194. package/styles/v1/components/Table/stories/helpers/table-headers.js +0 -14
  195. package/styles/v1/components/TextButton/TextButton.jsx +0 -78
  196. package/styles/v1/components/TextButton/TextButton.spec.js +0 -95
  197. package/styles/v1/components/TextButton/_TextButton.scss +0 -114
  198. package/styles/v1/components/TextButton/stories/Display.stories.js +0 -46
  199. package/styles/v1/components/index.js +0 -7
  200. package/styles/v1/utils/deprecate.js +0 -45
  201. package/styles/v2/components/index.js +0 -70
  202. package/styles/v2/components/styles.js +0 -21
  203. package/styles/v2/theme/global.js +0 -118
  204. package/styles/v2/theme/index.js +0 -27
  205. package/styles/v2/utils/Spaces.js +0 -16
  206. package/v1/assets-manifest.json +0 -5
  207. package/v1/index.html +0 -1
  208. package/v1/index.js +0 -3
  209. package/v1/index.js.LICENSE.txt +0 -23
  210. package/v1/index.js.map +0 -1
  211. /package/styles/{v2/components → components}/Accordion/Accordion.jsx +0 -0
  212. /package/styles/{v2/components → components}/Accordion/index.js +0 -0
  213. /package/styles/{v2/components → components}/Accordion/styles/container.js +0 -0
  214. /package/styles/{v2/components → components}/Accordion/styles/index.js +0 -0
  215. /package/styles/{v2/components → components}/Accordion/styles/panel.js +0 -0
  216. /package/styles/{v2/components → components}/Alert/Alert.stories.js +0 -0
  217. /package/styles/{v2/components → components}/Alert/index.js +0 -0
  218. /package/styles/{v2/components → components}/Alert/styles/index.js +0 -0
  219. /package/styles/{v2/components → components}/AutoSuggestSelect/index.js +0 -0
  220. /package/styles/{v2/components → components}/Badge/Badge.jsx +0 -0
  221. /package/styles/{v2/components → components}/Badge/Badge.stories.js +0 -0
  222. /package/styles/{v2/components → components}/Badge/styles/index.js +0 -0
  223. /package/styles/{v2/components → components}/Button/Button.jsx +0 -0
  224. /package/styles/{v2/components → components}/Button/Button.spec.js +0 -0
  225. /package/styles/{v2/components → components}/Button/Button.styles.js +0 -0
  226. /package/styles/{v2/components → components}/Button/button-props.js +0 -0
  227. /package/styles/{v2/components → components}/Button/index.js +0 -0
  228. /package/styles/{v2/components → components}/Button/stories/index.stories.js +0 -0
  229. /package/styles/{v2/components → components}/Card/Card.jsx +0 -0
  230. /package/styles/{v2/components → components}/Card/Card.stories.js +0 -0
  231. /package/styles/{v2/components → components}/Checkbox/Checkbox.jsx +0 -0
  232. /package/styles/{v2/components → components}/Checkbox/Checkbox.stories.js +0 -0
  233. /package/styles/{v2/components → components}/Checkbox/index.js +0 -0
  234. /package/styles/{v2/components → components}/Checkbox/styles/index.js +0 -0
  235. /package/styles/{v2/components → components}/Container/Container.jsx +0 -0
  236. /package/styles/{v2/components → components}/Container/Container.stories.js +0 -0
  237. /package/styles/{v2/components → components}/Container/Container.styles.js +0 -0
  238. /package/styles/{v2/components → components}/Divider/Divider.jsx +0 -0
  239. /package/styles/{v2/components → components}/Divider/Divider.stories.js +0 -0
  240. /package/styles/{v2/components → components}/Divider/Divider.styles.js +0 -0
  241. /package/styles/{v2/components → components}/Grid/Grid.jsx +0 -0
  242. /package/styles/{v2/components → components}/Grid/Grid.styles.js +0 -0
  243. /package/styles/{v2/components → components}/Grid/GridItem.jsx +0 -0
  244. /package/styles/{v2/components → components}/Grid/GridItem.styles.js +0 -0
  245. /package/styles/{v2/components → components}/Grid/index.js +0 -0
  246. /package/styles/{v2/components → components}/Heading/Heading.jsx +0 -0
  247. /package/styles/{v2/components → components}/Heading/Heading.stories.js +0 -0
  248. /package/styles/{v2/components → components}/Icon/Icon.jsx +0 -0
  249. /package/styles/{v2/components → components}/Icon/Icon.stories.js +0 -0
  250. /package/styles/{v2/components → components}/Image/Image.spec.js +0 -0
  251. /package/styles/{v2/components → components}/Image/Image.stories.js +0 -0
  252. /package/styles/{v2/components → components}/Input/Input.jsx +0 -0
  253. /package/styles/{v2/components → components}/Input/Input.stories.js +0 -0
  254. /package/styles/{v2/components → components}/Input/index.js +0 -0
  255. /package/styles/{v2/components → components}/Input/styles/index.js +0 -0
  256. /package/styles/{v2/components → components}/Link/Link.jsx +0 -0
  257. /package/styles/{v2/components → components}/Link/Link.styles.js +0 -0
  258. /package/styles/{v2/components → components}/List/List.jsx +0 -0
  259. /package/styles/{v2/components → components}/List/index.js +0 -0
  260. /package/styles/{v2/components → components}/List/styles/index.js +0 -0
  261. /package/styles/{v2/components → components}/List/styles/item.styles.js +0 -0
  262. /package/styles/{v2/components → components}/Loader/Loader.jsx +0 -0
  263. /package/styles/{v2/components → components}/Loader/Loader.stories.js +0 -0
  264. /package/styles/{v2/components → components}/Modal/index.js +0 -0
  265. /package/styles/{v2/components → components}/Modal/styles/body.js +0 -0
  266. /package/styles/{v2/components → components}/Modal/styles/closeButton.js +0 -0
  267. /package/styles/{v2/components → components}/Modal/styles/dialog.js +0 -0
  268. /package/styles/{v2/components → components}/Modal/styles/dialogContainer.js +0 -0
  269. /package/styles/{v2/components → components}/Modal/styles/footer.js +0 -0
  270. /package/styles/{v2/components → components}/Modal/styles/header.js +0 -0
  271. /package/styles/{v2/components → components}/Modal/styles/index.js +0 -0
  272. /package/styles/{v2/components → components}/Modal/styles/overlay.js +0 -0
  273. /package/styles/{v2/components → components}/Popover/Popover.jsx +0 -0
  274. /package/styles/{v2/components → components}/Popover/PopoverArrow.jsx +0 -0
  275. /package/styles/{v2/components → components}/Popover/PopoverCloseButton.jsx +0 -0
  276. /package/styles/{v2/components → components}/Popover/PopoverContent.jsx +0 -0
  277. /package/styles/{v2/components → components}/Popover/index.js +0 -0
  278. /package/styles/{v2/components → components}/Popover/styles/index.js +0 -0
  279. /package/styles/{v2/components → components}/Popover/styles/popover-arrow.js +0 -0
  280. /package/styles/{v2/components → components}/Popover/styles/popover-body.js +0 -0
  281. /package/styles/{v2/components → components}/Popover/styles/popover-close-button.js +0 -0
  282. /package/styles/{v2/components → components}/Popover/styles/popover-content.js +0 -0
  283. /package/styles/{v2/components → components}/Popover/styles/popover-header.js +0 -0
  284. /package/styles/{v2/components → components}/Popover/styles/popper.js +0 -0
  285. /package/styles/{v2/components → components}/Radio/Radio.jsx +0 -0
  286. /package/styles/{v2/components → components}/Radio/Radio.stories.js +0 -0
  287. /package/styles/{v2/components → components}/Radio/RadioGroup.jsx +0 -0
  288. /package/styles/{v2/components → components}/Radio/index.js +0 -0
  289. /package/styles/{v2/components → components}/Radio/styles/index.js +0 -0
  290. /package/styles/{v2/components → components}/Select/Select.jsx +0 -0
  291. /package/styles/{v2/components → components}/Select/Select.stories.js +0 -0
  292. /package/styles/{v2/components → components}/Select/index.js +0 -0
  293. /package/styles/{v2/components → components}/Select/styles/index.js +0 -0
  294. /package/styles/{v2/components → components}/Skeleton/Skeleton.stories.jsx +0 -0
  295. /package/styles/{v2/components → components}/Skeleton/Skeleton.styles.js +0 -0
  296. /package/styles/{v2/components → components}/Spinner/Spinner.jsx +0 -0
  297. /package/styles/{v2/components → components}/Spinner/Spinner.styles.js +0 -0
  298. /package/styles/{v2/components → components}/Switch/Switch.jsx +0 -0
  299. /package/styles/{v2/components → components}/Switch/Switch.stories.js +0 -0
  300. /package/styles/{v2/components → components}/Switch/index.js +0 -0
  301. /package/styles/{v2/components → components}/Switch/styles/index.js +0 -0
  302. /package/styles/{v2/components → components}/Table/Table.jsx +0 -0
  303. /package/styles/{v2/components → components}/Table/Table.stories.js +0 -0
  304. /package/styles/{v2/components → components}/Table/index.js +0 -0
  305. /package/styles/{v2/components → components}/Tabs/Tabs.stories.js +0 -0
  306. /package/styles/{v2/components → components}/Tabs/index.js +0 -0
  307. /package/styles/{v2/components → components}/Tabs/styles/index.js +0 -0
  308. /package/styles/{v2/components → components}/Text/Text.jsx +0 -0
  309. /package/styles/{v2/components → components}/Text/Text.stories.js +0 -0
  310. /package/styles/{v2/components → components}/Text/options.js +0 -0
  311. /package/styles/{v2/theme → theme}/base/breakpoints.js +0 -0
  312. /package/styles/{v2/theme → theme}/base/colors.js +0 -0
  313. /package/styles/{v2/theme → theme}/base/index.js +0 -0
  314. /package/styles/{v2/theme → theme}/base/sizes.js +0 -0
  315. /package/styles/{v2/theme → theme}/base/typography.js +0 -0
  316. /package/styles/{v2/theme → theme}/base/zindices.js +0 -0
@@ -1,367 +0,0 @@
1
- import find from 'lodash/find';
2
- import isFunction from 'lodash/isFunction';
3
- import isNumber from 'lodash/isNumber';
4
- import isObject from 'lodash/isObject';
5
- import map from 'lodash/map';
6
- import some from 'lodash/some';
7
- import sortBy from 'lodash/sortBy';
8
- import React, {Component} from 'react';
9
- import PropTypes from 'prop-types';
10
- import classNames from 'classnames';
11
- import TableHeading from './TableHeading';
12
- import TableCell from './TableCell';
13
- import TableFooter from './TableFooter';
14
- import TableSortSelector from './TableSortSelector';
15
- import TableSortType from './TableSortType';
16
- import deprecate from 'v1/utils/deprecate';
17
-
18
- deprecate({
19
- name: 'Table',
20
- newName: 'Table',
21
- changes: [
22
- '---- Props ----',
23
- 'In order to accomplish the same functionality as using `footerMessage`, now use the `<Tfoot />` component in the table structure instead of passing in as a prop',
24
- 'Pagination and Sorting are not yet supported in the v2 Table component',
25
- '---- Changes in v2 component ----',
26
- 'New v2 Table component is now a paired-down in functionality compaired to v1 version',
27
- '`containerClassName`, `headers`, `data`, `currentPage`, `sortOrder`, `sortDataKey`, `totalDataRowCount`, `rowSize`, `showFooterMessage`, `footerMessage`, `pageSize`, `sorting`, `onPageChange`, `onSortChange`, and `noDataAvailableMessage` are not yet supported in the v2 Table component',
28
- '---- Additional Information ----',
29
- 'new props are documented at: https://chakra-ui.com/docs/data-display/table',
30
- ],
31
- });
32
-
33
- const PAGE_SIZE_MIN = 1;
34
- const PAGE_SIZE_MAX = 25;
35
-
36
- export default class Table extends Component {
37
- static propTypes = {
38
- /** Additional class(es) to add to the Table. */
39
- className: PropTypes.string,
40
- /** Additional class(es) to add to the container of the Table. */
41
- containerClassName: PropTypes.string,
42
- /** An array of header data for each column. */
43
- headers: PropTypes.arrayOf(
44
- PropTypes.shape({
45
- /** The header label. */
46
- label: PropTypes.string.isRequired,
47
- /** The header data key which identifies the column for other processes (such as sorting, etc). Each data key should be unique. */
48
- dataKey: PropTypes.string.isRequired,
49
- /** Additional class(es) to add to the header cell. */
50
- className: PropTypes.string,
51
- /** Determines whether or not table can sort by header cell dataKey. */
52
- isSortable: PropTypes.bool,
53
- /** A function to render a custom layout for the header cell. The function is passed the `TableHeadingPropTypes` as props. */
54
- render: PropTypes.func,
55
- })
56
- ).isRequired,
57
- /** An array of objects that captures table data for each row. An object can have key/value pairs or a key/object pair. The keys should match the `dataKey` from each column. A key/object pair can contain `value (String, required)`, `className (String)`, and `render (Function)`. The `render` function is passed `TableCellPropTypes` as props. You can also pass an object with a `customRowRender` function that will allow you to render custom row layouts (see examples). */
58
- data: PropTypes.arrayOf(PropTypes.object),
59
- /** The default page of data to display when the component is mounted. */
60
- currentPage: PropTypes.number,
61
- /** Determines if table data will be sorted in ascending or descending order. */
62
- sortOrder: PropTypes.oneOf([TableSortType.ASC, TableSortType.DESC]),
63
- /** The header data key the table will be sorted on. */
64
- sortDataKey: PropTypes.string,
65
- /** The total number of rows expected in the table. This determines if pagination should be shown and properly lays out pagination controls. */
66
- totalDataRowCount: PropTypes.number,
67
- /** Determines the default height of each row of data on larger viewports. */
68
- rowSize: PropTypes.oneOf(['normal', 'large']),
69
- /** Determines if table footer message should be shown. */
70
- showFooterMessage: PropTypes.bool,
71
- /** A custom message to display in the table footer. */
72
- footerMessage: PropTypes.node,
73
- /** The number of rows to display per page. For performance reasons, the max pageSize is 25.
74
- *
75
- * @param {Object} props - The props for the component.
76
- * @param {String} propName - The name of the prop being tested against.
77
- * @param {String} componentName - The name of the component.
78
- * @returns {Error} - An error if the prop isn't a number or not between 1 and 25.
79
- */
80
- pageSize: (props, propName, componentName) => {
81
- if (!isNumber(props[propName])) {
82
- return new Error(
83
- `Invalid type of ${propName} supplied to ${componentName}. Must be a number. Validation failed.`
84
- );
85
- }
86
-
87
- if (
88
- props[propName] < PAGE_SIZE_MIN ||
89
- props[propName] > PAGE_SIZE_MAX
90
- ) {
91
- return new Error(
92
- `Invalid prop ${propName} supplied to ${componentName}. Number must be between 1 and 25. Validation failed.`
93
- );
94
- }
95
- },
96
- /** A custom sorting function or an array of the dataKey(s) of the header(s) to sort the table by. If multiple are provided then sort order will be determined by column using the first key, then the second, and so on to sort the data with multiple keys in mind. See <a href="https://lodash.com/docs#sortBy" target="_blank">sortBy</a>. */
97
- sorting: PropTypes.oneOfType([
98
- PropTypes.func,
99
- PropTypes.arrayOf(PropTypes.string),
100
- ]),
101
- /**
102
- * A function to call when a page change occurs.
103
- *
104
- * @param {Number} currentPage - The currently visible page.
105
- * @param {Number} previousPage - The last page that was visible.
106
- */
107
- onPageChange: PropTypes.func,
108
- /**
109
- * A function to call when a header sort occurs.
110
- *
111
- * @param {Number} dataKey - The header's dataKey.
112
- * @param {Number} sortOrder - The sort order to use (ASC or DESC).
113
- */
114
- onSortChange: PropTypes.func,
115
- /** A custom message to display when there is no data available for the table. */
116
- noDataAvailableMessage: PropTypes.node,
117
- };
118
- static defaultProps = {
119
- currentPage: 1,
120
- totalDataRowCount: 0,
121
- rowSize: 'normal',
122
- pageSize: 25,
123
- noDataAvailableMessage: 'No data available at this time.',
124
- showFooterMessage: true,
125
- };
126
-
127
- constructor(props) {
128
- super(props);
129
-
130
- const {
131
- headers,
132
- currentPage,
133
- totalDataRowCount,
134
- pageSize,
135
- sortOrder,
136
- sortDataKey,
137
- } = props;
138
-
139
- this._HEADERS = headers;
140
-
141
- this.state = {
142
- sortOrder,
143
- sortDataKey,
144
- currentPage,
145
- totalPages: Math.ceil(totalDataRowCount / pageSize),
146
- };
147
- }
148
-
149
- componentDidUpdate(prevProps, prevState) {
150
- const {onPageChange, onSortChange, totalDataRowCount, pageSize} = this.props;
151
- const {
152
- currentPage: previousCurrentPage,
153
- sortOrder: previousSortOrder,
154
- sortDataKey: previousSortDataKey,
155
- } = prevState;
156
- const {totalPages, currentPage, sortOrder, sortDataKey} = this.state;
157
-
158
- if (totalDataRowCount !== prevProps.totalDataRowCount || pageSize !== prevProps.pageSize) {
159
- this.setState({
160
- totalPages: Math.ceil(totalDataRowCount / pageSize)
161
- })
162
- }
163
-
164
- if (previousCurrentPage !== currentPage && onPageChange) {
165
- onPageChange({
166
- totalPages,
167
- currentPage,
168
- previousPage: previousCurrentPage,
169
- });
170
- }
171
-
172
- if (
173
- (previousSortOrder !== sortOrder ||
174
- previousSortDataKey !== sortDataKey) &&
175
- onSortChange
176
- ) {
177
- onSortChange({
178
- sortOrder,
179
- dataKey: sortDataKey,
180
- });
181
- }
182
- }
183
-
184
- _onPageChange = ({value}) => {
185
- this.setState({
186
- currentPage: parseInt(value, 10),
187
- });
188
- };
189
-
190
- _onPreviousPage = evt => {
191
- this.setState((prevState, props) => {
192
- return {
193
- currentPage: prevState.currentPage - 1,
194
- };
195
- });
196
- };
197
-
198
- _onNextPage = evt => {
199
- this.setState((prevState, props) => {
200
- return {
201
- currentPage: prevState.currentPage + 1,
202
- };
203
- });
204
- };
205
-
206
- _onSortChange = ({dataKey, sortOrder}) => {
207
- this.setState({
208
- sortOrder,
209
- sortDataKey: dataKey,
210
- });
211
- };
212
-
213
- _renderHeadings = () => {
214
- const {sortOrder, sortDataKey} = this.state;
215
-
216
- return (
217
- <thead className="TableHead">
218
- <tr>
219
- {this._HEADERS.map(header => {
220
- const {render, ...headerProps} = header;
221
- const {dataKey, isSortable} = headerProps;
222
- const Heading = render ? render : TableHeading;
223
-
224
- if (isSortable) {
225
- headerProps.onSortClick = this._onSortChange;
226
- headerProps.sortOrder =
227
- dataKey === sortDataKey ? sortOrder : null;
228
- }
229
-
230
- return <Heading key={dataKey} {...headerProps} />;
231
- })}
232
- </tr>
233
- </thead>
234
- );
235
- };
236
-
237
- _renderRows = () => {
238
- const {data, sorting, noDataAvailableMessage} = this.props;
239
-
240
- if (!data.length) {
241
- return (
242
- <tbody className="TableBody Table-no-data">
243
- <tr>
244
- <td colSpan={this._HEADERS.length}>
245
- <div>{noDataAvailableMessage}</div>
246
- </td>
247
- </tr>
248
- </tbody>
249
- );
250
- }
251
-
252
- let sortedData = data;
253
-
254
- if (sorting) {
255
- const sort = isFunction(sorting) ? [sorting] : [...sorting];
256
-
257
- sortedData = sortBy(data, sort);
258
- }
259
-
260
- return (
261
- <tbody className="TableBody">
262
- {sortedData.map(({className: rowClass, ...row}, i) => {
263
- if (row.customRowRender) {
264
- return row.customRowRender({key: i, row});
265
- } else {
266
- return (
267
- <tr key={i} className={rowClass}>
268
- {map(row, (cell, dataKey) => {
269
- const {className, value} = cell;
270
- const Cell =
271
- isObject(cell) && cell.render
272
- ? cell.render
273
- : TableCell;
274
- const key = `${i}-${dataKey}`;
275
- const label = find(this._HEADERS, {dataKey})
276
- .label;
277
- const cellValue = isObject(cell)
278
- ? value
279
- : cell;
280
-
281
- return (
282
- <Cell
283
- key={key}
284
- className={className}
285
- headingLabel={label}
286
- value={cellValue}
287
- />
288
- );
289
- })}
290
- </tr>
291
- );
292
- }
293
- })}
294
- </tbody>
295
- );
296
- };
297
-
298
- _renderFooter = () => {
299
- const {
300
- rowSize,
301
- pageSize,
302
- data,
303
- totalDataRowCount,
304
- showFooterMessage,
305
- footerMessage,
306
- } = this.props;
307
- const {currentPage, totalPages} = this.state;
308
-
309
- return (
310
- <TableFooter
311
- rowSize={rowSize}
312
- pageSize={pageSize}
313
- totalDataRowCount={totalDataRowCount}
314
- currentPage={currentPage}
315
- totalPages={totalPages}
316
- currentPageLength={data.length}
317
- showMessage={showFooterMessage}
318
- message={footerMessage}
319
- onPageChange={this._onPageChange}
320
- onPreviousPage={this._onPreviousPage}
321
- onNextPage={this._onNextPage}
322
- />
323
- );
324
- };
325
-
326
- _renderTableSortDropdown = () => {
327
- const {sortOrder, sortDataKey} = this.state;
328
- const hasSortableHeaders = some(this._HEADERS, 'isSortable');
329
-
330
- if (!hasSortableHeaders) {
331
- return null;
332
- }
333
-
334
- return (
335
- <TableSortSelector
336
- headers={this._HEADERS}
337
- sortOrder={sortOrder}
338
- sortDataKey={sortDataKey}
339
- onSortChange={this._onSortChange}
340
- />
341
- );
342
- };
343
-
344
- render() {
345
- const {containerClassName, className, rowSize} = this.props;
346
- const containerClasses = classNames(
347
- 'Table-container',
348
- containerClassName
349
- );
350
- const tableClasses = classNames(
351
- 'Table',
352
- {'Table-large': rowSize === 'large'},
353
- className
354
- );
355
-
356
- return (
357
- <div className={containerClasses}>
358
- {this._renderTableSortDropdown()}
359
- <table className={tableClasses}>
360
- {this._renderHeadings()}
361
- {this._renderRows()}
362
- </table>
363
- {this._renderFooter()}
364
- </div>
365
- );
366
- }
367
- }