@zohodesk/components 1.2.40 → 1.2.41

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 (308) hide show
  1. package/.cli/propValidation_report.html +1 -1
  2. package/README.md +5 -0
  3. package/es/Accordion/Accordion.js +2 -2
  4. package/es/Accordion/AccordionItem.js +4 -4
  5. package/es/Accordion/__tests__/Accordion.spec.js +1 -1
  6. package/es/Accordion/__tests__/AccordionItem.spec.js +1 -1
  7. package/es/Accordion/index.js +2 -2
  8. package/es/Animation/Animation.js +3 -3
  9. package/es/Animation/__tests__/Animation.spec.js +1 -1
  10. package/es/Animation/utils.js +1 -1
  11. package/es/AppContainer/AppContainer.js +9 -9
  12. package/es/AppContainer/__tests__/AppContainer.spec.js +1 -1
  13. package/es/Avatar/Avatar.js +5 -5
  14. package/es/Avatar/__tests__/Avatar.spec.js +1 -1
  15. package/es/AvatarTeam/AvatarTeam.js +4 -4
  16. package/es/AvatarTeam/__tests__/AvatarTeam.spec.js +1 -1
  17. package/es/Button/Button.js +4 -4
  18. package/es/Button/__tests__/Button.spec.js +1 -1
  19. package/es/Button/index.js +2 -2
  20. package/es/Button/props/defaultProps.js +1 -1
  21. package/es/Buttongroup/Buttongroup.js +3 -3
  22. package/es/Buttongroup/__tests__/Buttongroup.spec.js +1 -1
  23. package/es/Card/Card.js +5 -5
  24. package/es/Card/__tests__/Card.spec.js +1 -1
  25. package/es/Card/index.js +4 -4
  26. package/es/CheckBox/CheckBox.js +6 -6
  27. package/es/CheckBox/__tests__/CheckBox.spec.js +1 -1
  28. package/es/DateTime/CalendarView.js +6 -6
  29. package/es/DateTime/DateTime.js +15 -15
  30. package/es/DateTime/DateTimePopupFooter.js +5 -5
  31. package/es/DateTime/DateTimePopupHeader.js +4 -4
  32. package/es/DateTime/DateWidget.js +17 -17
  33. package/es/DateTime/DaysRow.js +3 -3
  34. package/es/DateTime/Time.js +5 -5
  35. package/es/DateTime/YearView.js +6 -6
  36. package/es/DateTime/__tests__/CalendarView.spec.js +1 -1
  37. package/es/DateTime/__tests__/DateTime.spec.js +1 -1
  38. package/es/DateTime/__tests__/DateTimePopupFooter.spec.js +1 -1
  39. package/es/DateTime/__tests__/DateTimePopupHeader.spec.js +1 -1
  40. package/es/DateTime/__tests__/DateWidget.spec.js +1 -1
  41. package/es/DateTime/__tests__/DaysRow.spec.js +1 -1
  42. package/es/DateTime/__tests__/Time.spec.js +1 -1
  43. package/es/DateTime/__tests__/YearView.spec.js +1 -1
  44. package/es/DateTime/dateFormatUtils/dateFormat.js +4 -4
  45. package/es/DateTime/dateFormatUtils/dayChange.js +2 -2
  46. package/es/DateTime/dateFormatUtils/index.js +3 -3
  47. package/es/DateTime/dateFormatUtils/monthChange.js +2 -2
  48. package/es/DateTime/dateFormatUtils/timeChange.js +2 -2
  49. package/es/DateTime/dateFormatUtils/yearChange.js +2 -2
  50. package/es/DateTime/index.js +1 -1
  51. package/es/DateTime/props/propTypes.js +1 -1
  52. package/es/DateTime/validator.js +2 -2
  53. package/es/DropBox/DropBox.js +9 -9
  54. package/es/DropBox/DropBoxElement/DropBoxElement.js +6 -6
  55. package/es/DropBox/DropBoxElement/__tests__/DropBoxElement.spec.js +1 -1
  56. package/es/DropBox/DropBoxElement/css/cssJSLogic.js +1 -1
  57. package/es/DropBox/DropBoxElement/useDropboxPosCalc.js +1 -1
  58. package/es/DropBox/__tests__/DropBox.spec.js +1 -1
  59. package/es/DropBox/css/cssJSLogic.js +1 -1
  60. package/es/DropBox/props/defaultProps.js +1 -1
  61. package/es/DropBox/props/propTypes.js +1 -1
  62. package/es/DropBox/utils/isMobilePopover.js +1 -1
  63. package/es/DropDown/DropDown.js +4 -4
  64. package/es/DropDown/DropDownHeading.js +3 -3
  65. package/es/DropDown/DropDownItem.js +3 -3
  66. package/es/DropDown/DropDownSearch.js +4 -4
  67. package/es/DropDown/DropDownSeparator.js +2 -2
  68. package/es/DropDown/__tests__/DropDown.spec.js +1 -1
  69. package/es/DropDown/__tests__/DropDownHeading.spec.js +1 -1
  70. package/es/DropDown/__tests__/DropDownItem.spec.js +1 -1
  71. package/es/DropDown/__tests__/DropDownSearch.spec.js +1 -1
  72. package/es/DropDown/__tests__/DropDownSeparator.spec.js +1 -1
  73. package/es/DropDown/index.js +7 -7
  74. package/es/DropDown/props/propTypes.js +1 -1
  75. package/es/Heading/Heading.js +3 -3
  76. package/es/Heading/__tests__/Heading.spec.js +1 -1
  77. package/es/Label/Label.js +4 -4
  78. package/es/Label/__tests__/Label.spec.js +1 -1
  79. package/es/Layout/Box.js +4 -4
  80. package/es/Layout/Container.js +4 -4
  81. package/es/Layout/__tests__/Box.spec.js +1 -1
  82. package/es/Layout/__tests__/Container.spec.js +1 -1
  83. package/es/Layout/index.js +2 -2
  84. package/es/ListItem/ListContainer.js +6 -6
  85. package/es/ListItem/ListItem.js +5 -5
  86. package/es/ListItem/ListItemWithAvatar.js +7 -7
  87. package/es/ListItem/ListItemWithCheckBox.js +6 -6
  88. package/es/ListItem/ListItemWithIcon.js +5 -5
  89. package/es/ListItem/ListItemWithRadio.js +6 -6
  90. package/es/ListItem/__tests__/ListContainer.spec.js +1 -1
  91. package/es/ListItem/__tests__/ListItem.spec.js +1 -1
  92. package/es/ListItem/__tests__/ListItemWithAvatar.spec.js +1 -1
  93. package/es/ListItem/__tests__/ListItemWithCheckBox.spec.js +1 -1
  94. package/es/ListItem/__tests__/ListItemWithIcon.spec.js +1 -1
  95. package/es/ListItem/__tests__/ListItemWithRadio.spec.js +1 -1
  96. package/es/ListItem/index.js +6 -6
  97. package/es/Modal/Modal.js +3 -3
  98. package/es/Modal/__tests__/Modal.spec.js +1 -1
  99. package/es/MultiSelect/AdvancedGroupMultiSelect.js +17 -17
  100. package/es/MultiSelect/AdvancedMultiSelect.js +17 -17
  101. package/es/MultiSelect/EmptyState.js +3 -3
  102. package/es/MultiSelect/MobileHeader/MobileHeader.js +5 -5
  103. package/es/MultiSelect/MobileHeader/__tests__/MobileHeader.spec.js +1 -1
  104. package/es/MultiSelect/MultiSelect.js +20 -20
  105. package/es/MultiSelect/MultiSelectHeader.js +4 -4
  106. package/es/MultiSelect/MultiSelectWithAvatar.js +16 -16
  107. package/es/MultiSelect/SelectedOptions.js +5 -5
  108. package/es/MultiSelect/Suggestions.js +6 -6
  109. package/es/MultiSelect/__tests__/AdvancedGroupMultiSelect.spec.js +1 -1
  110. package/es/MultiSelect/__tests__/AdvancedMultiSelect.spec.js +1 -1
  111. package/es/MultiSelect/__tests__/EmptyState.spec.js +1 -1
  112. package/es/MultiSelect/__tests__/MultiSelect.spec.js +1 -1
  113. package/es/MultiSelect/__tests__/MultiSelectHeader.spec.js +1 -1
  114. package/es/MultiSelect/__tests__/MultiSelectWithAvatar.spec.js +1 -1
  115. package/es/MultiSelect/__tests__/SelectedOptions.spec.js +1 -1
  116. package/es/MultiSelect/__tests__/Suggestions.spec.js +1 -1
  117. package/es/MultiSelect/index.js +4 -4
  118. package/es/MultiSelect/props/defaultProps.js +1 -1
  119. package/es/PopOver/PopOver.js +6 -6
  120. package/es/PopOver/__tests__/PopOver.spec.js +1 -1
  121. package/es/PopOver/index.js +3 -3
  122. package/es/Popup/Popup.js +3 -3
  123. package/es/Provider/AvatarSize.js +1 -1
  124. package/es/Provider/CssProvider.js +1 -1
  125. package/es/Provider/IdProvider.js +2 -2
  126. package/es/Provider/LibraryContext.js +2 -2
  127. package/es/Provider/ZindexProvider.js +2 -2
  128. package/es/Provider/index.js +4 -4
  129. package/es/Radio/Radio.js +5 -5
  130. package/es/Radio/__tests__/Radio.spec.js +1 -1
  131. package/es/Responsive/CustomResponsive.js +7 -7
  132. package/es/Responsive/ResizeComponent.js +2 -2
  133. package/es/Responsive/Responsive.js +6 -6
  134. package/es/Responsive/index.js +3 -3
  135. package/es/Responsive/utils/index.js +1 -1
  136. package/es/Responsive/windowResizeObserver.js +1 -1
  137. package/es/ResponsiveDropBox/ResponsiveDropBox.js +6 -6
  138. package/es/ResponsiveDropBox/__tests__/ResponsiveDropBox.spec.js +1 -1
  139. package/es/ResponsiveDropBox/props/propTypes.js +1 -1
  140. package/es/Ribbon/Ribbon.js +3 -3
  141. package/es/Ribbon/__tests__/Ribbon.spec.js +1 -1
  142. package/es/RippleEffect/RippleEffect.js +4 -4
  143. package/es/RippleEffect/__tests__/RippleEffect.spec.js +1 -1
  144. package/es/Select/GroupSelect.js +16 -16
  145. package/es/Select/Select.js +15 -15
  146. package/es/Select/SelectWithAvatar.js +17 -17
  147. package/es/Select/SelectWithIcon.js +13 -13
  148. package/es/Select/__tests__/GroupSelect.spec.js +1 -1
  149. package/es/Select/__tests__/Select.spec.js +1 -1
  150. package/es/Select/__tests__/SelectWithAvatar.spec.js +1 -1
  151. package/es/Select/__tests__/SelectWithIcon.spec.js +1 -1
  152. package/es/Select/index.js +4 -4
  153. package/es/Select/props/defaultProps.js +1 -1
  154. package/es/Stencils/Stencils.js +3 -3
  155. package/es/Stencils/__tests__/Stencils.spec.js +1 -1
  156. package/es/Switch/Switch.js +5 -5
  157. package/es/Switch/__tests__/Switch.spec.js +1 -1
  158. package/es/Tab/Tab.js +5 -5
  159. package/es/Tab/TabContent.js +4 -4
  160. package/es/Tab/TabContentWrapper.js +3 -3
  161. package/es/Tab/TabWrapper.js +3 -3
  162. package/es/Tab/Tabs.js +131 -33
  163. package/es/Tab/Tabs.module.css +32 -2
  164. package/es/Tab/__tests__/Tab.spec.js +1 -1
  165. package/es/Tab/__tests__/TabContent.spec.js +1 -1
  166. package/es/Tab/__tests__/TabContentWrapper.spec.js +1 -1
  167. package/es/Tab/__tests__/TabWrapper.spec.js +1 -1
  168. package/es/Tab/__tests__/Tabs.spec.js +1 -1
  169. package/es/Tab/index.js +5 -5
  170. package/es/Tab/props/defaultProps.js +4 -1
  171. package/es/Tab/props/propTypes.js +6 -1
  172. package/es/Tag/Tag.js +7 -7
  173. package/es/Tag/__tests__/Tag.spec.js +1 -1
  174. package/es/TextBox/TextBox.js +3 -3
  175. package/es/TextBox/__tests__/TextBox.spec.js +1 -1
  176. package/es/TextBoxIcon/TextBoxIcon.js +6 -6
  177. package/es/TextBoxIcon/__tests__/TextBoxIcon.spec.js +1 -1
  178. package/es/TextBoxIcon/props/propTypes.js +1 -1
  179. package/es/Textarea/Textarea.js +3 -3
  180. package/es/Textarea/__tests__/Textarea.spec.js +1 -1
  181. package/es/Tooltip/Tooltip.js +5 -5
  182. package/es/VelocityAnimation/VelocityAnimation/VelocityAnimation.js +3 -3
  183. package/es/VelocityAnimation/VelocityAnimation/__tests__/VelocityAnimation.spec.js +1 -1
  184. package/es/VelocityAnimation/VelocityAnimationGroup/VelocityAnimationGroup.js +3 -3
  185. package/es/VelocityAnimation/VelocityAnimationGroup/__tests__/VelocityAnimationGroup.spec.js +1 -1
  186. package/es/VelocityAnimation/index.js +2 -2
  187. package/es/css.js +37 -37
  188. package/es/deprecated/PortalLayer/PortalLayer.js +3 -3
  189. package/es/index.js +39 -39
  190. package/es/semantic/Button/Button.js +3 -3
  191. package/es/semantic/Button/__tests__/Button.spec.js +1 -1
  192. package/es/semantic/index.js +1 -1
  193. package/es/utils/Common.js +1 -1
  194. package/es/utils/ContextOptimizer.js +1 -1
  195. package/es/utils/datetime/common.js +1 -1
  196. package/es/utils/dropDownUtils.js +1 -1
  197. package/es/utils/index.js +1 -1
  198. package/es/v1/Accordion/Accordion.js +2 -2
  199. package/es/v1/Accordion/AccordionItem.js +4 -4
  200. package/es/v1/Accordion/index.js +2 -2
  201. package/es/v1/Animation/Animation.js +3 -3
  202. package/es/v1/Animation/utils.js +1 -1
  203. package/es/v1/AppContainer/AppContainer.js +9 -9
  204. package/es/v1/Avatar/Avatar.js +5 -5
  205. package/es/v1/AvatarTeam/AvatarTeam.js +4 -4
  206. package/es/v1/Button/Button.js +4 -4
  207. package/es/v1/Button/props/defaultProps.js +1 -1
  208. package/es/v1/Buttongroup/Buttongroup.js +3 -3
  209. package/es/v1/Card/Card.js +5 -5
  210. package/es/v1/Card/index.js +4 -4
  211. package/es/v1/Card/props/propTypes.js +1 -1
  212. package/es/v1/CheckBox/CheckBox.js +6 -6
  213. package/es/v1/DateTime/CalendarView.js +7 -7
  214. package/es/v1/DateTime/DateTime.js +15 -15
  215. package/es/v1/DateTime/DateTimePopupFooter.js +5 -5
  216. package/es/v1/DateTime/DateTimePopupHeader.js +4 -4
  217. package/es/v1/DateTime/DateWidget.js +17 -17
  218. package/es/v1/DateTime/DaysRow.js +3 -3
  219. package/es/v1/DateTime/Time.js +5 -5
  220. package/es/v1/DateTime/YearView.js +6 -6
  221. package/es/v1/DateTime/index.js +1 -1
  222. package/es/v1/DateTime/props/propTypes.js +2 -2
  223. package/es/v1/DropBox/DropBox.js +9 -9
  224. package/es/v1/DropBox/DropBoxElement/DropBoxElement.js +6 -6
  225. package/es/v1/DropBox/props/defaultProps.js +1 -1
  226. package/es/v1/DropBox/props/propTypes.js +1 -1
  227. package/es/v1/DropBox/utils/isMobilePopover.js +1 -1
  228. package/es/v1/DropDown/DropDown.js +4 -4
  229. package/es/v1/DropDown/DropDownHeading.js +3 -3
  230. package/es/v1/DropDown/DropDownItem.js +3 -3
  231. package/es/v1/DropDown/DropDownSearch.js +4 -4
  232. package/es/v1/DropDown/DropDownSeparator.js +2 -2
  233. package/es/v1/DropDown/props/propTypes.js +1 -1
  234. package/es/v1/Heading/Heading.js +3 -3
  235. package/es/v1/Label/Label.js +4 -4
  236. package/es/v1/Layout/Box.js +4 -4
  237. package/es/v1/Layout/Container.js +4 -4
  238. package/es/v1/Layout/index.js +2 -2
  239. package/es/v1/ListItem/ListContainer.js +6 -6
  240. package/es/v1/ListItem/ListItem.js +5 -5
  241. package/es/v1/ListItem/ListItemWithAvatar.js +7 -7
  242. package/es/v1/ListItem/ListItemWithCheckBox.js +6 -6
  243. package/es/v1/ListItem/ListItemWithIcon.js +5 -5
  244. package/es/v1/ListItem/ListItemWithRadio.js +6 -6
  245. package/es/v1/ListItem/index.js +6 -6
  246. package/es/v1/Modal/Modal.js +3 -3
  247. package/es/v1/MultiSelect/AdvancedGroupMultiSelect.js +17 -17
  248. package/es/v1/MultiSelect/AdvancedMultiSelect.js +17 -17
  249. package/es/v1/MultiSelect/EmptyState.js +3 -3
  250. package/es/v1/MultiSelect/MobileHeader/MobileHeader.js +5 -5
  251. package/es/v1/MultiSelect/MultiSelect.js +19 -19
  252. package/es/v1/MultiSelect/MultiSelectHeader.js +4 -4
  253. package/es/v1/MultiSelect/MultiSelectWithAvatar.js +16 -16
  254. package/es/v1/MultiSelect/SelectedOptions.js +5 -5
  255. package/es/v1/MultiSelect/Suggestions.js +6 -6
  256. package/es/v1/MultiSelect/index.js +4 -4
  257. package/es/v1/MultiSelect/props/defaultProps.js +1 -1
  258. package/es/v1/PopOver/PopOver.js +6 -6
  259. package/es/v1/Popup/Popup.js +3 -3
  260. package/es/v1/Radio/Radio.js +5 -5
  261. package/es/v1/ResponsiveDropBox/ResponsiveDropBox.js +6 -6
  262. package/es/v1/ResponsiveDropBox/props/propTypes.js +2 -2
  263. package/es/v1/Ribbon/Ribbon.js +3 -3
  264. package/es/v1/Ribbon/props/propTypes.js +1 -1
  265. package/es/v1/RippleEffect/RippleEffect.js +4 -4
  266. package/es/v1/Select/GroupSelect.js +16 -16
  267. package/es/v1/Select/Select.js +15 -15
  268. package/es/v1/Select/SelectWithAvatar.js +17 -17
  269. package/es/v1/Select/SelectWithIcon.js +13 -13
  270. package/es/v1/Select/index.js +4 -4
  271. package/es/v1/Select/props/defaultProps.js +1 -1
  272. package/es/v1/Stencils/Stencils.js +3 -3
  273. package/es/v1/Switch/Switch.js +5 -5
  274. package/es/v1/Tab/Tab.js +5 -5
  275. package/es/v1/Tab/TabContent.js +4 -4
  276. package/es/v1/Tab/TabContentWrapper.js +3 -3
  277. package/es/v1/Tab/TabWrapper.js +3 -3
  278. package/es/v1/Tab/Tabs.js +111 -28
  279. package/es/v1/Tab/index.js +5 -5
  280. package/es/v1/Tab/props/defaultProps.js +4 -1
  281. package/es/v1/Tab/props/propTypes.js +6 -1
  282. package/es/v1/Tab/v1Tabs.module.css +32 -2
  283. package/es/v1/Tag/Tag.js +7 -7
  284. package/es/v1/TextBox/TextBox.js +3 -3
  285. package/es/v1/TextBoxIcon/TextBoxIcon.js +6 -6
  286. package/es/v1/TextBoxIcon/props/propTypes.js +1 -1
  287. package/es/v1/Textarea/Textarea.js +3 -3
  288. package/es/v1/Tooltip/Tooltip.js +5 -5
  289. package/es/v1/Typography/Typography.js +4 -4
  290. package/es/v1/Typography/css/cssJSLogic.js +1 -1
  291. package/es/v1/VelocityAnimation/VelocityAnimation/VelocityAnimation.js +3 -3
  292. package/es/v1/VelocityAnimation/VelocityAnimationGroup/VelocityAnimationGroup.js +3 -3
  293. package/es/v1/semantic/Button/Button.js +3 -3
  294. package/es/v1/semantic/index.js +1 -1
  295. package/lib/Tab/Tabs.js +167 -74
  296. package/lib/Tab/Tabs.module.css +32 -2
  297. package/lib/Tab/props/defaultProps.js +4 -1
  298. package/lib/Tab/props/propTypes.js +6 -1
  299. package/lib/v1/Card/props/propTypes.js +1 -1
  300. package/lib/v1/DateTime/props/propTypes.js +1 -1
  301. package/lib/v1/ResponsiveDropBox/props/propTypes.js +1 -1
  302. package/lib/v1/Ribbon/props/propTypes.js +1 -1
  303. package/lib/v1/Tab/Tabs.js +107 -23
  304. package/lib/v1/Tab/props/defaultProps.js +4 -1
  305. package/lib/v1/Tab/props/propTypes.js +6 -1
  306. package/lib/v1/Tab/v1Tabs.module.css +32 -2
  307. package/package.json +10 -10
  308. package/result.json +1 -1
