@zohodesk/components 1.0.0-temp-44 → 1.0.0-temp-47

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 (435) hide show
  1. package/README.md +16 -0
  2. package/assets/Appearance/dark/mode/darkMode.module.css +356 -0
  3. package/assets/Appearance/dark/themes/blue/blueDarkCTATheme.module.css +34 -0
  4. package/assets/Appearance/dark/themes/blue/blueDarkComponentTheme.module.css +42 -0
  5. package/{es → assets}/Appearance/dark/themes/green/greenDarkCTATheme.module.css +11 -11
  6. package/assets/Appearance/dark/themes/green/greenDarkComponentTheme.module.css +42 -0
  7. package/{es → assets}/Appearance/dark/themes/orange/orangeDarkCTATheme.module.css +11 -11
  8. package/assets/Appearance/dark/themes/orange/orangeDarkComponentTheme.module.css +42 -0
  9. package/{es → assets}/Appearance/dark/themes/red/redDarkCTATheme.module.css +11 -11
  10. package/assets/Appearance/dark/themes/red/redDarkComponentTheme.module.css +42 -0
  11. package/{es → assets}/Appearance/dark/themes/yellow/yellowDarkCTATheme.module.css +11 -11
  12. package/assets/Appearance/dark/themes/yellow/yellowDarkComponentTheme.module.css +42 -0
  13. package/assets/Appearance/default/mode/defaultMode.module.css +356 -0
  14. package/assets/Appearance/default/themes/blue/blueDefaultCTATheme.module.css +34 -0
  15. package/assets/Appearance/default/themes/blue/blueDefaultComponentTheme.module.css +42 -0
  16. package/{es → assets}/Appearance/default/themes/green/greenDefaultCTATheme.module.css +3 -3
  17. package/{es → assets}/Appearance/default/themes/green/greenDefaultComponentTheme.module.css +8 -8
  18. package/{es → assets}/Appearance/default/themes/orange/orangeDefaultCTATheme.module.css +1 -1
  19. package/{es → assets}/Appearance/default/themes/orange/orangeDefaultComponentTheme.module.css +7 -7
  20. package/{es → assets}/Appearance/default/themes/red/redDefaultCTATheme.module.css +8 -8
  21. package/{es → assets}/Appearance/default/themes/red/redDefaultComponentTheme.module.css +7 -7
  22. package/{es → assets}/Appearance/default/themes/yellow/yellowDefaultCTATheme.module.css +1 -1
  23. package/{es → assets}/Appearance/default/themes/yellow/yellowDefaultComponentTheme.module.css +7 -7
  24. package/es/AppContainer/AppContainer.js +6 -6
  25. package/es/Avatar/Avatar.module.css +11 -9
  26. package/es/AvatarTeam/AvatarTeam.module.css +21 -7
  27. package/es/Button/Button.module.css +96 -23
  28. package/es/Buttongroup/Buttongroup.module.css +37 -8
  29. package/es/Card/Card.module.css +3 -3
  30. package/es/CheckBox/CheckBox.module.css +17 -11
  31. package/es/DateTime/DateTime.module.css +39 -12
  32. package/es/DateTime/DateWidget.module.css +9 -9
  33. package/es/DateTime/YearView.module.css +16 -6
  34. package/es/DropBox/DropBox.module.css +47 -11
  35. package/es/DropDown/DropDownHeading.module.css +7 -3
  36. package/es/DropDown/DropDownItem.module.css +32 -6
  37. package/es/ListItem/ListContainer.js +123 -0
  38. package/es/ListItem/ListItem.js +24 -49
  39. package/es/ListItem/ListItem.module.css +55 -29
  40. package/es/ListItem/ListItemWithAvatar.js +22 -45
  41. package/es/ListItem/ListItemWithCheckBox.js +24 -47
  42. package/es/ListItem/ListItemWithIcon.js +27 -44
  43. package/es/ListItem/ListItemWithRadio.js +25 -49
  44. package/es/MultiSelect/AdvancedGroupMultiSelect.js +7 -4
  45. package/es/MultiSelect/AdvancedMultiSelect.js +6 -3
  46. package/es/MultiSelect/AdvancedMultiSelect.module.css +29 -14
  47. package/es/MultiSelect/MultiSelect.js +15 -5
  48. package/es/MultiSelect/MultiSelect.module.css +34 -21
  49. package/es/MultiSelect/MultiSelectWithAvatar.js +6 -3
  50. package/es/MultiSelect/SelectedOptions.js +3 -2
  51. package/es/MultiSelect/SelectedOptions.module.css +8 -2
  52. package/es/PopOver/PopOver.module.css +2 -2
  53. package/es/Provider.js +22 -22
  54. package/es/Radio/Radio.js +1 -2
  55. package/es/Radio/Radio.module.css +11 -5
  56. package/es/Ribbon/Ribbon.module.css +93 -28
  57. package/es/RippleEffect/RippleEffect.js +7 -4
  58. package/es/RippleEffect/RippleEffect.module.css +18 -44
  59. package/es/Select/Select.js +14 -0
  60. package/es/Select/Select.module.css +13 -3
  61. package/es/Select/SelectWithAvatar.js +7 -4
  62. package/es/Stencils/Stencils.module.css +21 -8
  63. package/es/Switch/Switch.module.css +6 -7
  64. package/es/Tab/Tab.module.css +16 -7
  65. package/es/Tab/Tabs.module.css +41 -8
  66. package/es/Tag/Tag.js +10 -4
  67. package/es/Tag/Tag.module.css +50 -25
  68. package/es/TextBox/TextBox.module.css +7 -11
  69. package/es/TextBoxIcon/TextBoxIcon.js +1 -1
  70. package/es/TextBoxIcon/TextBoxIcon.module.css +15 -7
  71. package/es/Textarea/Textarea.module.css +6 -7
  72. package/es/Tooltip/Tooltip.module.css +9 -8
  73. package/es/beta/FocusRing/FocusRing.module.css +51 -26
  74. package/es/common/animation.module.css +219 -21
  75. package/es/common/basicReset.module.css +2 -12
  76. package/es/common/common.module.css +62 -18
  77. package/es/common/customscroll.module.css +17 -21
  78. package/es/common/docStyle.module.css +82 -35
  79. package/es/common/transition.module.css +50 -10
  80. package/es/semantic/Button/semanticButton.module.css +3 -3
  81. package/lib/Accordion/Accordion.js +146 -0
  82. package/lib/Accordion/AccordionItem.js +124 -0
  83. package/lib/Accordion/__tests__/Accordion.spec.js +85 -0
  84. package/lib/Accordion/index.js +23 -0
  85. package/lib/Animation/Animation.js +207 -0
  86. package/lib/Animation/__tests__/Animation.spec.js +23 -0
  87. package/lib/AppContainer/AppContainer.js +205 -0
  88. package/lib/AppContainer/AppContainer.module.css +18 -0
  89. package/lib/Avatar/Avatar.js +280 -0
  90. package/lib/Avatar/Avatar.module.css +117 -0
  91. package/lib/Avatar/__tests__/Avatar.spec.js +208 -0
  92. package/lib/Avatar/__tests__/__snapshots__/Avatar.spec.js.snap +288 -0
  93. package/lib/AvatarTeam/AvatarTeam.js +157 -0
  94. package/lib/AvatarTeam/AvatarTeam.module.css +161 -0
  95. package/lib/AvatarTeam/__tests__/AvatarTeam.spec.js +92 -0
  96. package/lib/AvatarTeam/__tests__/__snapshots__/AvatarTeam.spec.js.snap +226 -0
  97. package/lib/Button/Button.js +159 -0
  98. package/lib/Button/Button.module.css +518 -0
  99. package/lib/Button/__tests__/Button.spec.js +233 -0
  100. package/lib/Button/__tests__/__snapshots__/Button.spec.js.snap +191 -0
  101. package/lib/Buttongroup/Buttongroup.js +101 -0
  102. package/lib/Buttongroup/Buttongroup.module.css +89 -0
  103. package/lib/Buttongroup/__test__/Buttongroup.spec.js +86 -0
  104. package/lib/Buttongroup/__test__/__snapshots__/Buttongroup.spec.js.snap +146 -0
  105. package/lib/Card/Card.js +410 -0
  106. package/lib/Card/Card.module.css +20 -0
  107. package/lib/Card/__tests__/Card.spec.js +56 -0
  108. package/lib/Card/index.js +37 -0
  109. package/lib/CheckBox/CheckBox.js +265 -0
  110. package/lib/CheckBox/CheckBox.module.css +153 -0
  111. package/lib/CheckBox/__tests__/CheckBox.spec.js +18 -0
  112. package/lib/DateTime/CalendarView.js +285 -0
  113. package/lib/DateTime/DateTime.js +889 -0
  114. package/lib/DateTime/DateTime.module.css +188 -0
  115. package/lib/DateTime/DateTimePopupFooter.js +90 -0
  116. package/lib/DateTime/DateTimePopupHeader.js +149 -0
  117. package/lib/DateTime/DateWidget.js +1189 -0
  118. package/lib/DateTime/DateWidget.module.css +42 -0
  119. package/lib/DateTime/DaysRow.js +76 -0
  120. package/lib/DateTime/Time.js +248 -0
  121. package/lib/DateTime/YearView.js +324 -0
  122. package/lib/DateTime/YearView.module.css +80 -0
  123. package/lib/DateTime/__tests__/CalendarView.spec.js +45 -0
  124. package/lib/DateTime/__tests__/DateTime.spec.js +127 -0
  125. package/lib/DateTime/__tests__/DateWidget.spec.js +81 -0
  126. package/lib/DateTime/common.js +36 -0
  127. package/lib/DateTime/constants.js +77 -0
  128. package/lib/DateTime/dateFormatUtils/dateFormat.js +613 -0
  129. package/lib/DateTime/dateFormatUtils/dayChange.js +81 -0
  130. package/lib/DateTime/dateFormatUtils/index.js +274 -0
  131. package/lib/DateTime/dateFormatUtils/monthChange.js +94 -0
  132. package/lib/DateTime/dateFormatUtils/timeChange.js +240 -0
  133. package/lib/DateTime/dateFormatUtils/yearChange.js +119 -0
  134. package/lib/DateTime/index.js +15 -0
  135. package/lib/DateTime/objectUtils.js +76 -0
  136. package/lib/DateTime/typeChecker.js +26 -0
  137. package/lib/DateTime/validator.js +353 -0
  138. package/lib/DropBox/DropBox.js +389 -0
  139. package/lib/DropBox/DropBox.module.css +406 -0
  140. package/lib/DropBox/DropBoxPositionMapping.json +145 -0
  141. package/lib/DropBox/__tests__/DropBox.spec.js +87 -0
  142. package/lib/DropDown/DropDown.js +203 -0
  143. package/lib/DropDown/DropDown.module.css +5 -0
  144. package/lib/DropDown/DropDownHeading.js +102 -0
  145. package/lib/DropDown/DropDownHeading.module.css +53 -0
  146. package/lib/DropDown/DropDownItem.js +139 -0
  147. package/lib/DropDown/DropDownItem.module.css +94 -0
  148. package/lib/DropDown/DropDownSearch.js +132 -0
  149. package/lib/DropDown/DropDownSearch.module.css +14 -0
  150. package/lib/DropDown/DropDownSeparator.js +66 -0
  151. package/lib/DropDown/DropDownSeparator.module.css +7 -0
  152. package/lib/DropDown/__tests__/DropDown.spec.js +50 -0
  153. package/lib/DropDown/__tests__/DropDownItem.spec.js +51 -0
  154. package/lib/DropDown/__tests__/DropDownSearch.spec.js +17 -0
  155. package/lib/Label/Label.js +109 -0
  156. package/lib/Label/Label.module.css +52 -0
  157. package/lib/Label/LabelColors.module.css +21 -0
  158. package/lib/Label/__tests__/Label.spec.js +137 -0
  159. package/lib/Label/__tests__/__snapshots__/Label.spec.js.snap +101 -0
  160. package/lib/Layout/Box.js +138 -0
  161. package/lib/Layout/Container.js +152 -0
  162. package/lib/Layout/Layout.module.css +324 -0
  163. package/lib/Layout/__tests__/Box.spec.js +121 -0
  164. package/lib/Layout/__tests__/Container.spec.js +127 -0
  165. package/lib/Layout/index.js +34 -0
  166. package/lib/Layout/utils.js +55 -0
  167. package/lib/LightNightMode/Colors.json +398 -0
  168. package/lib/ListItem/ListContainer.js +132 -0
  169. package/lib/ListItem/ListItem.js +227 -0
  170. package/lib/ListItem/ListItem.module.css +200 -0
  171. package/lib/ListItem/ListItemWithAvatar.js +237 -0
  172. package/lib/ListItem/ListItemWithCheckBox.js +205 -0
  173. package/lib/ListItem/ListItemWithIcon.js +229 -0
  174. package/lib/ListItem/ListItemWithRadio.js +208 -0
  175. package/lib/Modal/Modal.js +218 -0
  176. package/lib/Modal/__docs__/Modal__default.docs.js +88 -0
  177. package/lib/MultiSelect/AdvancedGroupMultiSelect.js +1218 -0
  178. package/lib/MultiSelect/AdvancedMultiSelect.js +684 -0
  179. package/lib/MultiSelect/AdvancedMultiSelect.module.css +127 -0
  180. package/lib/MultiSelect/EmptyState.js +132 -0
  181. package/lib/MultiSelect/MultiSelect.js +1226 -0
  182. package/lib/MultiSelect/MultiSelect.module.css +193 -0
  183. package/lib/MultiSelect/MultiSelectHeader.js +86 -0
  184. package/lib/MultiSelect/MultiSelectWithAvatar.js +410 -0
  185. package/lib/MultiSelect/SelectedOptions.js +140 -0
  186. package/lib/MultiSelect/SelectedOptions.module.css +15 -0
  187. package/lib/MultiSelect/Suggestions.js +219 -0
  188. package/lib/MultiSelect/__tests__/MultiSelect.spec.js +170 -0
  189. package/lib/PopOver/PopOver.js +366 -0
  190. package/lib/PopOver/PopOver.module.css +8 -0
  191. package/lib/PopOver/__tests__/PopOver.spec.js +20 -0
  192. package/lib/Popup/Popup.js +716 -0
  193. package/lib/Popup/PositionMapping.json +74 -0
  194. package/lib/Popup/__tests__/Popup.spec.js +192 -0
  195. package/lib/Popup/viewPort.js +368 -0
  196. package/lib/Provider/AvatarSize.js +23 -0
  197. package/lib/Provider/Config.js +25 -0
  198. package/lib/Provider/CssProvider.js +27 -0
  199. package/lib/Provider/IdProvider.js +82 -0
  200. package/lib/Provider/LibraryContext.js +76 -0
  201. package/lib/Provider/LibraryContextInit.js +15 -0
  202. package/lib/Provider/NumberGenerator/NumberGenerator.js +174 -0
  203. package/lib/Provider/ZindexProvider.js +69 -0
  204. package/lib/Provider.js +241 -0
  205. package/lib/Radio/Radio.js +214 -0
  206. package/lib/Radio/Radio.module.css +110 -0
  207. package/lib/Radio/__tests__/Radiospec.js +29 -0
  208. package/lib/Responsive/CustomResponsive.js +246 -0
  209. package/lib/Responsive/RefWrapper.js +55 -0
  210. package/lib/Responsive/ResizeComponent.js +268 -0
  211. package/lib/Responsive/ResizeObserver.js +168 -0
  212. package/lib/Responsive/Responsive.js +280 -0
  213. package/lib/Responsive/index.js +30 -0
  214. package/lib/Responsive/sizeObservers.js +206 -0
  215. package/lib/Responsive/utils/index.js +69 -0
  216. package/lib/Responsive/utils/shallowCompare.js +38 -0
  217. package/lib/Responsive/windowResizeObserver.js +63 -0
  218. package/lib/Ribbon/Ribbon.js +115 -0
  219. package/lib/Ribbon/Ribbon.module.css +377 -0
  220. package/lib/Ribbon/__tests__/Ribbon.spec.js +193 -0
  221. package/lib/Ribbon/__tests__/__snapshots__/Ribbon.spec.js.snap +163 -0
  222. package/lib/RippleEffect/RippleEffect.js +61 -0
  223. package/lib/RippleEffect/RippleEffect.module.css +70 -0
  224. package/lib/Select/GroupSelect.js +944 -0
  225. package/lib/Select/Select.js +1078 -0
  226. package/lib/Select/Select.module.css +100 -0
  227. package/lib/Select/SelectWithAvatar.js +433 -0
  228. package/lib/Select/SelectWithIcon.js +556 -0
  229. package/lib/Select/__tests__/Select.spec.js +383 -0
  230. package/lib/Stencils/Stencils.js +94 -0
  231. package/lib/Stencils/Stencils.module.css +96 -0
  232. package/lib/Stencils/__tests__/Stencils.spec.js +84 -0
  233. package/lib/Stencils/__tests__/__snapshots__/Stencils.spec.js.snap +49 -0
  234. package/lib/Switch/Switch.js +183 -0
  235. package/lib/Switch/Switch.module.css +110 -0
  236. package/lib/Tab/Tab.js +158 -0
  237. package/lib/Tab/Tab.module.css +101 -0
  238. package/lib/Tab/TabContent.js +45 -0
  239. package/lib/Tab/TabContent.module.css +4 -0
  240. package/lib/Tab/TabContentWrapper.js +47 -0
  241. package/lib/Tab/TabWrapper.js +109 -0
  242. package/lib/Tab/Tabs.js +696 -0
  243. package/lib/Tab/Tabs.module.css +140 -0
  244. package/lib/Tab/__tests__/Tab.spec.js +130 -0
  245. package/lib/Tab/__tests__/TabContent.spec.js +22 -0
  246. package/lib/Tab/__tests__/TabContentWrapper.spec.js +59 -0
  247. package/lib/Tab/__tests__/TabWrapper.spec.js +100 -0
  248. package/lib/Tab/__tests__/Tabs.spec.js +123 -0
  249. package/lib/Tab/index.js +47 -0
  250. package/lib/Tag/Tag.js +252 -0
  251. package/lib/Tag/Tag.module.css +251 -0
  252. package/lib/Tag/__tests__/Tag.spec.js +35 -0
  253. package/lib/TextBox/TextBox.js +289 -0
  254. package/lib/TextBox/TextBox.module.css +157 -0
  255. package/lib/TextBox/__tests__/TextBox.spec.js +205 -0
  256. package/lib/TextBox/__tests__/__snapshots__/TextBox.spec.js.snap +127 -0
  257. package/lib/TextBoxIcon/TextBoxIcon.js +284 -0
  258. package/lib/TextBoxIcon/TextBoxIcon.module.css +78 -0
  259. package/lib/TextBoxIcon/__tests__/TextBoxIcon.spec.js +228 -0
  260. package/lib/TextBoxIcon/__tests__/__snapshots__/TextBoxIcon.spec.js.snap +334 -0
  261. package/lib/Textarea/Textarea.js +202 -0
  262. package/lib/Textarea/Textarea.module.css +139 -0
  263. package/lib/Textarea/__tests__/Textarea.spec.js +186 -0
  264. package/lib/Textarea/__tests__/__snapshots__/Textarea.spec.js.snap +97 -0
  265. package/lib/Tooltip/Tooltip.js +538 -0
  266. package/lib/Tooltip/Tooltip.module.css +104 -0
  267. package/lib/Tooltip/__tests__/Tooltip.spec.js +98 -0
  268. package/lib/VelocityAnimation/VelocityAnimation/VelocityAnimation.js +144 -0
  269. package/lib/VelocityAnimation/VelocityAnimationGroup/VelocityAnimationGroup.js +188 -0
  270. package/lib/a11y/FocusScope/FocusScope.js +443 -0
  271. package/lib/beta/FocusRing/FocusRing.js +338 -0
  272. package/lib/beta/FocusRing/FocusRing.module.css +152 -0
  273. package/lib/common/animation.module.css +624 -0
  274. package/lib/common/avatarsizes.module.css +45 -0
  275. package/lib/common/basic.module.css +33 -0
  276. package/lib/common/basicReset.module.css +40 -0
  277. package/lib/common/common.module.css +502 -0
  278. package/lib/common/customscroll.module.css +89 -0
  279. package/lib/common/docStyle.module.css +762 -0
  280. package/lib/common/reset.module.css +12 -0
  281. package/lib/common/transition.module.css +146 -0
  282. package/lib/css.js +83 -0
  283. package/lib/deprecated/PortalLayer/PortalLayer.js +165 -0
  284. package/lib/index.js +1412 -0
  285. package/lib/semantic/Button/Button.js +138 -0
  286. package/lib/semantic/Button/semanticButton.module.css +9 -0
  287. package/lib/utils/Common.js +453 -0
  288. package/lib/utils/ContextOptimizer.js +49 -0
  289. package/lib/utils/__tests__/constructFullName.spec.js +12 -0
  290. package/lib/utils/__tests__/debounce.spec.js +40 -0
  291. package/lib/utils/__tests__/getInitial.spec.js +26 -0
  292. package/lib/utils/constant.js +10 -0
  293. package/lib/utils/constructFullName.js +34 -0
  294. package/lib/utils/datetime/common.js +233 -0
  295. package/lib/utils/debounce.js +30 -0
  296. package/lib/utils/dropDownUtils.js +565 -0
  297. package/lib/utils/dummyFunction.js +10 -0
  298. package/lib/utils/getHTMLFontSize.js +11 -0
  299. package/lib/utils/getInitial.js +33 -0
  300. package/lib/utils/scrollTo.js +22 -0
  301. package/lib/utils/shallowEqual.js +41 -0
  302. package/package.json +7 -7
  303. package/README_Beta.md +0 -2
  304. package/__testUtils__/globals.js +0 -46
  305. package/__testUtils__/moduleMapKey.json +0 -138
  306. package/dubFinder.js +0 -96
  307. package/es/Accordion/docs/Accordion__Demo.docs.js +0 -80
  308. package/es/Animation/docs/Animation__default.docs.js +0 -34
  309. package/es/Animation/docs/Animation__fadeIn.docs.js +0 -34
  310. package/es/Animation/docs/Animation__scaleIn.docs.js +0 -34
  311. package/es/Animation/docs/Animation__skewIn.docs.js +0 -34
  312. package/es/Animation/docs/Animation__slideDown.docs.js +0 -34
  313. package/es/Animation/docs/Animation__slideLeft.docs.js +0 -34
  314. package/es/Animation/docs/Animation__zoomIn.docs.js +0 -34
  315. package/es/AppContainer/docs/AppContainer__default.docs.js +0 -20
  316. package/es/Appearance/dark/mode/darkMode.module.css +0 -356
  317. package/es/Appearance/dark/themes/blue/blueDarkCTATheme.module.css +0 -34
  318. package/es/Appearance/dark/themes/blue/blueDarkComponentTheme.module.css +0 -42
  319. package/es/Appearance/dark/themes/green/greenDarkComponentTheme.module.css +0 -42
  320. package/es/Appearance/dark/themes/orange/orangeDarkComponentTheme.module.css +0 -42
  321. package/es/Appearance/dark/themes/red/redDarkComponentTheme.module.css +0 -42
  322. package/es/Appearance/dark/themes/yellow/yellowDarkComponentTheme.module.css +0 -42
  323. package/es/Appearance/default/mode/defaultMode.module.css +0 -356
  324. package/es/Appearance/default/themes/blue/blueDefaultCTATheme.module.css +0 -34
  325. package/es/Appearance/default/themes/blue/blueDefaultComponentTheme.module.css +0 -42
  326. package/es/Avatar/docs/Avatar__custom.docs.js +0 -29
  327. package/es/Avatar/docs/Avatar__default.docs.js +0 -29
  328. package/es/Avatar/docs/Avatar__palette.docs.js +0 -49
  329. package/es/Avatar/docs/Avatar__text.docs.js +0 -28
  330. package/es/AvatarTeam/docs/AvatarTeam__custom.docs.js +0 -73
  331. package/es/AvatarTeam/docs/AvatarTeam__default.docs.js +0 -31
  332. package/es/AvatarTeam/docs/AvatarTeam__palette.docs.js +0 -50
  333. package/es/AvatarTeam/docs/AvatarTeam__size.docs.js +0 -49
  334. package/es/Button/docs/Button__custom.docs.js +0 -771
  335. package/es/Button/docs/Button__default.docs.js +0 -536
  336. package/es/Buttongroup/docs/Buttongroup__custom.docs.js +0 -37
  337. package/es/Buttongroup/docs/Buttongroup__footer.docs.js +0 -33
  338. package/es/Buttongroup/docs/Buttongroup__header.docs.js +0 -42
  339. package/es/Card/docs/Card__Custom.docs.js +0 -34
  340. package/es/Card/docs/Card__Default.docs.js +0 -37
  341. package/es/Card/docs/Card__Scroll.docs.js +0 -59
  342. package/es/CheckBox/docs/CheckBox__custom.docs.js +0 -293
  343. package/es/CheckBox/docs/CheckBox__default.docs.js +0 -219
  344. package/es/DateTime/docs/DateTime__default.docs.js +0 -91
  345. package/es/DateTime/docs/DateWidget__default.docs.js +0 -183
  346. package/es/DateTime/docs/timezonedata.json +0 -1
  347. package/es/DropBox/docs/DropBox__custom.docs.js +0 -66
  348. package/es/DropBox/docs/DropBox__customOrder.docs.js +0 -92
  349. package/es/DropBox/docs/DropBox__fixedPosition.docs.js +0 -91
  350. package/es/DropBox/docs/DropBox__position.docs.js +0 -87
  351. package/es/DropBox/docs/DropBox__size.docs.js +0 -61
  352. package/es/DropDown/docs/DropDownHeading__custom.docs.js +0 -23
  353. package/es/DropDown/docs/DropDownHeading__default.docs.js +0 -21
  354. package/es/Label/docs/Label__clipped.docs.js +0 -27
  355. package/es/Label/docs/Label__custom.docs.js +0 -30
  356. package/es/Label/docs/Label__palette.docs.js +0 -42
  357. package/es/Label/docs/Label__size.docs.js +0 -29
  358. package/es/Label/docs/Label__type.docs.js +0 -37
  359. package/es/Layout/docs/Layout__Hidden.docs.js +0 -77
  360. package/es/Layout/docs/Layout__default.docs.js +0 -49
  361. package/es/Layout/docs/Layout__four_Column.docs.js +0 -85
  362. package/es/Layout/docs/Layout__three_Column.docs.js +0 -76
  363. package/es/Layout/docs/Layout__two_Column.docs.js +0 -69
  364. package/es/LightNightMode/docs/AlternativeColors.docs.js +0 -74
  365. package/es/ListItem/docs/ListItemWithAvatar__custom.docs.js +0 -155
  366. package/es/ListItem/docs/ListItemWithAvatar__default.docs.js +0 -112
  367. package/es/ListItem/docs/ListItemWithCheckBox__custom.docs.js +0 -91
  368. package/es/ListItem/docs/ListItemWithCheckBox__default.docs.js +0 -65
  369. package/es/ListItem/docs/ListItemWithIcon__custom.docs.js +0 -68
  370. package/es/ListItem/docs/ListItemWithIcon__default.docs.js +0 -62
  371. package/es/ListItem/docs/ListItemWithRadio__custom.docs.js +0 -91
  372. package/es/ListItem/docs/ListItemWithRadio__default.docs.js +0 -65
  373. package/es/ListItem/docs/ListItem__custom.docs.js +0 -114
  374. package/es/ListItem/docs/ListItem__default.docs.js +0 -82
  375. package/es/MultiSelect/docs/AdvancedGroupMultiSelect__default.docs.js +0 -124
  376. package/es/MultiSelect/docs/AdvancedMultiSelect__default.docs.js +0 -114
  377. package/es/MultiSelect/docs/MultiSelectWithAvatar__default.docs.js +0 -141
  378. package/es/MultiSelect/docs/MultiSelect__default.docs.js +0 -161
  379. package/es/PopOver/docs/PopOver__default.docs.js +0 -32
  380. package/es/Provider/docs/Provider_Id__Class.docs.js +0 -29
  381. package/es/Provider/docs/Provider_Id__Function.docs.js +0 -18
  382. package/es/Provider/docs/Provider_Zindex__Class.docs.js +0 -32
  383. package/es/Provider/docs/Provider_Zindex__Function.docs.js +0 -23
  384. package/es/Radio/docs/Radio__custom.docs.js +0 -245
  385. package/es/Radio/docs/Radio__default.docs.js +0 -169
  386. package/es/Responsive/docs/Responsive__Custom.docs.js +0 -201
  387. package/es/Responsive/docs/Responsive__default.docs.js +0 -94
  388. package/es/Responsive/docs/style.module.css +0 -47
  389. package/es/Ribbon/docs/Ribbon__custom.docs.js +0 -386
  390. package/es/Ribbon/docs/Ribbon__default.docs.js +0 -342
  391. package/es/RippleEffect/docs/RippleEffect__default.docs.js +0 -435
  392. package/es/Select/docs/GroupSelect__default.docs.js +0 -149
  393. package/es/Select/docs/SelectWithAvatar__default.docs.js +0 -97
  394. package/es/Select/docs/SelectWithIcon__default.docs.js +0 -138
  395. package/es/Select/docs/Select__default.docs.js +0 -287
  396. package/es/Stencils/docs/Stencils__custom.docs.js +0 -45
  397. package/es/Stencils/docs/Stencils__default.docs.js +0 -50
  398. package/es/Switch/docs/Switch__custom.docs.js +0 -153
  399. package/es/Switch/docs/Switch__default.docs.js +0 -107
  400. package/es/Tab/docs/Tab__default.docs.js +0 -259
  401. package/es/Tab/docs/tabdocs.module.css +0 -29
  402. package/es/Tag/docs/Tag__custom.docs.js +0 -368
  403. package/es/Tag/docs/Tag__default.docs.js +0 -253
  404. package/es/TextBox/docs/TextBox__custom.docs.js +0 -43
  405. package/es/TextBox/docs/TextBox__default.docs.js +0 -40
  406. package/es/TextBox/docs/TextBox__size.docs.js +0 -38
  407. package/es/TextBox/docs/TextBox__variant.docs.js +0 -38
  408. package/es/TextBoxIcon/docs/TextBoxIcon__custom.docs.js +0 -89
  409. package/es/TextBoxIcon/docs/TextBoxIcon__default.docs.js +0 -61
  410. package/es/Textarea/docs/Textarea__animated.docs.js +0 -41
  411. package/es/Textarea/docs/Textarea__custom.docs.js +0 -82
  412. package/es/Textarea/docs/Textarea__default.docs.js +0 -76
  413. package/es/Textarea/docs/Textarea__disabled.docs.js +0 -29
  414. package/es/Tooltip/docs/Tooltip__default.docs.js +0 -332
  415. package/es/VelocityAnimation/VelocityAnimation/docs/VelocityAnimation__demo.docs.js +0 -97
  416. package/es/VelocityAnimation/VelocityAnimationGroup/docs/VelocityAnimationGroup__demo.docs.js +0 -150
  417. package/es/a11y/FocusScope/docs/FocusScope__default.docs.js +0 -139
  418. package/es/beta/FocusRing/docs/FocusRing__default.docs.js +0 -48
  419. package/es/deprecated/PortalLayer/docs/PortalLayer__default.docs.js +0 -72
  420. package/es/deprecated/Theme/darkTheme.module.css +0 -393
  421. package/es/deprecated/Theme/defaultTheme.module.css +0 -393
  422. package/es/deprecated/Theme/palette/darkCTAPalette.module.css +0 -116
  423. package/es/deprecated/Theme/palette/darkPalette.module.css +0 -155
  424. package/es/deprecated/Theme/palette/defaultCTAPalette.module.css +0 -116
  425. package/es/deprecated/Theme/palette/defaultPalette.module.css +0 -155
  426. package/es/deprecated/customscroll_Old.module.css +0 -46
  427. package/es/semantic/Button/docs/Button__default.docs.js +0 -20
  428. package/externalDocsBuild.js +0 -21
  429. package/preprocess/componentAppearanceColors.js +0 -65
  430. package/preprocess/componentThemeColors.js +0 -119
  431. package/preprocess/ctaThemeColors.js +0 -95
  432. package/preprocess/index.js +0 -3
  433. package/preprocess/json/componentAppearanceVariableJson.js +0 -1515
  434. package/preprocess/json/componentThemeVariableJson.js +0 -259
  435. package/preprocess/json/ctaThemeVariableJson.js +0 -337
