@hipay/hipay-material-ui 1.0.0-beta.2 → 1.0.0-beta.20

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 (415) hide show
  1. package/HI-CHANGELOG.md +58 -0
  2. package/HiAlertModal/HiAlertModal.js +247 -0
  3. package/HiAlertModal/index.js +16 -0
  4. package/HiBreadcrumb/HiBreadcrumb.js +149 -0
  5. package/HiBreadcrumb/HiStep.js +159 -0
  6. package/HiBreadcrumb/HiStepConnector.js +207 -0
  7. package/HiBreadcrumb/HiStepContent.js +122 -0
  8. package/HiBreadcrumb/HiStepIcon.js +191 -0
  9. package/HiBreadcrumb/HiStepLabel.js +248 -0
  10. package/HiBreadcrumb/HiStepper.js +106 -0
  11. package/HiBreadcrumb/index.js +16 -0
  12. package/HiCheckbox/HiCheckbox.js +4 -1
  13. package/HiChip/HiChip.js +16 -6
  14. package/HiChip/HiChipSwitch.js +11 -4
  15. package/HiColoredLabel/HiColoredLabel.js +9 -3
  16. package/HiDatePicker/HiDatePicker.js +34 -30
  17. package/HiDatePicker/HiDateRangePicker.js +77 -34
  18. package/HiDatePicker/HiDateRangeSelector.js +38 -17
  19. package/HiDatePicker/ListPicker.js +32 -7
  20. package/HiDatePicker/Overlays/CustomOverlayLayout.js +3 -1
  21. package/HiDatePicker/Overlays/MonthPickerOverlay.js +5 -1
  22. package/HiDatePicker/Overlays/Overlay.js +22 -4
  23. package/HiDatePicker/Overlays/YearPickerOverlay.js +2 -1
  24. package/HiDatePicker/stylesheet.js +11 -0
  25. package/HiDotsStepper/HiDot.js +151 -0
  26. package/HiDotsStepper/HiDotsStepper.js +146 -0
  27. package/HiDotsStepper/index.js +16 -0
  28. package/HiExpansionPanel/HiExpansionPanel.js +231 -0
  29. package/HiExpansionPanel/index.js +16 -0
  30. package/HiForm/HiAddressField.js +187 -0
  31. package/HiForm/HiFormControl.js +39 -31
  32. package/HiForm/HiInput.js +48 -22
  33. package/HiForm/HiSearchField.js +2 -2
  34. package/HiForm/HiSlider.js +399 -0
  35. package/HiForm/HiUpload.js +280 -0
  36. package/HiForm/HiUploadField.js +456 -0
  37. package/HiForm/index.js +36 -0
  38. package/HiMap/HiMap.js +367 -0
  39. package/HiMap/HiMapExpand.js +217 -0
  40. package/HiMap/index.js +25 -0
  41. package/HiPdfReader/HiPdfReader.js +282 -0
  42. package/HiPdfReader/index.js +16 -0
  43. package/HiPins/HiPins.js +0 -1
  44. package/HiSelect/HiSelect.js +401 -354
  45. package/HiSelect/HiSelectField.js +8 -6
  46. package/HiSelect/HiSuggestSelect.js +27 -47
  47. package/HiSelect/HiSuggestSelectField.js +88 -80
  48. package/HiSelect/SelectInput.js +34 -23
  49. package/HiSelectableList/HiSelectableList.js +9 -3
  50. package/HiSelectableList/HiSelectableListItem.js +96 -55
  51. package/HiSwitch/HiSwitchState.js +1 -1
  52. package/HiSwitch/index.js +6 -0
  53. package/HiTable/BodyCellBuilder.js +116 -101
  54. package/HiTable/BodyCells/CellCountry.js +11 -36
  55. package/HiTable/BodyCells/CellIcon.js +29 -20
  56. package/HiTable/BodyCells/CellImage.js +44 -23
  57. package/HiTable/BodyCells/CellLayout.js +50 -21
  58. package/HiTable/BodyCells/CellNumeric.js +7 -2
  59. package/HiTable/BodyCells/CellSentinel.js +26 -17
  60. package/HiTable/BodyCells/CellStatus.js +7 -3
  61. package/HiTable/BodyCells/CellText.js +2 -1
  62. package/HiTable/BodyCells/CellThirdPartySecurity.js +45 -22
  63. package/HiTable/BodyRow.js +106 -62
  64. package/HiTable/ChildRow.js +3 -9
  65. package/HiTable/ColumnFilter.js +28 -15
  66. package/HiTable/HeaderCell.js +25 -20
  67. package/HiTable/HiTable.js +75 -11
  68. package/HiTable/HiTableBody.js +80 -36
  69. package/HiTable/HiTableContextMenu.js +7 -3
  70. package/HiTable/HiTableFooter.js +132 -0
  71. package/HiTable/HiTableFooterScroll.js +1 -1
  72. package/HiTable/HiTableHead.js +24 -7
  73. package/HiTable/OrderColumns.js +6 -2
  74. package/HiTopBar/HiTopBar.js +42 -120
  75. package/es/HiAlertModal/HiAlertModal.js +189 -0
  76. package/es/HiAlertModal/index.js +1 -0
  77. package/es/HiBreadcrumb/HiBreadcrumb.js +81 -0
  78. package/es/HiBreadcrumb/HiStep.js +94 -0
  79. package/es/HiBreadcrumb/HiStepConnector.js +143 -0
  80. package/es/HiBreadcrumb/HiStepContent.js +63 -0
  81. package/es/HiBreadcrumb/HiStepIcon.js +149 -0
  82. package/es/HiBreadcrumb/HiStepLabel.js +197 -0
  83. package/es/HiBreadcrumb/HiStepper.js +46 -0
  84. package/es/HiBreadcrumb/index.js +1 -0
  85. package/es/HiCheckbox/HiCheckbox.js +4 -1
  86. package/es/HiChip/HiChip.js +15 -6
  87. package/es/HiChip/HiChipSwitch.js +11 -4
  88. package/es/HiColoredLabel/HiColoredLabel.js +9 -4
  89. package/es/HiDatePicker/HiDatePicker.js +30 -25
  90. package/es/HiDatePicker/HiDateRangePicker.js +73 -33
  91. package/es/HiDatePicker/HiDateRangeSelector.js +39 -18
  92. package/es/HiDatePicker/ListPicker.js +39 -20
  93. package/es/HiDatePicker/Overlays/CustomOverlayLayout.js +3 -1
  94. package/es/HiDatePicker/Overlays/MonthPickerOverlay.js +5 -1
  95. package/es/HiDatePicker/Overlays/Overlay.js +18 -4
  96. package/es/HiDatePicker/Overlays/YearPickerOverlay.js +2 -1
  97. package/es/HiDatePicker/stylesheet.js +11 -0
  98. package/es/HiDotsStepper/HiDot.js +92 -0
  99. package/es/HiDotsStepper/HiDotsStepper.js +83 -0
  100. package/es/HiDotsStepper/index.js +1 -0
  101. package/es/HiExpansionPanel/HiExpansionPanel.js +170 -0
  102. package/es/HiExpansionPanel/index.js +1 -0
  103. package/es/HiForm/HiAddressField.js +127 -0
  104. package/es/HiForm/HiFormControl.js +32 -18
  105. package/es/HiForm/HiInput.js +43 -21
  106. package/es/HiForm/HiSearchField.js +2 -2
  107. package/es/HiForm/HiSlider.js +309 -0
  108. package/es/HiForm/HiUpload.js +194 -0
  109. package/es/HiForm/HiUploadField.js +368 -0
  110. package/es/HiForm/index.js +5 -1
  111. package/es/HiMap/HiMap.js +285 -0
  112. package/es/HiMap/HiMapExpand.js +145 -0
  113. package/es/HiMap/index.js +2 -0
  114. package/es/HiPdfReader/HiPdfReader.js +198 -0
  115. package/es/HiPdfReader/index.js +1 -0
  116. package/es/HiPins/HiPins.js +0 -1
  117. package/es/HiSelect/HiSelect.js +376 -325
  118. package/es/HiSelect/HiSelectField.js +9 -7
  119. package/es/HiSelect/HiSuggestSelect.js +26 -39
  120. package/es/HiSelect/HiSuggestSelectField.js +77 -69
  121. package/es/HiSelect/SelectInput.js +44 -23
  122. package/es/HiSelectableList/HiSelectableList.js +10 -4
  123. package/es/HiSelectableList/HiSelectableListItem.js +91 -55
  124. package/es/HiSwitch/HiSwitchState.js +1 -1
  125. package/es/HiSwitch/index.js +1 -0
  126. package/es/HiTable/BodyCellBuilder.js +112 -102
  127. package/es/HiTable/BodyCells/CellCountry.js +10 -35
  128. package/es/HiTable/BodyCells/CellIcon.js +18 -9
  129. package/es/HiTable/BodyCells/CellImage.js +43 -24
  130. package/es/HiTable/BodyCells/CellLayout.js +51 -24
  131. package/es/HiTable/BodyCells/CellNumeric.js +6 -2
  132. package/es/HiTable/BodyCells/CellSentinel.js +20 -9
  133. package/es/HiTable/BodyCells/CellStatus.js +7 -3
  134. package/es/HiTable/BodyCells/CellText.js +2 -1
  135. package/es/HiTable/BodyCells/CellThirdPartySecurity.js +42 -18
  136. package/es/HiTable/BodyRow.js +106 -61
  137. package/es/HiTable/ChildRow.js +3 -10
  138. package/es/HiTable/ColumnFilter.js +15 -9
  139. package/es/HiTable/HeaderCell.js +25 -19
  140. package/es/HiTable/HiTable.js +73 -12
  141. package/es/HiTable/HiTableBody.js +71 -32
  142. package/es/HiTable/HiTableContextMenu.js +7 -3
  143. package/es/HiTable/HiTableFooter.js +75 -0
  144. package/es/HiTable/HiTableFooterScroll.js +1 -1
  145. package/es/HiTable/HiTableHead.js +19 -7
  146. package/es/HiTable/OrderColumns.js +6 -2
  147. package/es/HiTopBar/HiTopBar.js +45 -111
  148. package/es/styles/createHiMuiTheme.js +13 -0
  149. package/es/utils/hiHelpers.js +6 -5
  150. package/hmu/images/countries/ad.svg +151 -0
  151. package/hmu/images/countries/ae.svg +6 -0
  152. package/hmu/images/countries/af.svg +83 -0
  153. package/hmu/images/countries/ag.svg +15 -0
  154. package/hmu/images/countries/ai.svg +767 -0
  155. package/hmu/images/countries/al.svg +5 -0
  156. package/hmu/images/countries/am.svg +5 -0
  157. package/hmu/images/countries/ao.svg +13 -0
  158. package/hmu/images/countries/aq.svg +6 -0
  159. package/hmu/images/countries/ar.svg +32 -0
  160. package/hmu/images/countries/as.svg +33 -0
  161. package/hmu/images/countries/at.svg +6 -0
  162. package/hmu/images/countries/au.svg +9 -0
  163. package/hmu/images/countries/aw.svg +186 -0
  164. package/hmu/images/countries/ax.svg +18 -0
  165. package/hmu/images/countries/az.svg +8 -0
  166. package/hmu/images/countries/ba.svg +12 -0
  167. package/hmu/images/countries/bb.svg +6 -0
  168. package/hmu/images/countries/bd.svg +4 -0
  169. package/hmu/images/countries/be.svg +7 -0
  170. package/hmu/images/countries/bf.svg +7 -0
  171. package/hmu/images/countries/bg.svg +7 -0
  172. package/hmu/images/countries/bh.svg +11 -0
  173. package/hmu/images/countries/bi.svg +15 -0
  174. package/hmu/images/countries/bj.svg +14 -0
  175. package/hmu/images/countries/bl.svg +7 -0
  176. package/hmu/images/countries/bm.svg +99 -0
  177. package/hmu/images/countries/bn.svg +36 -0
  178. package/hmu/images/countries/bo.svg +686 -0
  179. package/hmu/images/countries/bq.svg +5 -0
  180. package/hmu/images/countries/br.svg +45 -0
  181. package/hmu/images/countries/bs.svg +13 -0
  182. package/hmu/images/countries/bt.svg +89 -0
  183. package/hmu/images/countries/bv.svg +13 -0
  184. package/hmu/images/countries/bw.svg +7 -0
  185. package/hmu/images/countries/by.svg +61 -0
  186. package/hmu/images/countries/bz.svg +146 -0
  187. package/hmu/images/countries/ca.svg +4 -0
  188. package/hmu/images/countries/cc.svg +19 -0
  189. package/hmu/images/countries/cd.svg +5 -0
  190. package/hmu/images/countries/cf.svg +15 -0
  191. package/hmu/images/countries/cg.svg +12 -0
  192. package/hmu/images/countries/ch.svg +9 -0
  193. package/hmu/images/countries/ci.svg +7 -0
  194. package/hmu/images/countries/ck.svg +9 -0
  195. package/hmu/images/countries/cl.svg +13 -0
  196. package/hmu/images/countries/cm.svg +15 -0
  197. package/hmu/images/countries/cn.svg +11 -0
  198. package/hmu/images/countries/co.svg +7 -0
  199. package/hmu/images/countries/cr.svg +7 -0
  200. package/hmu/images/countries/cu.svg +13 -0
  201. package/hmu/images/countries/cv.svg +13 -0
  202. package/hmu/images/countries/cw.svg +14 -0
  203. package/hmu/images/countries/cx.svg +15 -0
  204. package/hmu/images/countries/cy.svg +6 -0
  205. package/hmu/images/countries/cz.svg +12 -0
  206. package/hmu/images/countries/de.svg +5 -0
  207. package/hmu/images/countries/dj.svg +13 -0
  208. package/hmu/images/countries/dk.svg +5 -0
  209. package/hmu/images/countries/dm.svg +152 -0
  210. package/hmu/images/countries/do.svg +6745 -0
  211. package/hmu/images/countries/dz.svg +5 -0
  212. package/hmu/images/countries/ec.svg +141 -0
  213. package/hmu/images/countries/ee.svg +7 -0
  214. package/hmu/images/countries/eg.svg +38 -0
  215. package/hmu/images/countries/eh.svg +15 -0
  216. package/hmu/images/countries/er.svg +8 -0
  217. package/hmu/images/countries/es-ct.svg +4 -0
  218. package/hmu/images/countries/es.svg +581 -0
  219. package/hmu/images/countries/et.svg +14 -0
  220. package/hmu/images/countries/eu.svg +28 -0
  221. package/hmu/images/countries/fi.svg +5 -0
  222. package/hmu/images/countries/fj.svg +124 -0
  223. package/hmu/images/countries/fk.svg +90 -0
  224. package/hmu/images/countries/fm.svg +11 -0
  225. package/hmu/images/countries/fo.svg +12 -0
  226. package/hmu/images/countries/fr.svg +7 -0
  227. package/hmu/images/countries/ga.svg +7 -0
  228. package/hmu/images/countries/gb-eng.svg +5 -0
  229. package/hmu/images/countries/gb-nir.svg +137 -0
  230. package/hmu/images/countries/gb-sct.svg +4 -0
  231. package/hmu/images/countries/gb-wls.svg +9 -0
  232. package/hmu/images/countries/gb.svg +15 -0
  233. package/hmu/images/countries/gd.svg +27 -0
  234. package/hmu/images/countries/ge.svg +6 -0
  235. package/hmu/images/countries/gf.svg +5 -0
  236. package/hmu/images/countries/gg.svg +9 -0
  237. package/hmu/images/countries/gh.svg +6 -0
  238. package/hmu/images/countries/gi.svg +33 -0
  239. package/hmu/images/countries/gl.svg +4 -0
  240. package/hmu/images/countries/gm.svg +14 -0
  241. package/hmu/images/countries/gn.svg +7 -0
  242. package/hmu/images/countries/gp.svg +7 -0
  243. package/hmu/images/countries/gq.svg +23 -0
  244. package/hmu/images/countries/gr.svg +22 -0
  245. package/hmu/images/countries/gs.svg +205 -0
  246. package/hmu/images/countries/gt.svg +204 -0
  247. package/hmu/images/countries/gu.svg +39 -0
  248. package/hmu/images/countries/gw.svg +13 -0
  249. package/hmu/images/countries/gy.svg +9 -0
  250. package/hmu/images/countries/hk.svg +32 -0
  251. package/hmu/images/countries/hm.svg +9 -0
  252. package/hmu/images/countries/hn.svg +18 -0
  253. package/hmu/images/countries/hr.svg +59 -0
  254. package/hmu/images/countries/ht.svg +122 -0
  255. package/hmu/images/countries/hu.svg +7 -0
  256. package/hmu/images/countries/id.svg +6 -0
  257. package/hmu/images/countries/ie.svg +7 -0
  258. package/hmu/images/countries/il.svg +14 -0
  259. package/hmu/images/countries/im.svg +36 -0
  260. package/hmu/images/countries/in.svg +25 -0
  261. package/hmu/images/countries/io.svg +148 -0
  262. package/hmu/images/countries/iq.svg +10 -0
  263. package/hmu/images/countries/ir.svg +219 -0
  264. package/hmu/images/countries/is.svg +12 -0
  265. package/hmu/images/countries/it.svg +7 -0
  266. package/hmu/images/countries/je.svg +32 -0
  267. package/hmu/images/countries/jm.svg +8 -0
  268. package/hmu/images/countries/jo.svg +16 -0
  269. package/hmu/images/countries/jp.svg +11 -0
  270. package/hmu/images/countries/ke.svg +23 -0
  271. package/hmu/images/countries/kg.svg +15 -0
  272. package/hmu/images/countries/kh.svg +69 -0
  273. package/hmu/images/countries/ki.svg +36 -0
  274. package/hmu/images/countries/km.svg +16 -0
  275. package/hmu/images/countries/kn.svg +14 -0
  276. package/hmu/images/countries/kp.svg +15 -0
  277. package/hmu/images/countries/kr.svg +24 -0
  278. package/hmu/images/countries/kw.svg +13 -0
  279. package/hmu/images/countries/ky.svg +63 -0
  280. package/hmu/images/countries/kz.svg +23 -0
  281. package/hmu/images/countries/la.svg +12 -0
  282. package/hmu/images/countries/lb.svg +15 -0
  283. package/hmu/images/countries/lc.svg +8 -0
  284. package/hmu/images/countries/li.svg +43 -0
  285. package/hmu/images/countries/lk.svg +22 -0
  286. package/hmu/images/countries/lr.svg +14 -0
  287. package/hmu/images/countries/ls.svg +8 -0
  288. package/hmu/images/countries/lt.svg +7 -0
  289. package/hmu/images/countries/lu.svg +5 -0
  290. package/hmu/images/countries/lv.svg +6 -0
  291. package/hmu/images/countries/ly.svg +13 -0
  292. package/hmu/images/countries/ma.svg +4 -0
  293. package/hmu/images/countries/mc.svg +6 -0
  294. package/hmu/images/countries/md.svg +72 -0
  295. package/hmu/images/countries/me.svg +118 -0
  296. package/hmu/images/countries/mf.svg +7 -0
  297. package/hmu/images/countries/mg.svg +7 -0
  298. package/hmu/images/countries/mh.svg +7 -0
  299. package/hmu/images/countries/mk.svg +5 -0
  300. package/hmu/images/countries/ml.svg +7 -0
  301. package/hmu/images/countries/mm.svg +16 -0
  302. package/hmu/images/countries/mn.svg +13 -0
  303. package/hmu/images/countries/mo.svg +9 -0
  304. package/hmu/images/countries/mp.svg +86 -0
  305. package/hmu/images/countries/mq.svg +7 -0
  306. package/hmu/images/countries/mr.svg +6 -0
  307. package/hmu/images/countries/ms.svg +39 -0
  308. package/hmu/images/countries/mt.svg +49 -0
  309. package/hmu/images/countries/mu.svg +8 -0
  310. package/hmu/images/countries/mv.svg +6 -0
  311. package/hmu/images/countries/mw.svg +10 -0
  312. package/hmu/images/countries/mx.svg +385 -0
  313. package/hmu/images/countries/my.svg +15 -0
  314. package/hmu/images/countries/mz.svg +21 -0
  315. package/hmu/images/countries/na.svg +16 -0
  316. package/hmu/images/countries/nc.svg +7 -0
  317. package/hmu/images/countries/ne.svg +6 -0
  318. package/hmu/images/countries/nf.svg +9 -0
  319. package/hmu/images/countries/ng.svg +6 -0
  320. package/hmu/images/countries/ni.svg +131 -0
  321. package/hmu/images/countries/nl.svg +7 -0
  322. package/hmu/images/countries/no.svg +7 -0
  323. package/hmu/images/countries/np.svg +14 -0
  324. package/hmu/images/countries/nr.svg +12 -0
  325. package/hmu/images/countries/nu.svg +26 -0
  326. package/hmu/images/countries/nz.svg +41 -0
  327. package/hmu/images/countries/om.svg +116 -0
  328. package/hmu/images/countries/pa.svg +14 -0
  329. package/hmu/images/countries/pe.svg +279 -0
  330. package/hmu/images/countries/pf.svg +19 -0
  331. package/hmu/images/countries/pg.svg +9 -0
  332. package/hmu/images/countries/ph.svg +28 -0
  333. package/hmu/images/countries/pk.svg +15 -0
  334. package/hmu/images/countries/pl.svg +6 -0
  335. package/hmu/images/countries/pm.svg +7 -0
  336. package/hmu/images/countries/pn.svg +62 -0
  337. package/hmu/images/countries/pr.svg +13 -0
  338. package/hmu/images/countries/ps.svg +15 -0
  339. package/hmu/images/countries/pt.svg +57 -0
  340. package/hmu/images/countries/pw.svg +11 -0
  341. package/hmu/images/countries/py.svg +157 -0
  342. package/hmu/images/countries/qa.svg +4 -0
  343. package/hmu/images/countries/re.svg +7 -0
  344. package/hmu/images/countries/ro.svg +7 -0
  345. package/hmu/images/countries/rs.svg +292 -0
  346. package/hmu/images/countries/ru.svg +7 -0
  347. package/hmu/images/countries/rw.svg +13 -0
  348. package/hmu/images/countries/sa.svg +26 -0
  349. package/hmu/images/countries/sb.svg +13 -0
  350. package/hmu/images/countries/sc.svg +14 -0
  351. package/hmu/images/countries/sd.svg +13 -0
  352. package/hmu/images/countries/se.svg +16 -0
  353. package/hmu/images/countries/sg.svg +13 -0
  354. package/hmu/images/countries/sh.svg +74 -0
  355. package/hmu/images/countries/si.svg +18 -0
  356. package/hmu/images/countries/sj.svg +7 -0
  357. package/hmu/images/countries/sk.svg +9 -0
  358. package/hmu/images/countries/sl.svg +7 -0
  359. package/hmu/images/countries/sm.svg +91 -0
  360. package/hmu/images/countries/sn.svg +8 -0
  361. package/hmu/images/countries/so.svg +11 -0
  362. package/hmu/images/countries/sr.svg +6 -0
  363. package/hmu/images/countries/ss.svg +8 -0
  364. package/hmu/images/countries/st.svg +16 -0
  365. package/hmu/images/countries/sv.svg +618 -0
  366. package/hmu/images/countries/sx.svg +56 -0
  367. package/hmu/images/countries/sy.svg +6 -0
  368. package/hmu/images/countries/sz.svg +45 -0
  369. package/hmu/images/countries/tc.svg +67 -0
  370. package/hmu/images/countries/td.svg +7 -0
  371. package/hmu/images/countries/tf.svg +15 -0
  372. package/hmu/images/countries/tg.svg +14 -0
  373. package/hmu/images/countries/th.svg +7 -0
  374. package/hmu/images/countries/tj.svg +22 -0
  375. package/hmu/images/countries/tk.svg +5 -0
  376. package/hmu/images/countries/tl.svg +13 -0
  377. package/hmu/images/countries/tm.svg +213 -0
  378. package/hmu/images/countries/tn.svg +13 -0
  379. package/hmu/images/countries/to.svg +10 -0
  380. package/hmu/images/countries/tr.svg +8 -0
  381. package/hmu/images/countries/tt.svg +5 -0
  382. package/hmu/images/countries/tv.svg +27 -0
  383. package/hmu/images/countries/tw.svg +14 -0
  384. package/hmu/images/countries/tz.svg +13 -0
  385. package/hmu/images/countries/ua.svg +6 -0
  386. package/hmu/images/countries/ug.svg +30 -0
  387. package/hmu/images/countries/um.svg +23 -0
  388. package/hmu/images/countries/un.svg +16 -0
  389. package/hmu/images/countries/us.svg +12 -0
  390. package/hmu/images/countries/uy.svg +28 -0
  391. package/hmu/images/countries/uz.svg +30 -0
  392. package/hmu/images/countries/va.svg +483 -0
  393. package/hmu/images/countries/vc.svg +8 -0
  394. package/hmu/images/countries/ve.svg +26 -0
  395. package/hmu/images/countries/vg.svg +133 -0
  396. package/hmu/images/countries/vi.svg +31 -0
  397. package/hmu/images/countries/vn.svg +11 -0
  398. package/hmu/images/countries/vu.svg +18 -0
  399. package/hmu/images/countries/wf.svg +7 -0
  400. package/hmu/images/countries/ws.svg +7 -0
  401. package/hmu/images/countries/ye.svg +7 -0
  402. package/hmu/images/countries/yt.svg +7 -0
  403. package/hmu/images/countries/za.svg +17 -0
  404. package/hmu/images/countries/zm.svg +27 -0
  405. package/hmu/images/countries/zw.svg +21 -0
  406. package/hmu/images/hipay-white-logo.svg +42 -0
  407. package/hmu/images/logo_visa_75wx45h.gif +0 -0
  408. package/hmu/images/map_marker.svg +8 -0
  409. package/index.es.js +1 -1
  410. package/index.js +1 -1
  411. package/package.json +8 -5
  412. package/styles/createHiMuiTheme.js +13 -0
  413. package/umd/hipay-material-ui.development.js +86185 -41566
  414. package/umd/hipay-material-ui.production.min.js +5 -5
  415. package/utils/hiHelpers.js +6 -4
