@hipay/hipay-material-ui 1.0.0-beta.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (675) hide show
  1. package/AppBar/AppBar.js +144 -0
  2. package/AppBar/index.js +16 -0
  3. package/Avatar/Avatar.js +165 -0
  4. package/Avatar/index.js +16 -0
  5. package/Badge/Badge.js +142 -0
  6. package/Badge/index.js +16 -0
  7. package/BottomNavigation/BottomNavigation.js +113 -0
  8. package/BottomNavigation/BottomNavigationAction.js +219 -0
  9. package/BottomNavigation/index.js +25 -0
  10. package/Button/Button.js +298 -0
  11. package/Button/index.js +16 -0
  12. package/ButtonBase/ButtonBase.js +446 -0
  13. package/ButtonBase/Ripple.js +162 -0
  14. package/ButtonBase/TouchRipple.js +359 -0
  15. package/ButtonBase/createRippleHandler.js +28 -0
  16. package/ButtonBase/index.js +16 -0
  17. package/CHANGELOG.md +5481 -0
  18. package/Card/Card.js +48 -0
  19. package/Card/CardActions.js +94 -0
  20. package/Card/CardContent.js +76 -0
  21. package/Card/CardHeader.js +150 -0
  22. package/Card/CardMedia.js +113 -0
  23. package/Card/index.js +52 -0
  24. package/Checkbox/Checkbox.js +160 -0
  25. package/Checkbox/index.js +16 -0
  26. package/Chip/Chip.js +322 -0
  27. package/Chip/index.js +16 -0
  28. package/Dialog/Dialog.js +271 -0
  29. package/Dialog/DialogActions.js +94 -0
  30. package/Dialog/DialogContent.js +77 -0
  31. package/Dialog/DialogContentText.js +72 -0
  32. package/Dialog/DialogTitle.js +91 -0
  33. package/Dialog/index.js +61 -0
  34. package/Dialog/withMobileDialog.js +49 -0
  35. package/Divider/Divider.js +113 -0
  36. package/Divider/index.js +16 -0
  37. package/Drawer/Drawer.js +325 -0
  38. package/Drawer/index.js +16 -0
  39. package/ExpansionPanel/ExpansionPanel.js +257 -0
  40. package/ExpansionPanel/ExpansionPanelActions.js +79 -0
  41. package/ExpansionPanel/ExpansionPanelDetails.js +73 -0
  42. package/ExpansionPanel/ExpansionPanelSummary.js +250 -0
  43. package/ExpansionPanel/index.js +43 -0
  44. package/Form/FormControl.js +291 -0
  45. package/Form/FormControlLabel.js +168 -0
  46. package/Form/FormGroup.js +94 -0
  47. package/Form/FormHelperText.js +139 -0
  48. package/Form/FormLabel.js +158 -0
  49. package/Form/index.js +52 -0
  50. package/Grid/Grid.js +372 -0
  51. package/Grid/index.js +16 -0
  52. package/GridList/GridList.js +122 -0
  53. package/GridList/GridListTile.js +239 -0
  54. package/GridList/GridListTileBar.js +176 -0
  55. package/GridList/index.js +34 -0
  56. package/HiBadge/HiBadge.js +107 -0
  57. package/HiBadge/index.js +16 -0
  58. package/HiButton/HiButton.js +159 -0
  59. package/HiButton/index.js +16 -0
  60. package/HiCheckbox/HiCheckbox.js +171 -0
  61. package/HiCheckbox/index.js +16 -0
  62. package/HiChip/HiChip.js +185 -0
  63. package/HiChip/HiChipSwitch.js +306 -0
  64. package/HiChip/index.js +25 -0
  65. package/HiColoredLabel/HiColoredLabel.js +116 -0
  66. package/HiColoredLabel/index.js +16 -0
  67. package/HiDatePicker/Caption.js +93 -0
  68. package/HiDatePicker/HiDatePicker.js +411 -0
  69. package/HiDatePicker/HiDateRangePicker.js +713 -0
  70. package/HiDatePicker/HiDateRangeSelector.js +414 -0
  71. package/HiDatePicker/HiWeekPicker.js +389 -0
  72. package/HiDatePicker/ListPicker.js +154 -0
  73. package/HiDatePicker/Navbar.js +169 -0
  74. package/HiDatePicker/Overlays/CustomOverlayLayout.js +142 -0
  75. package/HiDatePicker/Overlays/MonthPickerOverlay.js +137 -0
  76. package/HiDatePicker/Overlays/Overlay.js +105 -0
  77. package/HiDatePicker/Overlays/TimePickerOverlay.js +291 -0
  78. package/HiDatePicker/Overlays/YearPickerOverlay.js +173 -0
  79. package/HiDatePicker/Overlays/index.js +52 -0
  80. package/HiDatePicker/Weekday.js +52 -0
  81. package/HiDatePicker/index.js +33 -0
  82. package/HiDatePicker/stylesheet.js +188 -0
  83. package/HiForm/HiEmailField.js +126 -0
  84. package/HiForm/HiFormControl.js +377 -0
  85. package/HiForm/HiFormLabel.js +180 -0
  86. package/HiForm/HiInput.js +546 -0
  87. package/HiForm/HiPasswordField.js +134 -0
  88. package/HiForm/HiSearchField.js +192 -0
  89. package/HiForm/HiTextField.js +293 -0
  90. package/HiForm/index.js +70 -0
  91. package/HiLoader/HiLoader.js +55 -0
  92. package/HiLoader/index.js +16 -0
  93. package/HiPins/HiPins.js +99 -0
  94. package/HiPins/index.js +16 -0
  95. package/HiRadio/HiRadio.js +99 -0
  96. package/HiRadio/index.js +16 -0
  97. package/HiSelect/HiSelect.js +830 -0
  98. package/HiSelect/HiSelectField.js +160 -0
  99. package/HiSelect/HiSuggestSelect.js +306 -0
  100. package/HiSelect/HiSuggestSelectField.js +143 -0
  101. package/HiSelect/SelectInput.js +329 -0
  102. package/HiSelect/index.js +41 -0
  103. package/HiSelectableList/HiSelectableList.js +258 -0
  104. package/HiSelectableList/HiSelectableListItem.js +520 -0
  105. package/HiSelectableList/index.js +25 -0
  106. package/HiSwitch/HiSwitch.js +208 -0
  107. package/HiSwitch/HiSwitchState.js +229 -0
  108. package/HiSwitch/index.js +25 -0
  109. package/HiTable/BodyCellBuilder.js +398 -0
  110. package/HiTable/BodyCells/CellAccount.js +100 -0
  111. package/HiTable/BodyCells/CellAccountNumber.js +220 -0
  112. package/HiTable/BodyCells/CellAddress.js +199 -0
  113. package/HiTable/BodyCells/CellCountry.js +172 -0
  114. package/HiTable/BodyCells/CellDate.js +177 -0
  115. package/HiTable/BodyCells/CellIcon.js +148 -0
  116. package/HiTable/BodyCells/CellImage.js +177 -0
  117. package/HiTable/BodyCells/CellLayout.js +281 -0
  118. package/HiTable/BodyCells/CellNumeric.js +135 -0
  119. package/HiTable/BodyCells/CellRate.js +197 -0
  120. package/HiTable/BodyCells/CellSentinel.js +213 -0
  121. package/HiTable/BodyCells/CellStatus.js +136 -0
  122. package/HiTable/BodyCells/CellText.js +267 -0
  123. package/HiTable/BodyCells/CellThirdPartySecurity.js +144 -0
  124. package/HiTable/BodyCells/index.js +133 -0
  125. package/HiTable/BodyRow.js +388 -0
  126. package/HiTable/ChildRow.js +432 -0
  127. package/HiTable/ColumnFilter.js +490 -0
  128. package/HiTable/HeaderCell.js +463 -0
  129. package/HiTable/HiStickyRow.js +300 -0
  130. package/HiTable/HiTable.js +1012 -0
  131. package/HiTable/HiTableBody.js +547 -0
  132. package/HiTable/HiTableContextMenu.js +214 -0
  133. package/HiTable/HiTableFooterScroll.js +202 -0
  134. package/HiTable/HiTableHead.js +489 -0
  135. package/HiTable/OrderColumns.js +557 -0
  136. package/HiTable/constants.js +105 -0
  137. package/HiTable/index.js +25 -0
  138. package/HiTopBar/HiTopBar.js +635 -0
  139. package/HiTopBar/index.js +16 -0
  140. package/Hidden/Hidden.js +130 -0
  141. package/Hidden/HiddenCss.js +175 -0
  142. package/Hidden/HiddenJs.js +149 -0
  143. package/Hidden/index.js +16 -0
  144. package/Icon/Icon.js +109 -0
  145. package/Icon/index.js +16 -0
  146. package/IconButton/IconButton.js +146 -0
  147. package/IconButton/index.js +16 -0
  148. package/Input/Input.js +682 -0
  149. package/Input/InputAdornment.js +116 -0
  150. package/Input/InputLabel.js +163 -0
  151. package/Input/Textarea.js +301 -0
  152. package/Input/index.js +34 -0
  153. package/LICENSE +21 -0
  154. package/List/List.js +167 -0
  155. package/List/ListItem.js +279 -0
  156. package/List/ListItemAvatar.js +100 -0
  157. package/List/ListItemIcon.js +77 -0
  158. package/List/ListItemSecondaryAction.js +76 -0
  159. package/List/ListItemText.js +145 -0
  160. package/List/ListSubheader.js +127 -0
  161. package/List/index.js +70 -0
  162. package/Menu/Menu.js +274 -0
  163. package/Menu/MenuItem.js +113 -0
  164. package/Menu/MenuList.js +253 -0
  165. package/Menu/index.js +34 -0
  166. package/MobileStepper/MobileStepper.js +173 -0
  167. package/MobileStepper/index.js +16 -0
  168. package/Modal/Backdrop.js +102 -0
  169. package/Modal/Modal.js +502 -0
  170. package/Modal/ModalManager.js +210 -0
  171. package/Modal/index.js +34 -0
  172. package/Modal/isOverflowing.js +43 -0
  173. package/Modal/manageAriaHidden.js +45 -0
  174. package/Paper/Paper.js +111 -0
  175. package/Paper/index.js +16 -0
  176. package/Popover/Popover.js +564 -0
  177. package/Popover/index.js +16 -0
  178. package/Portal/LegacyPortal.js +158 -0
  179. package/Portal/Portal.js +144 -0
  180. package/Portal/index.js +21 -0
  181. package/Progress/CircularProgress.js +228 -0
  182. package/Progress/LinearProgress.js +258 -0
  183. package/Progress/index.js +25 -0
  184. package/README.md +237 -0
  185. package/Radio/Radio.js +155 -0
  186. package/Radio/RadioGroup.js +168 -0
  187. package/Radio/index.js +25 -0
  188. package/Reboot/Reboot.js +106 -0
  189. package/Reboot/index.js +16 -0
  190. package/Select/Select.js +229 -0
  191. package/Select/SelectInput.js +502 -0
  192. package/Select/index.js +16 -0
  193. package/Snackbar/Snackbar.js +451 -0
  194. package/Snackbar/SnackbarContent.js +135 -0
  195. package/Snackbar/index.js +25 -0
  196. package/Stepper/Step.js +151 -0
  197. package/Stepper/StepButton.js +143 -0
  198. package/Stepper/StepConnector.js +118 -0
  199. package/Stepper/StepContent.js +153 -0
  200. package/Stepper/StepIcon.js +86 -0
  201. package/Stepper/StepLabel.js +200 -0
  202. package/Stepper/StepPositionIcon.js +95 -0
  203. package/Stepper/Stepper.js +161 -0
  204. package/Stepper/index.js +61 -0
  205. package/SvgIcon/SvgIcon.js +147 -0
  206. package/SvgIcon/index.js +16 -0
  207. package/Switch/Switch.js +215 -0
  208. package/Switch/index.js +16 -0
  209. package/Table/Table.js +127 -0
  210. package/Table/TableBody.js +121 -0
  211. package/Table/TableCell.js +181 -0
  212. package/Table/TableFooter.js +93 -0
  213. package/Table/TableHead.js +121 -0
  214. package/Table/TablePagination.js +310 -0
  215. package/Table/TablePaginationActions.js +183 -0
  216. package/Table/TableRow.js +127 -0
  217. package/Table/TableSortLabel.js +145 -0
  218. package/Table/index.js +79 -0
  219. package/Tabs/Tab.js +340 -0
  220. package/Tabs/TabIndicator.js +95 -0
  221. package/Tabs/TabScrollButton.js +112 -0
  222. package/Tabs/Tabs.js +530 -0
  223. package/Tabs/index.js +25 -0
  224. package/TextField/TextField.js +290 -0
  225. package/TextField/index.js +16 -0
  226. package/Toolbar/Toolbar.js +89 -0
  227. package/Toolbar/index.js +16 -0
  228. package/Tooltip/Tooltip.js +514 -0
  229. package/Tooltip/index.js +16 -0
  230. package/Typography/Typography.js +192 -0
  231. package/Typography/index.js +16 -0
  232. package/colors/amber.js +23 -0
  233. package/colors/blue.js +23 -0
  234. package/colors/blueGrey.js +23 -0
  235. package/colors/brown.js +23 -0
  236. package/colors/common.js +11 -0
  237. package/colors/cyan.js +23 -0
  238. package/colors/deepOrange.js +23 -0
  239. package/colors/deepPurple.js +23 -0
  240. package/colors/green.js +23 -0
  241. package/colors/grey.js +23 -0
  242. package/colors/index.js +187 -0
  243. package/colors/indigo.js +23 -0
  244. package/colors/lightBlue.js +23 -0
  245. package/colors/lightGreen.js +23 -0
  246. package/colors/lime.js +23 -0
  247. package/colors/orange.js +23 -0
  248. package/colors/pink.js +23 -0
  249. package/colors/purple.js +23 -0
  250. package/colors/red.js +23 -0
  251. package/colors/teal.js +23 -0
  252. package/colors/yellow.js +23 -0
  253. package/es/AppBar/AppBar.js +106 -0
  254. package/es/AppBar/index.js +1 -0
  255. package/es/Avatar/Avatar.js +136 -0
  256. package/es/Avatar/index.js +1 -0
  257. package/es/Badge/Badge.js +112 -0
  258. package/es/Badge/index.js +1 -0
  259. package/es/BottomNavigation/BottomNavigation.js +86 -0
  260. package/es/BottomNavigation/BottomNavigationAction.js +153 -0
  261. package/es/BottomNavigation/index.js +2 -0
  262. package/es/Button/Button.js +274 -0
  263. package/es/Button/index.js +1 -0
  264. package/es/ButtonBase/ButtonBase.js +358 -0
  265. package/es/ButtonBase/Ripple.js +102 -0
  266. package/es/ButtonBase/TouchRipple.js +268 -0
  267. package/es/ButtonBase/createRippleHandler.js +23 -0
  268. package/es/ButtonBase/index.js +1 -0
  269. package/es/Card/Card.js +27 -0
  270. package/es/Card/CardActions.js +58 -0
  271. package/es/Card/CardContent.js +45 -0
  272. package/es/Card/CardHeader.js +120 -0
  273. package/es/Card/CardMedia.js +76 -0
  274. package/es/Card/index.js +5 -0
  275. package/es/Checkbox/Checkbox.js +117 -0
  276. package/es/Checkbox/index.js +1 -0
  277. package/es/Chip/Chip.js +241 -0
  278. package/es/Chip/index.js +1 -0
  279. package/es/Dialog/Dialog.js +231 -0
  280. package/es/Dialog/DialogActions.js +58 -0
  281. package/es/Dialog/DialogContent.js +48 -0
  282. package/es/Dialog/DialogContentText.js +41 -0
  283. package/es/Dialog/DialogTitle.js +57 -0
  284. package/es/Dialog/index.js +6 -0
  285. package/es/Dialog/withMobileDialog.js +25 -0
  286. package/es/Divider/Divider.js +83 -0
  287. package/es/Divider/index.js +1 -0
  288. package/es/Drawer/Drawer.js +252 -0
  289. package/es/Drawer/index.js +1 -0
  290. package/es/ExpansionPanel/ExpansionPanel.js +194 -0
  291. package/es/ExpansionPanel/ExpansionPanelActions.js +47 -0
  292. package/es/ExpansionPanel/ExpansionPanelDetails.js +42 -0
  293. package/es/ExpansionPanel/ExpansionPanelSummary.js +182 -0
  294. package/es/ExpansionPanel/index.js +4 -0
  295. package/es/Form/FormControl.js +214 -0
  296. package/es/Form/FormControlLabel.js +137 -0
  297. package/es/Form/FormGroup.js +62 -0
  298. package/es/Form/FormHelperText.js +110 -0
  299. package/es/Form/FormLabel.js +132 -0
  300. package/es/Form/index.js +5 -0
  301. package/es/Grid/Grid.js +353 -0
  302. package/es/Grid/index.js +1 -0
  303. package/es/GridList/GridList.js +97 -0
  304. package/es/GridList/GridListTile.js +153 -0
  305. package/es/GridList/GridListTileBar.js +152 -0
  306. package/es/GridList/index.js +3 -0
  307. package/es/HiBadge/HiBadge.js +76 -0
  308. package/es/HiBadge/index.js +1 -0
  309. package/es/HiButton/HiButton.js +130 -0
  310. package/es/HiButton/index.js +1 -0
  311. package/es/HiCheckbox/HiCheckbox.js +101 -0
  312. package/es/HiCheckbox/index.js +1 -0
  313. package/es/HiChip/HiChip.js +148 -0
  314. package/es/HiChip/HiChipSwitch.js +244 -0
  315. package/es/HiChip/index.js +2 -0
  316. package/es/HiColoredLabel/HiColoredLabel.js +84 -0
  317. package/es/HiColoredLabel/index.js +1 -0
  318. package/es/HiDatePicker/Caption.js +67 -0
  319. package/es/HiDatePicker/HiDatePicker.js +314 -0
  320. package/es/HiDatePicker/HiDateRangePicker.js +565 -0
  321. package/es/HiDatePicker/HiDateRangeSelector.js +337 -0
  322. package/es/HiDatePicker/HiWeekPicker.js +296 -0
  323. package/es/HiDatePicker/ListPicker.js +93 -0
  324. package/es/HiDatePicker/Navbar.js +130 -0
  325. package/es/HiDatePicker/Overlays/CustomOverlayLayout.js +114 -0
  326. package/es/HiDatePicker/Overlays/MonthPickerOverlay.js +80 -0
  327. package/es/HiDatePicker/Overlays/Overlay.js +76 -0
  328. package/es/HiDatePicker/Overlays/TimePickerOverlay.js +218 -0
  329. package/es/HiDatePicker/Overlays/YearPickerOverlay.js +109 -0
  330. package/es/HiDatePicker/Overlays/index.js +5 -0
  331. package/es/HiDatePicker/Weekday.js +34 -0
  332. package/es/HiDatePicker/index.js +7 -0
  333. package/es/HiDatePicker/stylesheet.js +175 -0
  334. package/es/HiForm/HiEmailField.js +71 -0
  335. package/es/HiForm/HiFormControl.js +298 -0
  336. package/es/HiForm/HiFormLabel.js +122 -0
  337. package/es/HiForm/HiInput.js +485 -0
  338. package/es/HiForm/HiPasswordField.js +70 -0
  339. package/es/HiForm/HiSearchField.js +135 -0
  340. package/es/HiForm/HiTextField.js +239 -0
  341. package/es/HiForm/index.js +7 -0
  342. package/es/HiLoader/HiLoader.js +33 -0
  343. package/es/HiLoader/index.js +1 -0
  344. package/es/HiPins/HiPins.js +66 -0
  345. package/es/HiPins/index.js +1 -0
  346. package/es/HiRadio/HiRadio.js +41 -0
  347. package/es/HiRadio/index.js +1 -0
  348. package/es/HiSelect/HiSelect.js +713 -0
  349. package/es/HiSelect/HiSelectField.js +106 -0
  350. package/es/HiSelect/HiSuggestSelect.js +223 -0
  351. package/es/HiSelect/HiSuggestSelectField.js +89 -0
  352. package/es/HiSelect/SelectInput.js +262 -0
  353. package/es/HiSelect/index.js +11 -0
  354. package/es/HiSelectableList/HiSelectableList.js +195 -0
  355. package/es/HiSelectableList/HiSelectableListItem.js +441 -0
  356. package/es/HiSelectableList/index.js +2 -0
  357. package/es/HiSwitch/HiSwitch.js +138 -0
  358. package/es/HiSwitch/HiSwitchState.js +169 -0
  359. package/es/HiSwitch/index.js +2 -0
  360. package/es/HiTable/BodyCellBuilder.js +345 -0
  361. package/es/HiTable/BodyCells/CellAccount.js +40 -0
  362. package/es/HiTable/BodyCells/CellAccountNumber.js +166 -0
  363. package/es/HiTable/BodyCells/CellAddress.js +129 -0
  364. package/es/HiTable/BodyCells/CellCountry.js +107 -0
  365. package/es/HiTable/BodyCells/CellDate.js +111 -0
  366. package/es/HiTable/BodyCells/CellIcon.js +83 -0
  367. package/es/HiTable/BodyCells/CellImage.js +115 -0
  368. package/es/HiTable/BodyCells/CellLayout.js +198 -0
  369. package/es/HiTable/BodyCells/CellNumeric.js +71 -0
  370. package/es/HiTable/BodyCells/CellRate.js +131 -0
  371. package/es/HiTable/BodyCells/CellSentinel.js +153 -0
  372. package/es/HiTable/BodyCells/CellStatus.js +73 -0
  373. package/es/HiTable/BodyCells/CellText.js +188 -0
  374. package/es/HiTable/BodyCells/CellThirdPartySecurity.js +89 -0
  375. package/es/HiTable/BodyCells/index.js +16 -0
  376. package/es/HiTable/BodyRow.js +314 -0
  377. package/es/HiTable/ChildRow.js +345 -0
  378. package/es/HiTable/ColumnFilter.js +394 -0
  379. package/es/HiTable/HeaderCell.js +376 -0
  380. package/es/HiTable/HiStickyRow.js +217 -0
  381. package/es/HiTable/HiTable.js +876 -0
  382. package/es/HiTable/HiTableBody.js +454 -0
  383. package/es/HiTable/HiTableContextMenu.js +150 -0
  384. package/es/HiTable/HiTableFooterScroll.js +144 -0
  385. package/es/HiTable/HiTableHead.js +403 -0
  386. package/es/HiTable/OrderColumns.js +437 -0
  387. package/es/HiTable/constants.js +180 -0
  388. package/es/HiTable/index.js +2 -0
  389. package/es/HiTopBar/HiTopBar.js +527 -0
  390. package/es/HiTopBar/index.js +1 -0
  391. package/es/Hidden/Hidden.js +107 -0
  392. package/es/Hidden/HiddenCss.js +151 -0
  393. package/es/Hidden/HiddenJs.js +129 -0
  394. package/es/Hidden/index.js +1 -0
  395. package/es/Icon/Icon.js +74 -0
  396. package/es/Icon/index.js +1 -0
  397. package/es/IconButton/IconButton.js +106 -0
  398. package/es/IconButton/index.js +1 -0
  399. package/es/Input/Input.js +616 -0
  400. package/es/Input/InputAdornment.js +83 -0
  401. package/es/Input/InputLabel.js +138 -0
  402. package/es/Input/Textarea.js +234 -0
  403. package/es/Input/index.js +3 -0
  404. package/es/List/List.js +106 -0
  405. package/es/List/ListItem.js +212 -0
  406. package/es/List/ListItemAvatar.js +63 -0
  407. package/es/List/ListItemIcon.js +46 -0
  408. package/es/List/ListItemSecondaryAction.js +45 -0
  409. package/es/List/ListItemText.js +114 -0
  410. package/es/List/ListSubheader.js +90 -0
  411. package/es/List/index.js +7 -0
  412. package/es/Menu/Menu.js +205 -0
  413. package/es/Menu/MenuItem.js +75 -0
  414. package/es/Menu/MenuList.js +168 -0
  415. package/es/Menu/index.js +3 -0
  416. package/es/MobileStepper/MobileStepper.js +137 -0
  417. package/es/MobileStepper/index.js +1 -0
  418. package/es/Modal/Backdrop.js +67 -0
  419. package/es/Modal/Modal.js +398 -0
  420. package/es/Modal/ModalManager.js +162 -0
  421. package/es/Modal/index.js +3 -0
  422. package/es/Modal/isOverflowing.js +25 -0
  423. package/es/Modal/manageAriaHidden.js +33 -0
  424. package/es/Paper/Paper.js +81 -0
  425. package/es/Paper/index.js +1 -0
  426. package/es/Popover/Popover.js +455 -0
  427. package/es/Popover/index.js +1 -0
  428. package/es/Portal/LegacyPortal.js +97 -0
  429. package/es/Portal/Portal.js +82 -0
  430. package/es/Portal/index.js +5 -0
  431. package/es/Progress/CircularProgress.js +201 -0
  432. package/es/Progress/LinearProgress.js +235 -0
  433. package/es/Progress/index.js +2 -0
  434. package/es/Radio/Radio.js +113 -0
  435. package/es/Radio/RadioGroup.js +101 -0
  436. package/es/Radio/index.js +2 -0
  437. package/es/Reboot/Reboot.js +55 -0
  438. package/es/Reboot/index.js +1 -0
  439. package/es/Select/Select.js +199 -0
  440. package/es/Select/SelectInput.js +414 -0
  441. package/es/Select/index.js +1 -0
  442. package/es/Snackbar/Snackbar.js +370 -0
  443. package/es/Snackbar/SnackbarContent.js +96 -0
  444. package/es/Snackbar/index.js +2 -0
  445. package/es/Stepper/Step.js +120 -0
  446. package/es/Stepper/StepButton.js +111 -0
  447. package/es/Stepper/StepConnector.js +85 -0
  448. package/es/Stepper/StepContent.js +116 -0
  449. package/es/Stepper/StepIcon.js +54 -0
  450. package/es/Stepper/StepLabel.js +170 -0
  451. package/es/Stepper/StepPositionIcon.js +64 -0
  452. package/es/Stepper/Stepper.js +126 -0
  453. package/es/Stepper/index.js +6 -0
  454. package/es/SvgIcon/SvgIcon.js +117 -0
  455. package/es/SvgIcon/index.js +1 -0
  456. package/es/Switch/Switch.js +178 -0
  457. package/es/Switch/index.js +1 -0
  458. package/es/Table/Table.js +64 -0
  459. package/es/Table/TableBody.js +61 -0
  460. package/es/Table/TableCell.js +153 -0
  461. package/es/Table/TableFooter.js +44 -0
  462. package/es/Table/TableHead.js +61 -0
  463. package/es/Table/TablePagination.js +224 -0
  464. package/es/Table/TablePaginationActions.js +116 -0
  465. package/es/Table/TableRow.js +99 -0
  466. package/es/Table/TableSortLabel.js +101 -0
  467. package/es/Table/index.js +8 -0
  468. package/es/Tabs/Tab.js +271 -0
  469. package/es/Tabs/TabIndicator.js +63 -0
  470. package/es/Tabs/TabScrollButton.js +70 -0
  471. package/es/Tabs/Tabs.js +425 -0
  472. package/es/Tabs/index.js +2 -0
  473. package/es/TextField/TextField.js +259 -0
  474. package/es/TextField/index.js +1 -0
  475. package/es/Toolbar/Toolbar.js +55 -0
  476. package/es/Toolbar/index.js +1 -0
  477. package/es/Tooltip/Tooltip.js +425 -0
  478. package/es/Tooltip/index.js +1 -0
  479. package/es/Typography/Typography.js +164 -0
  480. package/es/Typography/index.js +1 -0
  481. package/es/colors/amber.js +18 -0
  482. package/es/colors/blue.js +18 -0
  483. package/es/colors/blueGrey.js +18 -0
  484. package/es/colors/brown.js +18 -0
  485. package/es/colors/common.js +6 -0
  486. package/es/colors/cyan.js +18 -0
  487. package/es/colors/deepOrange.js +18 -0
  488. package/es/colors/deepPurple.js +18 -0
  489. package/es/colors/green.js +18 -0
  490. package/es/colors/grey.js +18 -0
  491. package/es/colors/index.js +20 -0
  492. package/es/colors/indigo.js +18 -0
  493. package/es/colors/lightBlue.js +18 -0
  494. package/es/colors/lightGreen.js +18 -0
  495. package/es/colors/lime.js +18 -0
  496. package/es/colors/orange.js +18 -0
  497. package/es/colors/pink.js +18 -0
  498. package/es/colors/purple.js +18 -0
  499. package/es/colors/red.js +18 -0
  500. package/es/colors/teal.js +18 -0
  501. package/es/colors/yellow.js +18 -0
  502. package/es/index.js +64 -0
  503. package/es/internal/RefHolder.js +20 -0
  504. package/es/internal/SwitchBase.js +219 -0
  505. package/es/internal/svg-icons/ArrowDownward.js +20 -0
  506. package/es/internal/svg-icons/ArrowDropDown.js +20 -0
  507. package/es/internal/svg-icons/Cancel.js +19 -0
  508. package/es/internal/svg-icons/CheckBox.js +19 -0
  509. package/es/internal/svg-icons/CheckBoxOutlineBlank.js +19 -0
  510. package/es/internal/svg-icons/CheckCircle.js +19 -0
  511. package/es/internal/svg-icons/IndeterminateCheckBox.js +19 -0
  512. package/es/internal/svg-icons/KeyboardArrowLeft.js +19 -0
  513. package/es/internal/svg-icons/KeyboardArrowRight.js +19 -0
  514. package/es/internal/svg-icons/RadioButtonChecked.js +19 -0
  515. package/es/internal/svg-icons/RadioButtonUnchecked.js +19 -0
  516. package/es/styles/MuiThemeProvider.js +125 -0
  517. package/es/styles/colorManipulator.js +221 -0
  518. package/es/styles/createBreakpoints.js +69 -0
  519. package/es/styles/createGenerateClassName.js +72 -0
  520. package/es/styles/createHiMuiTheme.js +296 -0
  521. package/es/styles/createMixins.js +25 -0
  522. package/es/styles/createMuiTheme.js +45 -0
  523. package/es/styles/createPalette.js +164 -0
  524. package/es/styles/createTypography.js +116 -0
  525. package/es/styles/getStylesCreator.js +34 -0
  526. package/es/styles/index.js +7 -0
  527. package/es/styles/jssPreset.js +16 -0
  528. package/es/styles/shadows.js +11 -0
  529. package/es/styles/spacing.js +5 -0
  530. package/es/styles/themeListener.js +31 -0
  531. package/es/styles/transitions.js +80 -0
  532. package/es/styles/withStyles.js +300 -0
  533. package/es/styles/withTheme.js +65 -0
  534. package/es/styles/zIndex.js +12 -0
  535. package/es/svg-icons/ArrowDownward.js +20 -0
  536. package/es/svg-icons/ArrowDropDown.js +20 -0
  537. package/es/svg-icons/Cancel.js +19 -0
  538. package/es/svg-icons/CheckBox.js +19 -0
  539. package/es/svg-icons/CheckBoxOutlineBlank.js +19 -0
  540. package/es/svg-icons/CheckCircle.js +19 -0
  541. package/es/svg-icons/HiAccount.js +33 -0
  542. package/es/svg-icons/HiAll.js +43 -0
  543. package/es/svg-icons/HiBilling.js +33 -0
  544. package/es/svg-icons/HiCatalog.js +33 -0
  545. package/es/svg-icons/HiCustomer.js +39 -0
  546. package/es/svg-icons/HiFinance.js +33 -0
  547. package/es/svg-icons/HiRoute.js +33 -0
  548. package/es/svg-icons/HiSettlement.js +36 -0
  549. package/es/svg-icons/HiSizeLarge.js +19 -0
  550. package/es/svg-icons/HiSizeMedium.js +19 -0
  551. package/es/svg-icons/HiSizeSmall.js +19 -0
  552. package/es/svg-icons/HiTransaction.js +33 -0
  553. package/es/svg-icons/HiUser.js +39 -0
  554. package/es/svg-icons/HiWidget.js +43 -0
  555. package/es/svg-icons/IndeterminateCheckBox.js +19 -0
  556. package/es/svg-icons/KeyboardArrowLeft.js +19 -0
  557. package/es/svg-icons/KeyboardArrowRight.js +19 -0
  558. package/es/svg-icons/RadioButtonChecked.js +19 -0
  559. package/es/svg-icons/RadioButtonUnchecked.js +19 -0
  560. package/es/svg-icons/index.js +11 -0
  561. package/es/test-utils/createMount.js +32 -0
  562. package/es/test-utils/createRender.js +16 -0
  563. package/es/test-utils/createShallow.js +33 -0
  564. package/es/test-utils/getClasses.js +21 -0
  565. package/es/test-utils/index.js +5 -0
  566. package/es/test-utils/until.js +32 -0
  567. package/es/test-utils/unwrap.js +5 -0
  568. package/es/transitions/Collapse.js +245 -0
  569. package/es/transitions/Fade.js +132 -0
  570. package/es/transitions/Grow.js +173 -0
  571. package/es/transitions/Slide.js +291 -0
  572. package/es/transitions/Zoom.js +129 -0
  573. package/es/transitions/index.js +5 -0
  574. package/es/transitions/utils.js +10 -0
  575. package/es/utils/ClickAwayListener.js +65 -0
  576. package/es/utils/HiIconBuilder.js +99 -0
  577. package/es/utils/addEventListener.js +11 -0
  578. package/es/utils/exactProp.js +21 -0
  579. package/es/utils/helpers.js +65 -0
  580. package/es/utils/hiGetMdiIcon.js +12 -0
  581. package/es/utils/hiHelpers.js +173 -0
  582. package/es/utils/keyboardFocus.js +51 -0
  583. package/es/utils/manageAriaHidden.js +33 -0
  584. package/es/utils/reactHelpers.js +21 -0
  585. package/es/utils/requirePropFactory.js +16 -0
  586. package/es/utils/withWidth.js +141 -0
  587. package/index.es.js +69 -0
  588. package/index.js +853 -0
  589. package/internal/RefHolder.js +64 -0
  590. package/internal/SwitchBase.js +287 -0
  591. package/internal/svg-icons/ArrowDownward.js +37 -0
  592. package/internal/svg-icons/ArrowDropDown.js +37 -0
  593. package/internal/svg-icons/Cancel.js +36 -0
  594. package/internal/svg-icons/CheckBox.js +36 -0
  595. package/internal/svg-icons/CheckBoxOutlineBlank.js +36 -0
  596. package/internal/svg-icons/CheckCircle.js +36 -0
  597. package/internal/svg-icons/IndeterminateCheckBox.js +36 -0
  598. package/internal/svg-icons/KeyboardArrowLeft.js +36 -0
  599. package/internal/svg-icons/KeyboardArrowRight.js +36 -0
  600. package/internal/svg-icons/RadioButtonChecked.js +36 -0
  601. package/internal/svg-icons/RadioButtonUnchecked.js +36 -0
  602. package/package.json +77 -0
  603. package/styles/MuiThemeProvider.js +197 -0
  604. package/styles/colorManipulator.js +255 -0
  605. package/styles/createBreakpoints.js +86 -0
  606. package/styles/createGenerateClassName.js +88 -0
  607. package/styles/createHiMuiTheme.js +328 -0
  608. package/styles/createMixins.js +42 -0
  609. package/styles/createMuiTheme.js +91 -0
  610. package/styles/createPalette.js +208 -0
  611. package/styles/createTypography.js +138 -0
  612. package/styles/getStylesCreator.js +55 -0
  613. package/styles/index.js +70 -0
  614. package/styles/jssPreset.js +41 -0
  615. package/styles/shadows.js +16 -0
  616. package/styles/spacing.js +10 -0
  617. package/styles/themeListener.js +44 -0
  618. package/styles/transitions.js +112 -0
  619. package/styles/withStyles.js +416 -0
  620. package/styles/withTheme.js +127 -0
  621. package/styles/zIndex.js +17 -0
  622. package/svg-icons/ArrowDownward.js +37 -0
  623. package/svg-icons/ArrowDropDown.js +37 -0
  624. package/svg-icons/Cancel.js +36 -0
  625. package/svg-icons/CheckBox.js +36 -0
  626. package/svg-icons/CheckBoxOutlineBlank.js +36 -0
  627. package/svg-icons/CheckCircle.js +36 -0
  628. package/svg-icons/HiAccount.js +52 -0
  629. package/svg-icons/HiAll.js +62 -0
  630. package/svg-icons/HiBilling.js +52 -0
  631. package/svg-icons/HiCatalog.js +52 -0
  632. package/svg-icons/HiCustomer.js +58 -0
  633. package/svg-icons/HiFinance.js +52 -0
  634. package/svg-icons/HiRoute.js +52 -0
  635. package/svg-icons/HiSettlement.js +52 -0
  636. package/svg-icons/HiSizeLarge.js +36 -0
  637. package/svg-icons/HiSizeMedium.js +36 -0
  638. package/svg-icons/HiSizeSmall.js +36 -0
  639. package/svg-icons/HiTransaction.js +52 -0
  640. package/svg-icons/HiUser.js +58 -0
  641. package/svg-icons/HiWidget.js +62 -0
  642. package/svg-icons/IndeterminateCheckBox.js +36 -0
  643. package/svg-icons/KeyboardArrowLeft.js +36 -0
  644. package/svg-icons/KeyboardArrowRight.js +36 -0
  645. package/svg-icons/RadioButtonChecked.js +36 -0
  646. package/svg-icons/RadioButtonUnchecked.js +36 -0
  647. package/svg-icons/index.js +106 -0
  648. package/test-utils/createMount.js +53 -0
  649. package/test-utils/createRender.js +36 -0
  650. package/test-utils/createShallow.js +60 -0
  651. package/test-utils/getClasses.js +47 -0
  652. package/test-utils/index.js +52 -0
  653. package/test-utils/until.js +54 -0
  654. package/test-utils/unwrap.js +11 -0
  655. package/transitions/Collapse.js +324 -0
  656. package/transitions/Fade.js +207 -0
  657. package/transitions/Grow.js +251 -0
  658. package/transitions/Slide.js +381 -0
  659. package/transitions/Zoom.js +204 -0
  660. package/transitions/index.js +52 -0
  661. package/transitions/utils.js +21 -0
  662. package/umd/hipay-material-ui.development.js +113768 -0
  663. package/umd/hipay-material-ui.production.min.js +21 -0
  664. package/utils/ClickAwayListener.js +122 -0
  665. package/utils/HiIconBuilder.js +168 -0
  666. package/utils/addEventListener.js +26 -0
  667. package/utils/exactProp.js +40 -0
  668. package/utils/helpers.js +97 -0
  669. package/utils/hiGetMdiIcon.js +20 -0
  670. package/utils/hiHelpers.js +195 -0
  671. package/utils/keyboardFocus.js +75 -0
  672. package/utils/manageAriaHidden.js +49 -0
  673. package/utils/reactHelpers.js +27 -0
  674. package/utils/requirePropFactory.js +23 -0
  675. package/utils/withWidth.js +214 -0
