@zohodesk/components 1.0.0-alpha-271 → 1.0.0-alpha-272

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 (352) hide show
  1. package/README.md +4 -0
  2. package/es/Accordion/Accordion.js +7 -3
  3. package/es/Accordion/AccordionItem.js +4 -2
  4. package/es/Animation/Animation.js +3 -3
  5. package/es/AppContainer/AppContainer.js +13 -5
  6. package/es/Avatar/Avatar.js +23 -11
  7. package/es/AvatarTeam/AvatarTeam.js +3 -3
  8. package/es/Button/Button.js +4 -3
  9. package/es/Buttongroup/Buttongroup.js +3 -3
  10. package/es/Card/Card.js +21 -10
  11. package/es/CheckBox/CheckBox.js +5 -3
  12. package/es/DateTime/CalendarView.js +32 -20
  13. package/es/DateTime/DateTime.js +75 -10
  14. package/es/DateTime/DateTimePopupFooter.js +4 -2
  15. package/es/DateTime/DateTimePopupHeader.js +8 -2
  16. package/es/DateTime/DateWidget.js +98 -35
  17. package/es/DateTime/DaysRow.js +4 -2
  18. package/es/DateTime/Time.js +10 -2
  19. package/es/DateTime/YearView.js +28 -4
  20. package/es/DateTime/__tests__/CalendarView.spec.js +1 -0
  21. package/es/DateTime/__tests__/DateTime.spec.js +1 -0
  22. package/es/DateTime/__tests__/DateWidget.spec.js +2 -3
  23. package/es/DateTime/common.js +3 -0
  24. package/es/DateTime/constants.js +1 -0
  25. package/es/DateTime/dateFormatUtils/dateFormat.js +63 -30
  26. package/es/DateTime/dateFormatUtils/dateFormats.js +0 -1
  27. package/es/DateTime/dateFormatUtils/dayChange.js +13 -4
  28. package/es/DateTime/dateFormatUtils/index.js +32 -2
  29. package/es/DateTime/dateFormatUtils/monthChange.js +8 -0
  30. package/es/DateTime/dateFormatUtils/timeChange.js +22 -6
  31. package/es/DateTime/dateFormatUtils/yearChange.js +11 -2
  32. package/es/DateTime/objectUtils.js +14 -20
  33. package/es/DateTime/props/defaultProps.js +2 -1
  34. package/es/DateTime/typeChecker.js +3 -0
  35. package/es/DateTime/validator.js +58 -6
  36. package/es/DropBox/DropBox.js +6 -2
  37. package/es/DropBox/DropBoxElement/DropBoxElement.js +7 -0
  38. package/es/DropBox/DropBoxElement/css/cssJSLogic.js +5 -3
  39. package/es/DropBox/DropBoxElement/useDropboxPosCalc.js +3 -0
  40. package/es/DropBox/props/defaultProps.js +1 -2
  41. package/es/DropBox/props/propTypes.js +1 -2
  42. package/es/DropDown/DropDown.js +8 -4
  43. package/es/DropDown/DropDownHeading.js +4 -5
  44. package/es/DropDown/DropDownItem.js +6 -0
  45. package/es/DropDown/DropDownSearch.js +4 -0
  46. package/es/DropDown/DropDownSeparator.js +1 -0
  47. package/es/DropDown/__tests__/DropDown.spec.js +1 -2
  48. package/es/Heading/Heading.js +2 -3
  49. package/es/Label/Label.js +2 -3
  50. package/es/Layout/Box.js +13 -0
  51. package/es/Layout/Container.js +12 -1
  52. package/es/Layout/index.js +1 -2
  53. package/es/ListItem/ListContainer.js +8 -3
  54. package/es/ListItem/ListItem.js +9 -3
  55. package/es/ListItem/ListItemWithAvatar.js +9 -3
  56. package/es/ListItem/ListItemWithCheckBox.js +7 -2
  57. package/es/ListItem/ListItemWithIcon.js +8 -3
  58. package/es/ListItem/ListItemWithRadio.js +7 -3
  59. package/es/Modal/Modal.js +28 -11
  60. package/es/MultiSelect/AdvancedGroupMultiSelect.js +89 -13
  61. package/es/MultiSelect/AdvancedMultiSelect.js +32 -9
  62. package/es/MultiSelect/EmptyState.js +2 -0
  63. package/es/MultiSelect/MultiSelect.js +99 -32
  64. package/es/MultiSelect/MultiSelectHeader.js +3 -0
  65. package/es/MultiSelect/MultiSelectWithAvatar.js +12 -6
  66. package/es/MultiSelect/SelectedOptions.js +6 -3
  67. package/es/MultiSelect/Suggestions.js +7 -3
  68. package/es/MultiSelect/__tests__/MultiSelect.spec.js +4 -6
  69. package/es/MultiSelect/props/propTypes.js +2 -0
  70. package/es/PopOver/PopOver.js +18 -2
  71. package/es/PopOver/__tests__/PopOver.spec.js +2 -1
  72. package/es/Popup/Popup.js +77 -24
  73. package/es/Popup/__tests__/Popup.spec.js +17 -5
  74. package/es/Popup/viewPort.js +16 -4
  75. package/es/Provider/IdProvider.js +10 -5
  76. package/es/Provider/LibraryContext.js +6 -4
  77. package/es/Provider/NumberGenerator/NumberGenerator.js +21 -7
  78. package/es/Provider/ZindexProvider.js +9 -2
  79. package/es/Radio/Radio.js +4 -2
  80. package/es/Responsive/CustomResponsive.js +30 -18
  81. package/es/Responsive/RefWrapper.js +6 -7
  82. package/es/Responsive/ResizeComponent.js +35 -25
  83. package/es/Responsive/ResizeObserver.js +26 -6
  84. package/es/Responsive/Responsive.js +34 -20
  85. package/es/Responsive/index.js +1 -3
  86. package/es/Responsive/sizeObservers.js +28 -7
  87. package/es/Responsive/utils/index.js +7 -5
  88. package/es/Responsive/utils/shallowCompare.js +7 -2
  89. package/es/Responsive/windowResizeObserver.js +7 -0
  90. package/es/ResponsiveDropBox/ResponsiveDropBox.js +4 -0
  91. package/es/Ribbon/Ribbon.js +3 -2
  92. package/es/RippleEffect/RippleEffect.js +1 -3
  93. package/es/Select/GroupSelect.js +58 -14
  94. package/es/Select/Select.js +79 -33
  95. package/es/Select/SelectWithAvatar.js +17 -4
  96. package/es/Select/SelectWithIcon.js +46 -5
  97. package/es/Select/__tests__/Select.spec.js +6 -8
  98. package/es/Select/props/propTypes.js +1 -0
  99. package/es/Stencils/Stencils.js +3 -3
  100. package/es/Switch/Switch.js +5 -3
  101. package/es/Tab/Tab.js +4 -4
  102. package/es/Tab/TabContent.js +1 -0
  103. package/es/Tab/TabContentWrapper.js +2 -0
  104. package/es/Tab/TabWrapper.js +5 -2
  105. package/es/Tab/Tabs.js +54 -7
  106. package/es/Tab/__tests__/Tab.spec.js +1 -3
  107. package/es/Tab/__tests__/TabWrapper.spec.js +1 -0
  108. package/es/Tag/Tag.js +6 -3
  109. package/es/TextBox/TextBox.js +15 -3
  110. package/es/TextBox/__tests__/TextBox.spec.js +1 -4
  111. package/es/TextBoxIcon/TextBoxIcon.js +9 -2
  112. package/es/TextBoxIcon/__tests__/TextBoxIcon.spec.js +2 -7
  113. package/es/Textarea/Textarea.js +12 -3
  114. package/es/Textarea/__tests__/Textarea.spec.js +2 -2
  115. package/es/Tooltip/Tooltip.js +58 -14
  116. package/es/Tooltip/__tests__/Tooltip.spec.js +5 -0
  117. package/es/VelocityAnimation/VelocityAnimation/VelocityAnimation.js +3 -2
  118. package/es/VelocityAnimation/VelocityAnimationGroup/VelocityAnimationGroup.js +7 -5
  119. package/es/deprecated/PortalLayer/PortalLayer.js +25 -20
  120. package/es/semantic/Button/Button.js +3 -2
  121. package/es/utils/Common.js +54 -9
  122. package/es/utils/ContextOptimizer.js +4 -5
  123. package/es/utils/__tests__/debounce.spec.js +2 -2
  124. package/es/utils/constructFullName.js +2 -0
  125. package/es/utils/css/compileClassNames.js +5 -0
  126. package/es/utils/css/mergeStyle.js +7 -6
  127. package/es/utils/css/utils.js +1 -0
  128. package/es/utils/datetime/GMTZones.js +48 -0
  129. package/es/utils/datetime/common.js +31 -7
  130. package/es/utils/debounce.js +5 -1
  131. package/es/utils/dropDownUtils.js +68 -11
  132. package/es/utils/getInitial.js +4 -0
  133. package/es/utils/shallowEqual.js +6 -0
  134. package/lib/Accordion/Accordion.js +42 -18
  135. package/lib/Accordion/AccordionItem.js +40 -18
  136. package/lib/Accordion/__tests__/Accordion.spec.js +3 -0
  137. package/lib/Accordion/index.js +3 -0
  138. package/lib/Accordion/props/propTypes.js +3 -0
  139. package/lib/Animation/Animation.js +38 -18
  140. package/lib/Animation/__tests__/Animation.spec.js +11 -7
  141. package/lib/Animation/props/propTypes.js +3 -0
  142. package/lib/AppContainer/AppContainer.js +56 -21
  143. package/lib/AppContainer/props/propTypes.js +3 -0
  144. package/lib/Avatar/Avatar.js +78 -38
  145. package/lib/Avatar/__tests__/Avatar.spec.js +44 -0
  146. package/lib/Avatar/props/propTypes.js +3 -0
  147. package/lib/AvatarTeam/AvatarTeam.js +52 -30
  148. package/lib/AvatarTeam/__tests__/AvatarTeam.spec.js +13 -0
  149. package/lib/AvatarTeam/props/propTypes.js +3 -0
  150. package/lib/Button/Button.js +31 -20
  151. package/lib/Button/css/cssJSLogic.js +18 -17
  152. package/lib/Button/index.js +3 -0
  153. package/lib/Button/props/defaultProps.js +2 -0
  154. package/lib/Button/props/propTypes.js +3 -0
  155. package/lib/Buttongroup/Buttongroup.js +32 -12
  156. package/lib/Buttongroup/__test__/Buttongroup.spec.js +10 -0
  157. package/lib/Buttongroup/props/propTypes.js +3 -0
  158. package/lib/Card/Card.js +102 -46
  159. package/lib/Card/__tests__/Card.spec.js +10 -1
  160. package/lib/Card/index.js +4 -0
  161. package/lib/Card/props/propTypes.js +3 -0
  162. package/lib/CheckBox/CheckBox.js +71 -47
  163. package/lib/CheckBox/__tests__/CheckBox.spec.js +3 -0
  164. package/lib/CheckBox/props/propTypes.js +3 -0
  165. package/lib/DateTime/CalendarView.js +82 -42
  166. package/lib/DateTime/DateTime.js +246 -158
  167. package/lib/DateTime/DateTimePopupFooter.js +31 -8
  168. package/lib/DateTime/DateTimePopupHeader.js +48 -17
  169. package/lib/DateTime/DateWidget.js +352 -250
  170. package/lib/DateTime/DaysRow.js +27 -5
  171. package/lib/DateTime/Time.js +73 -32
  172. package/lib/DateTime/YearView.js +77 -28
  173. package/lib/DateTime/__tests__/CalendarView.spec.js +13 -5
  174. package/lib/DateTime/__tests__/DateTime.spec.js +51 -37
  175. package/lib/DateTime/__tests__/DateWidget.spec.js +10 -8
  176. package/lib/DateTime/common.js +6 -0
  177. package/lib/DateTime/constants.js +1 -0
  178. package/lib/DateTime/dateFormatUtils/dateFormat.js +184 -122
  179. package/lib/DateTime/dateFormatUtils/dateFormats.js +0 -1
  180. package/lib/DateTime/dateFormatUtils/dayChange.js +14 -7
  181. package/lib/DateTime/dateFormatUtils/index.js +74 -16
  182. package/lib/DateTime/dateFormatUtils/monthChange.js +19 -9
  183. package/lib/DateTime/dateFormatUtils/timeChange.js +54 -22
  184. package/lib/DateTime/dateFormatUtils/yearChange.js +22 -11
  185. package/lib/DateTime/index.js +2 -0
  186. package/lib/DateTime/objectUtils.js +24 -20
  187. package/lib/DateTime/props/defaultProps.js +2 -1
  188. package/lib/DateTime/props/propTypes.js +11 -1
  189. package/lib/DateTime/typeChecker.js +4 -0
  190. package/lib/DateTime/validator.js +73 -10
  191. package/lib/DropBox/DropBox.js +34 -10
  192. package/lib/DropBox/DropBoxElement/DropBoxElement.js +59 -38
  193. package/lib/DropBox/DropBoxElement/css/cssJSLogic.js +42 -34
  194. package/lib/DropBox/DropBoxElement/props/propTypes.js +3 -0
  195. package/lib/DropBox/DropBoxElement/useDropboxPosCalc.js +14 -9
  196. package/lib/DropBox/__tests__/DropBox.spec.js +6 -2
  197. package/lib/DropBox/css/cssJSLogic.js +3 -1
  198. package/lib/DropBox/props/defaultProps.js +8 -4
  199. package/lib/DropBox/props/propTypes.js +10 -4
  200. package/lib/DropDown/DropDown.js +52 -8
  201. package/lib/DropDown/DropDownHeading.js +39 -20
  202. package/lib/DropDown/DropDownItem.js +42 -20
  203. package/lib/DropDown/DropDownSearch.js +40 -17
  204. package/lib/DropDown/DropDownSeparator.js +24 -4
  205. package/lib/DropDown/__tests__/DropDown.spec.js +15 -9
  206. package/lib/DropDown/__tests__/DropDownItem.spec.js +9 -4
  207. package/lib/DropDown/__tests__/DropDownSearch.spec.js +3 -0
  208. package/lib/DropDown/index.js +9 -0
  209. package/lib/DropDown/props/propTypes.js +6 -4
  210. package/lib/Heading/Heading.js +37 -15
  211. package/lib/Heading/props/propTypes.js +3 -0
  212. package/lib/Label/Label.js +39 -19
  213. package/lib/Label/__tests__/Label.spec.js +14 -1
  214. package/lib/Label/props/propTypes.js +3 -0
  215. package/lib/Layout/Box.js +31 -11
  216. package/lib/Layout/Container.js +29 -10
  217. package/lib/Layout/__tests__/Box.spec.js +65 -49
  218. package/lib/Layout/__tests__/Container.spec.js +67 -50
  219. package/lib/Layout/index.js +3 -0
  220. package/lib/Layout/props/propTypes.js +3 -0
  221. package/lib/Layout/utils.js +10 -0
  222. package/lib/ListItem/ListContainer.js +48 -27
  223. package/lib/ListItem/ListItem.js +69 -45
  224. package/lib/ListItem/ListItemWithAvatar.js +75 -48
  225. package/lib/ListItem/ListItemWithCheckBox.js +64 -39
  226. package/lib/ListItem/ListItemWithIcon.js +68 -44
  227. package/lib/ListItem/ListItemWithRadio.js +65 -41
  228. package/lib/ListItem/index.js +7 -0
  229. package/lib/ListItem/props/propTypes.js +6 -4
  230. package/lib/Modal/Modal.js +45 -10
  231. package/lib/Modal/props/propTypes.js +3 -0
  232. package/lib/MultiSelect/AdvancedGroupMultiSelect.js +294 -166
  233. package/lib/MultiSelect/AdvancedMultiSelect.js +202 -125
  234. package/lib/MultiSelect/EmptyState.js +45 -24
  235. package/lib/MultiSelect/MultiSelect.js +323 -206
  236. package/lib/MultiSelect/MultiSelectHeader.js +30 -8
  237. package/lib/MultiSelect/MultiSelectWithAvatar.js +105 -63
  238. package/lib/MultiSelect/SelectedOptions.js +43 -17
  239. package/lib/MultiSelect/Suggestions.js +64 -32
  240. package/lib/MultiSelect/__tests__/MultiSelect.spec.js +86 -75
  241. package/lib/MultiSelect/index.js +5 -0
  242. package/lib/MultiSelect/props/defaultProps.js +2 -0
  243. package/lib/MultiSelect/props/propTypes.js +5 -0
  244. package/lib/PopOver/PopOver.js +95 -49
  245. package/lib/PopOver/__tests__/PopOver.spec.js +4 -1
  246. package/lib/PopOver/index.js +4 -0
  247. package/lib/PopOver/props/propTypes.js +3 -0
  248. package/lib/Popup/Popup.js +158 -81
  249. package/lib/Popup/__tests__/Popup.spec.js +43 -8
  250. package/lib/Popup/viewPort.js +28 -14
  251. package/lib/Provider/AvatarSize.js +4 -0
  252. package/lib/Provider/Config.js +2 -0
  253. package/lib/Provider/CssProvider.js +4 -0
  254. package/lib/Provider/IdProvider.js +17 -6
  255. package/lib/Provider/LibraryContext.js +35 -15
  256. package/lib/Provider/LibraryContextInit.js +4 -0
  257. package/lib/Provider/NumberGenerator/NumberGenerator.js +44 -15
  258. package/lib/Provider/ZindexProvider.js +15 -3
  259. package/lib/Provider/index.js +5 -0
  260. package/lib/Radio/Radio.js +61 -38
  261. package/lib/Radio/__tests__/Radiospec.js +9 -5
  262. package/lib/Radio/props/propTypes.js +3 -0
  263. package/lib/Responsive/CustomResponsive.js +73 -29
  264. package/lib/Responsive/RefWrapper.js +17 -11
  265. package/lib/Responsive/ResizeComponent.js +62 -36
  266. package/lib/Responsive/ResizeObserver.js +24 -10
  267. package/lib/Responsive/Responsive.js +80 -30
  268. package/lib/Responsive/index.js +4 -0
  269. package/lib/Responsive/props/propTypes.js +3 -0
  270. package/lib/Responsive/sizeObservers.js +53 -17
  271. package/lib/Responsive/utils/index.js +11 -3
  272. package/lib/Responsive/utils/shallowCompare.js +11 -2
  273. package/lib/Responsive/windowResizeObserver.js +8 -0
  274. package/lib/ResponsiveDropBox/ResponsiveDropBox.js +45 -17
  275. package/lib/ResponsiveDropBox/props/propTypes.js +3 -0
  276. package/lib/Ribbon/Ribbon.js +33 -13
  277. package/lib/Ribbon/__tests__/Ribbon.spec.js +22 -0
  278. package/lib/Ribbon/props/propTypes.js +3 -0
  279. package/lib/RippleEffect/RippleEffect.js +18 -10
  280. package/lib/RippleEffect/props/propTypes.js +3 -0
  281. package/lib/Select/GroupSelect.js +229 -130
  282. package/lib/Select/Select.js +290 -209
  283. package/lib/Select/SelectWithAvatar.js +102 -56
  284. package/lib/Select/SelectWithIcon.js +132 -76
  285. package/lib/Select/__tests__/Select.spec.js +133 -91
  286. package/lib/Select/index.js +5 -0
  287. package/lib/Select/props/defaultProps.js +5 -4
  288. package/lib/Select/props/propTypes.js +4 -0
  289. package/lib/Stencils/Stencils.js +29 -10
  290. package/lib/Stencils/__tests__/Stencils.spec.js +12 -0
  291. package/lib/Stencils/props/propTypes.js +3 -0
  292. package/lib/Switch/Switch.js +57 -34
  293. package/lib/Switch/props/propTypes.js +3 -0
  294. package/lib/Tab/Tab.js +40 -27
  295. package/lib/Tab/TabContent.js +12 -5
  296. package/lib/Tab/TabContentWrapper.js +13 -6
  297. package/lib/Tab/TabWrapper.js +37 -19
  298. package/lib/Tab/Tabs.js +171 -91
  299. package/lib/Tab/__tests__/Tab.spec.js +67 -58
  300. package/lib/Tab/__tests__/TabContent.spec.js +10 -6
  301. package/lib/Tab/__tests__/TabContentWrapper.spec.js +28 -20
  302. package/lib/Tab/__tests__/TabWrapper.spec.js +12 -0
  303. package/lib/Tab/__tests__/Tabs.spec.js +53 -39
  304. package/lib/Tab/index.js +6 -0
  305. package/lib/Tab/props/propTypes.js +3 -0
  306. package/lib/Tag/Tag.js +72 -43
  307. package/lib/Tag/__tests__/Tag.spec.js +14 -8
  308. package/lib/Tag/props/propTypes.js +3 -0
  309. package/lib/TextBox/TextBox.js +85 -59
  310. package/lib/TextBox/__tests__/TextBox.spec.js +14 -4
  311. package/lib/TextBox/props/propTypes.js +6 -4
  312. package/lib/TextBoxIcon/TextBoxIcon.js +79 -52
  313. package/lib/TextBoxIcon/__tests__/TextBoxIcon.spec.js +14 -5
  314. package/lib/TextBoxIcon/props/propTypes.js +3 -0
  315. package/lib/Textarea/Textarea.js +54 -29
  316. package/lib/Textarea/__tests__/Textarea.spec.js +14 -2
  317. package/lib/Textarea/props/propTypes.js +3 -0
  318. package/lib/Tooltip/Tooltip.js +94 -31
  319. package/lib/Tooltip/__tests__/Tooltip.spec.js +24 -3
  320. package/lib/Tooltip/props/propTypes.js +3 -0
  321. package/lib/VelocityAnimation/VelocityAnimation/VelocityAnimation.js +40 -16
  322. package/lib/VelocityAnimation/VelocityAnimation/props/propTypes.js +3 -0
  323. package/lib/VelocityAnimation/VelocityAnimationGroup/VelocityAnimationGroup.js +53 -25
  324. package/lib/VelocityAnimation/VelocityAnimationGroup/props/propTypes.js +3 -0
  325. package/lib/VelocityAnimation/index.js +3 -0
  326. package/lib/css.js +40 -0
  327. package/lib/deprecated/PortalLayer/PortalLayer.js +46 -23
  328. package/lib/deprecated/PortalLayer/props/propTypes.js +3 -0
  329. package/lib/index.js +57 -0
  330. package/lib/semantic/Button/Button.js +42 -22
  331. package/lib/semantic/Button/props/propTypes.js +3 -0
  332. package/lib/semantic/index.js +2 -0
  333. package/lib/utils/Common.js +110 -18
  334. package/lib/utils/ContextOptimizer.js +16 -10
  335. package/lib/utils/__tests__/constructFullName.spec.js +1 -0
  336. package/lib/utils/__tests__/debounce.spec.js +3 -2
  337. package/lib/utils/__tests__/getInitial.spec.js +1 -0
  338. package/lib/utils/constructFullName.js +13 -4
  339. package/lib/utils/css/compileClassNames.js +6 -0
  340. package/lib/utils/css/mergeStyle.js +10 -7
  341. package/lib/utils/css/utils.js +8 -0
  342. package/lib/utils/datetime/GMTZones.js +55 -0
  343. package/lib/utils/datetime/common.js +52 -7
  344. package/lib/utils/debounce.js +6 -1
  345. package/lib/utils/dropDownUtils.js +175 -59
  346. package/lib/utils/dummyFunction.js +2 -0
  347. package/lib/utils/getHTMLFontSize.js +1 -0
  348. package/lib/utils/getInitial.js +6 -0
  349. package/lib/utils/index.js +4 -0
  350. package/lib/utils/scrollTo.js +2 -0
  351. package/lib/utils/shallowEqual.js +8 -0
  352. package/package.json +1 -1
