@zohodesk/components 1.0.0-temp-70 → 1.0.0-temp-71

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 (412) hide show
  1. package/assets/Appearance/default/themes/blue/blueDefaultCTATheme.module.css +1 -1
  2. package/assets/Appearance/default/themes/green/greenDefaultCTATheme.module.css +1 -1
  3. package/assets/Appearance/default/themes/orange/orangeDefaultCTATheme.module.css +1 -1
  4. package/assets/Appearance/default/themes/red/redDefaultCTATheme.module.css +1 -1
  5. package/assets/Appearance/default/themes/yellow/yellowDefaultCTATheme.module.css +1 -1
  6. package/es/Accordion/Accordion.js +20 -4
  7. package/es/Accordion/AccordionItem.js +19 -4
  8. package/es/Animation/Animation.js +25 -4
  9. package/es/AppContainer/AppContainer.js +23 -4
  10. package/es/Avatar/Avatar.js +44 -4
  11. package/es/Avatar/Avatar.module.css +9 -11
  12. package/es/AvatarTeam/AvatarTeam.js +36 -4
  13. package/es/AvatarTeam/AvatarTeam.module.css +7 -21
  14. package/es/Button/Button.js +47 -4
  15. package/es/Button/Button.module.css +24 -97
  16. package/es/Buttongroup/Buttongroup.js +11 -4
  17. package/es/Buttongroup/Buttongroup.module.css +8 -37
  18. package/es/Card/Card.js +60 -12
  19. package/es/CheckBox/CheckBox.js +59 -4
  20. package/es/CheckBox/CheckBox.module.css +19 -29
  21. package/es/DateTime/CalendarView.js +26 -6
  22. package/es/DateTime/DateTime.js +62 -4
  23. package/es/DateTime/DateTime.module.css +12 -39
  24. package/es/DateTime/DateWidget.js +83 -4
  25. package/es/DateTime/DateWidget.module.css +5 -9
  26. package/es/DateTime/YearView.js +12 -4
  27. package/es/DateTime/YearView.module.css +7 -17
  28. package/es/DropBox/DropBox.js +71 -4
  29. package/es/DropBox/DropBox.module.css +11 -47
  30. package/es/DropDown/DropDown.js +34 -7
  31. package/es/DropDown/DropDownHeading.js +19 -4
  32. package/es/DropDown/DropDownHeading.module.css +3 -7
  33. package/es/DropDown/DropDownItem.js +18 -4
  34. package/es/DropDown/DropDownItem.module.css +6 -32
  35. package/es/DropDown/DropDownSearch.js +24 -4
  36. package/es/DropDown/DropDownSeparator.js +4 -2
  37. package/es/Label/Label.js +24 -4
  38. package/es/Layout/Box.js +30 -15
  39. package/es/Layout/Container.js +27 -15
  40. package/es/Layout/Layout.module.css +1 -13
  41. package/es/Layout/docs/Layout__four_Column.docs.js +22 -16
  42. package/es/ListItem/ListContainer.js +41 -4
  43. package/es/ListItem/ListItem.js +50 -4
  44. package/es/ListItem/ListItem.module.css +33 -69
  45. package/es/ListItem/ListItemWithAvatar.js +56 -4
  46. package/es/ListItem/ListItemWithCheckBox.js +40 -4
  47. package/es/ListItem/ListItemWithIcon.js +47 -4
  48. package/es/ListItem/ListItemWithRadio.js +41 -4
  49. package/es/Modal/Modal.js +9 -4
  50. package/es/MultiSelect/AdvancedGroupMultiSelect.js +91 -5
  51. package/es/MultiSelect/AdvancedMultiSelect.js +113 -4
  52. package/es/MultiSelect/AdvancedMultiSelect.module.css +113 -0
  53. package/es/MultiSelect/EmptyState.js +29 -4
  54. package/es/MultiSelect/MultiSelect.js +113 -4
  55. package/es/MultiSelect/MultiSelect.module.css +11 -28
  56. package/es/MultiSelect/MultiSelectHeader.js +12 -4
  57. package/es/MultiSelect/MultiSelectWithAvatar.js +99 -4
  58. package/es/MultiSelect/SelectedOptions.js +19 -4
  59. package/es/MultiSelect/SelectedOptions.module.css +2 -8
  60. package/es/MultiSelect/Suggestions.js +34 -5
  61. package/es/PopOver/PopOver.js +78 -7
  62. package/es/PopOver/PopOver.module.css +1 -1
  63. package/es/Radio/Radio.js +46 -4
  64. package/es/Radio/Radio.module.css +10 -18
  65. package/es/Responsive/CustomResponsive.js +19 -8
  66. package/es/Responsive/ResizeComponent.js +82 -15
  67. package/es/Responsive/ResizeObserver.js +6 -2
  68. package/es/Responsive/Responsive.js +22 -8
  69. package/es/Responsive/docs/style.module.css +8 -17
  70. package/es/ResponsiveDropBox/ResponsiveDropBox.js +11 -4
  71. package/es/Ribbon/Ribbon.js +25 -4
  72. package/es/Ribbon/Ribbon.module.css +28 -93
  73. package/es/RippleEffect/RippleEffect.js +20 -4
  74. package/es/RippleEffect/RippleEffect.module.css +44 -37
  75. package/es/Select/GroupSelect.js +109 -4
  76. package/es/Select/Select.js +120 -4
  77. package/es/Select/Select.module.css +2 -12
  78. package/es/Select/SelectWithAvatar.js +80 -4
  79. package/es/Select/SelectWithIcon.js +69 -4
  80. package/es/Stencils/Stencils.js +17 -4
  81. package/es/Stencils/Stencils.module.css +3 -21
  82. package/es/Switch/Switch.js +37 -4
  83. package/es/Switch/Switch.module.css +9 -9
  84. package/es/Tab/Tab.js +31 -4
  85. package/es/Tab/Tab.module.css +7 -16
  86. package/es/Tab/TabContent.js +10 -4
  87. package/es/Tab/TabContentWrapper.js +12 -4
  88. package/es/Tab/TabWrapper.js +25 -4
  89. package/es/Tab/Tabs.js +68 -6
  90. package/es/Tab/Tabs.module.css +8 -42
  91. package/es/Tab/docs/tabdocs.module.css +1 -1
  92. package/es/Tag/Tag.js +47 -4
  93. package/es/Tag/Tag.module.css +14 -36
  94. package/es/TextBox/TextBox.js +72 -4
  95. package/es/TextBox/TextBox.module.css +11 -7
  96. package/es/TextBoxIcon/TextBoxIcon.js +70 -4
  97. package/es/TextBoxIcon/TextBoxIcon.module.css +5 -12
  98. package/es/Textarea/Textarea.js +47 -4
  99. package/es/Textarea/Textarea.module.css +7 -6
  100. package/es/Tooltip/Tooltip.js +12 -4
  101. package/es/Tooltip/Tooltip.module.css +8 -9
  102. package/es/VelocityAnimation/VelocityAnimation/VelocityAnimation.js +23 -4
  103. package/es/VelocityAnimation/VelocityAnimationGroup/VelocityAnimationGroup.js +37 -4
  104. package/es/a11y/FocusScope/FocusScope.js +370 -0
  105. package/es/a11y/FocusScope/docs/FocusScope__default.docs.js +139 -0
  106. package/es/beta/FocusRing/FocusRing.js +281 -0
  107. package/es/beta/FocusRing/FocusRing.module.css +127 -0
  108. package/es/beta/FocusRing/docs/FocusRing__default.docs.js +48 -0
  109. package/es/common/animation.module.css +21 -219
  110. package/es/common/basicReset.module.css +12 -2
  111. package/es/common/common.module.css +21 -88
  112. package/es/common/customscroll.module.css +21 -17
  113. package/es/common/docStyle.module.css +32 -79
  114. package/es/common/transition.module.css +10 -50
  115. package/es/deprecated/AdvancedMultiSelect.module.css +8 -22
  116. package/es/deprecated/PortalLayer/PortalLayer.js +16 -4
  117. package/es/index.js +4 -9
  118. package/es/semantic/Button/Button.js +38 -4
  119. package/es/semantic/Button/semanticButton.module.css +3 -3
  120. package/lib/Accordion/Accordion.js +20 -5
  121. package/lib/Accordion/AccordionItem.js +19 -5
  122. package/lib/Animation/Animation.js +25 -5
  123. package/lib/AppContainer/AppContainer.js +24 -13
  124. package/lib/Avatar/Avatar.js +44 -5
  125. package/lib/AvatarTeam/AvatarTeam.js +36 -5
  126. package/lib/Button/Button.js +48 -5
  127. package/lib/Buttongroup/Buttongroup.js +11 -5
  128. package/lib/Card/Card.js +60 -13
  129. package/lib/CheckBox/CheckBox.js +60 -7
  130. package/lib/CheckBox/CheckBox.module.css +8 -12
  131. package/lib/DateTime/CalendarView.js +26 -7
  132. package/lib/DateTime/DateTime.js +82 -53
  133. package/lib/DateTime/DateTime.module.css +1 -1
  134. package/lib/DateTime/DateWidget.js +85 -17
  135. package/lib/DateTime/DateWidget.module.css +4 -0
  136. package/lib/DateTime/YearView.js +12 -5
  137. package/lib/DateTime/YearView.module.css +0 -1
  138. package/lib/DropBox/DropBox.js +72 -6
  139. package/lib/DropDown/DropDown.js +34 -8
  140. package/lib/DropDown/DropDownHeading.js +19 -5
  141. package/lib/DropDown/DropDownItem.js +18 -5
  142. package/lib/DropDown/DropDownSearch.js +23 -5
  143. package/lib/DropDown/DropDownSeparator.js +4 -2
  144. package/lib/Label/Label.js +24 -5
  145. package/lib/Layout/Box.js +32 -18
  146. package/lib/Layout/Container.js +29 -18
  147. package/lib/Layout/Layout.module.css +1 -13
  148. package/lib/Layout/docs/Layout__four_Column.docs.js +22 -16
  149. package/lib/LightNightMode/Colors.json +397 -496
  150. package/lib/LightNightMode/docs/AlternativeColors.docs.js +1 -23
  151. package/lib/ListItem/ListContainer.js +46 -13
  152. package/lib/ListItem/ListItem.js +52 -7
  153. package/lib/ListItem/ListItem.module.css +19 -18
  154. package/lib/ListItem/ListItemWithAvatar.js +38 -7
  155. package/lib/ListItem/ListItemWithCheckBox.js +42 -7
  156. package/lib/ListItem/ListItemWithIcon.js +49 -7
  157. package/lib/ListItem/ListItemWithRadio.js +43 -7
  158. package/lib/Modal/Modal.js +9 -5
  159. package/lib/MultiSelect/AdvancedGroupMultiSelect.js +172 -118
  160. package/lib/MultiSelect/AdvancedMultiSelect.js +172 -101
  161. package/lib/{deprecated → MultiSelect}/AdvancedMultiSelect.module.css +1 -1
  162. package/lib/MultiSelect/EmptyState.js +29 -5
  163. package/lib/MultiSelect/MultiSelect.js +173 -91
  164. package/lib/MultiSelect/MultiSelect.module.css +2 -15
  165. package/lib/MultiSelect/MultiSelectHeader.js +12 -5
  166. package/lib/MultiSelect/MultiSelectWithAvatar.js +152 -83
  167. package/lib/MultiSelect/SelectedOptions.js +19 -5
  168. package/lib/MultiSelect/Suggestions.js +34 -6
  169. package/lib/PopOver/PopOver.js +82 -19
  170. package/lib/Provider/Config.js +1 -3
  171. package/lib/Provider.js +98 -32
  172. package/lib/Radio/Radio.js +46 -5
  173. package/lib/Radio/Radio.module.css +6 -8
  174. package/lib/Responsive/CustomResponsive.js +21 -11
  175. package/lib/Responsive/Responsive.js +24 -17
  176. package/lib/Ribbon/Ribbon.js +25 -5
  177. package/lib/RippleEffect/RippleEffect.js +20 -5
  178. package/lib/RippleEffect/RippleEffect.module.css +15 -37
  179. package/lib/Select/GroupSelect.js +186 -105
  180. package/lib/Select/Select.js +196 -113
  181. package/lib/Select/Select.module.css +0 -6
  182. package/lib/Select/SelectWithAvatar.js +151 -101
  183. package/lib/Select/SelectWithIcon.js +134 -102
  184. package/lib/Stencils/Stencils.js +17 -5
  185. package/lib/Switch/Switch.js +37 -5
  186. package/lib/Switch/Switch.module.css +2 -3
  187. package/lib/Tab/Tab.js +31 -5
  188. package/lib/Tab/TabContent.js +10 -5
  189. package/lib/Tab/TabContentWrapper.js +12 -5
  190. package/lib/Tab/TabWrapper.js +27 -5
  191. package/lib/Tab/Tabs.js +114 -80
  192. package/lib/Tab/Tabs.module.css +1 -2
  193. package/lib/Tag/Tag.js +47 -5
  194. package/lib/Tag/Tag.module.css +2 -6
  195. package/lib/TextBox/TextBox.js +70 -5
  196. package/lib/TextBoxIcon/TextBoxIcon.js +70 -5
  197. package/lib/Textarea/Textarea.js +47 -5
  198. package/lib/Tooltip/Tooltip.js +20 -65
  199. package/lib/Tooltip/Tooltip.module.css +1 -6
  200. package/lib/Tooltip/docs/Tooltip__default.docs.js +11 -50
  201. package/lib/VelocityAnimation/VelocityAnimation/VelocityAnimation.js +23 -5
  202. package/lib/VelocityAnimation/VelocityAnimationGroup/VelocityAnimationGroup.js +38 -12
  203. package/lib/a11y/FocusScope/FocusScope.js +443 -0
  204. package/lib/a11y/FocusScope/docs/FocusScope__default.docs.js +191 -0
  205. package/lib/beta/FocusRing/FocusRing.js +338 -0
  206. package/lib/beta/FocusRing/FocusRing.module.css +152 -0
  207. package/lib/{ucl/Grid/docs/Grid__Basic_Detail_Layout.docs.js → beta/FocusRing/docs/FocusRing__default.docs.js} +50 -42
  208. package/lib/common/common.module.css +3 -26
  209. package/lib/common/docStyle.module.css +2 -6
  210. package/lib/css.js +2 -0
  211. package/lib/deprecated/PortalLayer/PortalLayer.js +16 -5
  212. package/lib/index.js +21 -80
  213. package/lib/semantic/Button/Button.js +38 -5
  214. package/package.json +3 -6
  215. package/es/Accordion/props/defaultProps.js +0 -8
  216. package/es/Accordion/props/propTypes.js +0 -30
  217. package/es/Animation/props/defaultProps.js +0 -7
  218. package/es/Animation/props/propTypes.js +0 -12
  219. package/es/AppContainer/props/defaultProps.js +0 -8
  220. package/es/AppContainer/props/propTypes.js +0 -15
  221. package/es/Avatar/props/defaultProps.js +0 -13
  222. package/es/Avatar/props/propTypes.js +0 -22
  223. package/es/AvatarTeam/props/defaultProps.js +0 -13
  224. package/es/AvatarTeam/props/propTypes.js +0 -23
  225. package/es/Button/props/defaultProps.js +0 -15
  226. package/es/Button/props/propTypes.js +0 -22
  227. package/es/Buttongroup/props/defaultProps.js +0 -4
  228. package/es/Buttongroup/props/propTypes.js +0 -7
  229. package/es/Card/props/defaultProps.js +0 -15
  230. package/es/Card/props/propTypes.js +0 -43
  231. package/es/CheckBox/props/defaultProps.js +0 -18
  232. package/es/CheckBox/props/propTypes.js +0 -41
  233. package/es/DateTime/props/defaultProps.js +0 -50
  234. package/es/DateTime/props/propTypes.js +0 -130
  235. package/es/DropBox/props/defaultProps.js +0 -20
  236. package/es/DropBox/props/propTypes.js +0 -47
  237. package/es/DropDown/props/defaultProps.js +0 -18
  238. package/es/DropDown/props/propTypes.js +0 -77
  239. package/es/Label/props/defaultProps.js +0 -10
  240. package/es/Label/props/propTypes.js +0 -14
  241. package/es/Layout/props/defaultProps.js +0 -12
  242. package/es/Layout/props/propTypes.js +0 -42
  243. package/es/ListItem/props/defaultProps.js +0 -85
  244. package/es/ListItem/props/propTypes.js +0 -185
  245. package/es/Modal/props/defaultProps.js +0 -3
  246. package/es/Modal/props/propTypes.js +0 -6
  247. package/es/MultiSelect/props/defaultProps.js +0 -140
  248. package/es/MultiSelect/props/propTypes.js +0 -360
  249. package/es/PopOver/props/defaultProps.js +0 -7
  250. package/es/PopOver/props/propTypes.js +0 -53
  251. package/es/Radio/props/defaultProps.js +0 -14
  252. package/es/Radio/props/propTypes.js +0 -32
  253. package/es/Responsive/props/defaultProps.js +0 -13
  254. package/es/Responsive/props/propTypes.js +0 -25
  255. package/es/ResponsiveDropBox/props/defaultProps.js +0 -4
  256. package/es/ResponsiveDropBox/props/propTypes.js +0 -7
  257. package/es/Ribbon/props/defaultProps.js +0 -8
  258. package/es/Ribbon/props/propTypes.js +0 -10
  259. package/es/RippleEffect/props/defaultProps.js +0 -9
  260. package/es/RippleEffect/props/propTypes.js +0 -11
  261. package/es/Select/props/defaultProps.js +0 -110
  262. package/es/Select/props/propTypes.js +0 -266
  263. package/es/Stencils/props/defaultProps.js +0 -6
  264. package/es/Stencils/props/propTypes.js +0 -7
  265. package/es/Switch/props/defaultProps.js +0 -10
  266. package/es/Switch/props/propTypes.js +0 -27
  267. package/es/Tab/props/defaultProps.js +0 -39
  268. package/es/Tab/props/propTypes.js +0 -102
  269. package/es/Tag/props/defaultProps.js +0 -13
  270. package/es/Tag/props/propTypes.js +0 -34
  271. package/es/TextBox/props/defaultProps.js +0 -19
  272. package/es/TextBox/props/propTypes.js +0 -53
  273. package/es/TextBoxIcon/props/defaultProps.js +0 -21
  274. package/es/TextBoxIcon/props/propTypes.js +0 -49
  275. package/es/Textarea/props/defaultProps.js +0 -16
  276. package/es/Textarea/props/propTypes.js +0 -31
  277. package/es/Tooltip/props/defaultProps.js +0 -4
  278. package/es/Tooltip/props/propTypes.js +0 -8
  279. package/es/VelocityAnimation/VelocityAnimation/props/defaultProps.js +0 -7
  280. package/es/VelocityAnimation/VelocityAnimation/props/propTypes.js +0 -12
  281. package/es/VelocityAnimation/VelocityAnimationGroup/props/defaultProps.js +0 -15
  282. package/es/VelocityAnimation/VelocityAnimationGroup/props/propTypes.js +0 -19
  283. package/es/deprecated/PortalLayer/props/defaultProps.js +0 -5
  284. package/es/deprecated/PortalLayer/props/propTypes.js +0 -11
  285. package/es/semantic/Button/props/defaultProps.js +0 -12
  286. package/es/semantic/Button/props/propTypes.js +0 -26
  287. package/es/ucl/Grid/Grid.js +0 -45
  288. package/es/ucl/Grid/componentNames.js +0 -6
  289. package/es/ucl/Grid/css/Grid.module.css +0 -217
  290. package/es/ucl/Grid/css/cssJSLogic.js +0 -46
  291. package/es/ucl/Grid/docs/Grid__Area_Based_Detail_Layout.docs.js +0 -41
  292. package/es/ucl/Grid/docs/Grid__Area_Based_List_Layout.docs.js +0 -49
  293. package/es/ucl/Grid/docs/Grid__Auto_Flow_Row.docs.js +0 -32
  294. package/es/ucl/Grid/docs/Grid__Basic_Detail_Layout.docs.js +0 -41
  295. package/es/ucl/Grid/docs/Grid__Box_Alignment.docs.js +0 -37
  296. package/es/ucl/Grid/docs/Grid__Line_Based_Detail_Layout.docs.js +0 -41
  297. package/es/ucl/Grid/docs/Grid__Line_Based_List_Layout.docs.js +0 -45
  298. package/es/ucl/Grid/docs/Grid__default.docs.js +0 -61
  299. package/es/ucl/Grid/docs/css/gridDocsAreaBasedDetailLayout.module.css +0 -38
  300. package/es/ucl/Grid/docs/css/gridDocsAreaBasedListLayout.module.css +0 -63
  301. package/es/ucl/Grid/docs/css/gridDocsAutoFlowRow.module.css +0 -23
  302. package/es/ucl/Grid/docs/css/gridDocsBasicDetailLayout.module.css +0 -21
  303. package/es/ucl/Grid/docs/css/gridDocsBoxAlignment.module.css +0 -16
  304. package/es/ucl/Grid/docs/css/gridDocsDefault.module.css +0 -15
  305. package/es/ucl/Grid/docs/css/gridDocsLineBasedDetailLayout.module.css +0 -38
  306. package/es/ucl/Grid/docs/css/gridDocsLineBasedListLayout.module.css +0 -47
  307. package/es/ucl/Grid/docs/css/gridDocsStyle.module.css +0 -30
  308. package/es/ucl/Grid/index.js +0 -5
  309. package/es/ucl/Grid/props/ariaPropTypes.js +0 -6
  310. package/es/ucl/Grid/props/defaultProps.js +0 -8
  311. package/es/ucl/Grid/props/propConstants.js +0 -66
  312. package/es/ucl/Grid/props/propTypes.js +0 -27
  313. package/lib/Accordion/props/defaultProps.js +0 -16
  314. package/lib/Accordion/props/propTypes.js +0 -42
  315. package/lib/Animation/props/defaultProps.js +0 -14
  316. package/lib/Animation/props/propTypes.js +0 -23
  317. package/lib/AppContainer/props/defaultProps.js +0 -15
  318. package/lib/AppContainer/props/propTypes.js +0 -26
  319. package/lib/Avatar/props/defaultProps.js +0 -20
  320. package/lib/Avatar/props/propTypes.js +0 -33
  321. package/lib/AvatarTeam/props/defaultProps.js +0 -20
  322. package/lib/AvatarTeam/props/propTypes.js +0 -34
  323. package/lib/Button/props/defaultProps.js +0 -24
  324. package/lib/Button/props/propTypes.js +0 -33
  325. package/lib/Buttongroup/props/defaultProps.js +0 -11
  326. package/lib/Buttongroup/props/propTypes.js +0 -18
  327. package/lib/Card/props/defaultProps.js +0 -23
  328. package/lib/Card/props/propTypes.js +0 -57
  329. package/lib/CheckBox/props/defaultProps.js +0 -25
  330. package/lib/CheckBox/props/propTypes.js +0 -52
  331. package/lib/DateTime/props/defaultProps.js +0 -61
  332. package/lib/DateTime/props/propTypes.js +0 -145
  333. package/lib/DropBox/props/defaultProps.js +0 -27
  334. package/lib/DropBox/props/propTypes.js +0 -58
  335. package/lib/DropDown/props/defaultProps.js +0 -28
  336. package/lib/DropDown/props/propTypes.js +0 -94
  337. package/lib/Label/props/defaultProps.js +0 -17
  338. package/lib/Label/props/propTypes.js +0 -25
  339. package/lib/Layout/props/defaultProps.js +0 -20
  340. package/lib/Layout/props/propTypes.js +0 -54
  341. package/lib/ListItem/props/defaultProps.js +0 -97
  342. package/lib/ListItem/props/propTypes.js +0 -181
  343. package/lib/Modal/props/defaultProps.js +0 -10
  344. package/lib/Modal/props/propTypes.js +0 -17
  345. package/lib/MultiSelect/props/defaultProps.js +0 -156
  346. package/lib/MultiSelect/props/propTypes.js +0 -378
  347. package/lib/PopOver/props/defaultProps.js +0 -15
  348. package/lib/PopOver/props/propTypes.js +0 -66
  349. package/lib/Radio/props/defaultProps.js +0 -21
  350. package/lib/Radio/props/propTypes.js +0 -43
  351. package/lib/Responsive/props/defaultProps.js +0 -23
  352. package/lib/Responsive/props/propTypes.js +0 -39
  353. package/lib/ResponsiveDropBox/ResponsiveDropBox.js +0 -124
  354. package/lib/ResponsiveDropBox/ResponsiveDropBox.module.css +0 -6
  355. package/lib/ResponsiveDropBox/props/defaultProps.js +0 -11
  356. package/lib/ResponsiveDropBox/props/propTypes.js +0 -18
  357. package/lib/Ribbon/props/defaultProps.js +0 -15
  358. package/lib/Ribbon/props/propTypes.js +0 -21
  359. package/lib/RippleEffect/props/defaultProps.js +0 -16
  360. package/lib/RippleEffect/props/propTypes.js +0 -22
  361. package/lib/Select/props/defaultProps.js +0 -113
  362. package/lib/Select/props/propTypes.js +0 -280
  363. package/lib/Stencils/props/defaultProps.js +0 -13
  364. package/lib/Stencils/props/propTypes.js +0 -18
  365. package/lib/Switch/props/defaultProps.js +0 -17
  366. package/lib/Switch/props/propTypes.js +0 -38
  367. package/lib/Tab/props/defaultProps.js +0 -50
  368. package/lib/Tab/props/propTypes.js +0 -117
  369. package/lib/Tag/props/defaultProps.js +0 -20
  370. package/lib/Tag/props/propTypes.js +0 -45
  371. package/lib/TextBox/props/defaultProps.js +0 -26
  372. package/lib/TextBox/props/propTypes.js +0 -62
  373. package/lib/TextBoxIcon/props/defaultProps.js +0 -28
  374. package/lib/TextBoxIcon/props/propTypes.js +0 -60
  375. package/lib/Textarea/props/defaultProps.js +0 -23
  376. package/lib/Textarea/props/propTypes.js +0 -42
  377. package/lib/Tooltip/props/defaultProps.js +0 -11
  378. package/lib/Tooltip/props/propTypes.js +0 -19
  379. package/lib/VelocityAnimation/VelocityAnimation/props/defaultProps.js +0 -14
  380. package/lib/VelocityAnimation/VelocityAnimation/props/propTypes.js +0 -23
  381. package/lib/VelocityAnimation/VelocityAnimationGroup/props/defaultProps.js +0 -22
  382. package/lib/VelocityAnimation/VelocityAnimationGroup/props/propTypes.js +0 -30
  383. package/lib/deprecated/PortalLayer/props/defaultProps.js +0 -12
  384. package/lib/deprecated/PortalLayer/props/propTypes.js +0 -22
  385. package/lib/deprecated/advancedMultiSelectVariableJson.js +0 -82
  386. package/lib/semantic/Button/props/defaultProps.js +0 -19
  387. package/lib/semantic/Button/props/propTypes.js +0 -37
  388. package/lib/ucl/Grid/Grid.js +0 -70
  389. package/lib/ucl/Grid/componentNames.js +0 -13
  390. package/lib/ucl/Grid/css/Grid.module.css +0 -217
  391. package/lib/ucl/Grid/css/cssJSLogic.js +0 -44
  392. package/lib/ucl/Grid/docs/Grid__Area_Based_Detail_Layout.docs.js +0 -93
  393. package/lib/ucl/Grid/docs/Grid__Area_Based_List_Layout.docs.js +0 -101
  394. package/lib/ucl/Grid/docs/Grid__Auto_Flow_Row.docs.js +0 -86
  395. package/lib/ucl/Grid/docs/Grid__Box_Alignment.docs.js +0 -91
  396. package/lib/ucl/Grid/docs/Grid__Line_Based_Detail_Layout.docs.js +0 -93
  397. package/lib/ucl/Grid/docs/Grid__Line_Based_List_Layout.docs.js +0 -97
  398. package/lib/ucl/Grid/docs/Grid__default.docs.js +0 -113
  399. package/lib/ucl/Grid/docs/css/gridDocsAreaBasedDetailLayout.module.css +0 -38
  400. package/lib/ucl/Grid/docs/css/gridDocsAreaBasedListLayout.module.css +0 -63
  401. package/lib/ucl/Grid/docs/css/gridDocsAutoFlowRow.module.css +0 -23
  402. package/lib/ucl/Grid/docs/css/gridDocsBasicDetailLayout.module.css +0 -21
  403. package/lib/ucl/Grid/docs/css/gridDocsBoxAlignment.module.css +0 -16
  404. package/lib/ucl/Grid/docs/css/gridDocsDefault.module.css +0 -15
  405. package/lib/ucl/Grid/docs/css/gridDocsLineBasedDetailLayout.module.css +0 -38
  406. package/lib/ucl/Grid/docs/css/gridDocsLineBasedListLayout.module.css +0 -47
  407. package/lib/ucl/Grid/docs/css/gridDocsStyle.module.css +0 -30
  408. package/lib/ucl/Grid/index.js +0 -31
  409. package/lib/ucl/Grid/props/ariaPropTypes.js +0 -23
  410. package/lib/ucl/Grid/props/defaultProps.js +0 -19
  411. package/lib/ucl/Grid/props/propConstants.js +0 -73
  412. package/lib/ucl/Grid/props/propTypes.js +0 -46