@@ -0,0 +1,876 @@
1
+ import React from 'react';
2
+ import PropTypes from 'prop-types';
3
+ import Table from 'material-ui/Table';
4
+ import ArrowUp from 'mdi-material-ui/ArrowUp';
5
+ import isRequiredIf from 'react-proptype-conditional-require';
6
+ import HiButton from '../HiButton';
7
+
8
+ import { withStyles, withTheme } from '../styles';
9
+ import HiTableHead from './HiTableHead';
10
+ import HiTableBody from './HiTableBody';
11
+ import HiTableFooterScroll from './HiTableFooterScroll';
12
+ import * as cst from './constants';
13
+ import HiTableContextMenu from './HiTableContextMenu';
14
+
15
+ export const styles = theme => ({
16
+ root: {
17
+ position: 'relative',
18
+ backgroundColor: theme.palette.background3
19
+ },
20
+ tableWrapper: {
21
+ overflowX: 'auto',
22
+ overflowY: 'hidden'
23
+ },
24
+ filter: {
25
+ position: 'relative',
26
+ top: 2,
27
+ left: 2,
28
+ cursor: 'pointer'
29
+ },
30
+ table: {
31
+ position: 'relative',
32
+ width: '100%',
33
+ overflow: 'hidden',
34
+ borderCollapse: 'collapse',
35
+ backgroundColor: theme.palette.background3,
36
+ zIndex: 10
37
+ },
38
+ backToTopButtonContainer: {
39
+ position: 'absolute',
40
+ width: '100%',
41
+ textAlign: 'center',
42
+ height: 48,
43
+ top: -99999
44
+ },
45
+ backToTopButton: {
46
+ zIndex: 11
47
+ },
48
+ backToTopButtonArrow: {
49
+ height: 18,
50
+ width: 18,
51
+ position: 'relative',
52
+ top: -2,
53
+ margin: 2
54
+ }
55
+ });
56
+
57
+ export const MANDATORY_COLUMN_ERROR_MESSAGE = 'Vous devez saisir la propriété "mandatoryColumnId" pour les tableaux "orderable"';
58
+ export const SORTED_COLUMN_ERROR_MESSAGE = 'Vous devez saisir la propriété "sortedColumnId" pour les tableaux "sortable"';
59
+
60
+ /**
61
+ * Display a list of elements in a table
62
+ * The click on FilterVariant opens a menu that allows the user
63
+ * to filter by value or to order by a specific column
64
+ *
65
+ * Renderer behaviors:
66
+ * - Widths:
67
+ * - all cells types have default width size (px) for each kind of view (L/M/S).
68
+ * - if view isn't set we use the largest one (large).
69
+ * - cell width can be overriden by column's props.
70
+ * - if there is not enough space to render all cells,
71
+ * we use horizontal scroll and cells width are fixed
72
+ * - if there is enough space, no scroll and only the first cell (column),
73
+ * which is not explicitly set as unfixed (fixedWidth = false),
74
+ * has not fixed width and may enlarge his width to fit available space.
75
+ *
76
+ * - Fixed Header:
77
+ * - header rows should be fixed and always be visible on body scroll.
78
+ * - vertical scrollbar should be hidden
79
+ * - if nbRows * cellHeight > tableHeight,
80
+ * we virtually enlarge the table then crop arbitrary width to hide the scrollbar.
81
+ * as each browsers may have different scrollbar widths,
82
+ * it may trouble column header alignment.
83
+ */
84
+
85
+ var _ref = React.createElement('div', null);
86
+
87
+ var _ref2 = React.createElement('div', null);
88
+
89
+ var _ref3 = React.createElement('div', null);
90
+
91
+ var _ref4 = React.createElement('div', null);
92
+
93
+ var _ref5 = React.createElement('div', null);
94
+
95
+ var _ref6 = React.createElement('div', null);
96
+
97
+ var _ref7 = React.createElement('div', null);
98
+
99
+ var _ref8 = React.createElement('div', null);
100
+
101
+ class HiTable extends React.Component {
102
+
103
+ constructor(props) {
104
+ super(props);
105
+
106
+ this.wrapperDiv = _ref;
107
+ this.wrapperWidth = 0;
108
+ this.tHead = _ref2;
109
+ this.tHeadLeftPadding = _ref3;
110
+ this.tHeadRightPadding = _ref4;
111
+ this.tHeadFirst = _ref5;
112
+ this.tBody = _ref6;
113
+ this.tBodyScrollbarWidth = 0;
114
+ this.tBodyLeftPaddingElements = [];
115
+ this.tBodyRightPaddingElements = [];
116
+ this.tBodyFirstElements = [];
117
+ this.tFoot = _ref7;
118
+ this.tFootCenteredDiv = _ref8;
119
+ this.backToTopButton = null;
120
+ this.liveDataSpan = null;
121
+ this.scrollTop = 0;
122
+ this.scrollLeft = 0;
123
+ this.groupByRowsPositions = [];
124
+
125
+ this.updateFloatingBodyElementRefs = () => {
126
+ this.tBodyScrollbarWidth = this.tBody.offsetWidth - this.tBody.clientWidth;
127
+
128
+ if (this.tHead && this.tBodyScrollbarWidth > 0) {
129
+ this.tHead.style.width = 'calc(100% - ' + this.tBodyScrollbarWidth + 'px)';
130
+ }
131
+
132
+ this.tBodyLeftPaddingElements = this.tBody.querySelectorAll('tr td:nth-child(1), .floating-parent-row-label');
133
+ this.tBodyRightPaddingElements = this.tBody.querySelectorAll('tr td:nth-last-child(1), .floating-parent-row-indicator');
134
+
135
+ this.tBodyFirstElements = this.tBody.querySelectorAll('tr td:nth-child(2)');
136
+ };
137
+
138
+ this.addNewRowRefs = () => {
139
+ // delayed refs getting to let time at new rows to build up
140
+ setTimeout(() => {
141
+ this.updateFloatingBodyElementRefs();
142
+ this.placeHorizontalFloatingElement();
143
+ }, 10);
144
+ };
145
+
146
+ this.state = {
147
+ dateUpdate: Date.now(),
148
+ isScrollToBottom: false,
149
+ groupByIds: {}
150
+ };
151
+
152
+ // create associative array (object) with sticky row key & its values
153
+ // => used for sticky row badges
154
+ if (props.groupBy) {
155
+ props.dataSource.map(row => {
156
+ let value = row.datas[props.groupBy].value;
157
+ let date = new Date(value);
158
+
159
+ if (date instanceof Date && isFinite(date)) {
160
+ value = value.substr(0, 10);
161
+ }
162
+ if (!this.state.groupByIds.hasOwnProperty(value)) {
163
+ this.state.groupByIds[value] = [];
164
+ }
165
+ this.state.groupByIds[value].push(row.datas);
166
+ });
167
+ }
168
+
169
+ // Orderable
170
+ this.openOrderColumnsMenu = this.openOrderColumnsMenu.bind(this);
171
+ this.closeOrderColumnsMenu = this.closeOrderColumnsMenu.bind(this);
172
+
173
+ // Selectable
174
+ this.toggleItem = this.toggleItem.bind(this);
175
+ this.toggleAll = this.toggleAll.bind(this);
176
+ this.selectAll = this.selectAll.bind(this);
177
+ this.deselectAll = this.deselectAll.bind(this);
178
+
179
+ // Manage scrolling
180
+ this.handleHorizontalScroll = this.handleHorizontalScroll.bind(this);
181
+ this.handleVerticalScroll = this.handleVerticalScroll.bind(this);
182
+ this.placeHorizontalFloatingElement = this.placeHorizontalFloatingElement.bind(this);
183
+ this.scrollToTop = this.scrollToTop.bind(this);
184
+
185
+ this.isScrollToBottom = this.isScrollToBottom.bind(this);
186
+ this.handleRequestLiveDatas = this.handleRequestLiveDatas.bind(this);
187
+ this.handleNextStickyRow = this.handleNextStickyRow.bind(this);
188
+ this.handleStickyRowPositions = this.handleStickyRowPositions.bind(this);
189
+ }
190
+
191
+ /**
192
+ * DOM references
193
+ * use to replace element on horizontal & vertical scroll
194
+ */
195
+
196
+
197
+ /** Lifecycle methods */
198
+
199
+ componentDidMount() {
200
+ this.wrapperScrollOffset = this.wrapperDiv.scrollWidth - this.wrapperDiv.offsetWidth;
201
+
202
+ // Set DOM references
203
+ this.tHead = this.wrapperDiv.querySelector('table thead');
204
+ this.tHeadLeftPadding = this.tHead.querySelector('tr th:nth-child(1)');
205
+ this.tHeadRightPadding = this.tHead.querySelector('tr th:nth-last-child(1)');
206
+ this.tHeadFirst = this.tHead.querySelector('tr th:nth-child(2)');
207
+ this.tBody = this.wrapperDiv.querySelector('table tbody');
208
+ this.tFoot = this.wrapperDiv.querySelector('table tfoot');
209
+ this.tFootCenteredDiv = this.wrapperDiv.querySelector('table tfoot tr td div');
210
+ this.backToTopButton = this.wrapperDiv.querySelector('.back-to-top-button');
211
+
212
+ this.updateFloatingBodyElementRefs();
213
+
214
+ // Detect if root has horizontal scroll bar
215
+ if (this.wrapperDiv.scrollWidth > this.wrapperDiv.offsetWidth) {
216
+ // adapt first column to fixed width
217
+ if (this.tHeadFirst && this.tHeadFirst.style) {
218
+ this.tHeadFirst.style.width = 'auto';
219
+ }
220
+ // fixed footer width
221
+ if (this.tFootCenteredDiv && this.tFootCenteredDiv.style) {
222
+ this.tFootCenteredDiv.style.width = Math.round(this.wrapperDiv.offsetWidth / 2) + 'px';
223
+ this.tFootCenteredDiv.style.position = 'absolute';
224
+ this.tFootCenteredDiv.style.bottom = '0px';
225
+ }
226
+ }
227
+
228
+ this.updateStickyRowsPosition();
229
+
230
+ this.placeHorizontalFloatingElement();
231
+ }
232
+
233
+ componentDidUpdate(prevProps, prevState, prevContext) {
234
+ this.wrapperScrollOffset = this.wrapperDiv.scrollWidth - this.wrapperDiv.offsetWidth;
235
+
236
+ // If orderedColumns has change, possibly the sticky cells has changed too
237
+ if (this.props.orderedColumns[0].colId !== prevProps.orderedColumns[0].colId) {
238
+ this.tHeadFirst = this.tHead.querySelector('tr th:nth-child(2)');
239
+ this.tBodyFirstElements = this.wrapperDiv.querySelectorAll('table tbody tr td:nth-child(2)');
240
+ }
241
+
242
+ // If there is new rows, update tbody first element list and left padding cells
243
+ if (this.props.dataSource.length > prevProps.dataSource.length) {
244
+ this.updateFloatingBodyElementRefs();
245
+ }
246
+
247
+ if (this.props.countLiveDatas > 0) {
248
+ this.liveDataSpan = this.tHead.querySelector('tr:nth-child(2) th span');
249
+ this.backToTopButton.style.top = '-99999px';
250
+ }
251
+
252
+ if (prevProps.countLiveDatas > this.props.countLiveDatas) {
253
+ this.setState({
254
+ dateUpdate: Date.now()
255
+ });
256
+ }
257
+
258
+ // Only if needed
259
+ if (this.props.dataSource.length > prevProps.dataSource.length || this.props.dense !== prevProps.dense || this.props.sortedColumnId !== prevProps.sortedColumnId || this.props.sortDirection !== prevProps.sortDirection) {
260
+ this.updateStickyRowsPosition();
261
+ if (this.props.dataSource.length > prevProps.dataSource.length) {
262
+ this.handleStickyRowPositions();
263
+ }
264
+ }
265
+ if (this.props.dataSource.length > prevProps.dataSource.length && this.props.groupBy) {
266
+ // create associative array (object) with sticky row key & its values
267
+ // => used for sticky row badges
268
+ let groupByIds = {};
269
+ this.props.dataSource.map(row => {
270
+ let value = row.datas[this.props.groupBy].value;
271
+ let date = new Date(value);
272
+
273
+ if (date instanceof Date && isFinite(date)) {
274
+ value = value.substr(0, 10);
275
+ }
276
+ if (!groupByIds.hasOwnProperty(value)) {
277
+ groupByIds[value] = [];
278
+ }
279
+ groupByIds[value].push(row.datas);
280
+ });
281
+ this.setState({ groupByIds: groupByIds });
282
+ }
283
+
284
+ this.isScrollToBottom(this.scrollTop === this.tBody.scrollHeight - this.tBody.offsetHeight);
285
+
286
+ this.placeHorizontalFloatingElement();
287
+ }
288
+
289
+ /** END Lifecycle methods */
290
+
291
+ updateStickyRowsPosition() {
292
+ const rowHeight = this.props.dense ? cst.CELL_HEIGHT_DENSE : cst.CELL_HEIGHT;
293
+ this.groupByRowsPositions = [];
294
+ // Initialize new stickyRows position
295
+ const tableBody = document.getElementById(`${this.props.tabId}-body`);
296
+ const stickyRows = tableBody.getElementsByClassName('stickyGroupBy');
297
+ if (stickyRows.length > 0) {
298
+ Array.prototype.filter.call(stickyRows, stickyRow => {
299
+ this.groupByRowsPositions.push(stickyRow.nextSibling.nextSibling.offsetTop - rowHeight);
300
+ });
301
+ }
302
+ }
303
+
304
+ isScrollToBottom(value) {
305
+ if (this.state.isScrollToBottom !== value) {
306
+ this.setState({
307
+ isScrollToBottom: value
308
+ });
309
+ }
310
+ }
311
+
312
+ /**
313
+ * Ajoute / Supprime l'id de l'item du selectedIdList
314
+ * @param item
315
+ */
316
+ toggleItem(item) {
317
+ if (this.props.selectedIdList.includes(item.rowId)) {
318
+ this.props.onSelect(this.props.selectedIdList.filter(function (itemId) {
319
+ return itemId !== item.rowId;
320
+ }));
321
+ } else {
322
+ this.props.onSelect([...this.props.selectedIdList, item.rowId]);
323
+ }
324
+ }
325
+
326
+ /**
327
+ * Sélectionne / Déselectionne tous les éléments en fonction de l'état de la liste
328
+ */
329
+ toggleAll() {
330
+ if (this.props.selectedIdList.length === this.props.dataSource.length) {
331
+ this.deselectAll();
332
+ } else {
333
+ this.selectAll();
334
+ }
335
+ }
336
+
337
+ /**
338
+ * Sélectionne tous les items
339
+ */
340
+ selectAll() {
341
+ this.props.onSelect(this.props.dataSource.map(item => item.rowId));
342
+ }
343
+
344
+ /**
345
+ * Désélectionne tous les items
346
+ */
347
+ deselectAll() {
348
+ this.props.onSelect([]);
349
+ }
350
+
351
+ /**
352
+ * Handle horizontal scroll (wrapperDiv)
353
+ * - replace each first cells body & header & add right shadows
354
+ */
355
+ handleHorizontalScroll(event) {
356
+ // cancel if scroll is from tbody OR it didn't change
357
+ if (event.target.nodeName === 'TBODY' || this.scrollLeft === event.target.scrollLeft) {
358
+ return;
359
+ }
360
+
361
+ this.scrollLeft = event.target.scrollLeft;
362
+
363
+ // Replace live datas notification
364
+ this.placeHorizontalFloatingElement();
365
+ }
366
+
367
+ /**
368
+ * Handle vertical scroll (tbody)
369
+ * - add bottom shadow
370
+ * - place back to top button
371
+ * - request next datas if reach bottom
372
+ */
373
+ handleVerticalScroll(event) {
374
+ // cancel if scroll is not from tbody OR it didn't change
375
+ if (event.target.nodeName !== 'TBODY' || this.scrollTop === event.target.scrollTop) return;
376
+
377
+ const scrollingUp = this.scrollTop > event.target.scrollTop;
378
+
379
+ this.scrollTop = event.target.scrollTop;
380
+
381
+ // Add bottom shadow to header row
382
+ const shadowBottom = '0px 0px 2px 0px rgba(128, 128, 128, 0.32)';
383
+ this.tHead.style['box-shadow'] = this.scrollTop > 0 ? shadowBottom : 'none';
384
+ const rowHeight = this.props.dense ? cst.CELL_HEIGHT_DENSE : cst.CELL_HEIGHT;
385
+
386
+ // Add back to top button when scrolling up from constant defined scroll point
387
+ // if there not live data notification
388
+ if (this.props.countLiveDatas === 0) {
389
+ if (scrollingUp && this.scrollTop >= cst.NB_ROWS_BACK_TO_TOP * rowHeight) {
390
+ this.backToTopButton.style.top = `${rowHeight * 1.5} px`;
391
+ } else {
392
+ this.backToTopButton.style.top = `${-99999}px`;
393
+ }
394
+ }
395
+
396
+ this.handleStickyRowPositions();
397
+
398
+ this.isScrollToBottom(this.scrollTop === event.target.scrollHeight - this.tBody.offsetHeight);
399
+ }
400
+
401
+ handleStickyRowPositions() {
402
+ const tableBody = document.getElementById(`${this.props.tabId}-body`);
403
+ const stickyRows = tableBody.getElementsByClassName('stickyGroupBy');
404
+ const rowHeight = this.props.dense ? cst.CELL_HEIGHT_DENSE : cst.CELL_HEIGHT;
405
+ if (stickyRows.length > 0) {
406
+ Array.prototype.filter.call(stickyRows, (stickyRow, index) => {
407
+ const fakeTr = stickyRow.nextSibling;
408
+ if (tableBody.scrollTop > this.groupByRowsPositions[index]) {
409
+ // Calcul de la position du 'pinned' item
410
+ // positionnement juste en dessous du header
411
+ if (typeof stickyRows[index + 1] === 'undefined' || tableBody.scrollTop < stickyRows[index + 1].offsetTop) {
412
+ // Si la prochaine ligne est aussi un 'pinned' item,
413
+ // il pousse le précédent vers le haut
414
+ if (typeof this.groupByRowsPositions[index + 1] !== 'undefined' && this.groupByRowsPositions[index + 1] - tableBody.scrollTop < rowHeight - 10) {
415
+ stickyRow.style.top = `${tableBody.scrollTop + this.groupByRowsPositions[index + 1] - tableBody.scrollTop - rowHeight}
416
+ px`;
417
+ } else {
418
+ stickyRow.style.top = `${tableBody.scrollTop}px`;
419
+ }
420
+
421
+ if (stickyRow.style.position !== 'absolute') {
422
+ // Repositionnement des éléments dans une row en position absolute
423
+ stickyRow.style.position = 'absolute';
424
+ fakeTr.style.display = 'inline-block';
425
+ stickyRow.style.height = this.props.dense ? `${cst.CELL_HEIGHT_DENSE - 8}px` : `${cst.CELL_HEIGHT - 8}px`;
426
+ stickyRow.querySelector('button').style.maxHeight = this.props.dense ? `${cst.CELL_HEIGHT_DENSE - 16}px` : `${cst.CELL_HEIGHT - 16}px`;
427
+ stickyRow.querySelector('button').style.minHeight = this.props.dense ? `${cst.CELL_HEIGHT_DENSE - 16}px` : `${cst.CELL_HEIGHT - 16}px`;
428
+ stickyRow.querySelector('button').style.top = '-3px';
429
+ stickyRow.querySelector('#stickyRowContent').style.top = !this.props.dense ? '4px' : '-3px';
430
+ stickyRow.querySelector('td').style.height = this.props.dense ? `${cst.CELL_HEIGHT_DENSE - 8}px` : `${cst.CELL_HEIGHT - 8}px`;
431
+ if (this.props.dense) {
432
+ stickyRow.querySelector('button').style.top = '0px';
433
+ stickyRow.querySelector('button span').style.position = 'relative';
434
+ stickyRow.querySelector('button span').style.top = '-4px';
435
+ }
436
+ }
437
+ }
438
+ } else if (stickyRow.style.position !== 'relative') {
439
+ // Repositionnement normal
440
+ stickyRow.style.position = 'relative';
441
+ stickyRow.style.top = '0px';
442
+ fakeTr.style.display = 'none';
443
+ stickyRow.style.height = this.props.dense ? `${cst.CELL_HEIGHT_DENSE}px` : `${cst.CELL_HEIGHT}px`;
444
+ stickyRow.querySelector('#sticky-badge').style.top = '0px';
445
+ stickyRow.querySelector('#stickyRowContent').style.top = '2px';
446
+ stickyRow.querySelector('td').style.height = this.props.dense ? `${cst.CELL_HEIGHT_DENSE}px` : `${cst.CELL_HEIGHT}px`;
447
+ stickyRow.querySelector('button').style.maxHeight = this.props.dense ? `${cst.CELL_HEIGHT_DENSE - 2}px` : `${cst.CELL_HEIGHT - 8}px`;
448
+ stickyRow.querySelector('button').style.minHeight = this.props.dense ? `${cst.CELL_HEIGHT_DENSE - 2}px` : `${cst.CELL_HEIGHT - 8}px`;
449
+ if (this.props.dense) {
450
+ stickyRow.querySelector('button span').style.top = '0px';
451
+ }
452
+ }
453
+ });
454
+ }
455
+ }
456
+
457
+ /**
458
+ * Some element must be replace "manually"
459
+ */
460
+ placeHorizontalFloatingElement() {
461
+ // live datas notification
462
+ if (this.liveDataSpan) {
463
+ this.liveDataSpan.style.left = this.wrapperDiv.clientWidth / 2 - 100 + this.scrollLeft + 'px';
464
+ }
465
+
466
+ // Replace left padding cells
467
+ [...this.tBodyLeftPaddingElements, this.tHeadLeftPadding].forEach(element => {
468
+ element.style.left = this.scrollLeft + 'px';
469
+ });
470
+
471
+ // TODO - FIX
472
+ // Les éléments de droite sont décalés de 22px lorsque de nouvelles lignes sont
473
+ // visible (children ou details)
474
+
475
+ // Replace right padding cells
476
+ [...this.tBodyRightPaddingElements, this.tHeadRightPadding].forEach(element => {
477
+ element.style.right = Math.max(0, this.wrapperScrollOffset - this.scrollLeft - this.tBodyScrollbarWidth) + 'px';
478
+ });
479
+
480
+ // Replace first cells & add right shadows
481
+ if (this.props.sticky) {
482
+ const shadowRight = '1px 0px 0px 0px rgba(128, 128, 128, 0.32)';
483
+ [...this.tBodyFirstElements, this.tHeadFirst].forEach(element => {
484
+ element.style.left = this.scrollLeft + 'px';
485
+ element.style['box-shadow'] = this.scrollLeft > 0 ? shadowRight : 'none';
486
+ });
487
+ }
488
+
489
+ // Replace centered elements (elements width should be 50% of wrapper)
490
+ if (this.tFootCenteredDiv) {
491
+ this.tFootCenteredDiv.style.left = Math.round(this.wrapperDiv.offsetWidth / 4) + this.scrollLeft + 'px';
492
+ }
493
+
494
+ // Replace stickyRowContent
495
+ const tableBody = document.getElementById(`${this.props.tabId}-body`);
496
+ const stickyRowContentDiv = tableBody.getElementsByClassName('stickyRowContent');
497
+ if (stickyRowContentDiv.length > 0) {
498
+ Array.prototype.filter.call(stickyRowContentDiv, div => {
499
+ div.style.left = `${this.wrapperDiv.scrollLeft + (this.props.selectable ? 25 : 0)}px`;
500
+ });
501
+ }
502
+ }
503
+
504
+ handleRequestLiveDatas() {
505
+ this.scrollToTop();
506
+ this.props.requestLiveDatas();
507
+ }
508
+
509
+ /**
510
+ * Scroll back to table top
511
+ */
512
+ scrollToTop() {
513
+ // Hide back to top button
514
+ this.backToTopButton['style'].top = -99999 + 'px';
515
+
516
+ // Set scroll top to 0
517
+ this.tBody.scrollTop = 0;
518
+ this.scrollTop = 0;
519
+ }
520
+
521
+ openOrderColumnsMenu(event) {
522
+ this.setState({
523
+ orderColumnsAnchor: event.currentTarget,
524
+ orderColumnsMenuOpen: true
525
+ });
526
+ }
527
+
528
+ closeOrderColumnsMenu() {
529
+ this.setState({
530
+ orderColumnsAnchor: null,
531
+ orderColumnsMenuOpen: false
532
+ });
533
+ }
534
+
535
+ /**
536
+ * This function is pass to table body to be advised when new rows are dynamically added (ex detail rows)
537
+ * we can then update our list of floating body elements refs
538
+ **/
539
+
540
+
541
+ /**
542
+ * Scroll jusqu'au prochain stickRow
543
+ *
544
+ * @param stickyRowIndex
545
+ */
546
+ handleNextStickyRow(stickyRowIndex) {
547
+ if (this.groupByRowsPositions.length - 1 > stickyRowIndex) {
548
+ const tableBody = document.getElementById(`${this.props.tabId}-body`);
549
+ tableBody.scrollTop = this.groupByRowsPositions[stickyRowIndex + 1];
550
+ }
551
+ }
552
+
553
+ render() {
554
+ const {
555
+ classes,
556
+ tabId,
557
+ columns,
558
+ orderedColumns,
559
+ dataSource,
560
+ orderable,
561
+ onColumnsOrderUpdate,
562
+ mandatoryColumnId,
563
+ selectable,
564
+ selectedIdList,
565
+ onRowClick,
566
+ sortable,
567
+ sortedColumnId,
568
+ sortDirection,
569
+ onSort,
570
+ filterable,
571
+ onFilterChange,
572
+ infiniteScroll,
573
+ hasNextDatas,
574
+ requestNextDatas,
575
+ countLiveDatas,
576
+ dateLocale,
577
+ numberLocale,
578
+ dense,
579
+ height,
580
+ sticky,
581
+ translations,
582
+ view,
583
+ groupBy,
584
+ lookupColumns
585
+ } = this.props;
586
+
587
+ const { dateUpdate, isScrollToBottom, groupByIds } = this.state;
588
+
589
+ const headerHeight = dense ? cst.CELL_HEADER_HEIGHT_DENSE : cst.CELL_HEADER_HEIGHT;
590
+
591
+ return React.createElement(
592
+ 'div',
593
+ { className: classes.root },
594
+ React.createElement(
595
+ 'div',
596
+ {
597
+ id: tabId,
598
+ className: classes.tableWrapper,
599
+ ref: div => this.wrapperDiv = div,
600
+ onScroll: this.handleHorizontalScroll
601
+ },
602
+ React.createElement(
603
+ Table,
604
+ { className: classes.table, style: { height: height } },
605
+ React.createElement(HiTableHead, {
606
+ columns: columns,
607
+ orderedColumns: orderedColumns,
608
+ dataSource: dataSource,
609
+ selectable: selectable,
610
+ selectedIdList: selectedIdList,
611
+ onSelect: this.toggleAll,
612
+ sortable: sortable,
613
+ sortedColumnId: sortedColumnId,
614
+ sortDirection: sortDirection,
615
+ onSort: onSort,
616
+ filterable: filterable,
617
+ onFilterChange: onFilterChange,
618
+ orderable: orderable,
619
+ onColumnsOrderUpdate: onColumnsOrderUpdate,
620
+ mandatoryColumnId: mandatoryColumnId,
621
+ onRequestLiveDatas: this.handleRequestLiveDatas,
622
+ countLiveDatas: countLiveDatas,
623
+ dateLocale: dateLocale,
624
+ numberLocale: numberLocale,
625
+ dense: dense,
626
+ height: headerHeight,
627
+ sticky: sticky,
628
+ view: view,
629
+ translations: translations,
630
+ lookupColumns: lookupColumns
631
+ }),
632
+ React.createElement(HiTableBody, {
633
+ tabId: tabId,
634
+ columns: columns,
635
+ orderedColumns: orderedColumns,
636
+ dataSource: dataSource,
637
+ selectable: selectable,
638
+ selectedIdList: selectedIdList,
639
+ sortedColumnId: sortedColumnId,
640
+ onSelect: this.toggleItem,
641
+ dateUpdate: dateUpdate,
642
+ dateLocale: dateLocale,
643
+ numberLocale: numberLocale,
644
+ dense: dense,
645
+ height: height - headerHeight,
646
+ sticky: sticky,
647
+ view: view,
648
+ onRowClick: onRowClick,
649
+ onScroll: this.handleVerticalScroll,
650
+ addNewRowRefs: this.addNewRowRefs,
651
+ translations: translations,
652
+ groupBy: groupBy,
653
+ onClickNext: this.handleNextStickyRow,
654
+ groupByIds: groupByIds,
655
+ lookupColumns: lookupColumns
656
+ }),
657
+ infiniteScroll && React.createElement(HiTableFooterScroll, {
658
+ tabId: tabId,
659
+ hasNextDatas: hasNextDatas,
660
+ requestNextDatas: requestNextDatas,
661
+ maxAutoRequest: 3,
662
+ isScrollToBottom: isScrollToBottom,
663
+ translations: translations
664
+ })
665
+ ),
666
+ React.createElement(HiTableContextMenu, {
667
+ tabId: tabId,
668
+ onSearch: this.props.onSearch,
669
+ onRedirect: this.props.onRedirect
670
+ }),
671
+ React.createElement(
672
+ 'div',
673
+ { className: `back-to-top-button ${classes.backToTopButtonContainer}` },
674
+ React.createElement(
675
+ HiButton,
676
+ {
677
+ raised: true,
678
+ color: 'primary',
679
+ className: classes.backToTopButton,
680
+ onClick: () => this.scrollToTop()
681
+ },
682
+ React.createElement(ArrowUp, { className: classes.backToTopButtonArrow }),
683
+ translations.back_to_top,
684
+ React.createElement(ArrowUp, { className: classes.backToTopButtonArrow })
685
+ )
686
+ )
687
+ )
688
+ );
689
+ }
690
+ }
691
+
692
+ HiTable.defaultProps = {
693
+ orderable: false,
694
+ selectable: false,
695
+ sortable: true,
696
+ sortDirection: 'asc',
697
+ filterable: true,
698
+ infiniteScroll: false,
699
+ hasNextDatas: false,
700
+ countLiveDatas: 0,
701
+ dateLocale: 'en-EN',
702
+ numberLocale: 'en-EN',
703
+ dense: false,
704
+ height: 450,
705
+ sticky: true,
706
+ translations: {
707
+ load_more: 'Load More',
708
+ back_to_top: 'Back to top',
709
+ get_the_n_new_items: 'See %s new items',
710
+ choose_and_organize_columns: 'Choose & organize columns',
711
+ search: 'Search',
712
+ time: 'Time',
713
+ stickyRow: {
714
+ button: {
715
+ next: 'Next day'
716
+ }
717
+ }
718
+ },
719
+ view: 'l',
720
+ lookupColumns: []
721
+ };
722
+ HiTable.propTypes = process.env.NODE_ENV !== "production" ? {
723
+ /**
724
+ * Useful to extend the style applied to components.
725
+ */
726
+ classes: PropTypes.object,
727
+ /**
728
+ * Colonnes du tableau (label, largeur, données, ... )
729
+ */
730
+ columns: PropTypes.object.isRequired,
731
+ /**
732
+ * Nombre de nouvelles données disponibles (live)
733
+ */
734
+ countLiveDatas: PropTypes.number,
735
+ /**
736
+ * Tableau des données
737
+ */
738
+ dataSource: PropTypes.array.isRequired,
739
+ /**
740
+ * Locale utilisé pour le format des dates
741
+ */
742
+ dateLocale: PropTypes.string,
743
+ /**
744
+ * Densité d'affichage (joue sur la hauteur des lignes)
745
+ */
746
+ dense: PropTypes.bool,
747
+ /**
748
+ * Active le filtre sur les colonnes filtrables
749
+ */
750
+ filterable: PropTypes.bool,
751
+ /**
752
+ * Ajoute le loader et le requestNextDatas en fin de tableau (si infiniteScroll activé)
753
+ */
754
+ hasNextDatas: PropTypes.bool,
755
+ /**
756
+ * Hauteur du tableau (px)
757
+ */
758
+ height: PropTypes.number,
759
+ /**
760
+ * Ajoute l'infinite scroll
761
+ */
762
+ infiniteScroll: PropTypes.bool,
763
+ /**
764
+ * Identifiant de la ou des colonnes sur la/lesquelles il y a une 'lookup' search
765
+ */
766
+ lookupColumns: PropTypes.array,
767
+ /**
768
+ * Pour les tableaux "orderable" uniquement : Id de la colonne obligatoire,
769
+ * elle sera toujours affichée dans le tableau et ne pourra pas être cachée.
770
+ */
771
+ mandatoryColumnId: isRequiredIf(PropTypes.string, props => props.hasOwnProperty('orderable') && props.orderable === true, MANDATORY_COLUMN_ERROR_MESSAGE),
772
+ /**
773
+ * Locale utilisé pour le format des nombres
774
+ */
775
+ numberLocale: PropTypes.string,
776
+ /**
777
+ * Fonction de callback qui prend en paramètre le tableau des colonnes mis à jour.
778
+ */
779
+ onColumnsOrderUpdate: PropTypes.func,
780
+ /**
781
+ * Fonction de callback sur le filtre d'une colonne
782
+ * Passe l'id de la colonne et la liste des id des éléments inclus
783
+ */
784
+ onFilterChange: PropTypes.func,
785
+ /**
786
+ * Fonction de callback appelée au clic sur l'item redirection
787
+ * du menu contextuel ouvert au clic droit
788
+ *
789
+ * @param {int} id
790
+ */
791
+ onRedirect: PropTypes.func,
792
+ /**
793
+ * Fonction de callback au click sur une ligne
794
+ * Passe l'element (row)
795
+ */
796
+ onRowClick: PropTypes.func,
797
+ /**
798
+ * Fonction de callback appelée au clic sur les items de recherche
799
+ * du menu contextuel ouvert au clic droit
800
+ *
801
+ * @param {string} searched field
802
+ * @param {string} searched value
803
+ * @param {string} search type (lookup, exclude)
804
+ */
805
+ onSearch: PropTypes.func,
806
+ /**
807
+ * Fonction de callback sur la sélection d'une ligne
808
+ * (ou sélection/déselection de tous dans le header)
809
+ * Passe la liste des id des lignes sélectionnées (selectedIdList)
810
+ */
811
+ onSelect: PropTypes.func,
812
+ /**
813
+ * Fonction de callback sur le tri d'une colonne
814
+ * Passe l'id de la colonne et la direction du tri (ou false si tri par défaut)
815
+ */
816
+ onSort: PropTypes.func,
817
+ /**
818
+ * L'utilisateur peut changer l'ordre des colonnes,
819
+ * les afficher ou non, et changer la vue de chaque colonne (small, medium, large).
820
+ */
821
+ orderable: PropTypes.bool,
822
+ /**
823
+ * Tableau des colonnes affichées (ordonnées, visibles/cachées, l/m/s)
824
+ */
825
+ orderedColumns: PropTypes.array.isRequired,
826
+ /**
827
+ * Fonction de callback requérant l'affichage des nouvelles données (live)
828
+ */
829
+ requestLiveDatas: PropTypes.func,
830
+ /**
831
+ * Fonction de callback requérant l'affichage des données suivantes
832
+ */
833
+ requestNextDatas: PropTypes.func,
834
+ /**
835
+ * [v2 - à venir] Les lignes sont sélectionnables (affichage d'une checkbox)
836
+ */
837
+ selectable: PropTypes.bool,
838
+ /**
839
+ * Liste des id des lignes sélectionnées
840
+ */
841
+ selectedIdList: PropTypes.array,
842
+ /**
843
+ * Active le tri sur les colonnes
844
+ */
845
+ sortable: PropTypes.bool,
846
+ /**
847
+ * Sens du tri
848
+ */
849
+ sortDirection: PropTypes.oneOf(['asc', 'desc']),
850
+ /**
851
+ * Id de la colonne trié
852
+ */
853
+ sortedColumnId: isRequiredIf(PropTypes.string, props => props.hasOwnProperty('sortable') && props.sortable === true, SORTED_COLUMN_ERROR_MESSAGE),
854
+ /**
855
+ * Fixe la première colonne
856
+ */
857
+ sticky: PropTypes.bool,
858
+ /**
859
+ * Identifiant unique à spécifier si on utilise plusieurs composants HiTable
860
+ */
861
+ tabId: PropTypes.string.isRequired,
862
+ /**
863
+ * Traduction des chaînes affichées
864
+ */
865
+ translations: PropTypes.object,
866
+ /**
867
+ * Taille du tableau (L/M/S),
868
+ * définit l'espace entre les cellules et leurs tailles par default
869
+ */
870
+ view: PropTypes.oneOf(['l', 'm', 's']),
871
+ /**
872
+ * Id de la colonne par laquelle sont regroupé les éléments
873
+ */
874
+ groupBy: PropTypes.string
875
+ } : {};
876
+ export default withStyles(styles, { withTheme: true, name: 'HmuiHiTable' })(HiTable);