package/es/Tab/Tabs.js CHANGED
@@ -8,19 +8,21 @@
8
8
  }]
9
9
  */
10
10
  import React from 'react';
11
- import Tab from "./Tab";
12
- import { Tabs_defaultProps } from "./props/defaultProps";
13
- import { Tabs_propTypes } from "./props/propTypes";
14
- import { remConvert, getTotalDimension, cs, bind, throttle, cancelBubblingEffect } from "../utils/Common";
15
- import { Box, Container } from "../Layout";
16
- import ResizeObserver from "../Responsive/ResizeObserver";
17
- import ListItem from "../ListItem/ListItem";
11
+ import EmptySearch from '@zohodesk/svg/lib/emptystate/version3/EmptySearch';
12
+ import Tab from './Tab';
13
+ import { Tabs_defaultProps } from './props/defaultProps';
14
+ import { Tabs_propTypes } from './props/propTypes';
15
+ import { remConvert, getTotalDimension, cs, bind, throttle, cancelBubblingEffect } from '../utils/Common';
16
+ import { Box, Container } from '../Layout';
17
+ import ResizeObserver from '../Responsive/ResizeObserver';
18
+ import ListItem from '../ListItem/ListItem';
18
19
  import { Icon } from '@zohodesk/icons';
19
- import tabsStyle from "./Tabs.module.css";
20
- import Popup from "../Popup/Popup";
21
- import ResponsiveDropBox from "../ResponsiveDropBox/ResponsiveDropBox";
22
- import { ResponsiveReceiver } from "../Responsive/CustomResponsive";
23
- import btnstyle from "../semantic/Button/semanticButton.module.css";
20
+ import tabsStyle from './Tabs.module.css';
21
+ import Popup from '../Popup/Popup';
22
+ import TextBoxIcon from '../TextBoxIcon/TextBoxIcon';
23
+ import ResponsiveDropBox from '../ResponsiveDropBox/ResponsiveDropBox';
24
+ import { ResponsiveReceiver } from '../Responsive/CustomResponsive';
25
+ import btnstyle from '../semantic/Button/semanticButton.module.css';
24
26
 
