@zohodesk/components 1.0.0-temp-182 → 1.0.0-temp-183

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 (627) hide show
  1. package/.DS_Store +0 -0
  2. package/.cli/PropLessFiles.html +1 -1
  3. package/.cli/propValidation_report.html +1 -1
  4. package/README.md +0 -5
  5. package/es/Accordion/Accordion.js +3 -7
  6. package/es/Accordion/AccordionItem.js +2 -4
  7. package/es/Animation/Animation.js +3 -3
  8. package/es/AppContainer/AppContainer.js +3 -14
  9. package/es/AppContainer/AppContainer.module.css +2 -2
  10. package/es/Avatar/Avatar.js +11 -23
  11. package/es/Avatar/Avatar.module.css +18 -18
  12. package/es/AvatarTeam/AvatarTeam.js +3 -3
  13. package/es/AvatarTeam/AvatarTeam.module.css +35 -35
  14. package/es/AvatarTeam/__tests__/AvatarTeam.spec.js +2 -1
  15. package/es/Button/Button.js +3 -4
  16. package/es/Button/css/Button.module.css +70 -70
  17. package/es/Buttongroup/Buttongroup.js +3 -3
  18. package/es/Buttongroup/Buttongroup.module.css +15 -13
  19. package/es/Card/Card.js +10 -21
  20. package/es/CheckBox/CheckBox.js +3 -5
  21. package/es/CheckBox/CheckBox.module.css +15 -15
  22. package/es/DateTime/CalendarView.js +20 -32
  23. package/es/DateTime/DateTime.js +6 -69
  24. package/es/DateTime/DateTime.module.css +40 -40
  25. package/es/DateTime/DateTimePopupFooter.js +1 -4
  26. package/es/DateTime/DateTimePopupHeader.js +2 -8
  27. package/es/DateTime/DateWidget.js +35 -98
  28. package/es/DateTime/DateWidget.module.css +5 -5
  29. package/es/DateTime/DaysRow.js +1 -4
  30. package/es/DateTime/Time.js +1 -10
  31. package/es/DateTime/YearView.js +4 -28
  32. package/es/DateTime/YearView.module.css +15 -15
  33. package/es/DateTime/common.js +0 -3
  34. package/es/DateTime/constants.js +0 -1
  35. package/es/DateTime/dateFormatUtils/dateFormat.js +30 -65
  36. package/es/DateTime/dateFormatUtils/dateFormats.js +1 -0
  37. package/es/DateTime/dateFormatUtils/dayChange.js +4 -13
  38. package/es/DateTime/dateFormatUtils/index.js +1 -31
  39. package/es/DateTime/dateFormatUtils/monthChange.js +0 -8
  40. package/es/DateTime/dateFormatUtils/timeChange.js +6 -22
  41. package/es/DateTime/dateFormatUtils/yearChange.js +2 -11
  42. package/es/DateTime/objectUtils.js +20 -14
  43. package/es/DateTime/typeChecker.js +0 -3
  44. package/es/DateTime/validator.js +6 -58
  45. package/es/DropBox/DropBox.js +2 -6
  46. package/es/DropBox/DropBoxElement/DropBoxElement.js +0 -7
  47. package/es/DropBox/DropBoxElement/css/DropBoxElement.module.css +76 -73
  48. package/es/DropBox/DropBoxElement/css/cssJSLogic.js +3 -5
  49. package/es/DropBox/DropBoxElement/useDropboxPosCalc.js +0 -3
  50. package/es/DropBox/css/DropBox.module.css +6 -6
  51. package/es/DropBox/props/defaultProps.js +2 -1
  52. package/es/DropBox/props/propTypes.js +2 -1
  53. package/es/DropDown/DropDown.js +1 -7
  54. package/es/DropDown/DropDown.module.css +2 -2
  55. package/es/DropDown/DropDownHeading.js +5 -4
  56. package/es/DropDown/DropDownHeading.module.css +6 -6
  57. package/es/DropDown/DropDownItem.js +0 -6
  58. package/es/DropDown/DropDownItem.module.css +12 -12
  59. package/es/DropDown/DropDownSearch.js +0 -4
  60. package/es/DropDown/DropDownSearch.module.css +3 -3
  61. package/es/DropDown/DropDownSeparator.js +0 -1
  62. package/es/DropDown/DropDownSeparator.module.css +2 -2
  63. package/es/DropDown/props/propTypes.js +2 -1
  64. package/es/Heading/Heading.js +3 -2
  65. package/es/Heading/Heading.module.css +2 -2
  66. package/es/Label/Label.js +3 -2
  67. package/es/Label/Label.module.css +5 -5
  68. package/es/Label/__tests__/Label.spec.js +2 -1
  69. package/es/Layout/Box.js +2 -15
  70. package/es/Layout/Container.js +3 -14
  71. package/es/Layout/Layout.module.css +15 -15
  72. package/es/Layout/index.js +2 -1
  73. package/es/Layout/utils.js +0 -1
  74. package/es/ListItem/ListContainer.js +3 -8
  75. package/es/ListItem/ListItem.js +3 -9
  76. package/es/ListItem/ListItem.module.css +38 -27
  77. package/es/ListItem/ListItemWithAvatar.js +3 -9
  78. package/es/ListItem/ListItemWithCheckBox.js +2 -7
  79. package/es/ListItem/ListItemWithIcon.js +3 -8
  80. package/es/ListItem/ListItemWithRadio.js +3 -7
  81. package/es/Modal/Modal.js +11 -28
  82. package/es/MultiSelect/AdvancedGroupMultiSelect.js +13 -89
  83. package/es/MultiSelect/AdvancedMultiSelect.js +9 -32
  84. package/es/MultiSelect/EmptyState.js +0 -2
  85. package/es/MultiSelect/MobileHeader/MobileHeader.module.css +5 -5
  86. package/es/MultiSelect/MultiSelect.js +30 -99
  87. package/es/MultiSelect/MultiSelect.module.css +31 -31
  88. package/es/MultiSelect/MultiSelectHeader.js +0 -3
  89. package/es/MultiSelect/MultiSelectWithAvatar.js +3 -10
  90. package/es/MultiSelect/SelectedOptions.js +7 -11
  91. package/es/MultiSelect/SelectedOptions.module.css +5 -5
  92. package/es/MultiSelect/Suggestions.js +3 -7
  93. package/es/MultiSelect/props/propTypes.js +2 -2
  94. package/es/PopOver/PopOver.js +0 -16
  95. package/es/Popup/Popup.js +24 -77
  96. package/es/Popup/viewPort.js +4 -16
  97. package/es/Provider/IdProvider.js +5 -10
  98. package/es/Provider/LibraryContext.js +4 -6
  99. package/es/Provider/NumberGenerator/NumberGenerator.js +7 -21
  100. package/es/Provider/ZindexProvider.js +2 -9
  101. package/es/Radio/Radio.js +0 -3
  102. package/es/Radio/Radio.module.css +9 -9
  103. package/es/Responsive/CustomResponsive.js +18 -30
  104. package/es/Responsive/RefWrapper.js +7 -6
  105. package/es/Responsive/ResizeComponent.js +25 -35
  106. package/es/Responsive/ResizeObserver.js +6 -26
  107. package/es/Responsive/Responsive.js +20 -34
  108. package/es/Responsive/index.js +3 -1
  109. package/es/Responsive/sizeObservers.js +7 -28
  110. package/es/Responsive/utils/index.js +5 -7
  111. package/es/Responsive/utils/shallowCompare.js +2 -7
  112. package/es/Responsive/windowResizeObserver.js +0 -7
  113. package/es/ResponsiveDropBox/ResponsiveDropBox.js +0 -4
  114. package/es/ResponsiveDropBox/ResponsiveDropBox.module.css +2 -2
  115. package/es/ResponsiveDropBox/props/propTypes.js +2 -1
  116. package/es/Ribbon/Ribbon.js +2 -3
  117. package/es/Ribbon/Ribbon.module.css +48 -45
  118. package/es/RippleEffect/RippleEffect.js +3 -1
  119. package/es/Select/GroupSelect.js +14 -58
  120. package/es/Select/Select.js +34 -80
  121. package/es/Select/Select.module.css +23 -23
  122. package/es/Select/SelectWithAvatar.js +4 -17
  123. package/es/Select/SelectWithIcon.js +5 -46
  124. package/es/Select/props/propTypes.js +2 -2
  125. package/es/Stencils/Stencils.js +3 -3
  126. package/es/Stencils/Stencils.module.css +11 -11
  127. package/es/Switch/Switch.js +3 -5
  128. package/es/Switch/Switch.module.css +23 -23
  129. package/es/Tab/Tab.js +4 -4
  130. package/es/Tab/Tab.module.css +14 -14
  131. package/es/Tab/TabContent.js +0 -1
  132. package/es/Tab/TabContentWrapper.js +0 -2
  133. package/es/Tab/TabWrapper.js +2 -5
  134. package/es/Tab/Tabs.js +7 -54
  135. package/es/Tab/Tabs.module.css +22 -22
  136. package/es/Tag/Tag.js +3 -6
  137. package/es/Tag/Tag.module.css +25 -24
  138. package/es/TextBox/TextBox.js +3 -15
  139. package/es/TextBox/TextBox.module.css +9 -9
  140. package/es/TextBoxIcon/TextBoxIcon.js +2 -9
  141. package/es/TextBoxIcon/TextBoxIcon.module.css +7 -7
  142. package/es/TextBoxIcon/props/propTypes.js +2 -1
  143. package/es/Textarea/Textarea.js +3 -12
  144. package/es/Textarea/Textarea.module.css +21 -21
  145. package/es/Tooltip/Tooltip.js +14 -58
  146. package/es/Tooltip/Tooltip.module.css +5 -5
  147. package/es/VelocityAnimation/VelocityAnimation/VelocityAnimation.js +2 -3
  148. package/es/VelocityAnimation/VelocityAnimationGroup/VelocityAnimationGroup.js +5 -7
  149. package/es/common/animation.module.css +8 -8
  150. package/es/common/avatarsizes.module.css +16 -16
  151. package/es/common/basicReset.module.css +3 -3
  152. package/es/common/common.module.css +24 -24
  153. package/es/common/customscroll.module.css +2 -2
  154. package/es/deprecated/PortalLayer/PortalLayer.js +20 -25
  155. package/es/semantic/Button/Button.js +2 -3
  156. package/es/semantic/Button/semanticButton.module.css +1 -1
  157. package/es/utils/Common.js +9 -54
  158. package/es/utils/ContextOptimizer.js +5 -4
  159. package/es/utils/constructFullName.js +0 -2
  160. package/es/utils/datetime/common.js +5 -16
  161. package/es/utils/debounce.js +1 -5
  162. package/es/utils/dropDownUtils.js +11 -68
  163. package/es/utils/getInitial.js +0 -4
  164. package/es/utils/shallowEqual.js +0 -6
  165. package/es/v1/Accordion/Accordion.js +3 -4
  166. package/es/v1/Accordion/AccordionItem.js +2 -4
  167. package/es/v1/Animation/Animation.js +3 -1
  168. package/es/v1/AppContainer/AppContainer.js +3 -9
  169. package/es/v1/Avatar/Avatar.js +6 -18
  170. package/es/v1/AvatarTeam/AvatarTeam.js +0 -1
  171. package/es/v1/Button/Button.js +3 -3
  172. package/es/v1/Card/Card.js +8 -16
  173. package/es/v1/CheckBox/CheckBox.js +3 -6
  174. package/es/v1/DateTime/CalendarView.js +20 -32
  175. package/es/v1/DateTime/DateTime.js +6 -69
  176. package/es/v1/DateTime/DateTimePopupFooter.js +1 -4
  177. package/es/v1/DateTime/DateTimePopupHeader.js +2 -8
  178. package/es/v1/DateTime/DateWidget.js +35 -98
  179. package/es/v1/DateTime/DaysRow.js +1 -4
  180. package/es/v1/DateTime/Time.js +1 -10
  181. package/es/v1/DateTime/YearView.js +4 -28
  182. package/es/v1/DropBox/DropBox.js +2 -6
  183. package/es/v1/DropBox/DropBoxElement/DropBoxElement.js +0 -7
  184. package/es/v1/DropBox/props/defaultProps.js +2 -1
  185. package/es/v1/DropBox/props/propTypes.js +2 -1
  186. package/es/v1/DropDown/DropDown.js +0 -3
  187. package/es/v1/DropDown/DropDownHeading.js +2 -2
  188. package/es/v1/DropDown/DropDownItem.js +0 -5
  189. package/es/v1/DropDown/DropDownSearch.js +2 -3
  190. package/es/v1/DropDown/props/propTypes.js +2 -1
  191. package/es/v1/Heading/Heading.js +3 -1
  192. package/es/v1/Layout/Box.js +2 -15
  193. package/es/v1/Layout/Container.js +3 -14
  194. package/es/v1/ListItem/ListContainer.js +3 -8
  195. package/es/v1/ListItem/ListItem.js +3 -10
  196. package/es/v1/ListItem/ListItemWithAvatar.js +1 -9
  197. package/es/v1/ListItem/ListItemWithCheckBox.js +2 -8
  198. package/es/v1/ListItem/ListItemWithIcon.js +3 -9
  199. package/es/v1/ListItem/ListItemWithRadio.js +3 -8
  200. package/es/v1/Modal/Modal.js +1 -17
  201. package/es/v1/MultiSelect/AdvancedGroupMultiSelect.js +15 -90
  202. package/es/v1/MultiSelect/AdvancedMultiSelect.js +9 -32
  203. package/es/v1/MultiSelect/EmptyState.js +0 -2
  204. package/es/v1/MultiSelect/MultiSelect.js +31 -100
  205. package/es/v1/MultiSelect/MultiSelectHeader.js +0 -3
  206. package/es/v1/MultiSelect/MultiSelectWithAvatar.js +3 -11
  207. package/es/v1/MultiSelect/SelectedOptions.js +7 -11
  208. package/es/v1/MultiSelect/Suggestions.js +3 -7
  209. package/es/v1/MultiSelect/props/propTypes.js +2 -2
  210. package/es/v1/PopOver/PopOver.js +0 -11
  211. package/es/v1/Popup/Popup.js +24 -77
  212. package/es/v1/Provider/IdProvider.js +5 -10
  213. package/es/v1/Provider/LibraryContext.js +4 -6
  214. package/es/v1/Provider/NumberGenerator/NumberGenerator.js +7 -21
  215. package/es/v1/Provider/ZindexProvider.js +2 -9
  216. package/es/v1/Radio/Radio.js +2 -5
  217. package/es/v1/Responsive/CustomResponsive.js +18 -30
  218. package/es/v1/Responsive/RefWrapper.js +7 -6
  219. package/es/v1/Responsive/ResizeComponent.js +25 -35
  220. package/es/v1/Responsive/ResizeObserver.js +6 -26
  221. package/es/v1/Responsive/Responsive.js +20 -34
  222. package/es/v1/Responsive/index.js +3 -1
  223. package/es/v1/ResponsiveDropBox/ResponsiveDropBox.js +0 -1
  224. package/es/v1/ResponsiveDropBox/props/propTypes.js +2 -1
  225. package/es/v1/Select/GroupSelect.js +14 -58
  226. package/es/v1/Select/Select.js +37 -81
  227. package/es/v1/Select/SelectWithAvatar.js +4 -17
  228. package/es/v1/Select/SelectWithIcon.js +5 -46
  229. package/es/v1/Select/props/propTypes.js +2 -2
  230. package/es/v1/Stencils/Stencils.js +0 -2
  231. package/es/v1/Switch/Switch.js +3 -6
  232. package/es/v1/Tab/Tab.js +5 -3
  233. package/es/v1/Tab/TabContent.js +1 -2
  234. package/es/v1/Tab/TabContentWrapper.js +0 -2
  235. package/es/v1/Tab/TabWrapper.js +2 -5
  236. package/es/v1/Tab/Tabs.js +267 -225
  237. package/es/v1/Tag/Tag.js +1 -5
  238. package/es/v1/TextBox/TextBox.js +0 -13
  239. package/es/v1/TextBoxIcon/TextBoxIcon.js +2 -6
  240. package/es/v1/TextBoxIcon/props/propTypes.js +2 -1
  241. package/es/v1/Textarea/Textarea.js +3 -10
  242. package/es/v1/Tooltip/Tooltip.js +14 -58
  243. package/es/v1/Typography/Typography.js +0 -2
  244. package/es/v1/Typography/css/Typography.module.css +31 -31
  245. package/es/v1/Typography/css/cssJSLogic.js +0 -3
  246. package/es/v1/VelocityAnimation/VelocityAnimation/VelocityAnimation.js +2 -1
  247. package/es/v1/VelocityAnimation/VelocityAnimationGroup/VelocityAnimationGroup.js +4 -5
  248. package/es/v1/semantic/Button/Button.js +2 -1
  249. package/lib/Accordion/Accordion.js +18 -42
  250. package/lib/Accordion/AccordionItem.js +18 -40
  251. package/lib/Accordion/index.js +0 -3
  252. package/lib/Accordion/props/propTypes.js +0 -3
  253. package/lib/Animation/Animation.js +18 -38
  254. package/lib/Animation/props/propTypes.js +0 -3
  255. package/lib/AppContainer/AppContainer.js +20 -58
  256. package/lib/AppContainer/AppContainer.module.css +2 -2
  257. package/lib/AppContainer/props/propTypes.js +0 -3
  258. package/lib/Avatar/Avatar.js +38 -78
  259. package/lib/Avatar/Avatar.module.css +18 -18
  260. package/lib/Avatar/__tests__/Avatar.spec.js +71 -95
  261. package/lib/Avatar/props/propTypes.js +0 -3
  262. package/lib/AvatarTeam/AvatarTeam.js +30 -52
  263. package/lib/AvatarTeam/AvatarTeam.module.css +35 -35
  264. package/lib/AvatarTeam/__tests__/AvatarTeam.spec.js +61 -77
  265. package/lib/AvatarTeam/props/propTypes.js +0 -3
  266. package/lib/Button/Button.js +22 -33
  267. package/lib/Button/__tests__/Button.spec.js +48 -65
  268. package/lib/Button/css/Button.module.css +70 -70
  269. package/lib/Button/css/cssJSLogic.js +17 -18
  270. package/lib/Button/index.js +0 -3
  271. package/lib/Button/props/defaultProps.js +0 -2
  272. package/lib/Button/props/propTypes.js +0 -3
  273. package/lib/Buttongroup/Buttongroup.js +12 -32
  274. package/lib/Buttongroup/Buttongroup.module.css +15 -13
  275. package/lib/Buttongroup/__tests__/Buttongroup.spec.js +10 -18
  276. package/lib/Buttongroup/props/propTypes.js +0 -3
  277. package/lib/Card/Card.js +46 -102
  278. package/lib/Card/index.js +0 -4
  279. package/lib/Card/props/propTypes.js +0 -3
  280. package/lib/CheckBox/CheckBox.js +47 -71
  281. package/lib/CheckBox/CheckBox.module.css +15 -15
  282. package/lib/CheckBox/props/propTypes.js +0 -3
  283. package/lib/DateTime/CalendarView.js +42 -82
  284. package/lib/DateTime/DateTime.js +156 -244
  285. package/lib/DateTime/DateTime.module.css +40 -40
  286. package/lib/DateTime/DateTimePopupFooter.js +8 -33
  287. package/lib/DateTime/DateTimePopupHeader.js +17 -49
  288. package/lib/DateTime/DateWidget.js +249 -350
  289. package/lib/DateTime/DateWidget.module.css +5 -5
  290. package/lib/DateTime/DaysRow.js +5 -28
  291. package/lib/DateTime/Time.js +32 -75
  292. package/lib/DateTime/YearView.js +27 -76
  293. package/lib/DateTime/YearView.module.css +15 -15
  294. package/lib/DateTime/common.js +0 -6
  295. package/lib/DateTime/constants.js +0 -1
  296. package/lib/DateTime/dateFormatUtils/dateFormat.js +122 -187
  297. package/lib/DateTime/dateFormatUtils/dateFormats.js +1 -0
  298. package/lib/DateTime/dateFormatUtils/dayChange.js +7 -15
  299. package/lib/DateTime/dateFormatUtils/index.js +16 -73
  300. package/lib/DateTime/dateFormatUtils/monthChange.js +9 -20
  301. package/lib/DateTime/dateFormatUtils/timeChange.js +22 -54
  302. package/lib/DateTime/dateFormatUtils/yearChange.js +11 -23
  303. package/lib/DateTime/index.js +0 -2
  304. package/lib/DateTime/objectUtils.js +20 -24
  305. package/lib/DateTime/props/propTypes.js +1 -11
  306. package/lib/DateTime/typeChecker.js +0 -4
  307. package/lib/DateTime/validator.js +10 -73
  308. package/lib/DropBox/DropBox.js +21 -45
  309. package/lib/DropBox/DropBoxElement/DropBoxElement.js +38 -59
  310. package/lib/DropBox/DropBoxElement/css/DropBoxElement.module.css +76 -73
  311. package/lib/DropBox/DropBoxElement/css/cssJSLogic.js +34 -42
  312. package/lib/DropBox/DropBoxElement/props/propTypes.js +0 -3
  313. package/lib/DropBox/DropBoxElement/useDropboxPosCalc.js +9 -14
  314. package/lib/DropBox/css/DropBox.module.css +6 -6
  315. package/lib/DropBox/css/cssJSLogic.js +1 -3
  316. package/lib/DropBox/props/defaultProps.js +4 -8
  317. package/lib/DropBox/props/propTypes.js +4 -10
  318. package/lib/DropDown/DropDown.js +5 -51
  319. package/lib/DropDown/DropDown.module.css +2 -2
  320. package/lib/DropDown/DropDownHeading.js +20 -39
  321. package/lib/DropDown/DropDownHeading.module.css +6 -6
  322. package/lib/DropDown/DropDownItem.js +20 -42
  323. package/lib/DropDown/DropDownItem.module.css +12 -12
  324. package/lib/DropDown/DropDownSearch.js +17 -40
  325. package/lib/DropDown/DropDownSearch.module.css +3 -3
  326. package/lib/DropDown/DropDownSeparator.js +4 -24
  327. package/lib/DropDown/DropDownSeparator.module.css +2 -2
  328. package/lib/DropDown/index.js +0 -9
  329. package/lib/DropDown/props/propTypes.js +4 -10
  330. package/lib/Heading/Heading.js +15 -37
  331. package/lib/Heading/Heading.module.css +2 -2
  332. package/lib/Heading/props/propTypes.js +0 -3
  333. package/lib/Label/Label.js +21 -41
  334. package/lib/Label/Label.module.css +5 -5
  335. package/lib/Label/__tests__/Label.spec.js +34 -48
  336. package/lib/Label/props/propTypes.js +0 -3
  337. package/lib/Layout/Box.js +15 -35
  338. package/lib/Layout/Container.js +14 -33
  339. package/lib/Layout/Layout.module.css +15 -15
  340. package/lib/Layout/index.js +0 -3
  341. package/lib/Layout/props/propTypes.js +0 -3
  342. package/lib/Layout/utils.js +0 -11
  343. package/lib/ListItem/ListContainer.js +30 -55
  344. package/lib/ListItem/ListItem.js +45 -74
  345. package/lib/ListItem/ListItem.module.css +38 -27
  346. package/lib/ListItem/ListItemWithAvatar.js +48 -80
  347. package/lib/ListItem/ListItemWithCheckBox.js +40 -70
  348. package/lib/ListItem/ListItemWithIcon.js +44 -73
  349. package/lib/ListItem/ListItemWithRadio.js +42 -71
  350. package/lib/ListItem/index.js +0 -7
  351. package/lib/ListItem/props/propTypes.js +4 -6
  352. package/lib/Modal/Modal.js +10 -45
  353. package/lib/Modal/props/propTypes.js +0 -3
  354. package/lib/MultiSelect/AdvancedGroupMultiSelect.js +166 -293
  355. package/lib/MultiSelect/AdvancedMultiSelect.js +125 -202
  356. package/lib/MultiSelect/EmptyState.js +24 -45
  357. package/lib/MultiSelect/MobileHeader/MobileHeader.js +5 -14
  358. package/lib/MultiSelect/MobileHeader/MobileHeader.module.css +5 -5
  359. package/lib/MultiSelect/MobileHeader/props/propTypes.js +0 -3
  360. package/lib/MultiSelect/MultiSelect.js +214 -333
  361. package/lib/MultiSelect/MultiSelect.module.css +31 -31
  362. package/lib/MultiSelect/MultiSelectHeader.js +7 -29
  363. package/lib/MultiSelect/MultiSelectWithAvatar.js +43 -85
  364. package/lib/MultiSelect/SelectedOptions.js +20 -47
  365. package/lib/MultiSelect/SelectedOptions.module.css +5 -5
  366. package/lib/MultiSelect/Suggestions.js +32 -64
  367. package/lib/MultiSelect/index.js +0 -5
  368. package/lib/MultiSelect/props/defaultProps.js +0 -2
  369. package/lib/MultiSelect/props/propTypes.js +4 -14
  370. package/lib/PopOver/PopOver.js +47 -94
  371. package/lib/PopOver/index.js +0 -4
  372. package/lib/PopOver/props/propTypes.js +0 -3
  373. package/lib/Popup/Popup.js +81 -158
  374. package/lib/Popup/viewPort.js +14 -28
  375. package/lib/Provider/AvatarSize.js +0 -4
  376. package/lib/Provider/Config.js +0 -2
  377. package/lib/Provider/CssProvider.js +0 -4
  378. package/lib/Provider/IdProvider.js +6 -17
  379. package/lib/Provider/LibraryContext.js +15 -35
  380. package/lib/Provider/LibraryContextInit.js +0 -4
  381. package/lib/Provider/NumberGenerator/NumberGenerator.js +15 -44
  382. package/lib/Provider/ZindexProvider.js +3 -15
  383. package/lib/Provider/index.js +0 -5
  384. package/lib/Radio/Radio.js +36 -60
  385. package/lib/Radio/Radio.module.css +9 -9
  386. package/lib/Radio/__tests__/Radio.spec.js +103 -134
  387. package/lib/Radio/props/propTypes.js +0 -3
  388. package/lib/Responsive/CustomResponsive.js +29 -73
  389. package/lib/Responsive/RefWrapper.js +11 -17
  390. package/lib/Responsive/ResizeComponent.js +36 -62
  391. package/lib/Responsive/ResizeObserver.js +10 -24
  392. package/lib/Responsive/Responsive.js +30 -80
  393. package/lib/Responsive/index.js +0 -4
  394. package/lib/Responsive/props/propTypes.js +0 -3
  395. package/lib/Responsive/sizeObservers.js +17 -53
  396. package/lib/Responsive/utils/index.js +3 -11
  397. package/lib/Responsive/utils/shallowCompare.js +2 -11
  398. package/lib/Responsive/windowResizeObserver.js +0 -8
  399. package/lib/ResponsiveDropBox/ResponsiveDropBox.js +17 -45
  400. package/lib/ResponsiveDropBox/ResponsiveDropBox.module.css +2 -2
  401. package/lib/ResponsiveDropBox/props/propTypes.js +4 -9
  402. package/lib/Ribbon/Ribbon.js +13 -33
  403. package/lib/Ribbon/Ribbon.module.css +48 -45
  404. package/lib/Ribbon/__tests__/Ribbon.spec.js +14 -24
  405. package/lib/Ribbon/props/propTypes.js +0 -3
  406. package/lib/RippleEffect/RippleEffect.js +10 -18
  407. package/lib/RippleEffect/__tests__/RippleEffect.spec.js +22 -34
  408. package/lib/RippleEffect/props/propTypes.js +0 -3
  409. package/lib/Select/GroupSelect.js +130 -229
  410. package/lib/Select/Select.js +211 -292
  411. package/lib/Select/Select.module.css +23 -23
  412. package/lib/Select/SelectWithAvatar.js +56 -102
  413. package/lib/Select/SelectWithIcon.js +76 -131
  414. package/lib/Select/index.js +0 -5
  415. package/lib/Select/props/defaultProps.js +4 -5
  416. package/lib/Select/props/propTypes.js +4 -10
  417. package/lib/Stencils/Stencils.js +10 -29
  418. package/lib/Stencils/Stencils.module.css +11 -11
  419. package/lib/Stencils/__tests__/Stencils.spec.js +13 -22
  420. package/lib/Stencils/props/propTypes.js +0 -3
  421. package/lib/Switch/Switch.js +34 -57
  422. package/lib/Switch/Switch.module.css +23 -23
  423. package/lib/Switch/__tests__/Switch.spec.js +72 -91
  424. package/lib/Switch/props/propTypes.js +0 -3
  425. package/lib/Tab/Tab.js +27 -40
  426. package/lib/Tab/Tab.module.css +14 -14
  427. package/lib/Tab/TabContent.js +5 -12
  428. package/lib/Tab/TabContentWrapper.js +6 -13
  429. package/lib/Tab/TabWrapper.js +19 -37
  430. package/lib/Tab/Tabs.js +91 -171
  431. package/lib/Tab/Tabs.module.css +22 -22
  432. package/lib/Tab/index.js +0 -6
  433. package/lib/Tab/props/propTypes.js +0 -3
  434. package/lib/Tag/Tag.js +43 -72
  435. package/lib/Tag/Tag.module.css +25 -24
  436. package/lib/Tag/props/propTypes.js +0 -3
  437. package/lib/TextBox/TextBox.js +59 -85
  438. package/lib/TextBox/TextBox.module.css +9 -9
  439. package/lib/TextBox/props/propTypes.js +4 -6
  440. package/lib/TextBoxIcon/TextBoxIcon.js +52 -79
  441. package/lib/TextBoxIcon/TextBoxIcon.module.css +7 -7
  442. package/lib/TextBoxIcon/props/propTypes.js +4 -9
  443. package/lib/Textarea/Textarea.js +29 -54
  444. package/lib/Textarea/Textarea.module.css +21 -21
  445. package/lib/Textarea/props/propTypes.js +0 -3
  446. package/lib/Tooltip/Tooltip.js +31 -94
  447. package/lib/Tooltip/Tooltip.module.css +5 -5
  448. package/lib/Tooltip/props/propTypes.js +0 -3
  449. package/lib/VelocityAnimation/VelocityAnimation/VelocityAnimation.js +16 -40
  450. package/lib/VelocityAnimation/VelocityAnimation/props/propTypes.js +0 -3
  451. package/lib/VelocityAnimation/VelocityAnimationGroup/VelocityAnimationGroup.js +25 -53
  452. package/lib/VelocityAnimation/VelocityAnimationGroup/props/propTypes.js +0 -3
  453. package/lib/VelocityAnimation/index.js +0 -3
  454. package/lib/common/animation.module.css +8 -8
  455. package/lib/common/avatarsizes.module.css +16 -16
  456. package/lib/common/basicReset.module.css +3 -3
  457. package/lib/common/common.module.css +24 -24
  458. package/lib/common/customscroll.module.css +2 -2
  459. package/lib/css.js +0 -40
  460. package/lib/deprecated/PortalLayer/PortalLayer.js +23 -46
  461. package/lib/deprecated/PortalLayer/props/propTypes.js +0 -3
  462. package/lib/index.js +0 -58
  463. package/lib/semantic/Button/Button.js +22 -42
  464. package/lib/semantic/Button/props/propTypes.js +0 -3
  465. package/lib/semantic/Button/semanticButton.module.css +1 -1
  466. package/lib/semantic/index.js +0 -2
  467. package/lib/utils/Common.js +18 -111
  468. package/lib/utils/ContextOptimizer.js +10 -16
  469. package/lib/utils/constructFullName.js +4 -13
  470. package/lib/utils/datetime/common.js +5 -34
  471. package/lib/utils/debounce.js +1 -6
  472. package/lib/utils/dropDownUtils.js +59 -175
  473. package/lib/utils/dummyFunction.js +0 -2
  474. package/lib/utils/getHTMLFontSize.js +0 -1
  475. package/lib/utils/getInitial.js +0 -6
  476. package/lib/utils/index.js +0 -1
  477. package/lib/utils/scrollTo.js +0 -2
  478. package/lib/utils/shallowEqual.js +0 -8
  479. package/lib/v1/Accordion/Accordion.js +19 -38
  480. package/lib/v1/Accordion/AccordionItem.js +13 -23
  481. package/lib/v1/Accordion/index.js +0 -3
  482. package/lib/v1/Accordion/props/propTypes.js +0 -3
  483. package/lib/v1/Animation/Animation.js +14 -20
  484. package/lib/v1/Animation/props/propTypes.js +0 -3
  485. package/lib/v1/AppContainer/AppContainer.js +17 -46
  486. package/lib/v1/AppContainer/props/propTypes.js +0 -3
  487. package/lib/v1/Avatar/Avatar.js +32 -68
  488. package/lib/v1/Avatar/props/propTypes.js +0 -3
  489. package/lib/v1/AvatarTeam/AvatarTeam.js +24 -32
  490. package/lib/v1/AvatarTeam/props/propTypes.js +0 -3
  491. package/lib/v1/Button/Button.js +22 -32
  492. package/lib/v1/Button/props/defaultProps.js +0 -2
  493. package/lib/v1/Button/props/propTypes.js +0 -3
  494. package/lib/v1/Buttongroup/Buttongroup.js +5 -13
  495. package/lib/v1/Buttongroup/props/propTypes.js +0 -3
  496. package/lib/v1/Card/Card.js +44 -78
  497. package/lib/v1/Card/index.js +0 -4
  498. package/lib/v1/Card/props/propTypes.js +0 -3
  499. package/lib/v1/CheckBox/CheckBox.js +41 -52
  500. package/lib/v1/CheckBox/props/propTypes.js +0 -3
  501. package/lib/v1/DateTime/CalendarView.js +48 -89
  502. package/lib/v1/DateTime/DateTime.js +158 -246
  503. package/lib/v1/DateTime/DateTimePopupFooter.js +8 -33
  504. package/lib/v1/DateTime/DateTimePopupHeader.js +17 -49
  505. package/lib/v1/DateTime/DateWidget.js +251 -352
  506. package/lib/v1/DateTime/DaysRow.js +5 -28
  507. package/lib/v1/DateTime/Time.js +32 -75
  508. package/lib/v1/DateTime/YearView.js +27 -76
  509. package/lib/v1/DateTime/index.js +0 -2
  510. package/lib/v1/DateTime/props/propTypes.js +1 -11
  511. package/lib/v1/DropBox/DropBox.js +21 -45
  512. package/lib/v1/DropBox/DropBoxElement/DropBoxElement.js +38 -59
  513. package/lib/v1/DropBox/DropBoxElement/props/propTypes.js +0 -3
  514. package/lib/v1/DropBox/props/defaultProps.js +4 -8
  515. package/lib/v1/DropBox/props/propTypes.js +4 -10
  516. package/lib/v1/DropDown/DropDown.js +3 -23
  517. package/lib/v1/DropDown/DropDownHeading.js +13 -20
  518. package/lib/v1/DropDown/DropDownItem.js +11 -26
  519. package/lib/v1/DropDown/DropDownSearch.js +16 -28
  520. package/lib/v1/DropDown/DropDownSeparator.js +1 -7
  521. package/lib/v1/DropDown/props/propTypes.js +4 -10
  522. package/lib/v1/Heading/Heading.js +14 -19
  523. package/lib/v1/Heading/props/propTypes.js +0 -3
  524. package/lib/v1/Label/Label.js +14 -22
  525. package/lib/v1/Label/props/propTypes.js +0 -3
  526. package/lib/v1/Layout/Box.js +15 -35
  527. package/lib/v1/Layout/Container.js +14 -33
  528. package/lib/v1/Layout/index.js +0 -3
  529. package/lib/v1/Layout/props/propTypes.js +0 -3
  530. package/lib/v1/ListItem/ListContainer.js +30 -55
  531. package/lib/v1/ListItem/ListItem.js +38 -53
  532. package/lib/v1/ListItem/ListItemWithAvatar.js +39 -62
  533. package/lib/v1/ListItem/ListItemWithCheckBox.js +34 -49
  534. package/lib/v1/ListItem/ListItemWithIcon.js +37 -52
  535. package/lib/v1/ListItem/ListItemWithRadio.js +35 -49
  536. package/lib/v1/ListItem/index.js +0 -7
  537. package/lib/v1/ListItem/props/propTypes.js +4 -6
  538. package/lib/v1/Modal/Modal.js +9 -46
  539. package/lib/v1/Modal/props/propTypes.js +0 -3
  540. package/lib/v1/MultiSelect/AdvancedGroupMultiSelect.js +168 -294
  541. package/lib/v1/MultiSelect/AdvancedMultiSelect.js +125 -202
  542. package/lib/v1/MultiSelect/EmptyState.js +24 -45
  543. package/lib/v1/MultiSelect/MobileHeader/MobileHeader.js +5 -14
  544. package/lib/v1/MultiSelect/MobileHeader/props/propTypes.js +0 -3
  545. package/lib/v1/MultiSelect/MultiSelect.js +216 -335
  546. package/lib/v1/MultiSelect/MultiSelectHeader.js +7 -29
  547. package/lib/v1/MultiSelect/MultiSelectWithAvatar.js +43 -86
  548. package/lib/v1/MultiSelect/SelectedOptions.js +20 -48
  549. package/lib/v1/MultiSelect/Suggestions.js +32 -64
  550. package/lib/v1/MultiSelect/index.js +0 -5
  551. package/lib/v1/MultiSelect/props/defaultProps.js +0 -2
  552. package/lib/v1/MultiSelect/props/propTypes.js +4 -14
  553. package/lib/v1/PopOver/PopOver.js +40 -71
  554. package/lib/v1/PopOver/props/propTypes.js +0 -3
  555. package/lib/v1/Popup/Popup.js +81 -158
  556. package/lib/v1/Provider/AvatarSize.js +0 -4
  557. package/lib/v1/Provider/Config.js +0 -2
  558. package/lib/v1/Provider/CssProvider.js +0 -4
  559. package/lib/v1/Provider/IdProvider.js +6 -17
  560. package/lib/v1/Provider/LibraryContext.js +15 -35
  561. package/lib/v1/Provider/LibraryContextInit.js +0 -4
  562. package/lib/v1/Provider/NumberGenerator/NumberGenerator.js +15 -44
  563. package/lib/v1/Provider/ZindexProvider.js +3 -15
  564. package/lib/v1/Provider/index.js +0 -5
  565. package/lib/v1/Radio/Radio.js +32 -42
  566. package/lib/v1/Radio/props/propTypes.js +0 -3
  567. package/lib/v1/Responsive/CustomResponsive.js +29 -73
  568. package/lib/v1/Responsive/RefWrapper.js +11 -17
  569. package/lib/v1/Responsive/ResizeComponent.js +36 -62
  570. package/lib/v1/Responsive/ResizeObserver.js +10 -24
  571. package/lib/v1/Responsive/Responsive.js +30 -80
  572. package/lib/v1/Responsive/index.js +0 -4
  573. package/lib/v1/Responsive/props/propTypes.js +0 -3
  574. package/lib/v1/ResponsiveDropBox/ResponsiveDropBox.js +13 -27
  575. package/lib/v1/ResponsiveDropBox/props/propTypes.js +4 -9
  576. package/lib/v1/Ribbon/Ribbon.js +7 -14
  577. package/lib/v1/Ribbon/props/propTypes.js +0 -3
  578. package/lib/v1/RippleEffect/RippleEffect.js +7 -17
  579. package/lib/v1/RippleEffect/props/propTypes.js +0 -3
  580. package/lib/v1/Select/GroupSelect.js +130 -229
  581. package/lib/v1/Select/Select.js +213 -293
  582. package/lib/v1/Select/SelectWithAvatar.js +56 -102
  583. package/lib/v1/Select/SelectWithIcon.js +76 -131
  584. package/lib/v1/Select/index.js +0 -5
  585. package/lib/v1/Select/props/defaultProps.js +4 -5
  586. package/lib/v1/Select/props/propTypes.js +4 -10
  587. package/lib/v1/Stencils/Stencils.js +3 -13
  588. package/lib/v1/Stencils/props/propTypes.js +0 -3
  589. package/lib/v1/Switch/Switch.js +25 -38
  590. package/lib/v1/Switch/props/propTypes.js +0 -3
  591. package/lib/v1/Tab/Tab.js +33 -46
  592. package/lib/v1/Tab/TabContent.js +7 -14
  593. package/lib/v1/Tab/TabContentWrapper.js +6 -13
  594. package/lib/v1/Tab/TabWrapper.js +19 -37
  595. package/lib/v1/Tab/Tabs.js +523 -514
  596. package/lib/v1/Tab/index.js +0 -6
  597. package/lib/v1/Tab/props/propTypes.js +0 -3
  598. package/lib/v1/Tag/Tag.js +32 -50
  599. package/lib/v1/Tag/props/propTypes.js +0 -3
  600. package/lib/v1/TextBox/TextBox.js +46 -67
  601. package/lib/v1/TextBox/props/propTypes.js +4 -6
  602. package/lib/v1/TextBoxIcon/TextBoxIcon.js +54 -79
  603. package/lib/v1/TextBoxIcon/props/propTypes.js +4 -9
  604. package/lib/v1/Textarea/Textarea.js +28 -45
  605. package/lib/v1/Textarea/props/propTypes.js +0 -3
  606. package/lib/v1/Tooltip/Tooltip.js +31 -94
  607. package/lib/v1/Tooltip/props/propTypes.js +0 -3
  608. package/lib/v1/Typography/Typography.js +15 -26
  609. package/lib/v1/Typography/css/Typography.module.css +31 -31
  610. package/lib/v1/Typography/css/cssJSLogic.js +20 -25
  611. package/lib/v1/Typography/props/propTypes.js +0 -3
  612. package/lib/v1/Typography/utils/index.js +0 -1
  613. package/lib/v1/VelocityAnimation/VelocityAnimation/VelocityAnimation.js +12 -25
  614. package/lib/v1/VelocityAnimation/VelocityAnimation/props/propTypes.js +0 -3
  615. package/lib/v1/VelocityAnimation/VelocityAnimationGroup/VelocityAnimationGroup.js +22 -38
  616. package/lib/v1/VelocityAnimation/VelocityAnimationGroup/props/propTypes.js +0 -3
  617. package/lib/v1/semantic/Button/Button.js +18 -24
  618. package/lib/v1/semantic/Button/props/propTypes.js +0 -3
  619. package/lib/v1/semantic/index.js +0 -2
  620. package/package.json +3 -3
  621. package/result.json +1 -1
  622. package/es/v1/Tab/v1Tab.module.css +0 -100
  623. package/es/v1/Tab/v1TabContent.module.css +0 -4
  624. package/es/v1/Tab/v1Tabs.module.css +0 -137
  625. package/lib/v1/Tab/v1Tab.module.css +0 -100
  626. package/lib/v1/Tab/v1TabContent.module.css +0 -4
  627. package/lib/v1/Tab/v1Tabs.module.css +0 -137
