@spothero/ui 15.10.8 → 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 (317) 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}/Popover/styles/index.js +1 -1
  21. package/styles/{v2/components/Popover/styles/popper.js → components/Popover/styles/popover-content.js} +8 -5
  22. package/styles/components/Popover/styles/popper.js +5 -0
  23. package/styles/{v2/components → components}/Skeleton/index.js +1 -1
  24. package/styles/{v2/components → components}/Spinner/Spinner.stories.js +1 -1
  25. package/styles/{v2/components → components}/Table/Table.styles.js +1 -1
  26. package/styles/{v2/components → components}/Tabs/Tabs.jsx +2 -3
  27. package/styles/{v2/components → components}/Tabs/combineSizeWithVariant.js +5 -3
  28. package/styles/{v2/components → components}/Text/Text.styles.js +1 -1
  29. package/styles/{v2/components → components}/Text/combineAsWithVariant.js +1 -1
  30. package/styles/{v2/components → components}/ThemeProvider/ThemeProvider.jsx +2 -2
  31. package/styles/{v2/components → components}/ThemeProvider/ThemeProvider.stories.js +2 -2
  32. package/v2/index.js +1 -1
  33. package/v2/index.js.map +1 -1
  34. package/backlog/Alert/Alert.js +0 -37
  35. package/backlog/AutoSuggestInput/AutoSuggestInput.js +0 -474
  36. package/backlog/AutoSuggestInput/AutoSuggestItem.js +0 -99
  37. package/backlog/AutoSuggestInput/AutoSuggestList.js +0 -126
  38. package/backlog/Badge/Badge.js +0 -28
  39. package/backlog/Chart/Chart.js +0 -211
  40. package/backlog/Checkbox/Checkbox.js +0 -167
  41. package/backlog/DateTime/DatePicker.js +0 -279
  42. package/backlog/DateTime/DatePickerCalendar.js +0 -199
  43. package/backlog/DateTime/DatePickerCalendarNavigation.js +0 -102
  44. package/backlog/DateTime/DatePickerCalendarWithRange.js +0 -241
  45. package/backlog/DateTime/DateTimePicker.js +0 -216
  46. package/backlog/DateTime/DateTimeRangePicker.js +0 -530
  47. package/backlog/DateTime/TimePicker.js +0 -180
  48. package/backlog/DateTime/date-time-assertions.js +0 -66
  49. package/backlog/DateTime/index.js +0 -55
  50. package/backlog/ErrorBoundary/ErrorBoundary.js +0 -125
  51. package/backlog/Flyout/Flyout.js +0 -198
  52. package/backlog/Form/Form.js +0 -193
  53. package/backlog/Form/FormElementError.js +0 -24
  54. package/backlog/Form/FormGroup.js +0 -30
  55. package/backlog/Form/FormGroupError.js +0 -28
  56. package/backlog/Form/index.js +0 -39
  57. package/backlog/GooglePlacesSearchInput/GooglePlacesSearchInput.js +0 -253
  58. package/backlog/GooglePlacesSearchInput/PoweredByGoogle.js +0 -38
  59. package/backlog/GooglePlacesSearchInput/index.js +0 -23
  60. package/backlog/HorizontalRule/HorizontalRule.js +0 -30
  61. package/backlog/Label/Label.js +0 -31
  62. package/backlog/Notification/Notification.js +0 -178
  63. package/backlog/Notification/NotificationContainer.js +0 -131
  64. package/backlog/Notification/NotificationPropTypes.js +0 -37
  65. package/backlog/Notification/index.js +0 -23
  66. package/backlog/PasswordControl/PasswordControl.js +0 -201
  67. package/backlog/Portal/Portal.js +0 -110
  68. package/backlog/PulseLoader/PulseLoader.js +0 -62
  69. package/backlog/Radio/Radio.js +0 -135
  70. package/backlog/Radio/RadioGroup.js +0 -123
  71. package/backlog/Radio/index.js +0 -23
  72. package/backlog/RenderInBody/RenderInBody.js +0 -103
  73. package/backlog/Select/Select.js +0 -275
  74. package/backlog/Select/SelectItemPropTypes.js +0 -32
  75. package/backlog/Select/index.js +0 -23
  76. package/backlog/SelectControlled/SelectControlled.js +0 -270
  77. package/backlog/SelectControlled/index.js +0 -15
  78. package/backlog/Sprite/Sprite.js +0 -24
  79. package/backlog/Tabs/Tab.js +0 -94
  80. package/backlog/Tabs/TabContent.js +0 -56
  81. package/backlog/Tabs/TabNavigation.js +0 -108
  82. package/backlog/Tabs/TabPanel.js +0 -29
  83. package/backlog/Tabs/Tabs.js +0 -126
  84. package/backlog/Tabs/index.js +0 -47
  85. package/backlog/TextArea/TextArea.js +0 -155
  86. package/backlog/TextInput/TextInput.js +0 -230
  87. package/backlog/TextInput/TextInputPropTypes.js +0 -114
  88. package/backlog/TextInput/index.js +0 -23
  89. package/backlog/Tooltip/Tooltip.js +0 -249
  90. package/backlog/index.js +0 -393
  91. package/backlog/v1/components/Button/Button.js +0 -64
  92. package/backlog/v1/components/Button/button-props.js +0 -48
  93. package/backlog/v1/components/Image/Image.js +0 -193
  94. package/backlog/v1/components/Loader/Loader.js +0 -51
  95. package/backlog/v1/components/Modal/Modal.js +0 -325
  96. package/backlog/v1/components/Modal/ModalContent.js +0 -154
  97. package/backlog/v1/components/Modal/ModalFooter.js +0 -89
  98. package/backlog/v1/components/Modal/index.js +0 -31
  99. package/backlog/v1/components/Panel/Panel.js +0 -209
  100. package/backlog/v1/components/Table/Table.js +0 -336
  101. package/backlog/v1/components/Table/TableCell.js +0 -28
  102. package/backlog/v1/components/Table/TableCellPropTypes.js +0 -22
  103. package/backlog/v1/components/Table/TableControls.js +0 -56
  104. package/backlog/v1/components/Table/TableFooter.js +0 -63
  105. package/backlog/v1/components/Table/TableHeading.js +0 -126
  106. package/backlog/v1/components/Table/TableHeadingPropTypes.js +0 -35
  107. package/backlog/v1/components/Table/TableSortSelector.js +0 -125
  108. package/backlog/v1/components/Table/TableSortType.js +0 -11
  109. package/backlog/v1/components/Table/index.js +0 -47
  110. package/backlog/v1/components/TextButton/TextButton.js +0 -74
  111. package/backlog/v1/components/index.js +0 -75
  112. package/backlog/v1/utils/deprecate.js +0 -61
  113. package/styles/Alert/_Alert.scss +0 -51
  114. package/styles/AutoSuggestInput/_AutoSuggestInput.scss +0 -116
  115. package/styles/Badge/_Badge.scss +0 -33
  116. package/styles/Chart/_Chart.scss +0 -105
  117. package/styles/Chart/_chartist-settings.scss +0 -131
  118. package/styles/Chart/_chartist.scss +0 -295
  119. package/styles/Checkbox/_Checkbox.scss +0 -173
  120. package/styles/DateTime/_DatePicker.scss +0 -61
  121. package/styles/DateTime/_DatePickerCalendar.scss +0 -159
  122. package/styles/DateTime/_DateTime.scss +0 -4
  123. package/styles/DateTime/_DateTimePicker.scss +0 -46
  124. package/styles/DateTime/_TimePicker.scss +0 -30
  125. package/styles/ErrorBoundary/_ErrorBoundary.scss +0 -18
  126. package/styles/Flyout/_Flyout.scss +0 -73
  127. package/styles/Form/_Form.scss +0 -53
  128. package/styles/GooglePlacesSearchInput/_GooglePlacesSearchInput.scss +0 -3
  129. package/styles/GooglePlacesSearchInput/_PoweredByGoogle.scss +0 -21
  130. package/styles/HorizontalRule/_HorizontalRule.scss +0 -48
  131. package/styles/Label/_Label.scss +0 -6
  132. package/styles/Notification/_Notification.scss +0 -113
  133. package/styles/PasswordControl/_PasswordControl.scss +0 -86
  134. package/styles/PulseLoader/_PulseLoader.scss +0 -60
  135. package/styles/Radio/_Radio.scss +0 -93
  136. package/styles/Select/_Select.scss +0 -94
  137. package/styles/Tabs/_Tabs.scss +0 -57
  138. package/styles/TextArea/_TextArea.scss +0 -26
  139. package/styles/TextInput/_TextInput.scss +0 -43
  140. package/styles/Tooltip/_Tooltip.scss +0 -108
  141. package/styles/_index.scss +0 -34
  142. package/styles/common/sass/_control-sizing.scss +0 -5
  143. package/styles/common/sass/_disable-scrolling.scss +0 -7
  144. package/styles/common/sass/_forms.scss +0 -72
  145. package/styles/index.js +0 -50
  146. package/styles/v1/components/Button/Button.jsx +0 -48
  147. package/styles/v1/components/Button/Button.spec.js +0 -76
  148. package/styles/v1/components/Button/_Button.scss +0 -178
  149. package/styles/v1/components/Button/button-props.js +0 -30
  150. package/styles/v1/components/Button/stories/button.js +0 -20
  151. package/styles/v1/components/Button/stories/index.stories.js +0 -92
  152. package/styles/v1/components/Button/stories/overview.js +0 -87
  153. package/styles/v1/components/Button/stories/types.js +0 -31
  154. package/styles/v1/components/Image/Image.jsx +0 -175
  155. package/styles/v1/components/Image/Image.spec.js +0 -113
  156. package/styles/v1/components/Image/_Image.scss +0 -24
  157. package/styles/v1/components/Image/stories/Cloudinary.stories.js +0 -39
  158. package/styles/v1/components/Image/stories/Display.stories.js +0 -92
  159. package/styles/v1/components/Loader/Loader.jsx +0 -54
  160. package/styles/v1/components/Loader/Loader.spec.js +0 -67
  161. package/styles/v1/components/Loader/_Loader.scss +0 -18
  162. package/styles/v1/components/Loader/stories/Display.stories.js +0 -55
  163. package/styles/v1/components/Modal/Modal.jsx +0 -315
  164. package/styles/v1/components/Modal/Modal.spec.js +0 -293
  165. package/styles/v1/components/Modal/ModalContent.jsx +0 -126
  166. package/styles/v1/components/Modal/ModalFooter.jsx +0 -53
  167. package/styles/v1/components/Modal/_Modal.scss +0 -262
  168. package/styles/v1/components/Modal/index.js +0 -3
  169. package/styles/v1/components/Modal/stories/Content.stories.js +0 -314
  170. package/styles/v1/components/Modal/stories/Display.stories.js +0 -208
  171. package/styles/v1/components/Modal/stories/Methods.stories.js +0 -44
  172. package/styles/v1/components/Modal/stories/Width.stories.js +0 -82
  173. package/styles/v1/components/Modal/stories/helpers/ReduxConsumer.jsx +0 -21
  174. package/styles/v1/components/Panel/Panel.jsx +0 -202
  175. package/styles/v1/components/Panel/Panel.spec.js +0 -196
  176. package/styles/v1/components/Panel/_Panel.scss +0 -55
  177. package/styles/v1/components/Panel/stories/Display.stories.js +0 -82
  178. package/styles/v1/components/Panel/stories/Methods.stories.js +0 -76
  179. package/styles/v1/components/Table/Table.jsx +0 -367
  180. package/styles/v1/components/Table/Table.spec.js +0 -526
  181. package/styles/v1/components/Table/TableCell.jsx +0 -17
  182. package/styles/v1/components/Table/TableCellPropTypes.js +0 -10
  183. package/styles/v1/components/Table/TableControls.jsx +0 -61
  184. package/styles/v1/components/Table/TableFooter.jsx +0 -72
  185. package/styles/v1/components/Table/TableHeading.jsx +0 -58
  186. package/styles/v1/components/Table/TableHeadingPropTypes.js +0 -20
  187. package/styles/v1/components/Table/TableSortSelector.jsx +0 -63
  188. package/styles/v1/components/Table/TableSortType.js +0 -4
  189. package/styles/v1/components/Table/_Table.scss +0 -263
  190. package/styles/v1/components/Table/index.js +0 -5
  191. package/styles/v1/components/Table/stories/Display.stories.js +0 -194
  192. package/styles/v1/components/Table/stories/Methods.stories.js +0 -141
  193. package/styles/v1/components/Table/stories/helpers/TableCellEmail.jsx +0 -25
  194. package/styles/v1/components/Table/stories/helpers/TableCustomRow.jsx +0 -35
  195. package/styles/v1/components/Table/stories/helpers/TableHeadingEmail.jsx +0 -20
  196. package/styles/v1/components/Table/stories/helpers/table-data.js +0 -26
  197. package/styles/v1/components/Table/stories/helpers/table-headers.js +0 -14
  198. package/styles/v1/components/TextButton/TextButton.jsx +0 -78
  199. package/styles/v1/components/TextButton/TextButton.spec.js +0 -95
  200. package/styles/v1/components/TextButton/_TextButton.scss +0 -114
  201. package/styles/v1/components/TextButton/stories/Display.stories.js +0 -46
  202. package/styles/v1/components/index.js +0 -7
  203. package/styles/v1/utils/deprecate.js +0 -45
  204. package/styles/v2/components/Popover/styles/popover-content.js +0 -8
  205. package/styles/v2/components/index.js +0 -70
  206. package/styles/v2/components/styles.js +0 -21
  207. package/styles/v2/theme/global.js +0 -118
  208. package/styles/v2/theme/index.js +0 -27
  209. package/styles/v2/utils/Spaces.js +0 -16
  210. package/v1/assets-manifest.json +0 -5
  211. package/v1/index.html +0 -1
  212. package/v1/index.js +0 -3
  213. package/v1/index.js.LICENSE.txt +0 -23
  214. package/v1/index.js.map +0 -1
  215. /package/styles/{v2/components → components}/Accordion/Accordion.jsx +0 -0
  216. /package/styles/{v2/components → components}/Accordion/index.js +0 -0
  217. /package/styles/{v2/components → components}/Accordion/styles/container.js +0 -0
  218. /package/styles/{v2/components → components}/Accordion/styles/index.js +0 -0
  219. /package/styles/{v2/components → components}/Accordion/styles/panel.js +0 -0
  220. /package/styles/{v2/components → components}/Alert/Alert.stories.js +0 -0
  221. /package/styles/{v2/components → components}/Alert/index.js +0 -0
  222. /package/styles/{v2/components → components}/Alert/styles/index.js +0 -0
  223. /package/styles/{v2/components → components}/AutoSuggestSelect/index.js +0 -0
  224. /package/styles/{v2/components → components}/Badge/Badge.jsx +0 -0
  225. /package/styles/{v2/components → components}/Badge/Badge.stories.js +0 -0
  226. /package/styles/{v2/components → components}/Badge/styles/index.js +0 -0
  227. /package/styles/{v2/components → components}/Button/Button.jsx +0 -0
  228. /package/styles/{v2/components → components}/Button/Button.spec.js +0 -0
  229. /package/styles/{v2/components → components}/Button/Button.styles.js +0 -0
  230. /package/styles/{v2/components → components}/Button/button-props.js +0 -0
  231. /package/styles/{v2/components → components}/Button/index.js +0 -0
  232. /package/styles/{v2/components → components}/Button/stories/index.stories.js +0 -0
  233. /package/styles/{v2/components → components}/Card/Card.jsx +0 -0
  234. /package/styles/{v2/components → components}/Card/Card.stories.js +0 -0
  235. /package/styles/{v2/components → components}/Checkbox/Checkbox.jsx +0 -0
  236. /package/styles/{v2/components → components}/Checkbox/Checkbox.stories.js +0 -0
  237. /package/styles/{v2/components → components}/Checkbox/index.js +0 -0
  238. /package/styles/{v2/components → components}/Checkbox/styles/index.js +0 -0
  239. /package/styles/{v2/components → components}/Container/Container.jsx +0 -0
  240. /package/styles/{v2/components → components}/Container/Container.stories.js +0 -0
  241. /package/styles/{v2/components → components}/Container/Container.styles.js +0 -0
  242. /package/styles/{v2/components → components}/Divider/Divider.jsx +0 -0
  243. /package/styles/{v2/components → components}/Divider/Divider.stories.js +0 -0
  244. /package/styles/{v2/components → components}/Divider/Divider.styles.js +0 -0
  245. /package/styles/{v2/components → components}/Grid/Grid.jsx +0 -0
  246. /package/styles/{v2/components → components}/Grid/Grid.styles.js +0 -0
  247. /package/styles/{v2/components → components}/Grid/GridItem.jsx +0 -0
  248. /package/styles/{v2/components → components}/Grid/GridItem.styles.js +0 -0
  249. /package/styles/{v2/components → components}/Grid/index.js +0 -0
  250. /package/styles/{v2/components → components}/Heading/Heading.jsx +0 -0
  251. /package/styles/{v2/components → components}/Heading/Heading.stories.js +0 -0
  252. /package/styles/{v2/components → components}/Icon/Icon.jsx +0 -0
  253. /package/styles/{v2/components → components}/Icon/Icon.stories.js +0 -0
  254. /package/styles/{v2/components → components}/Image/Image.spec.js +0 -0
  255. /package/styles/{v2/components → components}/Image/Image.stories.js +0 -0
  256. /package/styles/{v2/components → components}/Input/Input.jsx +0 -0
  257. /package/styles/{v2/components → components}/Input/Input.stories.js +0 -0
  258. /package/styles/{v2/components → components}/Input/index.js +0 -0
  259. /package/styles/{v2/components → components}/Input/styles/index.js +0 -0
  260. /package/styles/{v2/components → components}/Link/Link.jsx +0 -0
  261. /package/styles/{v2/components → components}/Link/Link.styles.js +0 -0
  262. /package/styles/{v2/components → components}/List/List.jsx +0 -0
  263. /package/styles/{v2/components → components}/List/index.js +0 -0
  264. /package/styles/{v2/components → components}/List/styles/index.js +0 -0
  265. /package/styles/{v2/components → components}/List/styles/item.styles.js +0 -0
  266. /package/styles/{v2/components → components}/Loader/Loader.jsx +0 -0
  267. /package/styles/{v2/components → components}/Loader/Loader.stories.js +0 -0
  268. /package/styles/{v2/components → components}/Modal/index.js +0 -0
  269. /package/styles/{v2/components → components}/Modal/styles/body.js +0 -0
  270. /package/styles/{v2/components → components}/Modal/styles/closeButton.js +0 -0
  271. /package/styles/{v2/components → components}/Modal/styles/dialog.js +0 -0
  272. /package/styles/{v2/components → components}/Modal/styles/dialogContainer.js +0 -0
  273. /package/styles/{v2/components → components}/Modal/styles/footer.js +0 -0
  274. /package/styles/{v2/components → components}/Modal/styles/header.js +0 -0
  275. /package/styles/{v2/components → components}/Modal/styles/index.js +0 -0
  276. /package/styles/{v2/components → components}/Modal/styles/overlay.js +0 -0
  277. /package/styles/{v2/components → components}/Popover/Popover.jsx +0 -0
  278. /package/styles/{v2/components → components}/Popover/PopoverArrow.jsx +0 -0
  279. /package/styles/{v2/components → components}/Popover/PopoverCloseButton.jsx +0 -0
  280. /package/styles/{v2/components → components}/Popover/PopoverContent.jsx +0 -0
  281. /package/styles/{v2/components → components}/Popover/index.js +0 -0
  282. /package/styles/{v2/components → components}/Popover/styles/popover-arrow.js +0 -0
  283. /package/styles/{v2/components → components}/Popover/styles/popover-body.js +0 -0
  284. /package/styles/{v2/components → components}/Popover/styles/popover-close-button.js +0 -0
  285. /package/styles/{v2/components → components}/Popover/styles/popover-header.js +0 -0
  286. /package/styles/{v2/components → components}/Radio/Radio.jsx +0 -0
  287. /package/styles/{v2/components → components}/Radio/Radio.stories.js +0 -0
  288. /package/styles/{v2/components → components}/Radio/RadioGroup.jsx +0 -0
  289. /package/styles/{v2/components → components}/Radio/index.js +0 -0
  290. /package/styles/{v2/components → components}/Radio/styles/index.js +0 -0
  291. /package/styles/{v2/components → components}/Select/Select.jsx +0 -0
  292. /package/styles/{v2/components → components}/Select/Select.stories.js +0 -0
  293. /package/styles/{v2/components → components}/Select/index.js +0 -0
  294. /package/styles/{v2/components → components}/Select/styles/index.js +0 -0
  295. /package/styles/{v2/components → components}/Skeleton/Skeleton.stories.jsx +0 -0
  296. /package/styles/{v2/components → components}/Skeleton/Skeleton.styles.js +0 -0
  297. /package/styles/{v2/components → components}/Spinner/Spinner.jsx +0 -0
  298. /package/styles/{v2/components → components}/Spinner/Spinner.styles.js +0 -0
  299. /package/styles/{v2/components → components}/Switch/Switch.jsx +0 -0
  300. /package/styles/{v2/components → components}/Switch/Switch.stories.js +0 -0
  301. /package/styles/{v2/components → components}/Switch/index.js +0 -0
  302. /package/styles/{v2/components → components}/Switch/styles/index.js +0 -0
  303. /package/styles/{v2/components → components}/Table/Table.jsx +0 -0
  304. /package/styles/{v2/components → components}/Table/Table.stories.js +0 -0
  305. /package/styles/{v2/components → components}/Table/index.js +0 -0
  306. /package/styles/{v2/components → components}/Tabs/Tabs.stories.js +0 -0
  307. /package/styles/{v2/components → components}/Tabs/index.js +0 -0
  308. /package/styles/{v2/components → components}/Tabs/styles/index.js +0 -0
  309. /package/styles/{v2/components → components}/Text/Text.jsx +0 -0
  310. /package/styles/{v2/components → components}/Text/Text.stories.js +0 -0
  311. /package/styles/{v2/components → components}/Text/options.js +0 -0
  312. /package/styles/{v2/theme → theme}/base/breakpoints.js +0 -0
  313. /package/styles/{v2/theme → theme}/base/colors.js +0 -0
  314. /package/styles/{v2/theme → theme}/base/index.js +0 -0
  315. /package/styles/{v2/theme → theme}/base/sizes.js +0 -0
  316. /package/styles/{v2/theme → theme}/base/typography.js +0 -0
  317. /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
- }