@@ -14,8 +14,6 @@
14
14
  }
15
15
  .disabled,.readonly {
16
16
  --textboxicon_icon_cursor: not-allowed;
17
- }
18
- .disabled, .readonly {
19
17
  cursor: not-allowed;
20
18
  }
21
19
  .icon {
@@ -36,20 +34,15 @@
36
34
  .line {
37
35
  position: absolute;
38
36
  bottom: 0;
37
+ left: 0;
38
+ right: 0;
39
39
  min-height: 1px;
40
40
  transition: var(--zd_transition2);
41
- height: var(--textboxicon_line_height);
42
41
  transform: perspective(1px);
42
+ height: var(--textboxicon_line_height);
43
43
  }
44
- [dir=ltr] .line {
45
- left: 0;
46
- right: 0;
47
- }
48
- [dir=rtl] .line {
49
- right: 0;
50
- left: 0;
51
- }
52
- .line, .borderColor_default {
44
+ .line,
45
+ .borderColor_default {
53
46
  background-color: var(--textboxicon_line_color);
54
47
  }
55
48
  .borderColor_transparent {
@@ -1,8 +1,7 @@
1
1
  function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
2
2
 
3
3
  import React from 'react';
4
- import { defaultProps } from './props/defaultProps';
5
- import { propTypes } from './props/propTypes';
4
+ import PropTypes from 'prop-types';
6
5
  /* eslint css-modules/no-unused-class: [2, { markAsUsed: ['resizeX', 'resizeY', 'noresize', 'resizeboth', 'xsmall', 'small', 'medium', 'large', 'xlarge', 'default', 'primary'] }] */
7
6
 
8
7
  import style from './Textarea.module.css';
@@ -105,8 +104,52 @@ export default class Textarea extends React.Component {
105
104
  }
106
105
 
107
106
  }
108
- Textarea.defaultProps = defaultProps;
109
- Textarea.propTypes = propTypes;
107
+ Textarea.defaultProps = {
108
+ isDisabled: false,
109
+ isReadOnly: false,
110
+ dataId: 'TextareaComp',
111
+ needBorder: true,
112
+ resize: 'none',
113
+ size: 'small',
114
+ variant: 'default',
115
+ needAppearance: true,
116
+ needReadOnlyStyle: true,
117
+ borderColor: 'default',
118
+ needEffect: true,
119
+ autoFocus: false,
120
+ customClass: '',
121
+ a11y: {}
122
+ };
123
+ Textarea.propTypes = {
124
+ animated: PropTypes.bool,
125
+ autoFocus: PropTypes.bool,
126
+ borderColor: PropTypes.oneOf(['transparent', 'default']),
127
+ className: PropTypes.string,
128
+ dataId: PropTypes.string,
129
+ getRef: PropTypes.func,
130
+ htmlId: PropTypes.string,
131
+ isDisabled: PropTypes.bool,
132
+ isReadOnly: PropTypes.bool,
133
+ maxLength: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
134
+ needAppearance: PropTypes.bool,
135
+ needBorder: PropTypes.bool,
136
+ needEffect: PropTypes.bool,
137
+ needReadOnlyStyle: PropTypes.bool,
138
+ onBlur: PropTypes.func,
139
+ onChange: PropTypes.func,
140
+ onFocus: PropTypes.func,
141
+ onKeyDown: PropTypes.func,
142
+ placeHolder: PropTypes.string,
143
+ resize: PropTypes.oneOf(['horizontal', 'vertical', 'both', 'none']),
144
+ size: PropTypes.oneOf(['xsmall', 'small', 'xmedium', 'medium', 'large']),
145
+ text: PropTypes.string,
146
+ variant: PropTypes.oneOf(['default', 'primary']),
147
+ customClass: PropTypes.string,
148
+ a11y: PropTypes.shape({
149
+ ariaLabel: PropTypes.string,
150
+ ariaLabelledby: PropTypes.string
151
+ })
152
+ };
110
153
 
111
154
  if (false) {
112
155
  Textarea.docs = {
@@ -19,10 +19,11 @@
19
19
  appearance: none;
20
20
  outline: 0;
21
21
  letter-spacing: 0.1px;
22
- color: var(--textarea_text_color);
23
22
  cursor: var(--textarea_cursor);
23
+ color: var(--textarea_text_color);
24
24
  }
25
- .basic, .noBorder {
25
+ .basic,
26
+ .noBorder {
26
27
  border-width: var(--textarea_border_width);
27
28
  }
28
29
  .basic::placeholder {
@@ -60,20 +61,20 @@
60
61
  composes: basic;
61
62
  transition: border var(--zd_transition2) linear 0s,
62
63
  height var(--zd_transition2) linear 0s;
64
+ -webkit-transition: border var(--zd_transition2) linear 0s,
65
+ height var(--zd_transition2) linear 0s;
63
66
  -moz-transition: border var(--zd_transition2) linear 0s,
64
67
  height var(--zd_transition2) linear 0s;
65
68
  width: 100%;
66
69
  max-width: 100%;
67
70
  min-width: 100px;
71
+ border-style: solid;
68
72
  font-size: var(--textarea_font_size);
69
73
  line-height: var(--textarea_line_height);
70
- height: var(--textarea_height);
71
- -webkit-transition: border var(--zd_transition2) linear 0s,
72
- height var(--zd_transition2) linear 0s;
73
- border-style: solid;
74
74
  background-color: var(--zdt_textarea_default_bg);
75
75
  border-color: var(--textarea_border_color);
76
76
  padding: var(--textarea_padding);
77
+ height: var(--textarea_height);
77
78
  }
78
79
  .needBorder {
79
80
  --textarea_border_width: 0 0 1px 0;
@@ -1,6 +1,5 @@
1
1
  import React from 'react';
2
- import { defaultProps } from './props/defaultProps';
3
- import { propTypes } from './props/propTypes';
2
+ import PropTypes from 'prop-types';
4
3
  import { getLibraryConfig } from '../Provider/Config';
5
4
  import style from './Tooltip.module.css';
6
5
  import ResizeObserver from '../Responsive/ResizeObserver';
@@ -503,8 +502,17 @@ export default class Tooltip extends React.Component {
503
502
  }
504
503
 
505
504
  }
506
- Tooltip.propTypes = propTypes;
507
- Tooltip.defaultProps = defaultProps;
505
+ Tooltip.propTypes = {
506
+ dataId: PropTypes.string,
507
+ isHtml: PropTypes.string,
508
+ isPosition: PropTypes.oneOf(['top', 'bottom', 'left', 'right']),
509
+ title: PropTypes.string,
510
+ customClass: PropTypes.string
511
+ };
512
+ Tooltip.defaultProps = {
513
+ dataId: 'toolTip',
514
+ customClass: ''
515
+ };
508
516
 
509
517
  if (false) {
510
518
  Tooltip.docs = {
@@ -1,28 +1,25 @@
1
1
  .tooltiptext {
2
2
  position: fixed;
3
3
  z-index: 9999999; /*Hook for editor alert*/
4
+ animation: tooltip-grow var(--zd_transition7) cubic-bezier(0.175, 0.885, 0.32, 1.15);
4
5
  pointer-events: none;
5
6
  box-shadow: 0 4px 12px 0 var(--zdt_tooltip_default_box_shadow);
6
7
  border-radius: var(--zd_size4);
7
- }[dir=ltr] .tooltiptext {
8
- animation: tooltip-grow var(--zd_transition7) cubic-bezier(0.175, 0.885, 0.32, 1.15);
9
- }[dir=rtl] .tooltiptext {
10
- animation: tooltip-grow var(--zd_transition7) cubic-bezier(0.175, 0.885, 0.32, 1.15);
11
8
  }
12
9
  .tooltipcont {
10
+ background-color: var(--zdt_tooltip_default_bg);
13
11
  color: var(--zdt_tooltip_default_text);
12
+ padding: 0 var(--zd_size10);
14
13
  font-size: var(--zd_font_size13);
15
14
  font-family: var(--zd_semibold);
16
15
  word-break: break-word;
16
+ border-style: solid;
17
+ border-color: transparent;
18
+ border-radius: var(--zd_size4);
17
19
  max-width: 420px;
18
20
  line-height: var(--zd_size20);
19
21
  min-height: var(--zd_size24);
20
22
  overflow: hidden;
21
- background-color: var(--zdt_tooltip_default_bg);
22
- padding: 0 var(--zd_size10);
23
- border-style: solid;
24
- border-color: transparent;
25
- border-radius: var(--zd_size4);
26
23
  }
27
24
  .tooltipWrapCont {
28
25
  white-space: pre-wrap;
@@ -30,6 +27,7 @@
30
27
  .tooltipNormalCont {
31
28
  white-space: normal;
32
29
  }
30
+ /*rtl:begin:ignore*/
33
31
  .tooltiparrow {
34
32
  content: '';
35
33
  position: absolute;
@@ -75,6 +73,7 @@
75
73
  .arrowRight {
76
74
  transform: rotate(135deg) translateY(50%);
77
75
  }
76
+ /*rtl:end:ignore*/
78
77
  @keyframes tooltip-grow {
79
78
  from {
80
79
  opacity: 0;
@@ -1,6 +1,5 @@
1
1
  import React from 'react';
2
- import { defaultProps } from './props/defaultProps';
3
- import { propTypes } from './props/propTypes';
2
+ import PropTypes from 'prop-types';
4
3
  import { VelocityComponent } from 'velocity-react';
5
4
  import 'velocity-animate/velocity.ui';
6
5
  import LibraryContext from '../../Provider/LibraryContextInit';
@@ -68,8 +67,28 @@ export default class VelocityAnimation extends React.Component {
68
67
  }
69
68
 
70
69
  }
71
- VelocityAnimation.defaultProps = defaultProps;
72
- VelocityAnimation.propTypes = propTypes;
70
+ VelocityAnimation.defaultProps = {
71
+ runOnMount: false,
72
+ isCustomized: true,
73
+ needUIPack: true,
74
+ isFlex: false,
75
+ duration: 300
76
+ };
77
+ VelocityAnimation.propTypes = {
78
+ children: PropTypes.node.isRequired,
79
+ delay: PropTypes.number,
80
+ duration: PropTypes.number,
81
+ isActive: PropTypes.bool.isRequired,
82
+ isCustomized: PropTypes.bool,
83
+ isFlex: PropTypes.bool,
84
+ name: PropTypes.oneOf(['fade', 'slideRight', 'shrink', 'expand', 'slideDown', 'flyDown', 'slideLeft']),
85
+ needUIPack: PropTypes.bool,
86
+ runOnMount: PropTypes.bool
87
+ };
88
+ VelocityAnimation.contextTypes = {
89
+ direction: PropTypes.string,
90
+ isReducedMotion: PropTypes.bool
91
+ };
73
92
  VelocityAnimation.contextType = LibraryContext;
74
93
 
75
94
  if (false) {
@@ -1,8 +1,7 @@
1
1
  function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
2
2
 
3
3
  import React from 'react';
4
- import { defaultProps } from './props/defaultProps';
5
- import { propTypes } from './props/propTypes';
4
+ import PropTypes from 'prop-types';
6
5
  import { VelocityTransitionGroup } from 'velocity-react';
7
6
  import 'velocity-animate/velocity.ui';
8
7
  import LibraryContext from '../../Provider/LibraryContextInit';
@@ -97,10 +96,44 @@ export default class VelocityAnimationGroup extends React.Component {
97
96
  }
98
97
 
99
98
  }
100
- VelocityAnimationGroup.defaultProps = { ...defaultProps,
99
+ VelocityAnimationGroup.defaultProps = {
100
+ runOnMount: false,
101
+ enterHideStyle: {
102
+ display: 'none'
103
+ },
104
+ enterShowStyle: {
105
+ display: ''
106
+ },
107
+ isFlex: false,
108
+ enterDuration: 300,
109
+ exitDuration: 300,
110
+ isActive: false,
111
+ isCustomized: true,
112
+ needUIPack: true,
101
113
  component: React.Fragment
102
114
  };
103
- VelocityAnimationGroup.propTypes = propTypes;
115
+ VelocityAnimationGroup.propTypes = {
116
+ children: PropTypes.node.isRequired,
117
+ component: PropTypes.element,
118
+ enterDelay: PropTypes.number,
119
+ enterDuration: PropTypes.number,
120
+ enterHideStyle: PropTypes.object,
121
+ enterName: PropTypes.string,
122
+ enterShowStyle: PropTypes.object,
123
+ exitDelay: PropTypes.number,
124
+ exitDuration: PropTypes.number,
125
+ exitName: PropTypes.string,
126
+ isActive: PropTypes.bool,
127
+ isCustomized: PropTypes.bool,
128
+ isFlex: PropTypes.bool,
129
+ name: PropTypes.oneOf(['fade', 'slideDown', 'flyDown', 'slideRight', 'shrink', 'expand', 'slideLeft']),
130
+ needUIPack: PropTypes.bool,
131
+ runOnMount: PropTypes.bool
132
+ };
133
+ VelocityAnimationGroup.contextTypes = {
134
+ direction: PropTypes.string,
135
+ isReducedMotion: PropTypes.bool
136
+ };
104
137
  VelocityAnimationGroup.contextType = LibraryContext;
105
138
 
106
139
  if (false) {
@@ -0,0 +1,370 @@
1
+ import React, { useContext, useEffect, useRef } from 'react';
2
+ let scopes = new Set();
3
+ let activeScope = null;
4
+ const FocusContext = /*#__PURE__*/React.createContext(null); // interface FocusManager {
5
+ // /** Moves focus to the next focusable or tabbable element in the focus scope. */
6
+ // focusNext(opts?: FocusManagerOptions): HTMLElement,
7
+ // /** Moves focus to the previous focusable or tabbable element in the focus scope. */
8
+ // focusPrevious(opts?: FocusManagerOptions): HTMLElement
9
+ // }
10
+
11
+ export const useLayoutEffect = window !== 'undefined' ? React.useLayoutEffect : () => {};
12
+ export default function FocusScope(props) {
13
+ let {
14
+ children,
15
+ contain = true,
16
+ restoreFocus = true,
17
+ autoFocus = true
18
+ } = props;
19
+ let startRef = useRef();
20
+ let endRef = useRef();
21
+ let scopeRef = useRef([]);
22
+ useLayoutEffect(() => {
23
+ // Find all rendered nodes between the sentinels and add them to the scope.
24
+ let node = startRef.current.nextSibling;
25
+ let nodes = [];
26
+
27
+ while (node && node !== endRef.current) {
28
+ nodes.push(node);
29
+ node = node.nextSibling;
30
+ }
31
+
32
+ scopeRef.current = nodes;
33
+ scopes.add(scopeRef);
34
+ return () => {
35
+ scopes.delete(scopeRef);
36
+ };
37
+ }, [children]);
38
+ useFocusContainment(scopeRef, contain);
39
+ useRestoreFocus(scopeRef, restoreFocus, contain);
40
+ useAutoFocus(scopeRef, autoFocus);
41
+ let focusManager = createFocusManager(scopeRef);
42
+ return /*#__PURE__*/React.createElement(FocusContext.Provider, {
43
+ value: focusManager
44
+ }, /*#__PURE__*/React.createElement("span", {
45
+ hidden: true,
46
+ ref: startRef
47
+ }), children, /*#__PURE__*/React.createElement("span", {
48
+ hidden: true,
49
+ ref: endRef
50
+ }));
51
+ }
52
+ export function useFocusManager() {
53
+ return useContext(FocusContext);
54
+ }
55
+
56
+ function createFocusManager(scopeRef) {
57
+ return {
58
+ focusNext(opts) {
59
+ let node = opts.from || document.activeElement;
60
+ let focusable = getFocusableElementsInScope(scopeRef.current, opts);
61
+ let nextNode = focusable.find(n => !!(node.compareDocumentPosition(n) & (Node.DOCUMENT_POSITION_FOLLOWING | Node.DOCUMENT_POSITION_CONTAINED_BY)));
62
+
63
+ if (!nextNode && opts.wrap) {
64
+ nextNode = focusable[0];
65
+ }
66
+
67
+ if (nextNode) {
68
+ nextNode.focus();
69
+ }
70
+
71
+ return nextNode;
72
+ },
73
+
74
+ focusPrevious(opts) {
75
+ let node = opts.from || document.activeElement;
76
+ let focusable = getFocusableElementsInScope(scopeRef.current, opts).reverse();
77
+ let previousNode = focusable.find(n => !!(node.compareDocumentPosition(n) & (Node.DOCUMENT_POSITION_PRECEDING | Node.DOCUMENT_POSITION_CONTAINED_BY)));
78
+
79
+ if (!previousNode && opts.wrap) {
80
+ previousNode = focusable[0];
81
+ }
82
+
83
+ if (previousNode) {
84
+ previousNode.focus();
85
+ }
86
+
87
+ return previousNode;
88
+ }
89
+
90
+ };
91
+ }
92
+
93
+ const focusableElements = ['input:not([disabled]):not([type=hidden])', 'select:not([disabled])', 'textarea:not([disabled])', 'button:not([disabled])', 'a[href]', 'audio[controls]', 'video[controls]', '[contenteditable]:not([contenteditable="false"])', 'details>summary:first-of-type', 'details', 'area[href]', 'summary', 'iframe', 'object', 'embed'];
94
+ const FOCUSABLE_ELEMENT_SELECTOR = focusableElements.join(',') + ',[tabindex]';
95
+ focusableElements.push('[tabindex]:not([tabindex="-1"])');
96
+ const TABBABLE_ELEMENT_SELECTOR = focusableElements.join(':not([tabindex="-1"]),');
97
+
98
+ function useAutoFocus(scopeRef, autoFocus) {
99
+ useEffect(() => {
100
+ if (autoFocus) {
101
+ activeScope = scopeRef;
102
+
103
+ if (!isElementInScope(document.activeElement, activeScope.current)) {
104
+ focusFirstInScope(scopeRef.current);
105
+ }
106
+ }
107
+ }, [scopeRef, autoFocus]);
108
+ }
109
+
110
+ function getFocusableElementsInScope(scope, opts) {
111
+ let res = [],
112
+ response = [];
113
+ let selector = opts.tabbable ? TABBABLE_ELEMENT_SELECTOR : FOCUSABLE_ELEMENT_SELECTOR;
114
+
115
+ for (let node of scope) {
116
+ if (node.matches(selector)) {
117
+ res.push(node);
118
+ }
119
+
120
+ response.push(...Array.from(node.querySelectorAll(selector)));
121
+ res = response.filter(element => {
122
+ return !(window.getComputedStyle(element).display === 'none');
123
+ });
124
+ }
125
+
126
+ ;
127
+ return res;
128
+ }
129
+
130
+ function useFocusContainment(scopeRef, contain) {
131
+ let focusedNode = useRef();
132
+ let raf = useRef(null);
133
+ useEffect(() => {
134
+ let scope = scopeRef.current;
135
+
136
+ if (!contain) {
137
+ return;
138
+ } // Handle the Tab key to contain focus within the scope
139
+
140
+
141
+ let onKeyDown = e => {
142
+ if (e.key !== 'Tab' || e.altKey || e.ctrlKey || e.metaKey) {
143
+ return;
144
+ }
145
+
146
+ let elements = getFocusableElementsInScope(scope, {
147
+ tabbable: true
148
+ });
149
+ let focusedElement = document.activeElement;
150
+
151
+ if (!isElementInScope(focusedElement, scope)) {
152
+ return;
153
+ }
154
+
155
+ let position = elements.indexOf(focusedElement);
156
+ let lastPosition = elements.length - 1;
157
+ let nextElement = null;
158
+
159
+ if (e.shiftKey) {
160
+ if (position <= 0) {
161
+ nextElement = elements[lastPosition];
162
+ } else {
163
+ nextElement = elements[position - 1];
164
+ }
165
+ } else {
166
+ if (position === lastPosition) {
167
+ nextElement = elements[0];
168
+ } else {
169
+ nextElement = elements[position + 1];
170
+ }
171
+ }
172
+
173
+ e.preventDefault();
174
+
175
+ if (nextElement) {
176
+ focusElement(nextElement, true);
177
+ }
178
+ };
179
+
180
+ let onFocus = e => {
181
+ // If a focus event occurs outside the active scope (e.g. user tabs from browser location bar),
182
+ // restore focus to the previously focused node or the first tabbable element in the active scope.
183
+ let isInAnyScope = isElementInAnyScope(e.target, scopes);
184
+
185
+ if (!isInAnyScope) {
186
+ if (focusedNode.current) {
187
+ focusedNode.current.focus();
188
+ } else if (activeScope) {
189
+ focusFirstInScope(activeScope.current);
190
+ }
191
+ } else {
192
+ activeScope = scopeRef;
193
+ focusedNode.current = e.target;
194
+ }
195
+ };
196
+
197
+ let onBlur = e => {
198
+ // Firefox doesn't shift focus back to the Dialog properly without this
199
+ raf.current = requestAnimationFrame(() => {
200
+ // Use document.activeElement instead of e.relatedTarget so we can tell if user clicked into iframe
201
+ let isInAnyScope = isElementInAnyScope(document.activeElement, scopes);
202
+
203
+ if (!isInAnyScope) {
204
+ activeScope = scopeRef;
205
+ focusedNode.current = e.target;
206
+ focusedNode.current.focus();
207
+ }
208
+ });
209
+ };
210
+
211
+ document.addEventListener('keydown', onKeyDown, false);
212
+ document.addEventListener('focusin', onFocus, false);
213
+ scope.forEach(element => element.addEventListener('focusin', onFocus, false));
214
+ scope.forEach(element => element.addEventListener('focusout', onBlur, false));
215
+ return () => {
216
+ document.removeEventListener('keydown', onKeyDown, false);
217
+ document.removeEventListener('focusin', onFocus, false);
218
+ scope.forEach(element => element.removeEventListener('focusin', onFocus, false));
219
+ scope.forEach(element => element.removeEventListener('focusout', onBlur, false));
220
+ };
221
+ }, [scopeRef, contain]); // eslint-disable-next-line arrow-body-style
222
+
223
+ useEffect(() => {
224
+ return () => cancelAnimationFrame(raf.current);
225
+ }, [raf]);
226
+ }
227
+
228
+ function isElementInAnyScope(element) {
229
+ let scopes = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
230
+
231
+ for (let scope of scopes.values()) {
232
+ if (isElementInScope(element, scope.current)) {
233
+ return true;
234
+ }
235
+ }
236
+
237
+ return false;
238
+ }
239
+
240
+ function isElementInScope(element) {
241
+ let scope = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
242
+ return scope.some(node => node.contains(element));
243
+ }
244
+
245
+ function focusElement() {
246
+ let element = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
247
+
248
+ if (element != null) {
249
+ element.focus();
250
+ }
251
+ }
252
+
253
+ function findElement(elements) {
254
+ let ele = [];
255
+
256
+ for (let element = 0; element < elements.length; element++) {
257
+ let elem = elements[element];
258
+
259
+ if (elem.getAttribute('data-auto-focus')) {
260
+ ele.push(elem);
261
+ }
262
+ }
263
+
264
+ return ele.length ? ele[0] : null;
265
+ }
266
+
267
+ function focusFirstInScope() {
268
+ let scope = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
269
+ let elements = getFocusableElementsInScope(scope, {
270
+ tabbable: true
271
+ });
272
+ let element = findElement(elements);
273
+ focusElement(element ? element : elements[0]);
274
+ }
275
+
276
+ function useRestoreFocus(scopeRef, restoreFocus, contain) {
277
+ // useLayoutEffect instead of useEffect so the active element is saved synchronously instead of asynchronously.
278
+ useLayoutEffect(() => {
279
+ let scope = scopeRef.current;
280
+ let nodeToRestore = document.activeElement; // Handle the Tab key so that tabbing out of the scope goes to the next element
281
+ // after the node that had focus when the scope mounted. This is important when
282
+ // using portals for overlays, so that focus goes to the expected element when
283
+ // tabbing out of the overlay.
284
+
285
+ let onKeyDown = e => {
286
+ if (e.key !== 'Tab' || e.altKey || e.ctrlKey || e.metaKey) {
287
+ return;
288
+ }
289
+
290
+ let focusedElement = document.activeElement;
291
+
292
+ if (!isElementInScope(focusedElement, scope)) {
293
+ return;
294
+ } // Create a DOM tree walker that matches all tabbable elements
295
+
296
+
297
+ let walker = getFocusableTreeWalker(document.body, {
298
+ tabbable: true
299
+ }); // Find the next tabbable element after the currently focused element
300
+
301
+ walker.currentNode = focusedElement;
302
+ let nextElement = e.shiftKey ? walker.previousNode() : walker.nextNode(); // If there is no next element, or it is outside the current scope, move focus to the
303
+ // next element after the node to restore to instead.
304
+
305
+ if ((!nextElement || !isElementInScope(nextElement, scope)) && nodeToRestore) {
306
+ walker.currentNode = nodeToRestore; // Skip over elements within the scope, in case the scope immediately follows the node to restore.
307
+
308
+ do {
309
+ nextElement = e.shiftKey ? walker.previousNode() : walker.nextNode();
310
+ } while (isElementInScope(nextElement, scope));
311
+
312
+ e.preventDefault();
313
+ e.stopPropagation();
314
+
315
+ if (nextElement) {
316
+ nextElement.focus();
317
+ } else {
318
+ // If there is no next element, blur the focused element to move focus to the body.
319
+ focusedElement.blur();
320
+ }
321
+ }
322
+ };
323
+
324
+ if (!contain) {
325
+ document.addEventListener('keydown', onKeyDown, true);
326
+ }
327
+
328
+ return () => {
329
+ if (!contain) {
330
+ document.removeEventListener('keydown', onKeyDown, true);
331
+ }
332
+
333
+ if (restoreFocus && nodeToRestore && isElementInScope(document.activeElement, scope)) {
334
+ requestAnimationFrame(() => {
335
+ if (document.body.contains(nodeToRestore)) {
336
+ focusElement(nodeToRestore);
337
+ }
338
+ });
339
+ }
340
+ };
341
+ }, [scopeRef, restoreFocus, contain]);
342
+ }
343
+
344
+ export function getFocusableTreeWalker(root, opts) {
345
+ let selector = opts && opts.tabbable ? TABBABLE_ELEMENT_SELECTOR : FOCUSABLE_ELEMENT_SELECTOR;
346
+ let walker = document.createTreeWalker(root, NodeFilter.SHOW_ELEMENT, {
347
+ acceptNode(node) {
348
+ // Skip nodes inside the starting node.
349
+ if (opts && opts.from && opts.from.contains(node)) {
350
+ return NodeFilter.FILTER_REJECT;
351
+ }
352
+
353
+ if (node.matches(selector)) {
354
+ return NodeFilter.FILTER_ACCEPT;
355
+ }
356
+
357
+ return NodeFilter.FILTER_SKIP;
358
+ }
359
+
360
+ }, false);
361
+
362
+ if (opts && opts.from) {
363
+ walker.currentNode = opts.from;
364
+ }
365
+
366
+ return walker;
367
+ }
368
+ FocusScope.docs = {
369
+ componentGroup: 'Atom'
370
+ };