@@ -0,0 +1,443 @@
1
+ "use strict";
2
+
3
+ function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports["default"] = FocusScope;
9
+ exports.useFocusManager = useFocusManager;
10
+ exports.getFocusableTreeWalker = getFocusableTreeWalker;
11
+ exports.useLayoutEffect = void 0;
12
+
13
+ var _react = _interopRequireWildcard(require("react"));
14
+
15
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
16
+
17
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
18
+
19
+ function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
20
+
21
+ function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
22
+
23
+ function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
24
+
25
+ function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
26
+
27
+ function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
28
+
29
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
30
+
31
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
32
+
33
+ var scopes = new Set();
34
+ var activeScope = null;
35
+
36
+ var FocusContext = /*#__PURE__*/_react["default"].createContext(null); // interface FocusManager {
37
+ // /** Moves focus to the next focusable or tabbable element in the focus scope. */
38
+ // focusNext(opts?: FocusManagerOptions): HTMLElement,
39
+ // /** Moves focus to the previous focusable or tabbable element in the focus scope. */
40
+ // focusPrevious(opts?: FocusManagerOptions): HTMLElement
41
+ // }
42
+
43
+
44
+ var useLayoutEffect = window !== 'undefined' ? _react["default"].useLayoutEffect : function () {};
45
+ exports.useLayoutEffect = useLayoutEffect;
46
+
47
+ function FocusScope(props) {
48
+ var children = props.children,
49
+ _props$contain = props.contain,
50
+ contain = _props$contain === void 0 ? true : _props$contain,
51
+ _props$restoreFocus = props.restoreFocus,
52
+ restoreFocus = _props$restoreFocus === void 0 ? true : _props$restoreFocus,
53
+ _props$autoFocus = props.autoFocus,
54
+ autoFocus = _props$autoFocus === void 0 ? true : _props$autoFocus;
55
+ var startRef = (0, _react.useRef)();
56
+ var endRef = (0, _react.useRef)();
57
+ var scopeRef = (0, _react.useRef)([]);
58
+ useLayoutEffect(function () {
59
+ // Find all rendered nodes between the sentinels and add them to the scope.
60
+ var node = startRef.current.nextSibling;
61
+ var nodes = [];
62
+
63
+ while (node && node !== endRef.current) {
64
+ nodes.push(node);
65
+ node = node.nextSibling;
66
+ }
67
+
68
+ scopeRef.current = nodes;
69
+ scopes.add(scopeRef);
70
+ return function () {
71
+ scopes["delete"](scopeRef);
72
+ };
73
+ }, [children]);
74
+ useFocusContainment(scopeRef, contain);
75
+ useRestoreFocus(scopeRef, restoreFocus, contain);
76
+ useAutoFocus(scopeRef, autoFocus);
77
+ var focusManager = createFocusManager(scopeRef);
78
+ return /*#__PURE__*/_react["default"].createElement(FocusContext.Provider, {
79
+ value: focusManager
80
+ }, /*#__PURE__*/_react["default"].createElement("span", {
81
+ hidden: true,
82
+ ref: startRef
83
+ }), children, /*#__PURE__*/_react["default"].createElement("span", {
84
+ hidden: true,
85
+ ref: endRef
86
+ }));
87
+ }
88
+
89
+ function useFocusManager() {
90
+ return (0, _react.useContext)(FocusContext);
91
+ }
92
+
93
+ function createFocusManager(scopeRef) {
94
+ return {
95
+ focusNext: function focusNext(opts) {
96
+ var node = opts.from || document.activeElement;
97
+ var focusable = getFocusableElementsInScope(scopeRef.current, opts);
98
+ var nextNode = focusable.find(function (n) {
99
+ return !!(node.compareDocumentPosition(n) & (Node.DOCUMENT_POSITION_FOLLOWING | Node.DOCUMENT_POSITION_CONTAINED_BY));
100
+ });
101
+
102
+ if (!nextNode && opts.wrap) {
103
+ nextNode = focusable[0];
104
+ }
105
+
106
+ if (nextNode) {
107
+ nextNode.focus();
108
+ }
109
+
110
+ return nextNode;
111
+ },
112
+ focusPrevious: function focusPrevious(opts) {
113
+ var node = opts.from || document.activeElement;
114
+ var focusable = getFocusableElementsInScope(scopeRef.current, opts).reverse();
115
+ var previousNode = focusable.find(function (n) {
116
+ return !!(node.compareDocumentPosition(n) & (Node.DOCUMENT_POSITION_PRECEDING | Node.DOCUMENT_POSITION_CONTAINED_BY));
117
+ });
118
+
119
+ if (!previousNode && opts.wrap) {
120
+ previousNode = focusable[0];
121
+ }
122
+
123
+ if (previousNode) {
124
+ previousNode.focus();
125
+ }
126
+
127
+ return previousNode;
128
+ }
129
+ };
130
+ }
131
+
132
+ var 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'];
133
+ var FOCUSABLE_ELEMENT_SELECTOR = focusableElements.join(',') + ',[tabindex]';
134
+ focusableElements.push('[tabindex]:not([tabindex="-1"])');
135
+ var TABBABLE_ELEMENT_SELECTOR = focusableElements.join(':not([tabindex="-1"]),');
136
+
137
+ function useAutoFocus(scopeRef, autoFocus) {
138
+ (0, _react.useEffect)(function () {
139
+ if (autoFocus) {
140
+ activeScope = scopeRef;
141
+
142
+ if (!isElementInScope(document.activeElement, activeScope.current)) {
143
+ focusFirstInScope(scopeRef.current);
144
+ }
145
+ }
146
+ }, [scopeRef, autoFocus]);
147
+ }
148
+
149
+ function getFocusableElementsInScope(scope, opts) {
150
+ var res = [],
151
+ response = [];
152
+ var selector = opts.tabbable ? TABBABLE_ELEMENT_SELECTOR : FOCUSABLE_ELEMENT_SELECTOR;
153
+
154
+ var _iterator = _createForOfIteratorHelper(scope),
155
+ _step;
156
+
157
+ try {
158
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
159
+ var node = _step.value;
160
+
161
+ if (node.matches(selector)) {
162
+ res.push(node);
163
+ }
164
+
165
+ response.push.apply(response, _toConsumableArray(Array.from(node.querySelectorAll(selector))));
166
+ res = response.filter(function (element) {
167
+ return !(window.getComputedStyle(element).display === 'none');
168
+ });
169
+ }
170
+ } catch (err) {
171
+ _iterator.e(err);
172
+ } finally {
173
+ _iterator.f();
174
+ }
175
+
176
+ ;
177
+ return res;
178
+ }
179
+
180
+ function useFocusContainment(scopeRef, contain) {
181
+ var focusedNode = (0, _react.useRef)();
182
+ var raf = (0, _react.useRef)(null);
183
+ (0, _react.useEffect)(function () {
184
+ var scope = scopeRef.current;
185
+
186
+ if (!contain) {
187
+ return;
188
+ } // Handle the Tab key to contain focus within the scope
189
+
190
+
191
+ var onKeyDown = function onKeyDown(e) {
192
+ if (e.key !== 'Tab' || e.altKey || e.ctrlKey || e.metaKey) {
193
+ return;
194
+ }
195
+
196
+ var elements = getFocusableElementsInScope(scope, {
197
+ tabbable: true
198
+ });
199
+ var focusedElement = document.activeElement;
200
+
201
+ if (!isElementInScope(focusedElement, scope)) {
202
+ return;
203
+ }
204
+
205
+ var position = elements.indexOf(focusedElement);
206
+ var lastPosition = elements.length - 1;
207
+ var nextElement = null;
208
+
209
+ if (e.shiftKey) {
210
+ if (position <= 0) {
211
+ nextElement = elements[lastPosition];
212
+ } else {
213
+ nextElement = elements[position - 1];
214
+ }
215
+ } else {
216
+ if (position === lastPosition) {
217
+ nextElement = elements[0];
218
+ } else {
219
+ nextElement = elements[position + 1];
220
+ }
221
+ }
222
+
223
+ e.preventDefault();
224
+
225
+ if (nextElement) {
226
+ focusElement(nextElement, true);
227
+ }
228
+ };
229
+
230
+ var onFocus = function onFocus(e) {
231
+ // If a focus event occurs outside the active scope (e.g. user tabs from browser location bar),
232
+ // restore focus to the previously focused node or the first tabbable element in the active scope.
233
+ var isInAnyScope = isElementInAnyScope(e.target, scopes);
234
+
235
+ if (!isInAnyScope) {
236
+ if (focusedNode.current) {
237
+ focusedNode.current.focus();
238
+ } else if (activeScope) {
239
+ focusFirstInScope(activeScope.current);
240
+ }
241
+ } else {
242
+ activeScope = scopeRef;
243
+ focusedNode.current = e.target;
244
+ }
245
+ };
246
+
247
+ var onBlur = function onBlur(e) {
248
+ // Firefox doesn't shift focus back to the Dialog properly without this
249
+ raf.current = requestAnimationFrame(function () {
250
+ // Use document.activeElement instead of e.relatedTarget so we can tell if user clicked into iframe
251
+ var isInAnyScope = isElementInAnyScope(document.activeElement, scopes);
252
+
253
+ if (!isInAnyScope) {
254
+ activeScope = scopeRef;
255
+ focusedNode.current = e.target;
256
+ focusedNode.current.focus();
257
+ }
258
+ });
259
+ };
260
+
261
+ document.addEventListener('keydown', onKeyDown, false);
262
+ document.addEventListener('focusin', onFocus, false);
263
+ scope.forEach(function (element) {
264
+ return element.addEventListener('focusin', onFocus, false);
265
+ });
266
+ scope.forEach(function (element) {
267
+ return element.addEventListener('focusout', onBlur, false);
268
+ });
269
+ return function () {
270
+ document.removeEventListener('keydown', onKeyDown, false);
271
+ document.removeEventListener('focusin', onFocus, false);
272
+ scope.forEach(function (element) {
273
+ return element.removeEventListener('focusin', onFocus, false);
274
+ });
275
+ scope.forEach(function (element) {
276
+ return element.removeEventListener('focusout', onBlur, false);
277
+ });
278
+ };
279
+ }, [scopeRef, contain]); // eslint-disable-next-line arrow-body-style
280
+
281
+ (0, _react.useEffect)(function () {
282
+ return function () {
283
+ return cancelAnimationFrame(raf.current);
284
+ };
285
+ }, [raf]);
286
+ }
287
+
288
+ function isElementInAnyScope(element) {
289
+ var scopes = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
290
+
291
+ var _iterator2 = _createForOfIteratorHelper(scopes.values()),
292
+ _step2;
293
+
294
+ try {
295
+ for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
296
+ var scope = _step2.value;
297
+
298
+ if (isElementInScope(element, scope.current)) {
299
+ return true;
300
+ }
301
+ }
302
+ } catch (err) {
303
+ _iterator2.e(err);
304
+ } finally {
305
+ _iterator2.f();
306
+ }
307
+
308
+ return false;
309
+ }
310
+
311
+ function isElementInScope(element) {
312
+ var scope = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
313
+ return scope.some(function (node) {
314
+ return node.contains(element);
315
+ });
316
+ }
317
+
318
+ function focusElement() {
319
+ var element = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
320
+
321
+ if (element != null) {
322
+ element.focus();
323
+ }
324
+ }
325
+
326
+ function findElement(elements) {
327
+ var ele = [];
328
+
329
+ for (var element = 0; element < elements.length; element++) {
330
+ var elem = elements[element];
331
+
332
+ if (elem.getAttribute('data-auto-focus')) {
333
+ ele.push(elem);
334
+ }
335
+ }
336
+
337
+ return ele.length ? ele[0] : null;
338
+ }
339
+
340
+ function focusFirstInScope() {
341
+ var scope = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
342
+ var elements = getFocusableElementsInScope(scope, {
343
+ tabbable: true
344
+ });
345
+ var element = findElement(elements);
346
+ focusElement(element ? element : elements[0]);
347
+ }
348
+
349
+ function useRestoreFocus(scopeRef, restoreFocus, contain) {
350
+ // useLayoutEffect instead of useEffect so the active element is saved synchronously instead of asynchronously.
351
+ useLayoutEffect(function () {
352
+ var scope = scopeRef.current;
353
+ var nodeToRestore = document.activeElement; // Handle the Tab key so that tabbing out of the scope goes to the next element
354
+ // after the node that had focus when the scope mounted. This is important when
355
+ // using portals for overlays, so that focus goes to the expected element when
356
+ // tabbing out of the overlay.
357
+
358
+ var onKeyDown = function onKeyDown(e) {
359
+ if (e.key !== 'Tab' || e.altKey || e.ctrlKey || e.metaKey) {
360
+ return;
361
+ }
362
+
363
+ var focusedElement = document.activeElement;
364
+
365
+ if (!isElementInScope(focusedElement, scope)) {
366
+ return;
367
+ } // Create a DOM tree walker that matches all tabbable elements
368
+
369
+
370
+ var walker = getFocusableTreeWalker(document.body, {
371
+ tabbable: true
372
+ }); // Find the next tabbable element after the currently focused element
373
+
374
+ walker.currentNode = focusedElement;
375
+ var nextElement = e.shiftKey ? walker.previousNode() : walker.nextNode(); // If there is no next element, or it is outside the current scope, move focus to the
376
+ // next element after the node to restore to instead.
377
+
378
+ if ((!nextElement || !isElementInScope(nextElement, scope)) && nodeToRestore) {
379
+ walker.currentNode = nodeToRestore; // Skip over elements within the scope, in case the scope immediately follows the node to restore.
380
+
381
+ do {
382
+ nextElement = e.shiftKey ? walker.previousNode() : walker.nextNode();
383
+ } while (isElementInScope(nextElement, scope));
384
+
385
+ e.preventDefault();
386
+ e.stopPropagation();
387
+
388
+ if (nextElement) {
389
+ nextElement.focus();
390
+ } else {
391
+ // If there is no next element, blur the focused element to move focus to the body.
392
+ focusedElement.blur();
393
+ }
394
+ }
395
+ };
396
+
397
+ if (!contain) {
398
+ document.addEventListener('keydown', onKeyDown, true);
399
+ }
400
+
401
+ return function () {
402
+ if (!contain) {
403
+ document.removeEventListener('keydown', onKeyDown, true);
404
+ }
405
+
406
+ if (restoreFocus && nodeToRestore && isElementInScope(document.activeElement, scope)) {
407
+ requestAnimationFrame(function () {
408
+ if (document.body.contains(nodeToRestore)) {
409
+ focusElement(nodeToRestore);
410
+ }
411
+ });
412
+ }
413
+ };
414
+ }, [scopeRef, restoreFocus, contain]);
415
+ }
416
+
417
+ function getFocusableTreeWalker(root, opts) {
418
+ var selector = opts && opts.tabbable ? TABBABLE_ELEMENT_SELECTOR : FOCUSABLE_ELEMENT_SELECTOR;
419
+ var walker = document.createTreeWalker(root, NodeFilter.SHOW_ELEMENT, {
420
+ acceptNode: function acceptNode(node) {
421
+ // Skip nodes inside the starting node.
422
+ if (opts && opts.from && opts.from.contains(node)) {
423
+ return NodeFilter.FILTER_REJECT;
424
+ }
425
+
426
+ if (node.matches(selector)) {
427
+ return NodeFilter.FILTER_ACCEPT;
428
+ }
429
+
430
+ return NodeFilter.FILTER_SKIP;
431
+ }
432
+ }, false);
433
+
434
+ if (opts && opts.from) {
435
+ walker.currentNode = opts.from;
436
+ }
437
+
438
+ return walker;
439
+ }
440
+
441
+ FocusScope.docs = {
442
+ componentGroup: 'Atom'
443
+ };