@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/v1/Tab/Tabs.js CHANGED
@@ -1,18 +1,20 @@
1
1
  import React, { useState, useRef, useEffect, useCallback } from 'react';
2
2
  import useEffectCallOnlyAfterState from '@zohodesk/hooks/es/utils/useEffectCallOnlyAfterState';
3
- import Tab from "./Tab";
4
- import { Tabs_defaultProps } from "./props/defaultProps";
5
- import { Tabs_propTypes } from "./props/propTypes";
6
- import { remConvert, getTotalDimension, cs, throttle, cancelBubblingEffect } from "../../utils/Common";
7
- import { Box, Container } from "../Layout";
8
- import ResizeObserver from "../../Responsive/ResizeObserver";
9
- import ListItem from "../ListItem/ListItem";
3
+ import TextBoxIcon from '../TextBoxIcon/TextBoxIcon';
4
+ import EmptySearch from '@zohodesk/svg/lib/emptystate/version3/EmptySearch';
5
+ import Tab from './Tab';
6
+ import { Tabs_defaultProps } from './props/defaultProps';
7
+ import { Tabs_propTypes } from './props/propTypes';
8
+ import { remConvert, getTotalDimension, cs, throttle, cancelBubblingEffect } from '../../utils/Common';
9
+ import { Box, Container } from '../Layout';
10
+ import ResizeObserver from '../../Responsive/ResizeObserver';
11
+ import ListItem from '../ListItem/ListItem';
10
12
  import { Icon } from '@zohodesk/icons';
11
- import tabsStyle from "./v1Tabs.module.css";
12
- import Popup from "../Popup/Popup";
13
- import ResponsiveDropBox from "../ResponsiveDropBox/ResponsiveDropBox";
14
- import { ResponsiveReceiver } from "../../Responsive/CustomResponsive";
15
- import btnstyle from "../../semantic/Button/semanticButton.module.css";
13
+ import tabsStyle from './v1Tabs.module.css';
14
+ import Popup from '../Popup/Popup';
15
+ import ResponsiveDropBox from '../ResponsiveDropBox/ResponsiveDropBox';
16
+ import { ResponsiveReceiver } from '../../Responsive/CustomResponsive';
17
+ import btnstyle from '../../semantic/Button/semanticButton.module.css';
16
18
 
17
19
  const Tabs = props => {
18
20
  const [totalDimension, setTotalDimension] = useState(null);
@@ -20,6 +22,7 @@ const Tabs = props => {
20
22
  const highlightInitialDimension = useRef(null);
21
23
  const [renderVirtualTabs, setRenderVirtualTabs] = useState(true);
22
24
  const [tabKeys, setTabKeys] = useState([]);
25
+ const [searchValue, setSearchValue] = useState('');
23
26
  const tabsObserver = useRef(new ResizeObserver(onResize));
24
27
  const tabObserver = useRef({});
25
28
  const highlight = useRef(null);
@@ -49,9 +52,66 @@ const Tabs = props => {
49
52
  childType,
50
53
  containerClass,
51
54
  dataSelectorId,
52
- selectedTab
55
+ selectedTab,
56
+ showTitleInMoreOptions,
57
+ searchErrorText,
58
+ placeHolderText,
59
+ searchBoxSize,
60
+ isPopupOpen,
61
+ closePopupOnly
53
62
  } = props;
54
63
 
64
+ function handleChange(value, e) {
65
+ setSearchValue(value);
66
+ }
67
+
68
+ function handleSearchValueClear(e) {
69
+ setSearchValue('');
70
+ }
71
+
72
+ function getMoreList(_ref) {
73
+ let {
74
+ moreTabs
75
+ } = _ref;
76
+ const validElements = [];
77
+ React.Children.map(moreTabs, child => {
78
+ const isValidElement = /*#__PURE__*/React.isValidElement(child);
79
+
80
+ if (isValidElement) {
81
+ validElements.push(child.props);
82
+ }
83
+ });
84
+ return validElements;
85
+ }
86
+
87
+ function handleFilterSuggestions(_ref2) {
88
+ let {
89
+ moreTabs
90
+ } = _ref2;
91
+ const options = getMoreList({
92
+ moreTabs
93
+ });
94
+ const filteredOptions = options.filter(list => {
95
+ const {
96
+ text,
97
+ title
98
+ } = list;
99
+ const value = text ? text : showTitleInMoreOptions ? title : '';
100
+ return value.toLowerCase().includes(searchValue.toLowerCase());
101
+ });
102
+ return filteredOptions;
103
+ }
104
+
105
+ function renderEmptyState() {
106
+ return /*#__PURE__*/React.createElement("div", {
107
+ className: tabsStyle.emptyStateContainer
108
+ }, /*#__PURE__*/React.createElement(EmptySearch, {
109
+ size: "small"
110
+ }), /*#__PURE__*/React.createElement("div", {
111
+ className: tabsStyle.emptyStateTitle
112
+ }, searchErrorText));
113
+ }
114
+
55
115
  function onTabResize(size, target) {
56
116
  let newDim = Object.assign({}, tabDimensions);
57
117
  let elemDim = getTotalDimension(target, align);
@@ -101,6 +161,11 @@ const Tabs = props => {
101
161
  }
102
162
  };
103
163
  }, []);
