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

Sign up to get free protection for your applications and to get access to all the features.
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 +431 -354
  45. package/HiSelect/HiSelectField.js +8 -6
  46. package/HiSelect/HiSuggestSelect.js +60 -50
  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 +126 -92
  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 +49 -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 +403 -326
  118. package/es/HiSelect/HiSelectField.js +9 -7
  119. package/es/HiSelect/HiSuggestSelect.js +57 -42
  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 +121 -92
  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 +52 -111
  148. package/es/styles/createHiMuiTheme.js +13 -0
  149. package/es/utils/hiHelpers.js +9 -8
  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 +12997 -11186
  414. package/umd/hipay-material-ui.production.min.js +5 -5
  415. package/utils/hiHelpers.js +9 -7
@@ -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
+ }
330
98
 
331
- this.state.hierarchy = hierarchy;
332
- this.state.hierarchySelected = hierarchySelected;
99
+ if (!valueInOptions) {
100
+ throw new Error('prop value provided does not match any option.');
101
+ }
102
+
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,23 +214,35 @@ class HiSelect extends React.PureComponent {
413
214
  hoverIcon,
414
215
  checkedIcon,
415
216
  hierarchic,
416
- id
217
+ id,
218
+ placeholder,
219
+ staticPosition,
220
+ pinnedItem
417
221
  } = this.props;
418
222
 
419
223
  const { open, suggestions, focused } = this.state;
420
224
 
421
225
  let display = '';
422
- const selectedIdList = Array.isArray(value) ? value : [value];
226
+ const selectedIdList = Array.isArray(value) ? value : value ? [value] : [];
227
+
228
+ let _suggestions = [...suggestions];
229
+ if (pinnedItem) {
230
+ _suggestions = [pinnedItem, ...suggestions];
231
+ }
423
232
 