25
27
  class Tabs extends React.Component {
26
28
  constructor(props) {
@@ -30,9 +32,10 @@ class Tabs extends React.Component {
30
32
  tabDimensions: {},
31
33
  highlightInitialDimension: null,
32
34
  renderVirtualTabs: true,
33
- tabKeys: []
35
+ tabKeys: [],
36
+ searchValue: ''
34
37
  };
35
- bind.apply(this, ['moreTabSelect', 'onResize', 'onTabResize', 'getHighlightRef', 'getTabsRef', 'getTabRef', 'getHighlightDim', 'onSizeChange', 'onScroll', 'togglePopup', 'setMaxDim']);
38
+ bind.apply(this, ['moreTabSelect', 'onResize', 'onTabResize', 'getHighlightRef', 'getTabsRef', 'getTabRef', 'getHighlightDim', 'onSizeChange', 'onScroll', 'togglePopup', 'setMaxDim', 'handleChange', 'handleSearchValueClear', 'getMoreList', 'renderEmptyState']);
36
39
  this.tabsObserver = new ResizeObserver(this.onResize);
37
40
  this.tabObserver = {};
38
41
  }
@@ -130,12 +133,14 @@ class Tabs extends React.Component {
130
133
  let {
131
134
  children,
132
135
  selectedTab,
133
- childType
136
+ childType,
137
+ isPopupOpen
134
138
  } = this.props;
135
139
  let {
136
140
  tabDimensions,
137
141
  totalDimension,
138
- tabKeys
142
+ tabKeys,
143
+ searchValue
139
144
  } = this.state;
140
145
 
141
146
  if (prevProps.children && children) {
@@ -169,6 +174,10 @@ class Tabs extends React.Component {
169
174
  if (prevProps.selectedTab !== selectedTab || newTabKeys.length === 1) {
170
175
  this.moveHighlight();
171
176
  }
177
+
178
+ if (prevProps.isPopupOpen != isPopupOpen && searchValue.length) {
179
+ this.handleSearchValueClear();
180
+ }
172
181
  }
173
182
  }
174
183
 
@@ -363,7 +372,8 @@ class Tabs extends React.Component {
363
372
 
364
373
  moreTabSelect(tab, value, index, e) {
365
374
  let {
366
- onSelect
375
+ onSelect,
376
+ closePopupOnly
367
377
  } = this.props;
368
378
 
369
379
  if (e && e.target && e.target.parentElement.tagName === 'A' && (e.metaKey || e.altKey || e.ctrlKey || e.shiftKey)) {
@@ -373,6 +383,7 @@ class Tabs extends React.Component {
373
383
 
374
384
  e.preventDefault();
375
385
  onSelect(tab);
386
+ closePopupOnly();
376
387
  }
377
388
 
378
389
  onScroll(e) {
@@ -407,6 +418,70 @@ class Tabs extends React.Component {
407
418
  };
408
419
  }
409
420
 
421
+ handleChange(value, e) {
422
+ this.setState({
423
+ searchValue: value
424
+ });
425
+ }
426
+
427
+ handleSearchValueClear(e) {
428
+ this.setState({
429
+ searchValue: ''
430
+ });
431
+ }
432
+
433
+ getMoreList(_ref2) {
434
+ let {
435
+ moreTabs
436
+ } = _ref2;
437
+ const validElements = [];
438
+ React.Children.map(moreTabs, child => {
439
+ const isValidElement = /*#__PURE__*/React.isValidElement(child);
440
+
441
+ if (isValidElement) {
442
+ validElements.push(child.props);
443
+ }
444
+ });
445
+ return validElements;
446
+ }
447
+
448
+ handleFilterSuggestions(_ref3) {
449
+ let {
450
+ moreTabs
451
+ } = _ref3;
452
+ const {
453
+ showTitleInMoreOptions
454
+ } = this.props;
455
+ const {
456
+ searchValue
457
+ } = this.state;
458
+ const options = this.getMoreList({
459
+ moreTabs
460
+ });
461
+ const filteredOptions = options.filter(list => {
462
+ const {
463
+ text,
464
+ title
465
+ } = list;
466
+ const value = text ? text : showTitleInMoreOptions ? title : '';
467
+ return value.toLowerCase().includes(searchValue.toLowerCase());
468
+ });
469
+ return filteredOptions;
470
+ }
471
+
472
+ renderEmptyState() {
473
+ const {
474
+ searchErrorText
475
+ } = this.props;
476
+ return /*#__PURE__*/React.createElement("div", {
477
+ className: tabsStyle.emptyStateContainer
478
+ }, /*#__PURE__*/React.createElement(EmptySearch, {
479
+ size: "small"
480
+ }), /*#__PURE__*/React.createElement("div", {
481
+ className: tabsStyle.emptyStateTitle
482
+ }, searchErrorText));
483
+ }
484
+
410
485
  renderTabs(mainTabs, moreTabs, isVirtual) {
411
486
  let {
412
487
  selectedTab,
@@ -434,14 +509,25 @@ class Tabs extends React.Component {
434
509
  customProps,
435
510
  getCustomDropBoxHeaderPlaceHolder,
436
511
  dataSelectorId,
437
- dataId
512
+ dataId,
513
+ placeHolderText,
514
+ searchBoxSize,
515
+ removeClose
438
516
  } = this.props;
517
+ const {
518
+ searchValue
519
+ } = this.state;
439
520
  let {
440
521
  DropBoxProps = {},
441
522
  ListItemProps = {},
442
- MoreButtonProps = {}
523
+ MoreButtonProps = {},
524
+ TextBoxIconProps = {}
443
525
  } = customProps;
444
526
  let popupClass = align === 'vertical' ? tabsStyle[position] ? tabsStyle[position] : '' : '';
527
+ const moreTabsListItems = this.handleFilterSuggestions({
528
+ moreTabs
529
+ });
530
+ const hasSearch = moreTabs.length > 4;
445
531
  return /*#__PURE__*/React.createElement(React.Fragment, null, React.Children.map(mainTabs, child => {
446
532
  if (!child) {
447
533
  return null;
@@ -491,10 +577,10 @@ class Tabs extends React.Component {
491
577
  })), isPopupOpen && /*#__PURE__*/React.createElement(ResponsiveReceiver, {
492
578
  query: this.responsiveFunc,
493
579
  responsiveId: "Helmet"
494
- }, _ref2 => {
580
+ }, _ref4 => {
495
581
  let {
496
582
  tabletMode
497
- } = _ref2;
583
+ } = _ref4;
498
584
  return /*#__PURE__*/React.createElement(ResponsiveDropBox, {
499
585
  isActive: isPopupReady,
500
586
  isAnimate: true,
@@ -509,20 +595,32 @@ class Tabs extends React.Component {
509
595
  ...DropBoxProps,
510
596
  isResponsivePadding: true,
511
597
  needFocusScope: true,
512
- onClose: this.togglePopup,
513
- dataId: `${dataId}_dropbox`
514
- }, getCustomDropBoxHeaderPlaceHolder && getCustomDropBoxHeaderPlaceHolder(this.props), /*#__PURE__*/React.createElement(Box, {
598
+ dataId: `${dataId}_dropbox`,
599
+ onClick: removeClose,
600
+ onClose: this.togglePopup
601
+ }, getCustomDropBoxHeaderPlaceHolder && getCustomDropBoxHeaderPlaceHolder(this.props), hasSearch ? /*#__PURE__*/React.createElement(Box, {
602
+ className: tabsStyle.search
603
+ }, /*#__PURE__*/React.createElement(TextBoxIcon, {
604
+ placeHolder: placeHolderText,
605
+ onChange: this.handleChange,
606
+ value: searchValue,
607
+ onClear: this.handleSearchValueClear,
608
+ size: searchBoxSize,
609
+ customProps: {
610
+ TextBoxProps: {
611
+ 'data-a11y-autofocus': true
612
+ }
613
+ },
614
+ dataId: `${dataId}_search`,
615
+ ...TextBoxIconProps
616
+ })) : null, /*#__PURE__*/React.createElement(Box, {
515
617
  flexible: true,
516
618
  shrink: true,
517
619
  scroll: "vertical",
518
- className: `${tabletMode ? '' : tabsStyle.menuBox} ${moreBoxClass}`,
620
+ className: `${tabsStyle.listWrapper} ${tabletMode ? '' : tabsStyle.menuBox} ${moreBoxClass}`,
519
621
  onScroll: this.onScroll,
520
622
  dataId: `${dataId}_Tabs`
521
- }, React.Children.map(moreTabs, child => {
522
- if (!child) {
523
- return null;
524
- }
525
-
623
+ }, moreTabsListItems.length ? moreTabsListItems.map(data => {
526
624
  let {
527
625
  text,
528
626
  id,
@@ -531,9 +629,9 @@ class Tabs extends React.Component {
531
629
  href,
532
630
  children,
533
631
  dataId
534
- } = child.props;
632
+ } = data;
535
633
  const value = text ? text : showTitleInMoreOptions ? title : null;
536
- return /*#__PURE__*/React.isValidElement(child) && /*#__PURE__*/React.createElement(ListItem, {
634
+ return /*#__PURE__*/React.createElement(ListItem, {
537
635
  key: id,
538
636
  value: value,
539
637
  onClick: this.moreTabSelect,
@@ -549,7 +647,7 @@ class Tabs extends React.Component {
549
647
  dataId: `${dataId}_Tab`,
550
648
  ...ListItemProps
551
649
  }, !showTitleInMoreOptions ? children : null);
552
- })));
650
+ }) : this.renderEmptyState()));
553
651
  })) : null);
554
652
  }
555
653
 
@@ -123,15 +123,45 @@
123
123
  .bottomRightToLeft,
124
124
  .topRightToLeft,
125
125
  .bottomCenterToLeft {
126
- right: calc(var(--tab_position_gap) * -1);
126
+ right: calc(var(--tab_position_gap) * -1);
127
127
  }
128
128
 
129
129
  .bottomLeftToRight,
130
130
  .topLeftToRight,
131
131
  .bottomCenterToRight {
132
- left: calc(var(--tab_position_gap) * -1);
132
+ left: calc(var(--tab_position_gap) * -1);
133
133
  }
134
134
 
135
135
  .hidden {
136
136
  visibility: hidden;
137
+ }
138
+
139
+ .search {
140
+ padding: 0 var(--zd_size20) 0 ;
141
+ }
142
+
143
+ .emptyStateContainer {
144
+ padding-bottom: var(--zd_size15) ;
145
+ }
146
+
147
+ .emptyStateTitle {
148
+ font-family: var(--zd_semibold);
149
+ word-wrap: break-word;
150
+ font-size: var(--zd_font_size16) ;
151
+ max-width: var(--zd_size430) ;
152
+ text-align: center;
153
+ }
154
+
155
+ [dir=ltr] .emptyStateTitle {
156
+ margin-left: auto ;
157
+ margin-right: auto ;
158
+ }
159
+
160
+ [dir=rtl] .emptyStateTitle {
161
+ margin-right: auto ;
162
+ margin-left: auto ;
163
+ }
164
+
165
+ .listWrapper {
166
+ padding-top: var(--zd_size10) ;
137
167
  }
@@ -1,6 +1,6 @@
1
1
  import React from 'react';
2
2
  import { render } from '@testing-library/react';
3
- import Tab from "../Tab";
3
+ import Tab from '../Tab';
4
4
  describe('Tab', () => {
5
5
  test('rendering the defult props', () => {
6
6
  const {
@@ -1,6 +1,6 @@
1
1
  import React from 'react';
2
2
  import { render } from '@testing-library/react';
3
- import TabContent from "../TabContent";
3
+ import TabContent from '../TabContent';
4
4
  describe('TabContent', () => {
5
5
  test('rendering the defult props', () => {
6
6
  const {
@@ -1,6 +1,6 @@
1
1
  import React from 'react';
2
2
  import { render } from '@testing-library/react';
3
- import TabContentWrapper from "../TabContentWrapper";
3
+ import TabContentWrapper from '../TabContentWrapper';
4
4
  describe('TabContentWrapper', () => {
5
5
  test('rendering the defult props', () => {
6
6
  const {
@@ -1,6 +1,6 @@
1
1
  import React from 'react';
2
2
  import { render } from '@testing-library/react';
3
- import TabWrapper from "../TabWrapper";
3
+ import TabWrapper from '../TabWrapper';
4
4
  describe('TabWrapper', () => {
5
5
  test('rendering the defult props', () => {
6
6
  const {
@@ -1,6 +1,6 @@
1
1
  import React from 'react';
2
2
  import { render } from '@testing-library/react';
3
- import Tabs from "../Tabs";
3
+ import Tabs from '../Tabs';
4
4
  describe('Tabs', () => {
5
5
  test('rendering the defult props', () => {
6
6
  const {
package/es/Tab/index.js CHANGED
@@ -1,5 +1,5 @@
1
- export { default as TabWrapper } from "./TabWrapper";
2
- export { default as TabContentWrapper } from "./TabContentWrapper";
3
- export { default as TabContent } from "./TabContent";
4
- export { default as Tabs } from "./Tabs";
5
- export { default as Tab } from "./Tab";
1
+ export { default as TabWrapper } from './TabWrapper';
2
+ export { default as TabContentWrapper } from './TabContentWrapper';
3
+ export { default as TabContent } from './TabContent';
4
+ export { default as Tabs } from './Tabs';
5
+ export { default as Tab } from './Tab';
@@ -30,7 +30,10 @@ export const Tabs_defaultProps = {
30
30
  iconSize: '7',
31
31
  containerClass: '',
32
32
  customProps: {},
33
- dataSelectorId: 'tabs'
33
+ dataSelectorId: 'tabs',
34
+ searchBoxSize: 'small',
35
+ searchErrorText: 'No results',
36
+ placeHolderText: 'Search'
34
37
  };
35
38
  export const TabWrapper_defaultProps = {
36
39
  hookToDisableInternalState: false,
@@ -84,12 +84,17 @@ export const Tabs_propTypes = {
84
84
  getTargetRef: PropTypes.func,
85
85
  containerClass: PropTypes.string,
86
86
  customProps: PropTypes.shape({
87
+ TextBoxIconProps: PropTypes.object,
87
88
  DropBoxProps: PropTypes.object,
88
89
  ListItemProps: PropTypes.object,
89
90
  MoreButtonProps: PropTypes.object
90
91
  }),
91
92
  getCustomDropBoxHeaderPlaceHolder: PropTypes.func,
92
- dataSelectorId: PropTypes.string
93
+ dataSelectorId: PropTypes.string,
94
+ placeHolderText: PropTypes.string,
95
+ searchBoxSize: PropTypes.string,
96
+ searchErrorText: PropTypes.string,
97
+ closePopupOnly: PropTypes.func
93
98
  };
94
99
  export const TabWrapper_propTypes = {
95
100
  align: PropTypes.oneOf(['vertical', 'horizontal']),
package/es/Tag/Tag.js CHANGED
@@ -1,12 +1,12 @@
1
1
  import React, { PureComponent } from 'react';
2
- import { defaultProps } from "./props/defaultProps";
3
- import { propTypes } from "./props/propTypes";
2
+ import { defaultProps } from './props/defaultProps';
3
+ import { propTypes } from './props/propTypes';
4
4
  import { Icon } from '@zohodesk/icons';
5
- import Avatar from "../Avatar/Avatar";
6
- import { Container } from "../Layout";
7
- import Button from "../semantic/Button/Button";
8
- import { getUniqueId } from "../Provider/IdProvider";
9
- import style from "./Tag.module.css";
5
+ import Avatar from '../Avatar/Avatar';
6
+ import { Container } from '../Layout';
7
+ import Button from '../semantic/Button/Button';
8
+ import { getUniqueId } from '../Provider/IdProvider';
9
+ import style from './Tag.module.css';
10
10
  /*
11
11
  * eslint css-modules/no-unused-class: [2, { markAsUsed: ['small', 'medium',
12
12
  * 'closedanger', 'closeprimary', 'default', 'danger', 'secondary',
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import Tag from "../Tag";
2
+ import Tag from '../Tag';
3
3
  import { render } from "@testing-library/react";
4
4
  describe('Tag component', () => {
5
5
  const size = ['small', 'medium'];
@@ -1,9 +1,9 @@
1
1
  import React from 'react';
2
- import { defaultProps } from "./props/defaultProps";
3
- import { propTypes } from "./props/propTypes";
2
+ import { defaultProps } from './props/defaultProps';
3
+ import { propTypes } from './props/propTypes';
4
4
  /* eslint css-modules/no-unused-class: [2, { markAsUsed: ['xmedium', 'medium', 'small', 'default', 'primary', 'secondary'] }] */
5
5
 
6
- import style from "./TextBox.module.css";
6
+ import style from './TextBox.module.css';
7
7
  export default class TextBox extends React.PureComponent {
8
8
  constructor(props) {
9
9
  super(props);
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import Textbox from "../Textbox";
2
+ import Textbox from '../Textbox';
3
3
  import { render } from "@testing-library/react";
4
4
  describe('Textbox component', () => {
5
5
  const type = ['text', 'password', 'number'];
@@ -1,11 +1,11 @@
1
1
  import React from 'react';
2
- import { defaultProps } from "./props/defaultProps";
3
- import { propTypes } from "./props/propTypes";
4
- import TextBox from "../TextBox/TextBox";
5
- import { Container, Box } from "../Layout";
2
+ import { defaultProps } from './props/defaultProps';
3
+ import { propTypes } from './props/propTypes';
4
+ import TextBox from '../TextBox/TextBox';
5
+ import { Container, Box } from '../Layout';
6
6
  import { Icon } from '@zohodesk/icons';
7
- import btnStyle from "../semantic/Button/semanticButton.module.css";
8
- import style from "./TextBoxIcon.module.css";
7
+ import btnStyle from '../semantic/Button/semanticButton.module.css';
8
+ import style from './TextBoxIcon.module.css';
9
9
  /* eslint-disable react/forbid-component-props */
10
10
 
11
11
  export default class TextBoxIcon extends React.Component {
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import TextBoxIcon from "../TextBoxIcon";
2
+ import TextBoxIcon from '../TextBoxIcon';
3
3
  import { render } from "@testing-library/react";
4
4
  describe('TextBoxIcon component', () => {
5
5
  const type = ['text', 'password', 'number'];
@@ -1,5 +1,5 @@
1
1
  import PropTypes from 'prop-types';
2
- import { propTypes as TextBox_propTypes } from "../../TextBox/props/propTypes";
2
+ import { propTypes as TextBox_propTypes } from '../../TextBox/props/propTypes';
3
3
  export const propTypes = { ...TextBox_propTypes,
4
4
  borderColor: PropTypes.oneOf(['transparent', 'default', 'error']),
5
5
  children: PropTypes.node,
@@ -1,9 +1,9 @@
1
1
  import React from 'react';
2
- import { defaultProps } from "./props/defaultProps";
3
- import { propTypes } from "./props/propTypes";
2
+ import { defaultProps } from './props/defaultProps';
3
+ import { propTypes } from './props/propTypes';
4
4
  /* eslint css-modules/no-unused-class: [2, { markAsUsed: ['resizeX', 'resizeY', 'noresize', 'resizeboth', 'xsmall', 'small', 'medium', 'large', 'xlarge', 'default', 'primary'] }] */
5
5
 
6
- import style from "./Textarea.module.css";
6
+ import style from './Textarea.module.css';
7
7
  export default class Textarea extends React.Component {
8
8
  constructor(props) {
9
9
  super(props);
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import Textarea from "../Textarea";
2
+ import Textarea from '../Textarea';
3
3
  import { render } from "@testing-library/react";
4
4
  describe('Textarea component', () => {
5
5
  const size = ['xsmall', 'small', 'xmedium', 'medium', 'large'];
@@ -1,9 +1,9 @@
1
1
  import React from 'react';
2
- import { defaultProps } from "./props/defaultProps";
3
- import { propTypes } from "./props/propTypes";
4
- import { getLibraryConfig } from "../Provider/Config";
5
- import style from "./Tooltip.module.css";
6
- import ResizeObserver from "../Responsive/ResizeObserver";
2
+ import { defaultProps } from './props/defaultProps';
3
+ import { propTypes } from './props/propTypes';
4
+ import { getLibraryConfig } from '../Provider/Config';
5
+ import style from './Tooltip.module.css';
6
+ import ResizeObserver from '../Responsive/ResizeObserver';
7
7
  import selectn from 'selectn';
8
8
  export default class Tooltip extends React.Component {
9
9
  constructor(props) {
@@ -1,9 +1,9 @@
1
1
  import React from 'react';
2
- import { defaultProps } from "./props/defaultProps";
3
- import { propTypes } from "./props/propTypes";
2
+ import { defaultProps } from './props/defaultProps';
3
+ import { propTypes } from './props/propTypes';
4
4
  import { VelocityComponent } from 'velocity-react';
5
5
  import 'velocity-animate/velocity.ui';
6
- import LibraryContext from "../../Provider/LibraryContextInit";
6
+ import LibraryContext from '../../Provider/LibraryContextInit';
7
7
  export default class VelocityAnimation extends React.Component {
8
8
  constructor(props) {
9
9
  super(props);
@@ -1,6 +1,6 @@
1
1
  import React from 'react';
2
2
  import { render } from '@testing-library/react';
3
- import VelocityAnimation from "../VelocityAnimation";
3
+ import VelocityAnimation from '../VelocityAnimation';
4
4
  describe('VelocityAnimation', () => {
5
5
  test('rendering the defult props', () => {
6
6
  const {
@@ -1,9 +1,9 @@
1
1
  import React from 'react';
2
- import { defaultProps } from "./props/defaultProps";
3
- import { propTypes } from "./props/propTypes";
2
+ import { defaultProps } from './props/defaultProps';
3
+ import { propTypes } from './props/propTypes';
4
4
  import { VelocityTransitionGroup } from 'velocity-react';
5
5
  import 'velocity-animate/velocity.ui';
6
- import LibraryContext from "../../Provider/LibraryContextInit";
6
+ import LibraryContext from '../../Provider/LibraryContextInit';
7
7
 
8
8
  function clearProps(props) {
9
9
  let newProps = Object.assign({}, props);
@@ -1,6 +1,6 @@
1
1
  import React from 'react';
2
2
  import { render } from '@testing-library/react';
3
- import VelocityAnimationGroup from "../VelocityAnimationGroup";
3
+ import VelocityAnimationGroup from '../VelocityAnimationGroup';
4
4
  describe('VelocityAnimationGroup', () => {
5
5
  test('rendering the defult props', () => {
6
6
  const {
@@ -1,2 +1,2 @@
1
- export { default as VelocityAnimation } from "./VelocityAnimation/VelocityAnimation";
2
- export { default as VelocityAnimationGroup } from "./VelocityAnimationGroup/VelocityAnimationGroup";
1
+ export { default as VelocityAnimation } from './VelocityAnimation/VelocityAnimation';
2
+ export { default as VelocityAnimationGroup } from './VelocityAnimationGroup/VelocityAnimationGroup';