164
+ useEffect(() => {
165
+ if (searchValue.length) {
166
+ handleSearchValueClear();
167
+ }
168
+ }, [isPopupOpen]);
104
169
 
105
170
  function setMaxDim() {
106
171
  let totalDimension = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
@@ -320,6 +385,7 @@ const Tabs = props => {
320
385
 
321
386
  e.preventDefault();
322
387
  onSelect(tab);
388
+ closePopupOnly();
323
389
  }
324
390
 
325
391
  function onScrollLocal(e) {
@@ -334,10 +400,10 @@ const Tabs = props => {
334
400
  togglePopup(e, boxPosition);
335
401
  }
336
402
 
337
- function responsiveFunc(_ref) {
403
+ function responsiveFunc(_ref3) {
338
404
  let {
339
405
  mediaQueryOR
340
- } = _ref;
406
+ } = _ref3;
341
407
  return {
342
408
  tabletMode: mediaQueryOR([{
343
409
  maxWidth: 700
@@ -374,9 +440,14 @@ const Tabs = props => {
374
440
  let {
375
441
  DropBoxProps = {},
376
442
  ListItemProps = {},
377
- MoreButtonProps = {}
443
+ MoreButtonProps = {},
444
+ TextBoxIconProps = {}
378
445
  } = customProps;
379
446
  let popupClass = align === 'vertical' ? tabsStyle[position] ? tabsStyle[position] : '' : '';
447
+ const moreTabsListItems = handleFilterSuggestions({
448
+ moreTabs
449
+ });
450
+ const hasSearch = moreTabs.length > 4;
380
451
  return /*#__PURE__*/React.createElement(React.Fragment, null, React.Children.map(mainTabs, child => {
381
452
  if (!child) {
382
453
  return null;
@@ -426,10 +497,10 @@ const Tabs = props => {
426
497
  })), isPopupOpen && /*#__PURE__*/React.createElement(ResponsiveReceiver, {
427
498
  query: responsiveFunc,
428
499
  responsiveId: "Helmet"
429
- }, _ref2 => {
500
+ }, _ref4 => {
430
501
  let {
431
502
  tabletMode
432
- } = _ref2;
503
+ } = _ref4;
433
504
  return /*#__PURE__*/React.createElement(ResponsiveDropBox, {
434
505
  isActive: isPopupReady,
435
506
  isAnimate: true,
@@ -445,19 +516,31 @@ const Tabs = props => {
445
516
  isResponsivePadding: true,
446
517
  needFocusScope: true,
447
518
  onClose: togglePopupLocal,
519
+ onClick: removeClose,
448
520
  dataId: `${dataId}_dropbox`
449
- }, getCustomDropBoxHeaderPlaceHolder && getCustomDropBoxHeaderPlaceHolder(props), /*#__PURE__*/React.createElement(Box, {
521
+ }, getCustomDropBoxHeaderPlaceHolder && getCustomDropBoxHeaderPlaceHolder(props), hasSearch ? /*#__PURE__*/React.createElement(Box, {
522
+ className: tabsStyle.search
523
+ }, /*#__PURE__*/React.createElement(TextBoxIcon, {
524
+ placeHolder: placeHolderText,
525
+ onChange: handleChange,
526
+ value: searchValue,
527
+ onClear: handleSearchValueClear,
528
+ size: searchBoxSize,
529
+ customProps: {
530
+ TextBoxProps: {
531
+ 'data-a11y-autofocus': true
532
+ }
533
+ },
534
+ dataId: `${dataId}_search`,
535
+ ...TextBoxIconProps
536
+ })) : null, /*#__PURE__*/React.createElement(Box, {
450
537
  flexible: true,
451
538
  shrink: true,
452
539
  scroll: "vertical",
453
- className: `${tabletMode ? '' : tabsStyle.menuBox} ${moreBoxClass}`,
540
+ className: `${tabsStyle.listWrapper} ${tabletMode ? '' : tabsStyle.menuBox} ${moreBoxClass}`,
454
541
  onScroll: onScrollLocal,
455
542
  dataId: `${dataId}_Tabs`
456
- }, React.Children.map(moreTabs, child => {
457
- if (!child) {
458
- return null;
459
- }
460
-
543
+ }, moreTabsListItems.length ? moreTabsListItems.map(data => {
461
544
  let {
462
545
  text,
463
546
  id,
@@ -466,9 +549,9 @@ const Tabs = props => {
466
549
  href,
467
550
  children,
468
551
  dataId
469
- } = child.props;
552
+ } = data;
470
553
  const value = text ? text : showTitleInMoreOptions ? title : null;
471
- return /*#__PURE__*/React.isValidElement(child) && /*#__PURE__*/React.createElement(ListItem, {
554
+ return /*#__PURE__*/React.createElement(ListItem, {
472
555
  key: id,
473
556
  value: value,
474
557
  onClick: moreTabSelect,
@@ -484,7 +567,7 @@ const Tabs = props => {
484
567
  dataId: `${dataId}_Tab`,
485
568
  ...ListItemProps
486
569
  }, !showTitleInMoreOptions ? children : null);
487
- })));
570
+ }) : renderEmptyState()));
488
571
  })) : null);
489
572
  }
490
573
 
@@ -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']),
@@ -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
  }
package/es/v1/Tag/Tag.js CHANGED
@@ -1,12 +1,12 @@
1
1
  import React, { memo } 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 { useUniqueId } from "../../Provider/IdProvider";
9
- import style from "../../Tag/Tag.module.css";
5
+ import Avatar from '../Avatar/Avatar';
6
+ import { Container } from '../Layout';
7
+ import Button from '../semantic/Button/Button';
8
+ import { useUniqueId } from '../../Provider/IdProvider';
9
+ import style from '../../Tag/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,7 +1,7 @@
1
1
  import React, { memo, useRef, useCallback } from 'react';
2
- import { defaultProps } from "./props/defaultProps";
3
- import { propTypes } from "./props/propTypes";
4
- import style from "../../TextBox/TextBox.module.css";
2
+ import { defaultProps } from './props/defaultProps';
3
+ import { propTypes } from './props/propTypes';
4
+ import style from '../../TextBox/TextBox.module.css';
5
5
 
6
6
  function TextBox(props) {
7
7
  let {
@@ -1,11 +1,11 @@
1
1
  import React, { useState, useRef, useCallback } 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/TextBoxIcon.module.css";
7
+ import btnStyle from '../../semantic/Button/semanticButton.module.css';
8
+ import style from '../../TextBoxIcon/TextBoxIcon.module.css';
9
9
  /* eslint-disable react/forbid-component-props */
10
10
 
11
11
  export default function TextBoxIcon(props) {
@@ -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,7 +1,7 @@
1
1
  import React, { useRef } from 'react';
2
- import { defaultProps } from "./props/defaultProps";
3
- import { propTypes } from "./props/propTypes";
4
- import style from "../../Textarea/Textarea.module.css";
2
+ import { defaultProps } from './props/defaultProps';
3
+ import { propTypes } from './props/propTypes';
4
+ import style from '../../Textarea/Textarea.module.css';
5
5
  export default function Textarea(props) {
6
6
  let {
7
7
  size,
@@ -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/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/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";
4
- import cssJSLogic from "./css/cssJSLogic";
2
+ import { defaultProps } from './props/defaultProps';
3
+ import { propTypes } from './props/propTypes';
4
+ import cssJSLogic from './css/cssJSLogic';
5
5
  import { mergeStyle } from '@zohodesk/utils';
6
- import defaultStyle from "./css/Typography.module.css";
6
+ import defaultStyle from './css/Typography.module.css';
7
7
 
8
8
  const Typography = props => {
9
9
  const {
@@ -1,5 +1,5 @@
1
1
  import { compileClassNames } from '@zohodesk/utils';
2
- import { letterspacingMapping, lineheightMapping } from "../utils";
2
+ import { letterspacingMapping, lineheightMapping } from '../utils';
3
3
  export default function cssJSLogic(_ref) {
4
4
  let {
5
5
  props,
@@ -1,9 +1,9 @@
1
1
  import React, { useContext } 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 function VelocityAnimation(props) {
8
8
  let {
9
9
  children,
@@ -1,9 +1,9 @@
1
1
  import React, { useContext } 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,7 +1,7 @@
1
1
  import React from 'react';
2
- import { defaultProps } from "./props/defaultProps";
3
- import { propTypes } from "./props/propTypes";
4
- import style from "../../../semantic/Button/semanticButton.module.css";
2
+ import { defaultProps } from './props/defaultProps';
3
+ import { propTypes } from './props/propTypes';
4
+ import style from '../../../semantic/Button/semanticButton.module.css';
5
5
  export default function Button(props) {
6
6
  const {
7
7
  value,
@@ -1 +1 @@
1
- export { default as SemanticButton } from "./Button/Button";
1
+ export { default as SemanticButton } from './Button/Button';