@spothero/ui 15.10.9 → 16.0.0-beta.1

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 +1 -1
  2. package/babel.config.js +1 -0
  3. package/dex.config.js +1 -1
  4. package/jest.config.json +4 -2
  5. package/package.json +11 -26
  6. package/v2/index.js +1 -1
  7. package/v2/index.js.map +1 -1
  8. package/backlog/Alert/Alert.js +0 -37
  9. package/backlog/AutoSuggestInput/AutoSuggestInput.js +0 -474
  10. package/backlog/AutoSuggestInput/AutoSuggestItem.js +0 -99
  11. package/backlog/AutoSuggestInput/AutoSuggestList.js +0 -126
  12. package/backlog/Badge/Badge.js +0 -28
  13. package/backlog/Chart/Chart.js +0 -211
  14. package/backlog/Checkbox/Checkbox.js +0 -167
  15. package/backlog/DateTime/DatePicker.js +0 -279
  16. package/backlog/DateTime/DatePickerCalendar.js +0 -199
  17. package/backlog/DateTime/DatePickerCalendarNavigation.js +0 -102
  18. package/backlog/DateTime/DatePickerCalendarWithRange.js +0 -241
  19. package/backlog/DateTime/DateTimePicker.js +0 -216
  20. package/backlog/DateTime/DateTimeRangePicker.js +0 -530
  21. package/backlog/DateTime/TimePicker.js +0 -180
  22. package/backlog/DateTime/date-time-assertions.js +0 -66
  23. package/backlog/DateTime/index.js +0 -55
  24. package/backlog/ErrorBoundary/ErrorBoundary.js +0 -125
  25. package/backlog/Flyout/Flyout.js +0 -198
  26. package/backlog/Form/Form.js +0 -193
  27. package/backlog/Form/FormElementError.js +0 -24
  28. package/backlog/Form/FormGroup.js +0 -30
  29. package/backlog/Form/FormGroupError.js +0 -28
  30. package/backlog/Form/index.js +0 -39
  31. package/backlog/GooglePlacesSearchInput/GooglePlacesSearchInput.js +0 -253
  32. package/backlog/GooglePlacesSearchInput/PoweredByGoogle.js +0 -38
  33. package/backlog/GooglePlacesSearchInput/index.js +0 -23
  34. package/backlog/HorizontalRule/HorizontalRule.js +0 -30
  35. package/backlog/Label/Label.js +0 -31
  36. package/backlog/Notification/Notification.js +0 -178
  37. package/backlog/Notification/NotificationContainer.js +0 -131
  38. package/backlog/Notification/NotificationPropTypes.js +0 -37
  39. package/backlog/Notification/index.js +0 -23
  40. package/backlog/PasswordControl/PasswordControl.js +0 -201
  41. package/backlog/Portal/Portal.js +0 -110
  42. package/backlog/PulseLoader/PulseLoader.js +0 -62
  43. package/backlog/Radio/Radio.js +0 -135
  44. package/backlog/Radio/RadioGroup.js +0 -123
  45. package/backlog/Radio/index.js +0 -23
  46. package/backlog/RenderInBody/RenderInBody.js +0 -103
  47. package/backlog/Select/Select.js +0 -275
  48. package/backlog/Select/SelectItemPropTypes.js +0 -32
  49. package/backlog/Select/index.js +0 -23
  50. package/backlog/SelectControlled/SelectControlled.js +0 -270
  51. package/backlog/SelectControlled/index.js +0 -15
  52. package/backlog/Sprite/Sprite.js +0 -24
  53. package/backlog/Tabs/Tab.js +0 -94
  54. package/backlog/Tabs/TabContent.js +0 -56
  55. package/backlog/Tabs/TabNavigation.js +0 -108
  56. package/backlog/Tabs/TabPanel.js +0 -29
  57. package/backlog/Tabs/Tabs.js +0 -126
  58. package/backlog/Tabs/index.js +0 -47
  59. package/backlog/TextArea/TextArea.js +0 -155
  60. package/backlog/TextInput/TextInput.js +0 -230
  61. package/backlog/TextInput/TextInputPropTypes.js +0 -114
  62. package/backlog/TextInput/index.js +0 -23
  63. package/backlog/Tooltip/Tooltip.js +0 -249
  64. package/backlog/index.js +0 -393
  65. package/backlog/v1/components/Button/Button.js +0 -64
  66. package/backlog/v1/components/Button/button-props.js +0 -48
  67. package/backlog/v1/components/Image/Image.js +0 -193
  68. package/backlog/v1/components/Loader/Loader.js +0 -51
  69. package/backlog/v1/components/Modal/Modal.js +0 -325
  70. package/backlog/v1/components/Modal/ModalContent.js +0 -154
  71. package/backlog/v1/components/Modal/ModalFooter.js +0 -89
  72. package/backlog/v1/components/Modal/index.js +0 -31
  73. package/backlog/v1/components/Panel/Panel.js +0 -209
  74. package/backlog/v1/components/Table/Table.js +0 -336
  75. package/backlog/v1/components/Table/TableCell.js +0 -28
  76. package/backlog/v1/components/Table/TableCellPropTypes.js +0 -22
  77. package/backlog/v1/components/Table/TableControls.js +0 -56
  78. package/backlog/v1/components/Table/TableFooter.js +0 -63
  79. package/backlog/v1/components/Table/TableHeading.js +0 -126
  80. package/backlog/v1/components/Table/TableHeadingPropTypes.js +0 -35
  81. package/backlog/v1/components/Table/TableSortSelector.js +0 -125
  82. package/backlog/v1/components/Table/TableSortType.js +0 -11
  83. package/backlog/v1/components/Table/index.js +0 -47
  84. package/backlog/v1/components/TextButton/TextButton.js +0 -74
  85. package/backlog/v1/components/index.js +0 -75
  86. package/backlog/v1/utils/deprecate.js +0 -61
  87. package/styles/Alert/_Alert.scss +0 -51
  88. package/styles/AutoSuggestInput/_AutoSuggestInput.scss +0 -116
  89. package/styles/Badge/_Badge.scss +0 -33
  90. package/styles/Chart/_Chart.scss +0 -105
  91. package/styles/Chart/_chartist-settings.scss +0 -131
  92. package/styles/Chart/_chartist.scss +0 -295
  93. package/styles/Checkbox/_Checkbox.scss +0 -173
  94. package/styles/DateTime/_DatePicker.scss +0 -61
  95. package/styles/DateTime/_DatePickerCalendar.scss +0 -159
  96. package/styles/DateTime/_DateTime.scss +0 -4
  97. package/styles/DateTime/_DateTimePicker.scss +0 -46
  98. package/styles/DateTime/_TimePicker.scss +0 -30
  99. package/styles/ErrorBoundary/_ErrorBoundary.scss +0 -18
  100. package/styles/Flyout/_Flyout.scss +0 -73
  101. package/styles/Form/_Form.scss +0 -53
  102. package/styles/GooglePlacesSearchInput/_GooglePlacesSearchInput.scss +0 -3
  103. package/styles/GooglePlacesSearchInput/_PoweredByGoogle.scss +0 -21
  104. package/styles/HorizontalRule/_HorizontalRule.scss +0 -48
  105. package/styles/Label/_Label.scss +0 -6
  106. package/styles/Notification/_Notification.scss +0 -113
  107. package/styles/PasswordControl/_PasswordControl.scss +0 -86
  108. package/styles/PulseLoader/_PulseLoader.scss +0 -60
  109. package/styles/Radio/_Radio.scss +0 -93
  110. package/styles/Select/_Select.scss +0 -94
  111. package/styles/Tabs/_Tabs.scss +0 -57
  112. package/styles/TextArea/_TextArea.scss +0 -26
  113. package/styles/TextInput/_TextInput.scss +0 -43
  114. package/styles/Tooltip/_Tooltip.scss +0 -108
  115. package/styles/_index.scss +0 -34
  116. package/styles/common/sass/_control-sizing.scss +0 -5
  117. package/styles/common/sass/_disable-scrolling.scss +0 -7
  118. package/styles/common/sass/_forms.scss +0 -72
  119. package/styles/index.js +0 -50
  120. package/styles/v1/components/Button/Button.jsx +0 -48
  121. package/styles/v1/components/Button/Button.spec.js +0 -76
  122. package/styles/v1/components/Button/_Button.scss +0 -178
  123. package/styles/v1/components/Button/button-props.js +0 -30
  124. package/styles/v1/components/Button/stories/button.js +0 -20
  125. package/styles/v1/components/Button/stories/index.stories.js +0 -92
  126. package/styles/v1/components/Button/stories/overview.js +0 -87
  127. package/styles/v1/components/Button/stories/types.js +0 -31
  128. package/styles/v1/components/Image/Image.jsx +0 -175
  129. package/styles/v1/components/Image/Image.spec.js +0 -113
  130. package/styles/v1/components/Image/_Image.scss +0 -24
  131. package/styles/v1/components/Image/stories/Cloudinary.stories.js +0 -39
  132. package/styles/v1/components/Image/stories/Display.stories.js +0 -92
  133. package/styles/v1/components/Loader/Loader.jsx +0 -54
  134. package/styles/v1/components/Loader/Loader.spec.js +0 -67
  135. package/styles/v1/components/Loader/_Loader.scss +0 -18
  136. package/styles/v1/components/Loader/stories/Display.stories.js +0 -55
  137. package/styles/v1/components/Modal/Modal.jsx +0 -315
  138. package/styles/v1/components/Modal/Modal.spec.js +0 -293
  139. package/styles/v1/components/Modal/ModalContent.jsx +0 -126
  140. package/styles/v1/components/Modal/ModalFooter.jsx +0 -53
  141. package/styles/v1/components/Modal/_Modal.scss +0 -262
  142. package/styles/v1/components/Modal/index.js +0 -3
  143. package/styles/v1/components/Modal/stories/Content.stories.js +0 -314
  144. package/styles/v1/components/Modal/stories/Display.stories.js +0 -208
  145. package/styles/v1/components/Modal/stories/Methods.stories.js +0 -44
  146. package/styles/v1/components/Modal/stories/Width.stories.js +0 -82
  147. package/styles/v1/components/Modal/stories/helpers/ReduxConsumer.jsx +0 -21
  148. package/styles/v1/components/Panel/Panel.jsx +0 -202
  149. package/styles/v1/components/Panel/Panel.spec.js +0 -196
  150. package/styles/v1/components/Panel/_Panel.scss +0 -55
  151. package/styles/v1/components/Panel/stories/Display.stories.js +0 -82
  152. package/styles/v1/components/Panel/stories/Methods.stories.js +0 -76
  153. package/styles/v1/components/Table/Table.jsx +0 -367
  154. package/styles/v1/components/Table/Table.spec.js +0 -526
  155. package/styles/v1/components/Table/TableCell.jsx +0 -17
  156. package/styles/v1/components/Table/TableCellPropTypes.js +0 -10
  157. package/styles/v1/components/Table/TableControls.jsx +0 -61
  158. package/styles/v1/components/Table/TableFooter.jsx +0 -72
  159. package/styles/v1/components/Table/TableHeading.jsx +0 -58
  160. package/styles/v1/components/Table/TableHeadingPropTypes.js +0 -20
  161. package/styles/v1/components/Table/TableSortSelector.jsx +0 -63
  162. package/styles/v1/components/Table/TableSortType.js +0 -4
  163. package/styles/v1/components/Table/_Table.scss +0 -263
  164. package/styles/v1/components/Table/index.js +0 -5
  165. package/styles/v1/components/Table/stories/Display.stories.js +0 -194
  166. package/styles/v1/components/Table/stories/Methods.stories.js +0 -141
  167. package/styles/v1/components/Table/stories/helpers/TableCellEmail.jsx +0 -25
  168. package/styles/v1/components/Table/stories/helpers/TableCustomRow.jsx +0 -35
  169. package/styles/v1/components/Table/stories/helpers/TableHeadingEmail.jsx +0 -20
  170. package/styles/v1/components/Table/stories/helpers/table-data.js +0 -26
  171. package/styles/v1/components/Table/stories/helpers/table-headers.js +0 -14
  172. package/styles/v1/components/TextButton/TextButton.jsx +0 -78
  173. package/styles/v1/components/TextButton/TextButton.spec.js +0 -95
  174. package/styles/v1/components/TextButton/_TextButton.scss +0 -114
  175. package/styles/v1/components/TextButton/stories/Display.stories.js +0 -46
  176. package/styles/v1/components/index.js +0 -7
  177. package/styles/v1/utils/deprecate.js +0 -45
  178. package/styles/v2/components/Accordion/Accordion.jsx +0 -1
  179. package/styles/v2/components/Accordion/Accordion.stories.js +0 -103
  180. package/styles/v2/components/Accordion/index.js +0 -7
  181. package/styles/v2/components/Accordion/styles/button.js +0 -16
  182. package/styles/v2/components/Accordion/styles/container.js +0 -9
  183. package/styles/v2/components/Accordion/styles/index.js +0 -19
  184. package/styles/v2/components/Accordion/styles/panel.js +0 -7
  185. package/styles/v2/components/Alert/Alert.jsx +0 -121
  186. package/styles/v2/components/Alert/Alert.stories.js +0 -50
  187. package/styles/v2/components/Alert/index.js +0 -1
  188. package/styles/v2/components/Alert/styles/index.js +0 -166
  189. package/styles/v2/components/AutoSuggestSelect/AutoSuggestSelect.jsx +0 -187
  190. package/styles/v2/components/AutoSuggestSelect/index.js +0 -1
  191. package/styles/v2/components/Badge/Badge.jsx +0 -1
  192. package/styles/v2/components/Badge/Badge.stories.js +0 -32
  193. package/styles/v2/components/Badge/styles/index.js +0 -29
  194. package/styles/v2/components/Button/Button.jsx +0 -31
  195. package/styles/v2/components/Button/Button.spec.js +0 -29
  196. package/styles/v2/components/Button/Button.styles.js +0 -156
  197. package/styles/v2/components/Button/button-props.js +0 -66
  198. package/styles/v2/components/Button/index.js +0 -2
  199. package/styles/v2/components/Button/stories/button.js +0 -59
  200. package/styles/v2/components/Button/stories/index.stories.js +0 -82
  201. package/styles/v2/components/Button/stories/overview.js +0 -73
  202. package/styles/v2/components/Card/Card.jsx +0 -16
  203. package/styles/v2/components/Card/Card.stories.js +0 -33
  204. package/styles/v2/components/Checkbox/Checkbox.jsx +0 -1
  205. package/styles/v2/components/Checkbox/Checkbox.stories.js +0 -41
  206. package/styles/v2/components/Checkbox/index.js +0 -1
  207. package/styles/v2/components/Checkbox/styles/index.js +0 -31
  208. package/styles/v2/components/Container/Container.jsx +0 -10
  209. package/styles/v2/components/Container/Container.stories.js +0 -52
  210. package/styles/v2/components/Container/Container.styles.js +0 -11
  211. package/styles/v2/components/Divider/Divider.jsx +0 -31
  212. package/styles/v2/components/Divider/Divider.stories.js +0 -41
  213. package/styles/v2/components/Divider/Divider.styles.js +0 -15
  214. package/styles/v2/components/FormControl/FormControl.jsx +0 -77
  215. package/styles/v2/components/Grid/Grid.jsx +0 -25
  216. package/styles/v2/components/Grid/Grid.stories.js +0 -128
  217. package/styles/v2/components/Grid/Grid.styles.js +0 -12
  218. package/styles/v2/components/Grid/GridItem.jsx +0 -10
  219. package/styles/v2/components/Grid/GridItem.styles.js +0 -8
  220. package/styles/v2/components/Grid/index.js +0 -2
  221. package/styles/v2/components/Heading/Heading.jsx +0 -23
  222. package/styles/v2/components/Heading/Heading.stories.js +0 -40
  223. package/styles/v2/components/Heading/Heading.styles.js +0 -61
  224. package/styles/v2/components/Icon/Icon.jsx +0 -1
  225. package/styles/v2/components/Icon/Icon.stories.js +0 -38
  226. package/styles/v2/components/Image/Image.jsx +0 -97
  227. package/styles/v2/components/Image/Image.spec.js +0 -100
  228. package/styles/v2/components/Image/Image.stories.js +0 -142
  229. package/styles/v2/components/Input/Input.jsx +0 -51
  230. package/styles/v2/components/Input/Input.stories.js +0 -60
  231. package/styles/v2/components/Input/index.js +0 -1
  232. package/styles/v2/components/Input/styles/index.js +0 -49
  233. package/styles/v2/components/Link/Link.jsx +0 -1
  234. package/styles/v2/components/Link/Link.stories.js +0 -82
  235. package/styles/v2/components/Link/Link.styles.js +0 -38
  236. package/styles/v2/components/List/List.jsx +0 -57
  237. package/styles/v2/components/List/List.stories.js +0 -96
  238. package/styles/v2/components/List/index.js +0 -2
  239. package/styles/v2/components/List/styles/index.js +0 -12
  240. package/styles/v2/components/List/styles/item.styles.js +0 -5
  241. package/styles/v2/components/Loader/Loader.jsx +0 -75
  242. package/styles/v2/components/Loader/Loader.stories.js +0 -145
  243. package/styles/v2/components/Modal/Modal.jsx +0 -71
  244. package/styles/v2/components/Modal/Modal.stories.js +0 -278
  245. package/styles/v2/components/Modal/index.js +0 -1
  246. package/styles/v2/components/Modal/styles/body.js +0 -24
  247. package/styles/v2/components/Modal/styles/closeButton.js +0 -17
  248. package/styles/v2/components/Modal/styles/dialog.js +0 -10
  249. package/styles/v2/components/Modal/styles/dialogContainer.js +0 -10
  250. package/styles/v2/components/Modal/styles/footer.js +0 -5
  251. package/styles/v2/components/Modal/styles/header.js +0 -7
  252. package/styles/v2/components/Modal/styles/index.js +0 -47
  253. package/styles/v2/components/Modal/styles/overlay.js +0 -4
  254. package/styles/v2/components/Popover/Popover.jsx +0 -28
  255. package/styles/v2/components/Popover/Popover.stories.js +0 -113
  256. package/styles/v2/components/Popover/PopoverArrow.jsx +0 -10
  257. package/styles/v2/components/Popover/PopoverCloseButton.jsx +0 -10
  258. package/styles/v2/components/Popover/PopoverContent.jsx +0 -41
  259. package/styles/v2/components/Popover/index.js +0 -3
  260. package/styles/v2/components/Popover/styles/index.js +0 -21
  261. package/styles/v2/components/Popover/styles/popover-arrow.js +0 -5
  262. package/styles/v2/components/Popover/styles/popover-body.js +0 -5
  263. package/styles/v2/components/Popover/styles/popover-close-button.js +0 -17
  264. package/styles/v2/components/Popover/styles/popover-content.js +0 -16
  265. package/styles/v2/components/Popover/styles/popover-header.js +0 -6
  266. package/styles/v2/components/Popover/styles/popper.js +0 -5
  267. package/styles/v2/components/Radio/Radio.jsx +0 -50
  268. package/styles/v2/components/Radio/Radio.stories.js +0 -155
  269. package/styles/v2/components/Radio/RadioGroup.jsx +0 -69
  270. package/styles/v2/components/Radio/index.js +0 -2
  271. package/styles/v2/components/Radio/styles/index.js +0 -52
  272. package/styles/v2/components/Select/Select.jsx +0 -62
  273. package/styles/v2/components/Select/Select.stories.js +0 -60
  274. package/styles/v2/components/Select/index.js +0 -1
  275. package/styles/v2/components/Select/styles/index.js +0 -29
  276. package/styles/v2/components/Skeleton/Skeleton.stories.jsx +0 -34
  277. package/styles/v2/components/Skeleton/Skeleton.styles.js +0 -3
  278. package/styles/v2/components/Skeleton/index.js +0 -1
  279. package/styles/v2/components/Spinner/Spinner.jsx +0 -40
  280. package/styles/v2/components/Spinner/Spinner.stories.js +0 -98
  281. package/styles/v2/components/Spinner/Spinner.styles.js +0 -57
  282. package/styles/v2/components/Switch/Switch.jsx +0 -52
  283. package/styles/v2/components/Switch/Switch.stories.js +0 -88
  284. package/styles/v2/components/Switch/index.js +0 -1
  285. package/styles/v2/components/Switch/styles/index.js +0 -17
  286. package/styles/v2/components/Table/Table.jsx +0 -1
  287. package/styles/v2/components/Table/Table.stories.js +0 -90
  288. package/styles/v2/components/Table/Table.styles.js +0 -66
  289. package/styles/v2/components/Table/index.js +0 -2
  290. package/styles/v2/components/Tabs/Tabs.jsx +0 -39
  291. package/styles/v2/components/Tabs/Tabs.stories.js +0 -47
  292. package/styles/v2/components/Tabs/combineSizeWithVariant.js +0 -29
  293. package/styles/v2/components/Tabs/index.js +0 -2
  294. package/styles/v2/components/Tabs/styles/index.js +0 -40
  295. package/styles/v2/components/Text/Text.jsx +0 -35
  296. package/styles/v2/components/Text/Text.stories.js +0 -47
  297. package/styles/v2/components/Text/Text.styles.js +0 -33
  298. package/styles/v2/components/Text/combineAsWithVariant.js +0 -106
  299. package/styles/v2/components/Text/options.js +0 -92
  300. package/styles/v2/components/ThemeProvider/ThemeProvider.jsx +0 -39
  301. package/styles/v2/components/ThemeProvider/ThemeProvider.stories.js +0 -85
  302. package/styles/v2/components/index.js +0 -70
  303. package/styles/v2/components/styles.js +0 -21
  304. package/styles/v2/theme/base/breakpoints.js +0 -16
  305. package/styles/v2/theme/base/colors.js +0 -136
  306. package/styles/v2/theme/base/index.js +0 -5
  307. package/styles/v2/theme/base/sizes.js +0 -48
  308. package/styles/v2/theme/base/typography.js +0 -24
  309. package/styles/v2/theme/base/zindices.js +0 -17
  310. package/styles/v2/theme/global.js +0 -118
  311. package/styles/v2/theme/index.js +0 -27
  312. package/styles/v2/utils/Spaces.js +0 -16
  313. package/v1/assets-manifest.json +0 -5
  314. package/v1/index.html +0 -1
  315. package/v1/index.js +0 -3
  316. package/v1/index.js.LICENSE.txt +0 -23
  317. package/v1/index.js.map +0 -1