@@ -1,9 +1,11 @@
1
1
  function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
2
+
2
3
  /**** Libraries ****/
3
4
  import React, { Component } from 'react';
4
5
  import { Select_defaultProps } from './props/defaultProps';
5
6
  import { Select_propTypes } from './props/propTypes';
6
7
  /**** Components ****/
8
+
7
9
  import Popup from '../Popup/Popup';
8
10
  import TextBoxIcon from '../TextBoxIcon/TextBoxIcon';
9
11
  import { Container, Box } from '../Layout';
@@ -16,15 +18,16 @@ import { Icon } from '@zohodesk/icons';
16
18
  import ResponsiveDropBox from '../ResponsiveDropBox/ResponsiveDropBox';
17
19
  import { ResponsiveReceiver } from '../Responsive/CustomResponsive';
18
20
  import Loader from '@zohodesk/svg/lib/Loader/Loader';
19
-
20
21
  /**** Methods ****/
22
+
21
23
  import { makeFormatOptions, makeGetMultiSelectFilterSuggestions as makeGetFilterSuggestions, makeGetSelectedValueText as makeGetSelectedValue } from '../utils/dropDownUtils';
22
24
  import { debounce, scrollTo, getIsEmptyValue, getSearchString, findScrollEnd } from '../utils/Common.js';