package/es/v1/Tab/Tabs.js CHANGED
@@ -1,73 +1,63 @@
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
-
3
- import React, { useState, useRef, useEffect, useCallback } from 'react';
4
- import useEffectCallOnlyAfterState from '@zohodesk/hooks/es/utils/useEffectCallOnlyAfterState';
2
+ /* eslint-disable react/forbid-component-props */
3
+ /* eslint css-modules/no-unused-class: [2, {
4
+ markAsUsed: [
5
+ 'hidden','alpha','gamma','beta','delta','special','text','maxWidth','widgetList','menuContainer','border','tabText','block','tabAlpha','alphaActive','gammaActive','betaActive','deltaActive','tabGamma','tabBeta','tabDelta','specialActive','tabSpecial',
6
+ 'alpha_padding','alpha_border','gamma_padding','gamma_border','beta_padding','beta_border','delta_padding','delta_border','textContainer','disabled','alphaActive_border','gammaActive_border','betaActive_border','deltaActive_border'
7
+ ]
8
+ }]
9
+ */
10
+ import React from 'react';
5
11
  import Tab from './Tab';
6
12
  import { Tabs_defaultProps } from './props/defaultProps';
7
13
  import { Tabs_propTypes } from './props/propTypes';
8
- import { remConvert, getTotalDimension, cs, throttle, cancelBubblingEffect } from '../../utils/Common';
14
+ import { remConvert, getTotalDimension, cs, bind, throttle, cancelBubblingEffect } from '../../utils/Common';
9
15
  import { Box, Container } from '../Layout';