@@ -1,526 +0,0 @@
1
- import TableSortType from './TableSortType';
2
-
3
- const {ASC, DESC} = TableSortType;
4
-
5
- describe('<Table />', () => {
6
- context('Display', () => {
7
- context('Default', () => {
8
- beforeEach(() => {
9
- cy.visitStory('v1/Table/Display', 'Default');
10
- });
11
-
12
- it('Renders table and data', () => {
13
- cy.viewport('macbook-15')
14
- // make sure table container exists
15
- .get('.Table-container')
16
- // make sure Table component exists
17
- .get('table')
18
- .should('have.class', 'Table')
19
- // make sure heading exists
20
- .get('thead')
21
- .should('have.class', 'TableHead')
22
- // verify heading labels
23
- .get('.TableHeading')
24
- .eq(0)
25
- .should('contain.text', 'First Name')
26
- .get('.TableHeading')
27
- .eq(1)
28
- .should('contain.text', 'Last Name')
29
- .get('.TableHeading')
30
- .eq(2)
31
- .should('contain.text', 'Email')
32
- .get('.TableHeading')
33
- .eq(3)
34
- .should('contain.text', 'Age')
35
- // make sure table body exists
36
- .get('tbody')
37
- .should('have.class', 'TableBody')
38
- // verify TableCell exists
39
- .get('.TableCell')
40
- // verify desktop breakpoints use table-cell display
41
- .should('have.css', 'display', 'table-cell')
42
- // verify first table row
43
- .get('.TableBody > tr')
44
- .eq(0)
45
- .should('contain', 'Tony')
46
- .should('contain', 'Stark')
47
- .should('contain', 'ironman@avengers.com')
48
- .should('contain', '38')
49
- // verify desktop breakpoints use table-row display
50
- .should('have.css', 'display', 'table-row')
51
- // verify Table footer message
52
- .get('.TableFooter')
53
- .should('contain', 'Showing 4 of 4')
54
- // verify TableControls doesn't exist
55
- .get('.TableControls')
56
- .should('not.exist');
57
- });
58
-
59
- it(`Renders tablet table with proper 'card' styling`, () => {
60
- cy.viewport('ipad-2')
61
- // verify TableCell exists
62
- .get('.TableCell')
63
- // verify tablet breakpoints use block display
64
- .should('have.css', 'display', 'block')
65
- // get first table row
66
- .get('.TableBody > tr')
67
- .eq(0)
68
- // verify tablet breakpoints use inline-block display
69
- .should('have.css', 'display', 'inline-block')
70
- // verify TableFooter hides message
71
- .get('.TableFooter-info')
72
- .should('not.be.visible');
73
- });
74
-
75
- it(`Renders mobile table with proper 'card' styling`, () => {
76
- cy.viewport('iphone-6')
77
- // verify TableCell exists
78
- .get('.TableCell')
79
- // verify mobile breakpoints use block display
80
- .should('have.css', 'display', 'block')
81
- // get first table row
82
- .get('.TableBody > tr')
83
- .eq(0)
84
- // verify mobile breakpoints use block display
85
- .should('have.css', 'display', 'block')
86
- // verify TableFooter hides message
87
- .get('.TableFooter-info')
88
- .should('not.be.visible');
89
- });
90
- });
91
-
92
- context('With custom class names', () => {
93
- it('Renders table with custom class names', () => {
94
- cy.visitStory('v1/Table/Display', 'WithClassNames')
95
- // make sure table container has class name
96
- .get('.Table-container')
97
- .should('have.class', 'AvengersTable-container')
98
- // make sure Table has class name
99
- .get('.Table')
100
- .should('have.class', 'AvengersTable')
101
- // verify headings have class names
102
- .get('.TableHeading')
103
- .eq(0)
104
- .should('have.class', 'AvengersTableHeading-first-name')
105
- .get('.TableHeading')
106
- .eq(1)
107
- .should('have.class', 'AvengersTableHeading-last-name')
108
- .get('.TableHeading')
109
- .eq(2)
110
- .should('have.class', 'AvengersTableHeading-email')
111
- .get('.TableHeading')
112
- .eq(3)
113
- .should('have.class', 'AvengersTableHeading-age')
114
- // verify TableCells have class names
115
- .get('.TableCell')
116
- .eq(0)
117
- .should('have.class', 'AvengersTableCell-first-name')
118
- .get('.TableCell')
119
- .eq(1)
120
- .should('have.class', 'AvengersTableCell-last-name')
121
- .get('.TableCell')
122
- .eq(2)
123
- .should('have.class', 'AvengersTableCell-email')
124
- .get('.TableCell')
125
- .eq(3)
126
- .should('have.class', 'AvengersTableCell-age');
127
- });
128
-
129
- it('Renders table with custom class names for rows', () => {
130
- cy.visitStory('v1/Table/Display', 'WithRowClassNames')
131
- .get('.Table tbody tr')
132
- .should('have.length', 4)
133
- .should('have.class', 'TableRow');
134
- });
135
- });
136
-
137
- context('With custom renders', () => {
138
- it('Renders table with custom heading and cell renders', () => {
139
- cy.visitStory('v1/Table/Display', 'WithCustomRenders')
140
- // verify custom table heading exists
141
- .get('.TableHeadingEmail')
142
- // verify custom table cell exists
143
- .get('.TableCellEmail');
144
- });
145
-
146
- it('Renders table with custom row render', () => {
147
- cy.visitStory('v1/Table/Display', 'WithCustomRowRender')
148
- // verify custom table row exists
149
- .get('.TableCustomRow')
150
- .eq(0)
151
- .should('contain', 'This is an Avenger!');
152
- });
153
- });
154
-
155
- context('With large rows', () => {
156
- it('Renders table with large rows', () => {
157
- cy.visitStory('v1/Table/Display', 'WithLargeRows')
158
- // verify large table rows exist
159
- .get('.Table')
160
- .should('have.class', 'Table-large');
161
- });
162
- });
163
-
164
- context('With sorting via array', () => {
165
- it('Renders table sorted by firstName data key', () => {
166
- cy.visitStory('v1/Table/Display', 'WithSortingArray')
167
- // verify first table row
168
- .get('.TableBody > tr')
169
- .eq(0)
170
- .should('contain', 'Bruce')
171
- .should('contain', 'Banner')
172
- .should('contain', 'hulksmash@avengers.com');
173
- });
174
- });
175
-
176
- context('With no data', () => {
177
- const confirmNoData = () => {
178
- return cy
179
- .get('.TableBody')
180
- .should('have.class', 'Table-no-data');
181
- };
182
-
183
- it('Renders table with no data (using a default message)', () => {
184
- cy.visitStory('v1/Table/Display', 'NoData').then(() => {
185
- confirmNoData();
186
- cy.get('.TableBody').should(
187
- 'contain.text',
188
- 'No data available at this time.'
189
- );
190
- });
191
- });
192
-
193
- it('Renders table with no data or footer (using a custom message)', () => {
194
- cy.visitStory('v1/Table/Display', 'NoDataCustomMessage').then(
195
- () => {
196
- confirmNoData();
197
- cy.get('.TableBody').should(
198
- 'contain.text',
199
- 'The Avengers are no more!'
200
- );
201
- }
202
- );
203
- });
204
- });
205
-
206
- context('With no footer', () => {
207
- const confirmNoFooter = () => {
208
- return cy.get('.TableFooter-info').should('not.exist');
209
- };
210
-
211
- it('Renders table with no footer when provided no data (default message)', () => {
212
- cy.visitStory('v1/Table/Display', 'NoData').then(() => {
213
- cy.viewport('macbook-15');
214
- confirmNoFooter();
215
- });
216
- });
217
-
218
- it('Renders table with no footer when provided no data (custom message)', () => {
219
- cy.visitStory('v1/Table/Display', 'NoDataCustomMessage').then(
220
- () => {
221
- cy.viewport('macbook-15');
222
- confirmNoFooter();
223
- }
224
- );
225
- });
226
-
227
- it('Renders table with no footer', () => {
228
- cy.visitStory('v1/Table/Display', 'WithNoFooterMessage').then(
229
- () => {
230
- cy.viewport('macbook-15');
231
- confirmNoFooter();
232
- }
233
- );
234
- });
235
- });
236
-
237
- context('With table footer options', () => {
238
- it('Renders table with a custom footer message', () => {
239
- cy.visitStory('v1/Table/Display', 'WithCustomFooterMessage')
240
- .viewport('macbook-15')
241
- // verify table footer has custom message
242
- .get('.TableFooter-info')
243
- .should('contain.text', '4 Rows');
244
- });
245
- });
246
-
247
- context('With no tableDataRowCount', () => {
248
- it('Renders table with a valid footer message using the table data array length', () => {
249
- cy.visitStory('v1/Table/Display', 'WithNoTableDataRowCount')
250
- .viewport('macbook-15')
251
- // verify table footer
252
- .get('.TableFooter-info')
253
- .should('contain.text', 'Showing 4 of 4');
254
- });
255
- });
256
- });
257
-
258
- context('Methods', () => {
259
- context('Pagination (onPageChange)', () => {
260
- it('Pagination functions properly', () => {
261
- cy.visitStory('v1/Table/Methods', 'Pagination', {
262
- onBeforeLoad: contentWindow => {
263
- contentWindow.onPageChange = ({
264
- totalPages,
265
- currentPage,
266
- previousPage,
267
- }) => {
268
- console.log('onPageChange'); // eslint-disable-line no-console
269
- };
270
- cy.stub(contentWindow, 'onPageChange').as('pageChange');
271
- },
272
- })
273
- // verify TableFooter message
274
- .get('.TableFooter-info')
275
- .should('contain', 'Showing 1-3 of 4')
276
- // make sure TableControls and TableControls-pagination divs exists
277
- .get('.TableControls')
278
- .get('.TableControls-pagination')
279
- // make sure Page 1 initially selected
280
- .get('.TableControls-pagination option:selected')
281
- .should('contain.text', 'Page 1')
282
- // change Page via select - cannot use selectItem method due to rerender of TableControls
283
- .get('.Select')
284
- .find('select')
285
- .select('2')
286
- .wait(500);
287
-
288
- cy.get('@pageChange')
289
- .should('be.calledWith', {
290
- totalPages: 2,
291
- currentPage: 2,
292
- previousPage: 1,
293
- })
294
- // make sure Page 2 became selected
295
- .get('.TableControls-pagination option:selected')
296
- .should('contain.text', 'Page 2')
297
- // verify TableFooter message
298
- .get('.TableFooter-info')
299
- .should('contain', 'Showing 4-4 of 4')
300
- // change page via Prev arrow button and verify onPageChange called
301
- .get('.TableControls-pagination > .Button-secondary')
302
- .eq(0)
303
- .click()
304
- .wait(500);
305
-
306
- cy.get('@pageChange')
307
- .should('be.calledWith', {
308
- totalPages: 2,
309
- currentPage: 1,
310
- previousPage: 2,
311
- })
312
- // change page via Next arrow button and verify onPageChange called
313
- .get('.TableControls-pagination > .Button-secondary')
314
- .eq(1)
315
- .click()
316
- .wait(500);
317
-
318
- cy.get('@pageChange').should('be.calledWith', {
319
- currentPage: 2,
320
- previousPage: 1,
321
- totalPages: 2,
322
- });
323
- });
324
- });
325
-
326
- context('Sortable Headers (onSortChange)', () => {
327
- beforeEach(() => {
328
- cy.visitStory('v1/Table/Methods', 'WithSortableHeaders', {
329
- onBeforeLoad: contentWindow => {
330
- contentWindow.onSortChange = ({dataKey, sortOrder}) => {
331
- console.log('onSortChange'); // eslint-disable-line no-console
332
- };
333
- cy.stub(contentWindow, 'onSortChange').as('sortChange');
334
- },
335
- });
336
- });
337
- it('Sorting functions properly - desktop via headers', () => {
338
- cy.viewport('macbook-15')
339
- // make sortable headers exist where they should (email doesn't sort)
340
- // verify headings have class names
341
- .get('.TableHeading')
342
- .eq(0)
343
- .should('have.class', 'TableHeading-sortable')
344
- .get('.TableHeading')
345
- .eq(1)
346
- .should('have.class', 'TableHeading-sortable')
347
- .get('.TableHeading')
348
- .eq(2)
349
- .should('not.have.class', 'TableHeading-sortable')
350
- .get('.TableHeading')
351
- .eq(3)
352
- .should('have.class', 'TableHeading-sortable')
353
- // make sure Last Name initially selected and sorted in Descending order
354
- .get('.TableHeading')
355
- .eq(1)
356
- .should('have.class', 'TableHeading-sort-active')
357
- .should('have.class', 'TableHeading-sort-descending')
358
- // verify first table row
359
- .get('.TableBody > tr')
360
- .eq(0)
361
- .should('contain', 'Tony')
362
- .should('contain', 'Stark')
363
- .should('contain', 'ironman@avengers.com')
364
- .should('contain', '38')
365
- // click a non sortable column and verify no call is made
366
- .get('.AvengersTableHeading-email')
367
- .click()
368
- .wait(500)
369
- .get('@sortChange')
370
- .should('not.be.called')
371
- // change Sort via header - click the Age column header
372
- .get('.AvengersTableHeading-age')
373
- .click()
374
- .wait(500);
375
- cy.get('@sortChange')
376
- .should('be.calledWith', {
377
- dataKey: 'age',
378
- sortOrder: ASC,
379
- })
380
- // verify row 1 data
381
- .get('.TableBody > tr')
382
- .eq(0)
383
- .should('contain', 'Bruce')
384
- .should('contain', 'Banner')
385
- .should('contain', 'hulksmash@avengers.com')
386
- .should('contain', '36')
387
- // change Sort via the same Age header
388
- .get('.AvengersTableHeading-age')
389
- .click()
390
- .wait(500);
391
- cy.get('@sortChange')
392
- .should('be.calledWith', {
393
- dataKey: 'age',
394
- sortOrder: DESC,
395
- })
396
- // verify row 1 data
397
- .get('.TableBody > tr')
398
- .eq(0)
399
- .should('contain', 'Thor')
400
- .should('contain', 'Odinson')
401
- .should('contain', 'godofthunder@avengers.com')
402
- .should('contain', '1015');
403
- });
404
-
405
- it('Sorting functions properly - mobile via Select', () => {
406
- cy.viewport('ipad-2')
407
- // make sortable headers exist where they should (email doesn't sort)
408
- // verify headings have class names
409
- .get('.TableHeading')
410
- .eq(0)
411
- .should('have.class', 'TableHeading-sortable')
412
- .get('.TableHeading')
413
- .eq(1)
414
- .should('have.class', 'TableHeading-sortable')
415
- .get('.TableHeading')
416
- .eq(2)
417
- .should('not.have.class', 'TableHeading-sortable')
418
- .get('.TableHeading')
419
- .eq(3)
420
- .should('have.class', 'TableHeading-sortable')
421
- // make sure Last Name initially selected and sorted in Descending order
422
- .get('option:selected')
423
- .contains(`Last Name - ${DESC}`)
424
- .should('have.value', `lastName-${DESC}`)
425
- // verify first table row
426
- .get('.TableBody > tr')
427
- .eq(0)
428
- .should('contain', 'Tony')
429
- .should('contain', 'Stark')
430
- .should('contain', 'ironman@avengers.com')
431
- .should('contain', '38')
432
- // verify no Email option(s) in sort Select
433
- .get('.Select')
434
- .should('not.contain', 'Email')
435
- // change Sort via select - click the Age - Ascending option
436
- // cannot use selectItem method due to rerender of TabNavigation
437
- .get('select')
438
- .select(`age-${ASC}`)
439
- .wait(500);
440
- cy.get('@sortChange')
441
- .should('be.calledWith', {
442
- dataKey: 'age',
443
- sortOrder: ASC,
444
- })
445
- // verify row 1 data
446
- .get('.TableBody > tr')
447
- .eq(0)
448
- .should('contain', 'Bruce')
449
- .should('contain', 'Banner')
450
- .should('contain', 'hulksmash@avengers.com')
451
- .should('contain', '36')
452
- // change Sort via select - click the Age - Descending option
453
- // cannot use selectItem method due to rerender of TabNavigation
454
- .get('select')
455
- .select(`age-${DESC}`)
456
- .wait(500);
457
- cy.get('@sortChange')
458
- .should('be.calledWith', {
459
- dataKey: 'age',
460
- sortOrder: DESC,
461
- })
462
- // verify row 1 data
463
- .get('.TableBody > tr')
464
- .eq(0)
465
- .should('contain', 'Thor')
466
- .should('contain', 'Odinson')
467
- .should('contain', 'godofthunder@avengers.com')
468
- .should('contain', '1015');
469
- });
470
- });
471
-
472
- context('With sorting via function', () => {
473
- it('Sorting with function works properly', () => {
474
- cy.visitStory('v1/Table/Methods', 'WithSortingFunction', {
475
- onBeforeLoad: contentWindow => {
476
- // sorting function will be passed the item object
477
- // in this case, we have firstName, lastName, and email
478
- contentWindow.sorting = ({
479
- firstName,
480
- lastName,
481
- email,
482
- age,
483
- }) => {
484
- console.log('sorting'); // eslint-disable-line no-console
485
- };
486
- cy.stub(contentWindow, 'sorting').as('sorting');
487
- },
488
- })
489
- // verify first table row
490
- .get('.TableBody > tr')
491
- .eq(0)
492
- .should('contain', 'Bruce')
493
- .should('contain', 'Banner')
494
- .should('contain', 'hulksmash@avengers.com')
495
- .should('contain', '36')
496
- // verify sorting function was called 4 times, once per data object
497
- .get('@sorting')
498
- .should('have.callCount', 4)
499
- .should('be.calledWith', {
500
- firstName: 'Tony',
501
- lastName: 'Stark',
502
- email: 'ironman@avengers.com',
503
- age: 38,
504
- })
505
- .should('be.calledWith', {
506
- firstName: 'Bruce',
507
- lastName: 'Banner',
508
- email: 'hulksmash@avengers.com',
509
- age: 36,
510
- })
511
- .should('be.calledWith', {
512
- firstName: 'Steve',
513
- lastName: 'Rogers',
514
- email: 'captamerica@avengers.com',
515
- age: 104,
516
- })
517
- .should('be.calledWith', {
518
- firstName: 'Thor',
519
- lastName: 'Odinson',
520
- email: 'godofthunder@avengers.com',
521
- age: 1015,
522
- });
523
- });
524
- });
525
- });
526
- });
@@ -1,17 +0,0 @@
1
- import React from 'react';
2
- import classNames from 'classnames';
3
- import TableCellPropTypes from './TableCellPropTypes';
4
-
5
- const TableCell = ({className, headingLabel, value}) => {
6
- const classes = classNames('TableCell', className);
7
-
8
- return (
9
- <td className={classes} data-label={headingLabel}>
10
- <div>{value}</div>
11
- </td>
12
- );
13
- };
14
-
15
- TableCell.propTypes = TableCellPropTypes;
16
-
17
- export default TableCell;
@@ -1,10 +0,0 @@
1
- import PropTypes from 'prop-types';
2
-
3
- export default {
4
- /** Additional class(es) to add to the component. */
5
- className: PropTypes.string,
6
- /** The header label that is used to display on smaller viewports above the cell's data. */
7
- headingLabel: PropTypes.string.isRequired,
8
- /** The data to populate inside of the cell. */
9
- value: PropTypes.any,
10
- };
@@ -1,61 +0,0 @@
1
- import times from 'lodash/times';
2
- import React from 'react';
3
- import PropTypes from 'prop-types';
4
- import IconChevronLeft from '@spothero/icons/chevron-left';
5
- import IconChevronRight from '@spothero/icons/chevron-right';
6
- import Button from 'v1/components/Button/Button';
7
- import Select from '../../../Select/Select';
8
-
9
- const TableControls = ({
10
- currentPage,
11
- totalPages,
12
- onPageChange,
13
- onPreviousPage,
14
- onNextPage,
15
- }) => {
16
- const pages = times(totalPages, value => {
17
- const page = (value + 1).toString();
18
-
19
- return {
20
- label: `Page ${page}`,
21
- value: page,
22
- };
23
- });
24
-
25
- return (
26
- <div className="TableControls">
27
- <div className="TableControls-pagination">
28
- <Button
29
- color="secondary"
30
- disabled={currentPage === 1}
31
- onClick={onPreviousPage}
32
- >
33
- <IconChevronLeft />
34
- </Button>
35
- <Select
36
- key={new Date()}
37
- defaultValue={currentPage.toString()}
38
- items={pages}
39
- onChange={onPageChange}
40
- />
41
- <Button
42
- color="secondary"
43
- disabled={currentPage === totalPages}
44
- onClick={onNextPage}
45
- >
46
- <IconChevronRight />
47
- </Button>
48
- </div>
49
- </div>
50
- );
51
- };
52
-
53
- TableControls.propTypes = {
54
- currentPage: PropTypes.number.isRequired,
55
- totalPages: PropTypes.number.isRequired,
56
- onPageChange: PropTypes.func.isRequired,
57
- onPreviousPage: PropTypes.func.isRequired,
58
- onNextPage: PropTypes.func.isRequired,
59
- };
60
-
61
- export default TableControls;