23
25
  /**** CSS ****/
26
+
24
27
  import style from './Select.module.css';
25
28
  import { getLibraryConfig } from '../Provider/Config';
26
-
27
29
  /* eslint-disable react/no-deprecated */
30
+
28
31
  /* eslint-disable react/no-unused-prop-types */
29
32
 
30
33
  let dummyArray = [];
@@ -65,9 +68,10 @@ export class SelectComponent extends Component {
65
68
  valueField,
66
69
  textField
67
70
  });
68
- if (isSelfValueChanged) {
69
- // onChange && onChange(selectedId, normalizedAllOptions[selectedId]);
71
+
72
+ if (isSelfValueChanged) {// onChange && onChange(selectedId, normalizedAllOptions[selectedId]);
70
73
  }
74
+
71
75
  this.state = {
72
76
  selected,
73
77
  options: allOptions,
@@ -110,10 +114,10 @@ export class SelectComponent extends Component {
110
114
  this.autoSelectSuggestions = [];
111
115
  this.autoSelectIndex = 0;
112
116
  }
117
+
113
118
  componentDidMount() {
114
119
  this._isMounted = true;
115
- this.handleExposePopupHandlers();
116
- // let { suggestionContainer } = this;
120
+ this.handleExposePopupHandlers(); // let { suggestionContainer } = this;
117
121
  // suggestionContainer &&
118
122
  // suggestionContainer.addEventListener('scroll', this.handleScroll);
119
123
  }
@@ -155,9 +159,10 @@ export class SelectComponent extends Component {
155
159
  let {
156
160
  selectedValue: oldSelectedValue
157
161
  } = this.props;
158
- if (isSelfValueChanged && oldSelectedValue !== selectedValue) {
159
- // onChange && onChange(selectedId, normalizedAllOptions[selectedId]);
162
+
163
+ if (isSelfValueChanged && oldSelectedValue !== selectedValue) {// onChange && onChange(selectedId, normalizedAllOptions[selectedId]);
160
164
  }
165
+
161
166
  this.selectedFormatOptions = Object.assign(oldSelectedFormatOptions, selectedValueDetails);
162
167
  this.normalizedFormatOptions = normalizedFormatOptions;
163
168
  this.optionsOrder = optionsOrder;
@@ -170,6 +175,7 @@ export class SelectComponent extends Component {
170
175
  selectedValueIndex: hoverIndex
171
176
  });
172
177
  }
178
+
173
179
  componentDidUpdate(prevProps) {
174
180
  let {
175
181
  suggestionContainer,
@@ -192,6 +198,7 @@ export class SelectComponent extends Component {
192
198
  let hoverId = getIsEmptyValue(optionsOrder[hoverIndex]) ? '' : optionsOrder[hoverIndex];
193
199
  let selSuggestion = this[`suggestion_${hoverId}`];
194
200
  isPopupOpen && scrollTo(suggestionContainer, selSuggestion);
201
+
195
202
  if (prevProps.isPopupOpen !== isPopupOpen) {
196
203
  if (isPopupOpen) {
197
204
  onDropBoxOpen && this.handleFetchOptions(onDropBoxOpen, searchStr);
@@ -209,20 +216,22 @@ export class SelectComponent extends Component {
209
216
  hoverIndex: selectedValueIndex
210
217
  });
211
218
  }
212
- }
219
+ } //When suggestions length less than 5, getNextOptions function call
220
+
213
221
 
214
- //When suggestions length less than 5, getNextOptions function call
215
222
  let {
216
223
  isNextOptions,
217
224
  getNextOptions
218
- } = this.props;
219
- // let { searchStr } = this.state;
225
+ } = this.props; // let { searchStr } = this.state;
226
+
220
227
  let suggestions = isPopupOpen ? this.handleFilterSuggestions() : [];
221
228
  let suggestionsLen = suggestions.length;
229
+
222
230
  if (isPopupOpen && suggestionsLen <= 5 && isNextOptions && getNextOptions && !needLocalSearch) {
223
231
  this.handleFetchOptions(getNextOptions, searchStr);
224
232
  }
225
233
  }
234
+
226
235
  componentWillUnmount() {
227
236
  this._isMounted = false;
228
237
  let {
@@ -234,8 +243,7 @@ export class SelectComponent extends Component {
234
243
  closePopup: null,
235
244
  togglePopup: null
236
245
  };
237
- getPopupHandlers && getPopupHandlers(methods);
238
- // let { suggestionContainer } = this;
246
+ getPopupHandlers && getPopupHandlers(methods); // let { suggestionContainer } = this;
239
247
  // suggestionContainer &&
240
248
  // suggestionContainer.removeEventListener('scroll', this.handleScroll);
241
249
  }
@@ -257,6 +265,7 @@ export class SelectComponent extends Component {
257
265
  listItemProps
258
266
  });
259
267
  }