10
16
  import ResizeObserver from '../Responsive/ResizeObserver';
11
17
  import ListItem from '../ListItem/ListItem';
12
18
  import { Icon } from '@zohodesk/icons';
13
- import tabsStyle from './v1Tabs.module.css';
19
+ import tabsStyle from '../../Tab/Tabs.module.css';
14
20
  import Popup from '../Popup/Popup';
15
21
  import ResponsiveDropBox from '../ResponsiveDropBox/ResponsiveDropBox';
16
22
  import { ResponsiveReceiver } from '../Responsive/CustomResponsive';
17
23
  import btnstyle from '../../semantic/Button/semanticButton.module.css';
18
-
19
- const Tabs = props => {
20
- const [totalDimension, setTotalDimension] = useState(null);
21
- const [tabDimensions, setTabDimensions] = useState({});
22
- const highlightInitialDimension = useRef(null);
23
- const [renderVirtualTabs, setRenderVirtualTabs] = useState(true);
24
- const [tabKeys, setTabKeys] = useState([]);
25
- const tabsObserver = useRef(new ResizeObserver(onResize));
26
- const tabObserver = useRef({});
27
- const highlight = useRef(null);
28
- const tabsEle = useRef(null);
29
- const tabElement = useRef({});
30
- let {
31
- style,
32
- className,
33
- dataId,
34
- highlightClass,
35
- type,
36
- isAnimate,
37
- needTabBorder,
38
- needBorder,
39
- needPadding,
40
- align,
41
- boxPosition,
42
- removeClose,
43
- togglePopup,
44
- needAppearance,
45
- children,
46
- onSelect,
47
- onScroll,
48
- isResponsive,
49
- maxTabsCount,
50
- minTabsCount,
51
- childType,
52
- containerClass,
53
- dataSelectorId,
54
- selectedTab
55
- } = props;
56
-
57
- function onTabResize(size, target) {
24
+ class Tabs extends React.Component {
25
+ constructor(props) {
26
+ super(props);
27
+ this.state = {
28
+ totalDimension: null,
29
+ tabDimensions: {},
30
+ highlightInitialDimension: null,
31
+ renderVirtualTabs: true,
32
+ tabKeys: []
33
+ };
34
+ bind.apply(this, ['moreTabSelect', 'onResize', 'onTabResize', 'getHighlightRef', 'getTabsRef', 'getTabRef', 'getHighlightDim', 'onSizeChange', 'onScroll', 'togglePopup', 'setMaxDim']);
35
+ this.tabsObserver = new ResizeObserver(this.onResize);
36
+ this.tabObserver = {};
37
+ }
38
+ onTabResize(size, target) {
39
+ let {
40
+ align
41
+ } = this.props;
42
+ let {
43
+ tabDimensions
44
+ } = this.state;
58
45
  let newDim = Object.assign({}, tabDimensions);
59
46
  let elemDim = getTotalDimension(target, align);
60
-
61
47
  if (elemDim !== 0) {
62
48
  newDim[target.dataset.key] = elemDim;
63
49
  }
64
-
65
- setTabDimensions(newDim);
50
+ this.setState({
51
+ tabDimensions: newDim
52
+ });
66
53
  }
67
-
68
- useEffect(() => {
69
- let totalDimension = getTotalDimensionLocal();
70
- let tabDimensions = getTabDimensions();
54
+ componentDidMount() {
55
+ let {
56
+ children,
57
+ childType
58
+ } = this.props;
59
+ let totalDimension = this.getTotalDimension();
60
+ let tabDimensions = this.getTabDimensions();
71
61
  let tabKeys = [];
72
62
  let restrictedKeys = ['state', 'props', 'refs', 'context'];
73
63
  React.Children.toArray(children).forEach(child => {
@@ -79,54 +69,70 @@ const Tabs = props => {
79
69
  }
80
70
  }
81
71
  });
82
- setTotalDimension(totalDimension);
83
- setTabDimensions(tabDimensions);
84
- setRenderVirtualTabs(false);
85
- setTabKeys(tabKeys);
86
-
87
- if (highlight.current) {
88
- highlightInitialDimension.current = getHighlightDim();
89
- moveHighlight();
72
+ this.setState({
73
+ totalDimension,
74
+ tabDimensions,
75
+ renderVirtualTabs: false,
76
+ tabKeys
77
+ });
78
+ this.highlight && this.setState({
79
+ highlightInitialDimension: this.getHighlightDim()
80
+ }, () => {
81
+ this.moveHighlight();
82
+ });
83
+ }
84
+ componentWillUnmount() {
85
+ if (this.tabsObserver) {
86
+ this.tabsObserver.disconnect();
87
+ this.tabsObserver = null;
90
88
  }
91
-
92
- return () => {
93
- if (tabsObserver.current) {
94
- tabsObserver.current.disconnect();
95
- tabsObserver.current = null;
96
- }
97
-
98
- if (tabObserver.current) {
99
- Object.keys(tabObserver.current).forEach(observer => {
100
- tabObserver.current[observer] && tabObserver.current[observer].disconnect();
101
- });
102
- tabObserver.current = null;
103
- }
104
- };
105
- }, []);
106
-
107
- function setMaxDim() {
89
+ if (this.tabObserver) {
90
+ Object.keys(this.tabObserver).forEach(observer => {
91
+ this.tabObserver[observer] && this.tabObserver[observer].disconnect();
92
+ });
93
+ this.tabObserver = null;
94
+ }
95
+ }
96
+ setMaxDim() {
108
97
  let totalDimension = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
109
-
98
+ let {
99
+ selectedTab
100
+ } = this.props;
110
101
  // let actual = Object.keys(tabDimensions).reduce(
111
102
  // (sum, tab) => sum + (tabDimensions[tab] || 0),
112
103
  // 0
113
104
  // );
114
- if (totalDimension && tabElement.current[selectedTab]) {
105
+ if (totalDimension && this[selectedTab]) {
106
+ let {
107
+ align
108
+ } = this.props;
115
109
  let newDim = `${remConvert(totalDimension)}rem`;
116
- align === 'vertical' ? tabElement.current[selectedTab].style.maxWidth = newDim : tabElement.current[selectedTab].style.maxHeight = newDim;
110
+ align === 'vertical' ? this[selectedTab].style.maxWidth = newDim : this[selectedTab].style.maxHeight = newDim;
117
111
  }
118
112
  }
119
-
120
- function getHighlightDim() {
121
- return align === 'vertical' ? highlight.current.offsetLeft : highlight.current.offsetTop;
113
+ getHighlightDim() {
114
+ let {
115
+ align
116
+ } = this.props;
117
+ return align === 'vertical' ? this.highlight.offsetLeft : this.highlight.offsetTop;
122
118
  }
123
-
124
- useEffectCallOnlyAfterState(() => {
125
- if (children) {
119
+ componentDidUpdate(prevProps) {
120
+ let {
121
+ children,
122
+ selectedTab,
123
+ childType
124
+ } = this.props;
125
+ let {
126
+ tabDimensions,
127
+ totalDimension,
128
+ tabKeys
129
+ } = this.state;
130
+ if (prevProps.children && children) {
126
131
  /**
127
132
  * To recalculate the dimensions of tabs we are checking the children length.
128
133
  * and also checking the tab id and their order.
129
134
  */
135
+
130
136
  let newTabKeys = [];
131
137
  React.Children.toArray(children).forEach(child => {
132
138
  if (child && child.props.id && child.type === childType) {
@@ -134,108 +140,124 @@ const Tabs = props => {
134
140
  }
135
141
  });
136
142
  let isSameTabKeys = newTabKeys.every((current, index) => tabKeys[index] === current);
137
-
138
143
  if (newTabKeys.length !== tabKeys.length || !isSameTabKeys) {
139
- setRenderVirtualTabs(true);
140
- setTabKeys(newTabKeys);
141
- setTimeout(() => {
142
- setTabDimensions(getTabDimensions());
143
- setTotalDimension(getTotalDimensionLocal());
144
- setRenderVirtualTabs(false);
144
+ this.setState({
145
+ renderVirtualTabs: true,
146
+ tabKeys: newTabKeys
147
+ }, () => {
148
+ totalDimension = this.getTotalDimension();
149
+ tabDimensions = this.getTabDimensions();
150
+ this.setState({
151
+ tabDimensions,
152
+ totalDimension,
153
+ renderVirtualTabs: false
154
+ });
145
155
  });
146
156
  }
147
-
148
- if (newTabKeys.length === 1) {
149
- moveHighlight();
157
+ if (prevProps.selectedTab !== selectedTab || newTabKeys.length === 1) {
158
+ this.moveHighlight();
150
159
  }
151
160
  }
152
- });
153
- useEffectCallOnlyAfterState(() => {
154
- tabsObserver.current && tabsObserver.current.replaceResizeHandler(onResize);
155
-
156
- if (children) {
157
- moveHighlight();
158
- }
159
- }, [selectedTab]);
160
-
161
- function moveHighlight() {
162
- let node = highlight.current;
163
-
161
+ }
162
+ moveHighlight() {
163
+ let {
164
+ isAnimate,
165
+ needTabBorder,
166
+ selectedTab,
167
+ align
168
+ } = this.props;
169
+ let {
170
+ highlightInitialDimension
171
+ } = this.state;
172
+ let node = this.highlight;
164
173
  if (isAnimate && needTabBorder && node) {
165
- let tabActive = tabElement.current[selectedTab];
166
-
174
+ let tabActive = this[selectedTab];
167
175
  if (tabActive) {
168
176
  let position, dimension;
169
-
170
177
  if (align === 'vertical') {
171
178
  position = tabActive.offsetLeft;
172
179
  dimension = tabActive.offsetWidth;
173
- node.style.transform = `translateX(${remConvert(position - highlightInitialDimension.current)}rem)`;
180
+ node.style.transform = `translateX(${remConvert(position - highlightInitialDimension)}rem)`;
174
181
  node.style.width = `${remConvert(dimension)}rem`;
175
182
  } else if (align === 'horizontal') {
176
183
  position = tabActive.offsetTop;
177
184
  dimension = tabActive.offsetHeight;
178
- node.style.transform = `translateY(${remConvert(position - highlightInitialDimension.current)}rem)`;
185
+ node.style.transform = `translateY(${remConvert(position - highlightInitialDimension)}rem)`;
179
186
  node.style.height = `${remConvert(dimension)}rem`;
180
187
  }
181
188
  }
182
189
  }
183
190
  }
184
-
185
- const getHighlightRef = useCallback(ele => {
186
- highlight.current = ele;
187
- }, []);
188
- const getTabsRef = useCallback(ele => {
189
- tabsEle.current = ele;
190
-
191
+ getHighlightRef(ele) {
192
+ this.highlight = ele;
193
+ }
194
+ getTabsRef(ele) {
195
+ this.tabsEle = ele;
191
196
  if (ele) {
192
- tabsObserver.current.observe(ele);
197
+ this.tabsObserver.observe(ele);
193
198
  } else {
194
- tabsObserver.current && tabsObserver.current.disconnect();
195
- }
196
- }, []);
197
-
198
- function onSizeChange() {
199
- let totalDimension = getTotalDimensionLocal();
200
- setTotalDimension(totalDimension);
201
-
202
- if (highlight.current) {
203
- highlightInitialDimension.current = getHighlightDim();
204
- moveHighlight();
199
+ this.tabsObserver && this.tabsObserver.disconnect();
205
200
  }
206
201
  }
207
-
208
- function onResize(timer) {
209
- if (tabsEle.current && isResponsive) {
202
+ onSizeChange() {
203
+ let totalDimension = this.getTotalDimension();
204
+ this.setState({
205
+ totalDimension
206
+ });
207
+ this.highlight && this.setState({
208
+ highlightInitialDimension: this.getHighlightDim()
209
+ }, () => {
210
+ this.moveHighlight();
211
+ });
212
+ }
213
+ onResize(timer) {
214
+ let {
215
+ isResponsive
216
+ } = this.props;
217
+ if (this.tabsEle && isResponsive) {
210
218
  if (!timer) {
211
- onSizeChange();
219
+ this.onSizeChange();
212
220
  } else {
213
221
  setTimeout(() => {
214
- onSizeChange();
222
+ this.onSizeChange();
215
223
  }, timer);
216
224
  }
217
225
  }
218
226
  }
219
-
220
- function getTotalDimensionLocal() {
221
- let totalDimension = tabsEle.current && getTotalDimension(tabsEle.current, align);
227
+ getTotalDimension() {
228
+ let {
229
+ align
230
+ } = this.props;
231
+ let totalDimension = this.tabsEle && getTotalDimension(this.tabsEle, align);
222
232
  return totalDimension;
223
233
  }
224
-
225
- function getTabDimensions() {
234
+ getTabDimensions() {
235
+ let {
236
+ children,
237
+ align,
238
+ childType
239
+ } = this.props;
226
240
  let tabDimensions = {};
227
- React.Children.forEach(children, child => /*#__PURE__*/React.isValidElement(child) && child.type === childType && tabElement.current[child.props.id] && Object.assign(tabDimensions, {
228
- [child.props.id]: tabElement.current[child.props.id] && getTotalDimension(tabElement.current[child.props.id], align)
241
+ React.Children.forEach(children, child => /*#__PURE__*/React.isValidElement(child) && child.type === childType && this[child.props.id] && Object.assign(tabDimensions, {
242
+ [child.props.id]: this[child.props.id] && getTotalDimension(this[child.props.id], align)
229
243
  }));
230
244
  return tabDimensions;
231
245
  }
232
-
233
- function responsiveTab(totalDimension, tabDimensions) {
246
+ responsiveTab(totalDimension, tabDimensions) {
247
+ let {
248
+ children,
249
+ maxTabsCount,
250
+ minTabsCount,
251
+ isResponsive
252
+ } = this.props;
234
253
  let mainTabs = [],
235
- moreTabs = [],
236
- otherTabs = [];
237
-
254
+ moreTabs = [],
255
+ otherTabs = [];
238
256
  if (totalDimension && isResponsive) {
257
+ let {
258
+ childType,
259
+ selectedTab
260
+ } = this.props;
239
261
  let selectedTabDimension = tabDimensions[selectedTab] || 0;
240
262
  let remainingDimension = totalDimension - selectedTabDimension;
241
263
  let maxTabsTobeVisible = maxTabsCount - 1;
@@ -245,7 +267,6 @@ const Tabs = props => {
245
267
  const elemDimension = tabDimensions[child.props.id];
246
268
  let isMaxCountExceeded = maxTabsTobeVisible <= 0 ? true : false;
247
269
  let isMinCountNotExceeded = minTabsToBeVisible < minTabsCount ? true : false;
248
-
249
270
  if (child.props.id === selectedTab) {
250
271
  mainTabs.push(child);
251
272
  } else if (isMinCountNotExceeded) {
@@ -264,7 +285,6 @@ const Tabs = props => {
264
285
  otherTabs.push(child);
265
286
  }
266
287
  });
267
-
268
288
  if (selectedTabDimension > totalDimension) {
269
289
  /* let { align } = this.props;
270
290
  let newDim = `${remConvert(totalDimension)}rem`;
@@ -275,9 +295,12 @@ const Tabs = props => {
275
295
  newTabs = mainTabs.map(tab => React.cloneElement(tab, { style: { maxHeight: newDim } }));
276
296
  }
277
297
  mainTabs = newTabs; */
278
- setMaxDim(totalDimension);
298
+ this.setMaxDim(totalDimension);
279
299
  }
280
300
  } else if (!isResponsive) {
301
+ let {
302
+ childType
303
+ } = this.props;
281
304
  React.Children.forEach(children, child => {
282
305
  if (child && child.type === childType && child.props.id) {
283
306
  mainTabs.push(child);
@@ -288,55 +311,55 @@ const Tabs = props => {
288
311
  } else {
289
312
  moreTabs = children;
290
313
  }
291
-
292
314
  return {
293
315
  mainTabs,
294
316
  moreTabs,
295
317
  otherTabs
296
318
  };
297
319
  }
298
-
299
- function getTabRef(refName, ele, isVirtual) {
300
- if (ele) {
301
- tabElement.current[refName] = ele;
302
- } // tabElement.current[refName] = ele
303
-
304
-
320
+ getTabRef(refName, ele, isVirtual) {
321
+ this[refName] = ele;
305
322
  let key = isVirtual ? `virtual_${refName}` : refName;
306
-
307
323
  if (ele) {
308
- tabObserver.current[key] = new ResizeObserver(onTabResize);
309
- tabObserver.current[key].observe(ele);
324
+ this.tabObserver[key] = new ResizeObserver(this.onTabResize);
325
+ this.tabObserver[key].observe(ele);
310
326
  } else {
311
- if (tabObserver.current && tabObserver.current[key]) {
312
- tabObserver.current[key].disconnect();
327
+ if (this.tabObserver && this.tabObserver[key]) {
328
+ this.tabObserver[key].disconnect();
313
329
  }
314
330
  }
315
331
  }
316
-
317
- function moreTabSelect(tab, value, index, e) {
332
+ moreTabSelect(tab, value, index, e) {
333
+ let {
334
+ onSelect
335
+ } = this.props;
318
336
  if (e && e.target && e.target.parentElement.tagName === 'A' && (e.metaKey || e.altKey || e.ctrlKey || e.shiftKey)) {
319
337
  cancelBubblingEffect(e);
320
338
  return;
321
339
  }
322
-
323
340
  e.preventDefault();
324
341
  onSelect(tab);
325
342
  }
326
-
327
- function onScrollLocal(e) {
343
+ onScroll(e) {
328
344
  e.persist();
345
+ let {
346
+ onScroll
347
+ } = this.props;
329
348
  onScroll && throttle(onScroll, 100, e);
330
349
  }
331
-
332
- function togglePopupLocal(e) {
350
+ togglePopup(e) {
351
+ let {
352
+ boxPosition,
353
+ togglePopup,
354
+ align,
355
+ removeClose
356
+ } = this.props;
333
357
  removeClose && removeClose(e);
334
358
  let popupPosition = align === 'vertical' ? 'bottomLeft' : 'rightTop';
335
359
  boxPosition = boxPosition ? boxPosition : popupPosition;
336
360
  togglePopup(e, boxPosition);
337
361
  }
338
-
339
- function responsiveFunc(_ref) {
362
+ responsiveFunc(_ref) {
340
363
  let {
341
364
  mediaQueryOR
342
365
  } = _ref;
@@ -346,9 +369,9 @@ const Tabs = props => {
346
369
  }])
347
370
  };
348
371
  }
349
-
350
- function renderTabs(mainTabs, moreTabs, isVirtual) {
372
+ renderTabs(mainTabs, moreTabs, isVirtual) {
351
373
  let {
374
+ selectedTab,
352
375
  moreButtonClass,
353
376
  moreButtonActiveClass,
354
377
  moreBoxClass,
@@ -360,6 +383,7 @@ const Tabs = props => {
360
383
  isPopupOpen,
361
384
  getContainerRef,
362
385
  showTitleInMoreOptions,
386
+ onSelect,
363
387
  moreContainerClass,
364
388
  align,
365
389
  type,
@@ -370,8 +394,9 @@ const Tabs = props => {
370
394
  getTargetRef,
371
395
  position,
372
396
  customProps,
373
- getCustomDropBoxHeaderPlaceHolder
374
- } = props;
397
+ getCustomDropBoxHeaderPlaceHolder,
398
+ dataSelectorId
399
+ } = this.props;
375
400
  let {
376
401
  DropBoxProps = {},
377
402
  ListItemProps = {},
@@ -382,23 +407,19 @@ const Tabs = props => {
382
407
  if (!child) {
383
408
  return null;
384
409
  }
385
-
386
410
  let MainTab = child.type;
387
411
  let classProps = {};
388
-
389
412
  if (itemActiveClass) {
390
413
  classProps.activeClass = itemActiveClass;
391
414
  }
392
-
393
415
  if (itemClass) {
394
416
  classProps.className = itemClass;
395
417
  }
396
-
397
418
  return /*#__PURE__*/React.isValidElement(child) && /*#__PURE__*/React.createElement(MainTab, _extends({}, child.props, {
398
419
  key: child.props.id,
399
- getTabRef: getTabRef,
400
- onSelect: onSelect // recalculateDimension={tabElement.current[recalculateDimension]}
401
- ,
420
+ getTabRef: this.getTabRef,
421
+ onSelect: onSelect,
422
+ recalculateDimension: this.recalculateDimension,
402
423
  isActive: child.props.id === selectedTab,
403
424
  type: type,
404
425
  isAnimate: isAnimate,
@@ -413,7 +434,7 @@ const Tabs = props => {
413
434
  }, /*#__PURE__*/React.createElement(Container, _extends({
414
435
  className: `${btnstyle.buttonReset} ${moreButtonClass} ${isPopupOpen ? moreButtonActiveClass : ''}`,
415
436
  align: "both",
416
- onClick: togglePopupLocal,
437
+ onClick: this.togglePopup,
417
438
  dataId: "moreTabs",
418
439
  eleRef: getTargetRef
419
440
  }, MoreButtonProps, {
@@ -424,7 +445,7 @@ const Tabs = props => {
424
445
  name: iconName,
425
446
  size: iconSize
426
447
  })), isPopupOpen && /*#__PURE__*/React.createElement(ResponsiveReceiver, {
427
- query: responsiveFunc,
448
+ query: this.responsiveFunc,
428
449
  responsiveId: "Helmet"
429
450
  }, _ref2 => {
430
451
  let {
@@ -444,18 +465,17 @@ const Tabs = props => {
444
465
  }, DropBoxProps, {
445
466
  isResponsivePadding: true,
446
467
  needFocusScope: true,
447
- onClose: togglePopupLocal
448
- }), getCustomDropBoxHeaderPlaceHolder && getCustomDropBoxHeaderPlaceHolder(props), /*#__PURE__*/React.createElement(Box, {
468
+ onClose: this.togglePopup
469
+ }), getCustomDropBoxHeaderPlaceHolder && getCustomDropBoxHeaderPlaceHolder(this.props), /*#__PURE__*/React.createElement(Box, {
449
470
  flexible: true,
450
471
  shrink: true,
451
472
  scroll: "vertical",
452
473
  className: `${tabletMode ? '' : tabsStyle.menuBox} ${moreBoxClass}`,
453
- onScroll: onScrollLocal
474
+ onScroll: this.onScroll
454
475
  }, React.Children.map(moreTabs, child => {
455
476
  if (!child) {
456
477
  return null;
457
478
  }
458
-
459
479
  let {
460
480
  text,
461
481
  id,
@@ -469,7 +489,7 @@ const Tabs = props => {
469
489
  return /*#__PURE__*/React.isValidElement(child) && /*#__PURE__*/React.createElement(ListItem, _extends({
470
490
  key: id,
471
491
  value: value,
472
- onClick: moreTabSelect,
492
+ onClick: this.moreTabSelect,
473
493
  id: id,
474
494
  title: title || text,
475
495
  isLink: isLink,
@@ -484,40 +504,62 @@ const Tabs = props => {
484
504
  })));
485
505
  })) : null);
486
506
  }
487
-
488
- let {
489
- mainTabs,
490
- moreTabs,
491
- otherTabs
492
- } = responsiveTab(totalDimension, tabDimensions);
493
- let appearanceClass = cs([tabsStyle[type], needBorder && tabsStyle[`${type}_border`], needPadding && tabsStyle[`${type}_padding`]]);
494
- let tabsClass = cs([tabsStyle.tab, className, needAppearance && appearanceClass]);
495
- let hlClass = cs([tabsStyle.highlight, highlightClass, isAnimate && tabsStyle.lineAnimate]);
496
- return /*#__PURE__*/React.createElement(Box, {
497
- className: containerClass,
498
- dataSelectorId: dataSelectorId
499
- }, /*#__PURE__*/React.createElement(Container, {
500
- alignBox: align === 'vertical' ? 'row' : 'column',
501
- className: tabsClass,
502
- style: style
503
- }, /*#__PURE__*/React.createElement(Box, {
504
- eleRef: getTabsRef,
505
- flexible: true
506
- }, renderVirtualTabs && /*#__PURE__*/React.createElement(Container, {
507
- alignBox: align === 'vertical' ? 'row' : 'column',
508
- className: tabsStyle.hidden
509
- }, renderTabs(children, [], true)), /*#__PURE__*/React.createElement(Container, {
510
- alignBox: align === 'vertical' ? 'row' : 'column'
511
- }, renderTabs(mainTabs, moreTabs, false))), otherTabs.length ? /*#__PURE__*/React.createElement(Box, null, otherTabs) : null, isAnimate && needTabBorder && needAppearance && /*#__PURE__*/React.createElement("div", {
512
- className: hlClass,
513
- ref: getHighlightRef,
514
- "data-id": dataId,
515
- "data-test-id": dataId
516
- })));
517
- };
518
-
507
+ render() {
508
+ let {
509
+ style,
510
+ className,
511
+ dataId,
512
+ highlightClass,
513
+ type,
514
+ isAnimate,
515
+ needTabBorder,
516
+ needBorder,
517
+ needPadding,
518
+ align,
519
+ needAppearance,
520
+ children,
521
+ containerClass,
522
+ dataSelectorId
523
+ } = this.props;
524
+ let {
525
+ totalDimension,
526
+ tabDimensions,
527
+ renderVirtualTabs
528
+ } = this.state;
529
+ let {
530
+ mainTabs,
531
+ moreTabs,
532
+ otherTabs
533
+ } = this.responsiveTab(totalDimension, tabDimensions);
534
+ let appearanceClass = cs([tabsStyle[type], needBorder && tabsStyle[`${type}_border`], needPadding && tabsStyle[`${type}_padding`]]);
535
+ let tabsClass = cs([tabsStyle.tab, className, needAppearance && appearanceClass]);
536
+ let hlClass = cs([tabsStyle.highlight, highlightClass, isAnimate && tabsStyle.lineAnimate]);
537
+ return /*#__PURE__*/React.createElement(Box, {
538
+ className: containerClass,
539
+ dataSelectorId: dataSelectorId
540
+ }, /*#__PURE__*/React.createElement(Container, {
541
+ alignBox: align === 'vertical' ? 'row' : 'column',
542
+ className: tabsClass,
543
+ style: style
544
+ }, /*#__PURE__*/React.createElement(Box, {
545
+ eleRef: this.getTabsRef,
546
+ flexible: true
547
+ }, renderVirtualTabs && /*#__PURE__*/React.createElement(Container, {
548
+ alignBox: align === 'vertical' ? 'row' : 'column',
549
+ className: tabsStyle.hidden
550
+ }, this.renderTabs(children, [], true)), /*#__PURE__*/React.createElement(Container, {
551
+ alignBox: align === 'vertical' ? 'row' : 'column'
552
+ }, this.renderTabs(mainTabs, moreTabs, false))), otherTabs.length ? /*#__PURE__*/React.createElement(Box, null, otherTabs) : null, isAnimate && needTabBorder && needAppearance && /*#__PURE__*/React.createElement("div", {
553
+ className: hlClass,
554
+ ref: this.getHighlightRef,
555
+ "data-id": dataId,
556
+ "data-test-id": dataId
557
+ })));
558
+ }
559
+ }
519
560
  Tabs.propTypes = Tabs_propTypes;
520
- Tabs.defaultProps = { ...Tabs_defaultProps,
561
+ Tabs.defaultProps = {
562
+ ...Tabs_defaultProps,
521
563
  childType: Tab
522
564
  };
523
565
  export default Popup(Tabs);