@@ -9,11 +9,9 @@ import Grow from 'material-ui/transitions/Grow';
9
9
  import { findDOMNode } from 'react-dom';
10
10
  import Paper from 'material-ui/Paper';
11
11
  import ClickAwayListener from 'material-ui/utils/ClickAwayListener';
12
- import Collapse from 'material-ui/transitions/Collapse';
13
12
  import { Manager, Target, Popper } from 'react-popper';
14
13
  import { CheckboxBlankOutline, CheckboxMarked } from 'mdi-material-ui';
15
14
  import HiSelectableList from '../HiSelectableList';
16
- import HiSelectableListItem from '../HiSelectableList/HiSelectableListItem';
17
15
  import { HiSearchField } from '../HiForm';
18
16
  import SelectInput from './SelectInput';
19
17
  import HiChip from '../HiChip/HiChip';
@@ -30,8 +28,7 @@ export const styles = theme => ({
30
28
  },
31
29
  popper: {
32
30
  width: '100%',
33
- transform: 'none !important',
34
- zIndex: 9
31
+ zIndex: 11
35
32
  },
36
33
  paper: {
37
34
  borderRadius: '0px 2px',
@@ -72,231 +69,7 @@ class HiSelect extends React.PureComponent {
72
69
  constructor(props) {
73
70
  super(props);
74
71
 
75
- this.handleClick = () => {
76
- document.body.style.overflow = 'hidden';
77
- this.setState({ open: true });
78
- const options = this.props.options.slice();
79
- this.handleSuggestions(options);
80
-
81
- if (this.props.onClick) {
82
- this.props.onClick();
83
- }
84
-
85
- // Gestion du focus
86
- if (this.searchField) {
87
- // si searchable, focus sur le champs de recherche
88
- const searchField = this.searchField;
89
- setTimeout(() => {
90
- searchField.focus();
91
- }, 1);
92
- } else if (this.overlay) {
93
- // sinon focus sur le dernier élément selectionné
94
- this.focusOnSelectedItem();
95
- }
96
- };
97
-
98
- this.focusOnSelectedItem = () => {
99
- // On récupère la div parent "overlay"
100
- const overlay = findDOMNode(this.overlay);
101
- const multiple = this.props.multiple;
102
- const value = this.props.value;
103
- const selectedIdList = Array.isArray(value) ? value : [value];
104
- setTimeout(() => {
105
- let focused = false;
106
- // Si un ou plusieurs items sont selectionnés, on focus sur le dernier
107
- if (selectedIdList.length > 0) {
108
- const itemSelected = overlay.querySelector(`[data-id="${selectedIdList[selectedIdList.length - 1]}"]`);
109
- if (itemSelected && itemSelected.parentElement.tagName === 'LI') {
110
- itemSelected.parentElement.focus();
111
- focused = true;
112
- }
113
- }
114
- // Si pas d'item selectionné, ou pas visible (en cas de recherche), focus sur le premier
115
- if (selectedIdList.length === 0 || !focused) {
116
- // On recupère tous les items
117
- const items = overlay.getElementsByTagName('li');
118
- let itemToFocus = items[0];
119
- // Si select multiple, et qu'au moins un selectionné, focus sur le 2e item
120
- if (multiple && selectedIdList.length > 0) {
121
- itemToFocus = items[1];
122
- }
123
- itemToFocus.focus();
124
- }
125
- }, 1);
126
- };
127
-
128
- this.handleKeyDown = event => {
129
- let nextItem;
130
- if (event.key === 'ArrowDown') {
131
- nextItem = getNextItemSelectable(document.activeElement, 'down');
132
- } else if (event.key === 'ArrowUp') {
133
- nextItem = getNextItemSelectable(document.activeElement, 'up');
134
- } else if (event.key === 'Tab') {
135
- document.body.style.overflow = 'auto';
136
- this.setState({ open: false });
137
- }
138
- if (nextItem) {
139
- nextItem.focus();
140
- }
141
- };
142
-
143
- this.handleKeyDownSearch = event => {
144
- if (this.overlay && (event.key === 'ArrowDown' || event.key === 'ArrowUp')) {
145
- this.focusOnSelectedItem();
146
- }
147
- };
148
-
149
- this.handleFocus = () => {
150
- this.setState({ focused: true });
151
- };
152
-
153
- this.handleBlur = () => {
154
- this.setState({ focused: false });
155
- };
156
-
157
- this.handleClose = () => {
158
- document.body.style.overflow = 'auto';
159
- this.setState({
160
- open: false
161
- });
162
-
163
- if (this.props.onClose) {
164
- this.props.onClose();
165
- }
166
- };
167
-
168
- this.handleSelect = (event, item) => {
169
- const { multiple, value, name, onChange, options, hierarchic } = this.props;
170
- const { hierarchySelected, hierarchy, nbOptions } = this.state;
171
- const hiSelected = _extends({}, hierarchySelected);
172
-
173
- if (multiple) {
174
- let valueList = value;
175
- if (item.id === '_all') {
176
- if (valueList.length === nbOptions) {
177
- valueList = [];
178
- if (hierarchic) {
179
- // if hierarchic select => empty associative array of selected children
180
- _Object$keys(hiSelected).forEach(key => {
181
- hiSelected[key] = [];
182
- });
183
- }
184
- } else {
185
- options.forEach(option => {
186
- if (option.hasChildren !== true && !valueList.includes(option.id) && option.id !== '_all') {
187
- valueList.push(option.id);
188
- } else if (option.hasChildren === true) {
189
- // if hierarchic select => fill associative array of selected children
190
- hiSelected[option.id] = hierarchy[option.id];
191
- }
192
- });
193
- }
194
- } else if (valueList.includes(item.id) || item.hasChildren === true && hierarchySelected[item.id].length === hierarchy[item.id].length) {
195
- // item déjà sélectionné => on le déselectionne
196
- if (item.hasChildren !== true) {
197
- valueList = valueList.filter(val => {
198
- return val !== item.id;
199
- });
200
- }
201
-
202
- if (item.hasChildren === true) {
203
- // remove all children
204
- valueList = valueList.filter(val => {
205
- return !this.state.hierarchy[item.id].includes(val);
206
- });
207
- hiSelected[item.id] = [];
208
- } else if (item.hasOwnProperty('parentId')) {
209
- // Si item est un enfant on l'enlève du tableau associatif des
210
- // elmts sélectionnés
211
- hiSelected[item.parentId].splice(hiSelected[item.parentId].indexOf(item.id), 1);
212
- }
213
- } else {
214
- // item non sélectionné => on le sélectionne
215
- if (item.hasChildren !== true) valueList.push(item.id);
216
-
217
- if (item.hasChildren === true) {
218
- // Si item parent => on ajoute tous les enfants
219
- // Ou on les supprime s'ils sont déjà tous sélectionnés (dans une liste filtrée)
220
- const idsInSuggestions = [];
221
- this.state.suggestions.forEach(suggestion => {
222
- if (this.state.hierarchy[item.id].includes(suggestion.id)) {
223
- idsInSuggestions.push(suggestion.id);
224
- }
225
- });
226
- // if(hierarchySelected[item.id].length > 0) {}
227
- let allChildrenSuggestionsSelected = true;
228
- idsInSuggestions.forEach(id => {
229
- if (!hierarchySelected[item.id].includes(id)) {
230
- allChildrenSuggestionsSelected = false;
231
- }
232
- });
233
-
234
- if (allChildrenSuggestionsSelected === true) {
235
- // On supprime les enfants car déjà tous sélectionnés
236
- idsInSuggestions.forEach(id => {
237
- valueList.splice(valueList.indexOf(id), 1);
238
- hiSelected[item.id].splice(hiSelected[item.id].indexOf(id), 1);
239
- });
240
- } else {
241
- // On ajoute tous les enfants filtrés au éléments sélectionnés
242
- valueList = arrayUnique(valueList.concat(idsInSuggestions));
243
- hiSelected[item.id] = arrayUnique(hiSelected[item.id].concat(idsInSuggestions));
244
- }
245
-
246
- this.setState({ hierarchySelected: hiSelected });
247
- } else if (item.hasOwnProperty('parentId')) {
248
- // Si item est un enfant on l'ajoute du tableau associatif des
249
- // elmts sélectionnés
250
- hiSelected[item.parentId].push(item.id);
251
- }
252
- }
253
- this.setState({ hierarchySelected: hiSelected });
254
- onChange(event, valueList);
255
- } else {
256
- onChange(event, item.id);
257
- this.handleClose();
258
- }
259
- };
260
-
261
- this.handleSuggestions = suggestions => {
262
- const { options, hasAll, iconAll, translations, multiple } = this.props;
263
-
264
- if (suggestions.length === 0) {
265
- // Handle No Result
266
- // FIX to remove all item
267
- suggestions = [];
268
- suggestions.push({
269
- id: '_no_result',
270
- type: 'text',
271
- disabled: true,
272
- centered: true,
273
- checkbox: false,
274
- label: translations.no_result_match
275
- });
276
- } else if (hasAll && suggestions.length > 0 && suggestions.length === options.length && multiple === true) {
277
- // Handle 'All'
278
- if (suggestions.filter(suggestion => suggestion.id === '_all').length === 0) {
279
- const allItem = {
280
- id: '_all',
281
- icon: iconAll,
282
- label: translations.all
283
- };
284
- if (iconAll !== false) {
285
- allItem.type = 'icon';
286
- }
287
- suggestions.unshift(allItem);
288
- }
289
- }
290
-
291
- this.setState({
292
- suggestions
293
- });
294
- };
295
-
296
- this.handleRequestDelete = evt => {
297
- evt.stopPropagation();
298
- this.props.onChange(this.props.name, []);
299
- };
72
+ _initialiseProps.call(this);
300
73
 
301
74
  this.state = {
302
75
  open: false,
@@ -308,28 +81,30 @@ class HiSelect extends React.PureComponent {
308
81
  dynamic: false
309
82
  };
310
83
 
311
- if (props.hierarchic === true && props.options.length > 1) {
312
- // Construct two associative arrays
313
- // hierarchy[parentId] => children
314
- // hierarchySelected[parentId] => selected children
315
- const hierarchy = {};
316
- const hierarchySelected = {};
317
- let value = props.value || [];
318
- if (!Array.isArray(value)) value = [props.value];
319
- props.options.forEach(option => {
320
- if (option.hasChildren === true && !hierarchy.hasOwnProperty(option.id)) {
321
- hierarchy[option.id] = [];
322
- hierarchySelected[option.id] = [];
323
- } else if (option.hasOwnProperty('parentId')) {
324
- hierarchy[option.parentId].push(option.id);
325
- if (value.includes(option.id)) {
326
- hierarchySelected[option.parentId].push(option.id);
327
- }
84
+ // Check if value is in options
85
+ let valueInOptions = false;
86
+ const val = props.value;
87
+ // No options provided.
88
+ if (!props.options.length || !val || !val.length) {
89
+ valueInOptions = true;
90
+ } else {
91
+ // Check if an option match value prop.
92
+ props.options.forEach(item => {
93
+ if (!valueInOptions && val.indexOf(item.id) !== -1) {
94
+ valueInOptions = true;
328
95
  }
329
96
  });
97
+ }
98
+
99
+ if (!valueInOptions) {
100
+ throw new Error('prop value provided does not match any option.');
101
+ }
330
102
 
331
- this.state.hierarchy = hierarchy;
332
- this.state.hierarchySelected = hierarchySelected;
103
+ if (props.hierarchic === true && props.options.length > 1) {
104
+ const hierarchyTrees = this.buildHierarchyTrees(props);
105
+
106
+ this.state.hierarchy = hierarchyTrees.hierarchy;
107
+ this.state.hierarchySelected = hierarchyTrees.hierarchySelected;
333
108
  }
334
109
 
335
110
  if (props.options.length > 0) {
@@ -348,6 +123,7 @@ class HiSelect extends React.PureComponent {
348
123
  this.handleSelect = this.handleSelect.bind(this);
349
124
  this.handleClick = this.handleClick.bind(this);
350
125
  this.handleClose = this.handleClose.bind(this);
126
+ this.handleClickAway = this.handleClickAway.bind(this);
351
127
  this.handleRequestDelete = this.handleRequestDelete.bind(this);
352
128
  this.handleSuggestions = this.handleSuggestions.bind(this);
353
129
  this.handleFocus = this.handleFocus.bind(this);
@@ -365,6 +141,33 @@ class HiSelect extends React.PureComponent {
365
141
  });
366
142
  this.setState({ nbOptions: optionsLength });
367
143
  }
144
+
145
+ if (nextProps.hierarchic === true && nextProps.options.length > 1) {
146
+ const hierarchyTrees = this.buildHierarchyTrees(nextProps);
147
+ this.setState({ hierarchy: hierarchyTrees.hierarchy, hierarchySelected: hierarchyTrees.hierarchySelected });
148
+ }
149
+ }
150
+
151
+ buildHierarchyTrees(props) {
152
+ // Construct two associative arrays
153
+ // hierarchy[parentId] => children
154
+ // hierarchySelected[parentId] => selected children
155
+ const hierarchy = {};
156
+ const hierarchySelected = {};
157
+ let value = props.value || [];
158
+ if (!Array.isArray(value)) value = [props.value];
159
+ props.options.forEach(option => {
160
+ if (option.hasChildren === true && !hierarchy.hasOwnProperty(option.id)) {
161
+ hierarchy[option.id] = [];
162
+ hierarchySelected[option.id] = [];
163
+ } else if (option.hasOwnProperty('parentId')) {
164
+ hierarchy[option.parentId].push(option.id);
165
+ if (value.includes(option.id)) {
166
+ hierarchySelected[option.parentId].push(option.id);
167
+ }
168
+ }
169
+ });
170
+ return { hierarchy, hierarchySelected };
368
171
  }
369
172
 
370
173
  // Key down on list items
@@ -398,14 +201,12 @@ class HiSelect extends React.PureComponent {
398
201
  classes,
399
202
  disabled,
400
203
  error,
401
- multiple,
402
204
  options,
403
205
  checkbox,
404
206
  searchable,
405
207
  displayAsChip,
406
208
  type,
407
209
  value,
408
- hasSelectedCount = multiple,
409
210
  translations,
410
211
  parentItemSelectable,
411
212
  icon,
@@ -413,19 +214,21 @@ class HiSelect extends React.PureComponent {
413
214
  hoverIcon,
414
215
  checkedIcon,
415
216
  hierarchic,
416
- id
217
+ id,
218
+ placeholder,
219
+ staticPosition
417
220
  } = this.props;
418
221
 
419
222
  const { open, suggestions, focused } = this.state;
420
223
 
421
224
  let display = '';
422
- const selectedIdList = Array.isArray(value) ? value : [value];
225
+ const selectedIdList = Array.isArray(value) ? value : value ? [value] : [];
423
226
 
424
227
  if (this.state.dynamic && selectedIdList.length === 1) {
425
228
  display = translations.one_item_selected.replace('%s', selectedIdList.length);
426
229
  } else if (this.state.nbOptions !== selectedIdList.length && selectedIdList.length > 1) {
427
230
  display = translations.n_items_selected.replace('%s', selectedIdList.length);
428
- } else if (this.state.nbOptions === selectedIdList.length) {
231
+ } else if (this.state.nbOptions === selectedIdList.length && this.state.nbOptions >= 1) {
429
232
  display = translations.all;
430
233
  } else if (selectedIdList.length === 1) {
431
234
  if (type !== 'icon') {
@@ -442,7 +245,7 @@ class HiSelect extends React.PureComponent {
442
245
  }
443
246
 
444
247
  if (displayAsChip) {
445
- const chipFilter = React.createElement(HiChip, { label: display, onDelete: this.handleRequestDelete });
248
+ const chipFilter = React.createElement(HiChip, { label: placeholder || display, onDelete: this.handleRequestDelete });
446
249
  if (display) {
447
250
  display = chipFilter;
448
251
  }
@@ -462,6 +265,50 @@ class HiSelect extends React.PureComponent {
462
265
  popperStyle = { width: this.props.containerWidth };
463
266
  }
464
267
 
268
+ const content = React.createElement(
269
+ ClickAwayListener,
270
+ { onClickAway: this.handleClickAway },
271
+ React.createElement(
272
+ Grow,
273
+ { 'in': open, id: 'menu-list', style: { transformOrigin: '0 0 0' } },
274
+ React.createElement(
275
+ Paper,
276
+ { className: classes.paper },
277
+ !!searchable && React.createElement(HiSearchField, {
278
+ itemList: options,
279
+ callbackFilteredList: this.handleSuggestions,
280
+ filterPropertyList: ['label'],
281
+ placeholder: translations.search,
282
+ autoFocus: true,
283
+ onSearch: this.props.onSearch,
284
+ inputRef: el => {
285
+ this.searchField = el;
286
+ },
287
+ onKeyDown: this.handleKeyDownSearch
288
+ }),
289
+ React.createElement(HiSelectableList, {
290
+ type: type,
291
+ parentItemSelectable: parentItemSelectable,
292
+ itemList: suggestions,
293
+ onSelect: this.handleSelect,
294
+ selectedIdList: selectedIdList,
295
+ checkbox: checkbox,
296
+ hierarchy: this.state.hierarchy,
297
+ hierarchic: hierarchic,
298
+ hierarchySelected: this.state.hierarchySelected,
299
+ translations: translations,
300
+ icon: icon,
301
+ parentIcon: parentIcon,
302
+ hoverIcon: hoverIcon,
303
+ checkedIcon: checkedIcon,
304
+ allSelected: allSelected,
305
+ value: value,
306
+ onKeyDown: this.handleKeyDown
307
+ })
308
+ )
309
+ )
310
+ );
311
+
465
312
  return React.createElement(
466
313
  'div',
467
314
  {
@@ -478,7 +325,7 @@ class HiSelect extends React.PureComponent {
478
325
  null,
479
326
  React.createElement(SelectInput, {
480
327
  id: id,
481
- value: display,
328
+ value: placeholder || display,
482
329
  open: open,
483
330
  focused: focused,
484
331
  type: type,
@@ -489,10 +336,17 @@ class HiSelect extends React.PureComponent {
489
336
  onFocus: this.handleFocus,
490
337
  onBlur: this.handleBlur,
491
338
  onMouseEnter: this.props.onMouseEnter,
492
- onMouseLeave: this.props.onMouseLeave
339
+ onMouseLeave: this.props.onMouseLeave,
340
+ refElement: el => {
341
+ this.selectInputElement = el;
342
+ }
493
343
  })
494
344
  ),
495
- open && React.createElement(
345
+ open && (staticPosition ? React.createElement(
346
+ 'div',
347
+ { style: popperStyle },
348
+ content
349
+ ) : React.createElement(
496
350
  Popper,
497
351
  {
498
352
  placement: 'bottom-start',
@@ -500,69 +354,8 @@ class HiSelect extends React.PureComponent {
500
354
  className: popperClass,
501
355
  style: popperStyle
502
356
  },
503
- React.createElement(
504
- ClickAwayListener,
505
- { onClickAway: this.handleClose },
506
- React.createElement(
507
- Grow,
508
- { 'in': open, id: 'menu-list', style: { transformOrigin: '0 0 0' } },
509
- React.createElement(
510
- Paper,
511
- { className: classes.paper },
512
- !!searchable && React.createElement(HiSearchField, {
513
- itemList: options,
514
- callbackFilteredList: this.handleSuggestions,
515
- filterPropertyList: ['label'],
516
- placeholder: translations.search,
517
- autoFocus: true,
518
- onSearch: this.props.onSearch,
519
- inputRef: el => {
520
- this.searchField = el;
521
- },
522
- onKeyDown: this.handleKeyDownSearch
523
- }),
524
- !!hasSelectedCount && React.createElement(
525
- Collapse,
526
- {
527
- 'in': selectedIdList.length > 0,
528
- timeout: 'auto',
529
- unmountOnExit: true
530
- },
531
- React.createElement(HiSelectableListItem, {
532
- key: '_selected_count',
533
- item: {
534
- id: '_selected_count',
535
- type: 'text',
536
- disabled: true,
537
- checkbox: false,
538
- label: selectedIdList.length < 2 ? translations.one_item_selected.replace('%s', selectedIdList.length) : translations.n_items_selected.replace('%s', selectedIdList.length),
539
- centered: true
540
- }
541
- })
542
- ),
543
- React.createElement(HiSelectableList, {
544
- type: type,
545
- parentItemSelectable: parentItemSelectable,
546
- itemList: suggestions,
547
- onSelect: this.handleSelect,
548
- selectedIdList: selectedIdList,
549
- checkbox: checkbox,
550
- hierarchy: this.state.hierarchy,
551
- hierarchic: hierarchic,
552
- hierarchySelected: this.state.hierarchySelected,
553
- translations: translations,
554
- icon: icon,
555
- parentIcon: parentIcon,
556
- hoverIcon: hoverIcon,
557
- checkedIcon: checkedIcon,
558
- allSelected: allSelected,
559
- value: value,
560
- onKeyDown: this.handleKeyDown
561
- })
562
- )
563
- )
564
- )
565
- )
357
+ content
358
+ ))
566
359
  )
567
360
  );
568
361
  }
@@ -592,8 +385,260 @@ HiSelect.defaultProps = {
592
385
  one_item_selected: '%s item selected',
593
386
  n_children: '%s items',
594
387
  one_child: '%s item'
595
- }
388
+ },
389
+ staticPosition: false
596
390
  };
391
+
392
+ var _initialiseProps = function () {
393
+ this.handleClick = () => {
394
+ if (this.state.open) {
395
+ this.handleClose();
396
+ } else {
397
+ if (!this.props.staticPosition) {
398
+ document.body.style.overflow = 'hidden';
399
+ }
400
+ this.setState({ open: true });
401
+ const options = this.props.options.slice();
402
+ this.handleSuggestions(options);
403
+
404
+ if (this.props.onClick) {
405
+ this.props.onClick();
406
+ }
407
+
408
+ // Gestion du focus
409
+ if (this.searchField) {
410
+ // si searchable, focus sur le champs de recherche
411
+ const searchField = this.searchField;
412
+ setTimeout(() => {
413
+ searchField.focus();
414
+ }, 1);
415
+ } else if (this.overlay) {
416
+ // sinon focus sur le dernier élément selectionné
417
+ this.focusOnSelectedItem();
418
+ }
419
+ }
420
+ };
421
+
422
+ this.focusOnSelectedItem = () => {
423
+ // On récupère la div parent "overlay"
424
+ const overlay = findDOMNode(this.overlay);
425
+ const multiple = this.props.multiple;
426
+ const value = this.props.value;
427
+ const selectedIdList = Array.isArray(value) ? value : [value];
428
+ setTimeout(() => {
429
+ let focused = false;
430
+ // Si un ou plusieurs items sont selectionnés, on focus sur le dernier
431
+ if (selectedIdList.length > 0) {
432
+ const itemSelected = overlay.querySelector(`[data-id="${selectedIdList[selectedIdList.length - 1]}"]`);
433
+ if (itemSelected && itemSelected.parentElement.tagName === 'LI') {
434
+ itemSelected.parentElement.focus();
435
+ focused = true;
436
+ }
437
+ }
438
+ // Si pas d'item selectionné, ou pas visible (en cas de recherche), focus sur le premier
439
+ if (selectedIdList.length === 0 || !focused) {
440
+ // On recupère tous les items
441
+ const items = overlay.getElementsByTagName('li');
442
+ let itemToFocus = items[0];
443
+ // Si select multiple, et qu'au moins un selectionné, focus sur le 2e item
444
+ if (multiple && selectedIdList.length > 0) {
445
+ itemToFocus = items[1];
446
+ }
447
+ if (itemToFocus) {
448
+ itemToFocus.focus();
449
+ }
450
+ }
451
+ }, 1);
452
+ };
453
+
454
+ this.handleKeyDown = event => {
455
+ let nextItem;
456
+ if (event.key === 'ArrowDown') {
457
+ nextItem = getNextItemSelectable(document.activeElement, 'down');
458
+ } else if (event.key === 'ArrowUp') {
459
+ nextItem = getNextItemSelectable(document.activeElement, 'up');
460
+ } else if (event.key === 'Tab') {
461
+ if (!this.props.staticPosition) {
462
+ document.body.style.overflow = 'auto';
463
+ }
464
+ this.setState({ open: false });
465
+ }
466
+ if (nextItem) {
467
+ nextItem.focus();
468
+ }
469
+ };
470
+
471
+ this.handleKeyDownSearch = event => {
472
+ if (this.overlay && (event.key === 'ArrowDown' || event.key === 'ArrowUp')) {
473
+ this.focusOnSelectedItem();
474
+ }
475
+ };
476
+
477
+ this.handleFocus = () => {
478
+ this.setState({ focused: true });
479
+ };
480
+
481
+ this.handleBlur = () => {
482
+ this.setState({ focused: false });
483
+ };
484
+
485
+ this.handleClose = () => {
486
+ if (!this.props.staticPosition) {
487
+ document.body.style.overflow = 'auto';
488
+ }
489
+ this.setState({
490
+ open: false
491
+ });
492
+
493
+ if (this.props.onClose) {
494
+ this.props.onClose();
495
+ }
496
+ if (this.selectInputElement) {
497
+ this.selectInputElement.focus();
498
+ }
499
+ };
500
+
501
+ this.handleClickAway = event => {
502
+ // Au clic sur le bouton, on laisse le handleClick fermer le select
503
+ if (!this.selectInputElement.contains(event.target)) {
504
+ this.handleClose(event);
505
+ }
506
+ };
507
+
508
+ this.handleSelect = (event, item) => {
509
+ const { multiple, value, name, onChange, options, hierarchic } = this.props;
510
+ const { hierarchySelected, hierarchy, nbOptions } = this.state;
511
+ const hiSelected = _extends({}, hierarchySelected);
512
+
513
+ if (multiple) {
514
+ let valueList = value;
515
+ if (item.id === '_all') {
516
+ if (valueList.length === nbOptions) {
517
+ valueList = [];
518
+ if (hierarchic) {
519
+ // if hierarchic select => empty associative array of selected children
520
+ _Object$keys(hiSelected).forEach(key => {
521
+ hiSelected[key] = [];
522
+ });
523
+ }
524
+ } else {
525
+ options.forEach(option => {
526
+ if (option.hasChildren !== true && !valueList.includes(option.id) && option.id !== '_all') {
527
+ valueList.push(option.id);
528
+ } else if (option.hasChildren === true) {
529
+ // if hierarchic select => fill associative array of selected children
530
+ hiSelected[option.id] = hierarchy[option.id];
531
+ }
532
+ });
533
+ }
534
+ } else if (valueList.includes(item.id) || item.hasChildren === true && hierarchySelected[item.id].length === hierarchy[item.id].length) {
535
+ // item déjà sélectionné => on le déselectionne
536
+ if (item.hasChildren !== true) {
537
+ valueList = valueList.filter(val => {
538
+ return val !== item.id;
539
+ });
540
+ }
541
+
542
+ if (item.hasChildren === true) {
543
+ // remove all children
544
+ valueList = valueList.filter(val => {
545
+ return !this.state.hierarchy[item.id].includes(val);
546
+ });
547
+ hiSelected[item.id] = [];
548
+ } else if (item.hasOwnProperty('parentId')) {
549
+ // Si item est un enfant on l'enlève du tableau associatif des
550
+ // elmts sélectionnés
551
+ hiSelected[item.parentId].splice(hiSelected[item.parentId].indexOf(item.id), 1);
552
+ }
553
+ } else {
554
+ // item non sélectionné => on le sélectionne
555
+ if (item.hasChildren !== true) valueList.push(item.id);
556
+
557
+ if (item.hasChildren === true) {
558
+ // Si item parent => on ajoute tous les enfants
559
+ // Ou on les supprime s'ils sont déjà tous sélectionnés (dans une liste filtrée)
560
+ const idsInSuggestions = [];
561
+ this.state.suggestions.forEach(suggestion => {
562
+ if (this.state.hierarchy[item.id].includes(suggestion.id)) {
563
+ idsInSuggestions.push(suggestion.id);
564
+ }
565
+ });
566
+ // if(hierarchySelected[item.id].length > 0) {}
567
+ let allChildrenSuggestionsSelected = true;
568
+ idsInSuggestions.forEach(id => {
569
+ if (!hierarchySelected[item.id].includes(id)) {
570
+ allChildrenSuggestionsSelected = false;
571
+ }
572
+ });
573
+
574
+ if (allChildrenSuggestionsSelected === true) {
575
+ // On supprime les enfants car déjà tous sélectionnés
576
+ idsInSuggestions.forEach(id => {
577
+ valueList.splice(valueList.indexOf(id), 1);
578
+ hiSelected[item.id].splice(hiSelected[item.id].indexOf(id), 1);
579
+ });
580
+ } else {
581
+ // On ajoute tous les enfants filtrés au éléments sélectionnés
582
+ valueList = arrayUnique(valueList.concat(idsInSuggestions));
583
+ hiSelected[item.id] = arrayUnique(hiSelected[item.id].concat(idsInSuggestions));
584
+ }
585
+
586
+ this.setState({ hierarchySelected: hiSelected });
587
+ } else if (item.hasOwnProperty('parentId')) {
588
+ // Si item est un enfant on l'ajoute du tableau associatif des
589
+ // elmts sélectionnés
590
+ hiSelected[item.parentId].push(item.id);
591
+ }
592
+ }
593
+ this.setState({ hierarchySelected: hiSelected });
594
+ onChange(event, valueList);
595
+ } else {
596
+ onChange(event, item.id);
597
+ this.handleClose();
598
+ }
599
+ };
600
+
601
+ this.handleSuggestions = suggestions => {
602
+ const { options, hasAll, iconAll, translations, multiple } = this.props;
603
+
604
+ if (suggestions.length === 0) {
605
+ // Handle No Result
606
+ // FIX to remove all item
607
+ suggestions = [];
608
+ suggestions.push({
609
+ id: '_no_result',
610
+ type: 'text',
611
+ disabled: true,
612
+ centered: true,
613
+ checkbox: false,
614
+ label: translations.no_result_match
615
+ });
616
+ } else if (hasAll && suggestions.length > 0 && suggestions.length === options.length && multiple === true) {
617
+ // Handle 'All'
618
+ if (suggestions.filter(suggestion => suggestion.id === '_all').length === 0) {
619
+ const allItem = {
620
+ id: '_all',
621
+ icon: iconAll,
622
+ label: translations.all
623
+ };
624
+ if (iconAll !== false) {
625
+ allItem.type = 'icon';
626
+ }
627
+ suggestions.unshift(allItem);
628
+ }
629
+ }
630
+
631
+ this.setState({
632
+ suggestions
633
+ });
634
+ };
635
+
636
+ this.handleRequestDelete = evt => {
637
+ evt.stopPropagation();
638
+ this.props.onChange(this.props.name, []);
639
+ };
640
+ };
641
+
597
642
  HiSelect.propTypes = process.env.NODE_ENV !== "production" ? {
598
643
  /**
599
644
  * Affiche une checkbox pour chaque éléments, par défaut si options est nested
@@ -623,10 +668,6 @@ HiSelect.propTypes = process.env.NODE_ENV !== "production" ? {
623
668
  * Affiche l'élément 'All'
624
669
  */
625
670
  hasAll: PropTypes.bool,
626
- /**
627
- * Affiche le compte d'éléments sélectionnés en haut de la liste
628
- */
629
- hasSelectedCount: PropTypes.bool,
630
671
  /**
631
672
  * Les items sont hiérarchisés
632
673
  */
@@ -678,6 +719,7 @@ HiSelect.propTypes = process.env.NODE_ENV !== "production" ? {
678
719
  * Fonction de callback appelée lorsqu'on écrit dans la barre de recherche
679
720
  * A utiliser pour les selects avec des données dynamiques
680
721
  *
722
+ * @param {object} event
681
723
  * @param {string} value
682
724
  */
683
725
  onSearch: PropTypes.func,
@@ -693,10 +735,19 @@ HiSelect.propTypes = process.env.NODE_ENV !== "production" ? {
693
735
  * Les items parents sont sélectionnables
694
736
  */
695
737
  parentItemSelectable: PropTypes.bool,
738
+ /**
739
+ * Placeholder affiché lorsque le select est fermé
740
+ * Surcharge le placeholder par défaut
741
+ */
742
+ placeholder: PropTypes.string,
696
743
  /**
697
744
  * Affiche un input de recherche permettant de filtrer les options
698
745
  */
699
746
  searchable: PropTypes.bool,
747
+ /**
748
+ * Si true, le contenu du select sera dans une div static plutot que dans une popper absolute
749
+ */
750
+ staticPosition: PropTypes.bool,
700
751
  /**
701
752
  * Traductions (par défaut en anglais)
702
753
  */