268
+
260
269
  handleChange(id, value, index, e) {
261
270
  e && e.preventDefault && e.preventDefault();
262
271
  let {
@@ -267,10 +276,11 @@ export class SelectComponent extends Component {
267
276
  let {
268
277
  optionsNormalize
269
278
  } = this.state;
270
- !isReadOnly && onChange && onChange(id, optionsNormalize[id]);
271
- // this.valueInput && this.valueInput.focus({preventScroll:true});
279
+ !isReadOnly && onChange && onChange(id, optionsNormalize[id]); // this.valueInput && this.valueInput.focus({preventScroll:true});
280
+
272
281
  needCloseOnSelect && this.handlePopupClose(e);
273
282
  }
283
+
274
284
  responsiveFunc(_ref) {
275
285
  let {
276
286
  mediaQueryOR
@@ -281,6 +291,7 @@ export class SelectComponent extends Component {
281
291
  }])
282
292
  };
283
293
  }
294
+
284
295
  handleKeyDown(e) {
285
296
  let {
286
297
  onChange,
@@ -297,33 +308,38 @@ export class SelectComponent extends Component {
297
308
  let {
298
309
  keyCode
299
310
  } = e;
311
+
300
312
  if (!isPopupOpen && !isPopupOpenOnEnter) {
301
313
  onKeyDown && onKeyDown(e);
302
314
  }
315
+
303
316
  if (isPopupOpen && (keyCode === 38 || keyCode === 40 || keyCode === 13) && e.preventDefault) {
304
317
  e.preventDefault(); //prevent body scroll and enter key prevent
305
318
  } else if (!isPopupOpen && keyCode === 40) {
306
319
  e.preventDefault(); //prevent body scroll
320
+
307
321
  this.togglePopup(e);
308
322
  }
323
+
309
324
  if (keyCode === 38 && isPopupOpen && options.length) {
310
- if (hoverIndex === 0) {
311
- // hoverIndex = options.length - 1;
325
+ if (hoverIndex === 0) {// hoverIndex = options.length - 1;
312
326
  } else {
313
327
  hoverIndex -= 1;
314
328
  }
329
+
315
330
  this.setState({
316
331
  hoverIndex
317
332
  });
318
333
  } else if (keyCode === 40 && isPopupOpen && options.length) {
319
- if (hoverIndex === options.length - 1) {
320
- // hoverIndex = 0;
334
+ if (hoverIndex === options.length - 1) {// hoverIndex = 0;
321
335
  } else {
322
336
  if (hoverIndex === options.length - 3) {
323
337
  this.handleGetNextOptions();
324
338
  }
339
+
325
340
  hoverIndex += 1;
326
341
  }
342
+
327
343
  this.setState({
328
344
  hoverIndex
329
345
  });
@@ -332,32 +348,36 @@ export class SelectComponent extends Component {
332
348
  let {
333
349
  id
334
350
  } = option || {};
351
+
335
352
  if (isPopupOpen && !getIsEmptyValue(id) && onChange) {
336
353
  onChange(id, optionsNormalize[id]);
337
354
  needCloseOnSelect && this.handlePopupClose(e);
338
355
  }
356
+
339
357
  if (!isPopupOpen && isPopupOpenOnEnter) {
340
358
  this.togglePopup(e);
341
359
  }
342
360
  } else if (keyCode === 27) {
343
361
  this.valueInput && this.valueInput.focus({
344
362
  preventScroll: true
345
- });
346
- //this.handlePopupClose(e);
363
+ }); //this.handlePopupClose(e);
347
364
  } else if (keyCode === 9) {
348
365
  let option = options[hoverIndex];
349
366
  let {
350
367
  id
351
368
  } = option || {};
369
+
352
370
  if (isPopupOpen && !getIsEmptyValue(id)) {
353
371
  onChange && onChange(id, optionsNormalize[id]);
354
372
  needCloseOnSelect && this.handlePopupClose(e);
355
373
  }
374
+
356
375
  if (!isPopupOpen && isPopupOpenOnEnter) {
357
376
  this.togglePopup(e);
358
377
  }
359
378
  }
360
379
  }
380
+
361
381
  handleSearchOptions() {
362
382
  let {
363
383
  onSearch
@@ -367,6 +387,7 @@ export class SelectComponent extends Component {
367
387
  } = this.state;
368
388
  searchStr && this.handleFetchOptions(onSearch, searchStr);
369
389
  }
390
+
370
391
  handleSearch(value) {
371
392
  // let { value = '' } = e.target;
372
393
  let {
@@ -389,7 +410,10 @@ export class SelectComponent extends Component {
389
410
  }
390
411
  });
391
412
  }
392
- handleMouseEnter(id /*val, index*/) {
413
+
414
+ handleMouseEnter(id
415
+ /*val, index*/
416
+ ) {
393
417
  let {
394
418
  hoverIndex
395
419
  } = this.state;
@@ -401,21 +425,21 @@ export class SelectComponent extends Component {
401
425
  hoverIndex: newHoverIndex
402
426
  });
403
427
  }
428
+
404
429
  handleFilterSuggestions() {
405
430
  let {
406
431
  needLocalSearch,
407
- excludeOptions = dummyArray
408
- // needSearch
432
+ excludeOptions = dummyArray // needSearch
433
+
409
434
  } = this.props;
410
435
  let {
411
436
  options = dummyArray,
412
437
  searchStr = ''
413
- } = this.state;
414
-
415
- // if (
438
+ } = this.state; // if (
416
439
  // (needSearch && searchStr && searchStr.trim().length) ||
417
440
  // (excludeOptions && excludeOptions.length)
418
441
  // ) {
442
+
419
443
  searchStr = getSearchString(searchStr);
420
444
  let {
421
445
  suggestions,
@@ -427,8 +451,7 @@ export class SelectComponent extends Component {
427
451
  needSearch: needLocalSearch
428
452
  });
429
453
  this.optionsOrder = suggestionIds;
430
- return suggestions;
431
- // }
454
+ return suggestions; // }
432
455
  // return options;
433
456
  }
434
457
 
@@ -437,6 +460,7 @@ export class SelectComponent extends Component {
437
460
  let isScrollReachedBottom = findScrollEnd(ele);
438
461
  isScrollReachedBottom && this.handleGetNextOptions();
439
462
  }
463
+
440
464
  handleFetchOptions(APICall) {
441
465
  let searchStr = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
442
466
  // let funcArgs = args.slice(1, args.length);
@@ -446,10 +470,12 @@ export class SelectComponent extends Component {
446
470
  let {
447
471
  _isMounted
448
472
  } = this;
473
+
449
474
  if (!isFetchingOptions && APICall) {
450
475
  this.setState({
451
476
  isFetchingOptions: true
452
477
  });
478
+
453
479
  try {
454
480
  return APICall(searchStr).then(() => {
455
481
  _isMounted && this.setState({
@@ -467,6 +493,7 @@ export class SelectComponent extends Component {
467
493
  }
468
494
  }
469
495
  }
496
+
470
497
  handleGetNextOptions() {
471
498
  let {
472
499
  isNextOptions,
@@ -477,6 +504,7 @@ export class SelectComponent extends Component {
477
504
  } = this.state;
478
505
  isNextOptions && getNextOptions && this.handleFetchOptions(getNextOptions, searchStr);
479
506
  }
507
+
480
508
  togglePopup(e) {
481
509
  let {
482
510
  togglePopup,
@@ -488,6 +516,7 @@ export class SelectComponent extends Component {
488
516
  !isReadOnly && togglePopup(e, defaultDropBoxPosition ? `${defaultDropBoxPosition}` : null);
489
517
  !isPopupOpen && typeof onFocus === 'function' && onFocus(e);
490
518
  }
519
+
491
520
  handlePopupClose(e) {
492
521
  let {
493
522
  closePopupOnly
@@ -497,15 +526,19 @@ export class SelectComponent extends Component {
497
526
  });
498
527
  closePopupOnly(e);
499
528
  }
529
+
500
530
  suggestionContainerRef(el) {
501
531
  this.suggestionContainer = el;
502
532
  }
533
+
503
534
  suggestionItemRef(el, index, id) {
504
535
  this[`suggestion_${id}`] = el;
505
536
  }
537
+
506
538
  searchInputRef(el) {
507
539
  this.searchInput = el;
508
540
  }
541
+
509
542
  valueInputRef(el) {
510
543
  let {
511
544
  getRef
@@ -513,12 +546,14 @@ export class SelectComponent extends Component {
513
546
  this.valueInput = el;
514
547
  getRef && getRef(el);
515
548
  }
549
+
516
550
  handleSelectFocus() {
517
551
  let {
518
552
  valueInput
519
553
  } = this;
520
554
  valueInput && valueInput.setSelectionRange(valueInput, 0);
521
555
  }
556
+
522
557
  handleClearSearch() {
523
558
  this.handleSearch('');
524
559
  setTimeout(() => {
@@ -527,6 +562,7 @@ export class SelectComponent extends Component {
527
562
  });
528
563
  }, 1);
529
564
  }
565
+
530
566
  handleValueInputChange(e) {
531
567
  let {
532
568
  which
@@ -536,11 +572,13 @@ export class SelectComponent extends Component {
536
572
  isPopupOpen,
537
573
  autoSelectOnType
538
574
  } = this.props;
575
+
539
576
  if (!isPopupOpen && autoSelectOnType) {
540
577
  this.valueInputTypeString += (typeString || '').trim();
541
578
  this.handleChangeOnType();
542
579
  }
543
580
  }
581
+
544
582
  handleChangeOnType() {
545
583
  let {
546
584
  excludeOptions = dummyArray
@@ -553,11 +591,13 @@ export class SelectComponent extends Component {
553
591
  } = this;
554
592
  let typeString = this.valueInputTypeString;
555
593
  this.valueInputTypeString = '';
594
+
556
595
  let changeValue = () => {
557
596
  let optionDetails = this.autoSelectSuggestions[this.autoSelectIndex];
558
597
  let {
559
598
  id
560
599
  } = optionDetails || {};
600
+
561
601
  if (!getIsEmptyValue(id)) {
562
602
  this.handleChange(id);
563
603
  let hoverIndex = optionsOrder.indexOf(id);
@@ -566,12 +606,14 @@ export class SelectComponent extends Component {
566
606
  });
567
607
  }
568
608
  };
609
+
569
610
  if (typeString && typeString === this.valueInputSearchString) {
570
611
  if (this.autoSelectIndex < this.autoSelectSuggestions.length - 1) {
571
612
  this.autoSelectIndex += 1;
572
613
  } else {
573
614
  this.autoSelectIndex = 0;
574
615
  }
616
+
575
617
  changeValue();
576
618
  } else if (typeString) {
577
619
  this.valueInputSearchString = typeString;
@@ -589,6 +631,7 @@ export class SelectComponent extends Component {
589
631
  changeValue();
590
632
  }
591
633
  }
634
+
592
635
  handleAddNewOption() {
593
636
  let {
594
637
  searchStr
@@ -597,6 +640,7 @@ export class SelectComponent extends Component {
597
640
  onAddNewOption,
598
641
  getCustomEmptyState
599
642
  } = this.props;
643
+
600
644
  if (getCustomEmptyState) {
601
645
  this.setState({
602
646
  searchStr: ''
@@ -604,6 +648,7 @@ export class SelectComponent extends Component {
604
648
  this.handleFetchOptions(onAddNewOption, searchStr);
605
649
  }
606
650
  }
651
+
607
652
  handleExposePopupHandlers() {
608
653
  let {
609
654
  removeClose,
@@ -620,6 +665,7 @@ export class SelectComponent extends Component {
620
665
  };
621
666
  getPopupHandlers && getPopupHandlers(methods);
622
667
  }
668
+
623
669
  handleGetAddNewOptionText() {
624
670
  let {
625
671
  searchStr
@@ -632,6 +678,7 @@ export class SelectComponent extends Component {
632
678
  onAddNewOption: this.handleAddNewOption
633
679
  });
634
680
  }
681
+
635
682
  render() {
636
683
  let {
637
684
  needSearch,
@@ -898,15 +945,14 @@ export class SelectComponent extends Component {
898
945
  }, getChildren())));
899
946
  }) : null);
900
947
  }
948
+
901
949
  }
902
950
  SelectComponent.propTypes = Select_propTypes;
903
951
  SelectComponent.defaultProps = Select_defaultProps;
904
952
  SelectComponent.displayName = 'Select';
905
953
  let Select = Popup(SelectComponent);
906
954
  Select.defaultProps = SelectComponent.defaultProps;
907
- export default Select;
908
-
909
- // if (__DOCS__) {
955
+ export default Select; // if (__DOCS__) {
910
956
  // Select.docs = {
911
957
  // componentGroup: 'Form Elements',
912
958
  // folderName: 'Style Guide',
@@ -3,6 +3,7 @@ import React from 'react';
3
3
  import { SelectWithAvatar_defaultProps } from './props/defaultProps';
4
4
  import { SelectWithAvatar_propTypes } from './props/propTypes';
5
5
  /**** Components ****/
6
+
6
7
  import { SelectComponent } from './Select';
7
8
  import Popup from '../Popup/Popup';
8
9
  import Tag from '../Tag/Tag';
@@ -17,10 +18,11 @@ import { getUniqueId } from '../Provider/IdProvider';
17
18
  import ResponsiveDropBox from '../ResponsiveDropBox/ResponsiveDropBox';
18
19
  import { ResponsiveReceiver } from '../Responsive/CustomResponsive';
19
20
  import Loader from '@zohodesk/svg/lib/Loader/Loader';
20
-
21
21
  /**** CSS ****/
22
+
22
23
  import style from '../MultiSelect/MultiSelect.module.css';
23
24
  import selectStyle from './Select.module.css';
25
+
24
26
  class SelectWithAvatarComponent extends SelectComponent {
25
27
  constructor(props) {
26
28
  super(props);
@@ -32,6 +34,7 @@ class SelectWithAvatarComponent extends SelectComponent {
32
34
  this.handleRemoveOption = this.handleRemoveOption.bind(this);
33
35
  this.getNextAriaId = getUniqueId(this);
34
36
  }
37
+
35
38
  handleFormatOptions(props) {
36
39
  let {
37
40
  options,
@@ -47,15 +50,18 @@ class SelectWithAvatarComponent extends SelectComponent {
47
50
  optionType: 'avatar'
48
51
  });
49
52
  }
53
+
50
54
  handleActive(e) {
51
55
  let {
52
56
  isActive
53
57
  } = this.state;
58
+
54
59
  if (!isActive) {
55
60
  this.setState({
56
61
  isActive: true
57
62
  });
58
63
  }
64
+
59
65
  let {
60
66
  target
61
67
  } = e || {};
@@ -65,16 +71,19 @@ class SelectWithAvatarComponent extends SelectComponent {
65
71
  } = this.props;
66
72
  onFocus && onFocus(this.state.searchStr);
67
73
  }
74
+
68
75
  handleInactive() {
69
76
  let {
70
77
  isActive
71
78
  } = this.state;
79
+
72
80
  if (isActive) {
73
81
  this.setState({
74
82
  isActive: false
75
83
  });
76
84
  }
77
85
  }
86
+
78
87
  handleSearchChange(e) {
79
88
  let {
80
89
  isPopupOpen
@@ -82,6 +91,7 @@ class SelectWithAvatarComponent extends SelectComponent {
82
91
  !isPopupOpen && this.togglePopup(e);
83
92
  this.handleSearch(e);
84
93
  }
94
+
85
95
  handleRemoveOption(e) {
86
96
  let {
87
97
  keyCode
@@ -92,12 +102,14 @@ class SelectWithAvatarComponent extends SelectComponent {
92
102
  let {
93
103
  isDefaultSelectValue
94
104
  } = this.props;
105
+
95
106
  if (keyCode === 8 && searchStr.length === 0 && !isDefaultSelectValue) {
96
107
  this.handleChange('');
97
108
  } else {
98
109
  this.handleKeyDown(e);
99
110
  }
100
111
  }
112
+
101
113
  responsiveFunc(_ref) {
102
114
  let {
103
115
  mediaQueryOR
@@ -108,6 +120,7 @@ class SelectWithAvatarComponent extends SelectComponent {
108
120
  }])
109
121
  };
110
122
  }
123
+
111
124
  render() {
112
125
  let {
113
126
  dropBoxSize,
@@ -309,14 +322,14 @@ class SelectWithAvatarComponent extends SelectComponent {
309
322
  }, /*#__PURE__*/React.createElement(Loader, null))))));
310
323
  }) : null);
311
324
  }
325
+
312
326
  }
327
+
313
328
  SelectWithAvatarComponent.propTypes = SelectWithAvatar_propTypes;
314
329
  SelectWithAvatarComponent.defaultProps = SelectWithAvatar_defaultProps;
315
330
  SelectWithAvatarComponent.displayName = 'SelectWithAvatar';
316
331
  let SelectWithAvatar = Popup(SelectWithAvatarComponent);
317
- SelectWithAvatar.defaultProps = SelectWithAvatarComponent.defaultProps;
318
-
319
- // if (__DOCS__) {
332
+ SelectWithAvatar.defaultProps = SelectWithAvatarComponent.defaultProps; // if (__DOCS__) {
320
333
  // SelectWithAvatar.docs = {
321
334
  // componentGroup: 'Form Elements',
322
335
  // folderName: 'Style Guide'