424
233
  if (this.state.dynamic && selectedIdList.length === 1) {
425
234
  display = translations.one_item_selected.replace('%s', selectedIdList.length);
426
235
  } else if (this.state.nbOptions !== selectedIdList.length && selectedIdList.length > 1) {
427
236
  display = translations.n_items_selected.replace('%s', selectedIdList.length);
428
- } else if (this.state.nbOptions === selectedIdList.length) {
237
+ } else if (this.state.nbOptions === selectedIdList.length && this.state.nbOptions >= 1) {
429
238
  display = translations.all;
430
239
  } else if (selectedIdList.length === 1) {
431
240
  if (type !== 'icon') {
432
- display = options.find(o => o.id === selectedIdList[0]).label;
241
+ let item = options.find(o => o.id === selectedIdList[0]);
242
+ if (!item && pinnedItem) {
243
+ item = pinnedItem;
244
+ }
245
+ display = item.label;
433
246
  } else {
434
247
  const optionSelected = options.find(o => o.id === selectedIdList[0]);
435
248
  display = React.createElement(
@@ -442,7 +255,7 @@ class HiSelect extends React.PureComponent {
442
255
  }
443
256
 
444
257
  if (displayAsChip) {
445
- const chipFilter = React.createElement(HiChip, { label: display, onDelete: this.handleRequestDelete });
258
+ const chipFilter = React.createElement(HiChip, { label: placeholder || display, onDelete: this.handleRequestDelete });
446
259
  if (display) {
447
260
  display = chipFilter;
448
261
  }
@@ -462,6 +275,50 @@ class HiSelect extends React.PureComponent {
462
275
  popperStyle = { width: this.props.containerWidth };
463
276
  }
464
277
 
278
+ const content = React.createElement(
279
+ ClickAwayListener,
280
+ { onClickAway: this.handleClickAway },
281
+ React.createElement(
282
+ Grow,
283
+ { 'in': open, id: 'menu-list', style: { transformOrigin: '0 0 0' } },
284
+ React.createElement(
285
+ Paper,
286
+ { className: classes.paper },
287
+ !!searchable && React.createElement(HiSearchField, {
288
+ itemList: options,
289
+ callbackFilteredList: this.handleSuggestions,
290
+ filterPropertyList: ['label'],
291
+ placeholder: translations.search,
292
+ autoFocus: true,
293
+ onSearch: this.props.onSearch,
294
+ inputRef: el => {
295
+ this.searchField = el;
296
+ },
297
+ onKeyDown: this.handleKeyDownSearch
298
+ }),
299
+ React.createElement(HiSelectableList, {
300
+ type: type,
301
+ parentItemSelectable: parentItemSelectable,
302
+ itemList: _suggestions,
303
+ onSelect: this.handleSelect,
304
+ selectedIdList: selectedIdList,
305
+ checkbox: checkbox,
306
+ hierarchy: this.state.hierarchy,
307
+ hierarchic: hierarchic,
308
+ hierarchySelected: this.state.hierarchySelected,
309
+ translations: translations,
310
+ icon: icon,
311
+ parentIcon: parentIcon,
312
+ hoverIcon: hoverIcon,
313
+ checkedIcon: checkedIcon,
314
+ allSelected: allSelected,
315
+ value: value,
316
+ onKeyDown: this.handleKeyDown
317
+ })
318
+ )
319
+ )
320
+ );
321
+
465
322
  return React.createElement(
466
323
  'div',
467
324
  {
@@ -478,7 +335,7 @@ class HiSelect extends React.PureComponent {
478
335
  null,
479
336
  React.createElement(SelectInput, {
480
337
  id: id,
481
- value: display,
338
+ value: placeholder || display,
482
339
  open: open,
483
340
  focused: focused,
484
341
  type: type,
@@ -489,10 +346,17 @@ class HiSelect extends React.PureComponent {
489
346
  onFocus: this.handleFocus,
490
347
  onBlur: this.handleBlur,
491
348
  onMouseEnter: this.props.onMouseEnter,
492
- onMouseLeave: this.props.onMouseLeave
349
+ onMouseLeave: this.props.onMouseLeave,
350
+ refElement: el => {
351
+ this.selectInputElement = el;
352
+ }
493
353
  })
494
354
  ),
495
- open && React.createElement(
355
+ open && (staticPosition ? React.createElement(
356
+ 'div',
357
+ { style: popperStyle },
358
+ content
359
+ ) : React.createElement(
496
360
  Popper,
497
361
  {
498
362
  placement: 'bottom-start',
@@ -500,69 +364,8 @@ class HiSelect extends React.PureComponent {
500
364
  className: popperClass,
501
365
  style: popperStyle
502
366
  },
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
- )
367
+ content
368
+ ))
566
369
  )
567
370
  );
568
371
  }
@@ -592,8 +395,272 @@ HiSelect.defaultProps = {
592
395
  one_item_selected: '%s item selected',
593
396
  n_children: '%s items',
594
397
  one_child: '%s item'
595
- }
398
+ },
399
+ staticPosition: false
596
400
  };
401
+
402
+ var _initialiseProps = function () {
403
+ this.handleClick = () => {
404
+ if (this.state.open) {
405
+ this.handleClose();
406
+ } else {
407
+ if (!this.props.staticPosition) {
408
+ //document.body.style.overflow = 'hidden';
409
+ }
410
+ this.setState({ open: true });
411
+ const options = this.props.options.slice();
412
+ this.handleSuggestions(options);
413
+
414
+ if (this.props.onClick) {
415
+ this.props.onClick();
416
+ }
417
+
418
+ // Gestion du focus
419
+ if (this.searchField) {
420
+ // si searchable, focus sur le champs de recherche
421
+ const searchField = this.searchField;
422
+ setTimeout(() => {
423
+ searchField.focus();
424
+ }, 1);
425
+ } else if (this.overlay) {
426
+ // sinon focus sur le dernier élément selectionné
427
+ this.focusOnSelectedItem();
428
+ }
429
+ }
430
+ };
431
+
432
+ this.focusOnSelectedItem = () => {
433
+ // On récupère la div parent "overlay"
434
+ const overlay = findDOMNode(this.overlay);
435
+ const multiple = this.props.multiple;
436
+ const value = this.props.value;
437
+ const selectedIdList = Array.isArray(value) ? value : [value];
438
+ setTimeout(() => {
439
+ let focused = false;
440
+ // Si un ou plusieurs items sont selectionnés, on focus sur le dernier
441
+ if (selectedIdList.length > 0) {
442
+ const itemSelected = overlay.querySelector(`[data-id="${selectedIdList[selectedIdList.length - 1]}"]`);
443
+ if (itemSelected && itemSelected.parentElement.tagName === 'LI') {
444
+ itemSelected.parentElement.focus();
445
+ focused = true;
446
+ }
447
+ }
448
+ // Si pas d'item selectionné, ou pas visible (en cas de recherche), focus sur le premier
449
+ if (selectedIdList.length === 0 || !focused) {
450
+ // On recupère tous les items
451
+ const items = overlay.getElementsByTagName('li');
452
+ let itemToFocus = items[0];
453
+ // Si select multiple, et qu'au moins un selectionné, focus sur le 2e item
454
+ if (multiple && selectedIdList.length > 0) {
455
+ itemToFocus = items[1];
456
+ }
457
+ if (itemToFocus) {
458
+ itemToFocus.focus();
459
+ }
460
+ }
461
+ }, 1);
462
+ };
463
+
464
+ this.handleKeyDown = event => {
465
+ let nextItem;
466
+ if (event.key === 'ArrowDown') {
467
+ nextItem = getNextItemSelectable(document.activeElement, 'down');
468
+ } else if (event.key === 'ArrowUp') {
469
+ nextItem = getNextItemSelectable(document.activeElement, 'up');
470
+ } else if (event.key === 'Tab') {
471
+ if (!this.props.staticPosition) {
472
+ //document.body.style.overflow = 'auto';
473
+ }
474
+ this.setState({ open: false });
475
+ }
476
+ if (nextItem) {
477
+ nextItem.focus();
478
+ }
479
+ };
480
+
481
+ this.handleKeyDownSearch = event => {
482
+ if (this.overlay && (event.key === 'ArrowDown' || event.key === 'ArrowUp')) {
483
+ this.focusOnSelectedItem();
484
+ }
485
+ };
486
+
487
+ this.handleFocus = () => {
488
+ this.setState({ focused: true });
489
+ };
490
+
491
+ this.handleBlur = () => {
492
+ this.setState({ focused: false });
493
+ };
494
+
495
+ this.handleClose = () => {
496
+ if (!this.props.staticPosition) {
497
+ //document.body.style.overflow = 'auto';
498
+ }
499
+ this.setState({
500
+ open: false
501
+ });
502
+
503
+ if (this.props.onClose) {
504
+ this.props.onClose();
505
+ }
506
+ if (this.selectInputElement) {
507
+ this.selectInputElement.focus();
508
+ }
509
+ };
510
+
511
+ this.handleClickAway = event => {
512
+ // Au clic sur le bouton, on laisse le handleClick fermer le select
513
+ if (!this.selectInputElement.contains(event.target)) {
514
+ this.handleClose(event);
515
+ }
516
+ };
517
+
518
+ this.handleSelect = (event, item) => {
519
+ const { multiple, value, onChange, options, hierarchic, pinnedItem } = this.props;
520
+ const { hierarchySelected, hierarchy, nbOptions } = this.state;
521
+ const hiSelected = _extends({}, hierarchySelected);
522
+
523
+ if (multiple) {
524
+ let valueList = value;
525
+ if (item.id === '_all') {
526
+ if (valueList.length === nbOptions) {
527
+ valueList = [];
528
+ if (hierarchic) {
529
+ // if hierarchic select => empty associative array of selected children
530
+ _Object$keys(hiSelected).forEach(key => {
531
+ hiSelected[key] = [];
532
+ });
533
+ }
534
+ } else {
535
+ options.forEach(option => {
536
+ if (option.hasChildren !== true && !valueList.includes(option.id) && option.id !== '_all') {
537
+ valueList.push(option.id);
538
+ } else if (option.hasChildren === true) {
539
+ // if hierarchic select => fill associative array of selected children
540
+ hiSelected[option.id] = hierarchy[option.id];
541
+ }
542
+ });
543
+ }
544
+ } else if (valueList.includes(item.id) || item.hasChildren === true && hierarchySelected[item.id].length === hierarchy[item.id].length) {
545
+ // item déjà sélectionné => on le déselectionne
546
+ if (item.hasChildren !== true) {
547
+ valueList = valueList.filter(val => {
548
+ return val !== item.id;
549
+ });
550
+ }
551
+
552
+ if (item.hasChildren === true) {
553
+ // remove all children
554
+ valueList = valueList.filter(val => {
555
+ return !this.state.hierarchy[item.id].includes(val);
556
+ });
557
+ hiSelected[item.id] = [];
558
+ } else if (item.hasOwnProperty('parentId')) {
559
+ // Si item est un enfant on l'enlève du tableau associatif des
560
+ // elmts sélectionnés
561
+ hiSelected[item.parentId].splice(hiSelected[item.parentId].indexOf(item.id), 1);
562
+ }
563
+ } else {
564
+ if (pinnedItem && item.id === pinnedItem.id) {
565
+ _Object$keys(hiSelected).map(parentItemId => {
566
+ hiSelected[parentItemId] = [];
567
+ return true;
568
+ });
569
+ valueList = [item.id];
570
+ } else {
571
+ // item non sélectionné => on le sélectionne
572
+ if (item.hasChildren !== true) valueList.push(item.id);
573
+
574
+ if (pinnedItem && valueList.includes(pinnedItem.id)) {
575
+ valueList.splice(valueList.indexOf(pinnedItem.id), 1);
576
+ }
577
+ }
578
+
579
+ if (item.hasChildren === true) {
580
+ // Si item parent => on ajoute tous les enfants
581
+ // Ou on les supprime s'ils sont déjà tous sélectionnés (dans une liste filtrée)
582
+ const idsInSuggestions = [];
583
+ this.state.suggestions.forEach(suggestion => {
584
+ if (this.state.hierarchy[item.id].includes(suggestion.id)) {
585
+ idsInSuggestions.push(suggestion.id);
586
+ }
587
+ });
588
+ // if(hierarchySelected[item.id].length > 0) {}
589
+ let allChildrenSuggestionsSelected = true;
590
+ idsInSuggestions.forEach(id => {
591
+ if (!hierarchySelected[item.id].includes(id)) {
592
+ allChildrenSuggestionsSelected = false;
593
+ }
594
+ });
595
+
596
+ if (allChildrenSuggestionsSelected === true) {
597
+ // On supprime les enfants car déjà tous sélectionnés
598
+ idsInSuggestions.forEach(id => {
599
+ valueList.splice(valueList.indexOf(id), 1);
600
+ hiSelected[item.id].splice(hiSelected[item.id].indexOf(id), 1);
601
+ });
602
+ } else {
603
+ // On ajoute tous les enfants filtrés au éléments sélectionnés
604
+ valueList = arrayUnique(valueList.concat(idsInSuggestions));
605
+ hiSelected[item.id] = arrayUnique(hiSelected[item.id].concat(idsInSuggestions));
606
+ }
607
+
608
+ this.setState({ hierarchySelected: hiSelected });
609
+ } else if (item.hasOwnProperty('parentId')) {
610
+ // Si item est un enfant on l'ajoute du tableau associatif des
611
+ // elmts sélectionnés
612
+ hiSelected[item.parentId].push(item.id);
613
+ }
614
+ }
615
+ this.setState({ hierarchySelected: hiSelected });
616
+ onChange(event, valueList);
617
+ } else {
618
+ onChange(event, item.id);
619
+ this.handleClose();
620
+ }
621
+ };
622
+
623
+ this.handleSuggestions = suggestions => {
624
+ const { options, hasAll, iconAll, translations, multiple } = this.props;
625
+
626
+ if (suggestions.length === 0) {
627
+ // Handle No Result
628
+ // FIX to remove all item
629
+ suggestions = [];
630
+ suggestions.push({
631
+ id: '_no_result',
632
+ type: 'text',
633
+ disabled: true,
634
+ centered: true,
635
+ checkbox: false,
636
+ label: translations.no_result_match
637
+ });
638
+ } else if (hasAll && suggestions.length > 0 && suggestions.length === options.length && multiple === true) {
639
+ // Handle 'All'
640
+ if (suggestions.filter(suggestion => suggestion.id === '_all').length === 0) {
641
+ const allItem = {
642
+ id: '_all',
643
+ icon: iconAll,
644
+ label: translations.all
645
+ };
646
+ if (iconAll !== false) {
647
+ allItem.type = 'icon';
648
+ }
649
+ suggestions.unshift(allItem);
650
+ }
651
+ }
652
+
653
+ this.setState({
654
+ suggestions
655
+ });
656
+ };
657
+
658
+ this.handleRequestDelete = evt => {
659
+ evt.stopPropagation();
660
+ this.props.onChange(this.props.name, []);
661
+ };
662
+ };
663
+
597
664
  HiSelect.propTypes = process.env.NODE_ENV !== "production" ? {
598
665
  /**
599
666
  * Affiche une checkbox pour chaque éléments, par défaut si options est nested
@@ -623,10 +690,6 @@ HiSelect.propTypes = process.env.NODE_ENV !== "production" ? {
623
690
  * Affiche l'élément 'All'
624
691
  */
625
692
  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
693
  /**
631
694
  * Les items sont hiérarchisés
632
695
  */
@@ -678,6 +741,7 @@ HiSelect.propTypes = process.env.NODE_ENV !== "production" ? {
678
741
  * Fonction de callback appelée lorsqu'on écrit dans la barre de recherche
679
742
  * A utiliser pour les selects avec des données dynamiques
680
743
  *
744
+ * @param {object} event
681
745
  * @param {string} value
682
746
  */
683
747
  onSearch: PropTypes.func,
@@ -693,10 +757,23 @@ HiSelect.propTypes = process.env.NODE_ENV !== "production" ? {
693
757
  * Les items parents sont sélectionnables
694
758
  */
695
759
  parentItemSelectable: PropTypes.bool,
760
+ /**
761
+ * Item épinglé en début de liste
762
+ */
763
+ pinnedItem: PropTypes.object,
764
+ /**
765
+ * Placeholder affiché lorsque le select est fermé
766
+ * Surcharge le placeholder par défaut
767
+ */
768
+ placeholder: PropTypes.string,
696
769
  /**
697
770
  * Affiche un input de recherche permettant de filtrer les options
698
771
  */
699
772
  searchable: PropTypes.bool,
773
+ /**
774
+ * Si true, le contenu du select sera dans une div static plutot que dans une popper absolute
775
+ */
776
+ staticPosition: PropTypes.bool,
700
777
  /**
701
778
  * Traductions (par défaut en anglais)
702
779
  */