@hipay/hipay-material-ui 1.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 (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);