@enact/limestone 1.3.0

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 (463) hide show
  1. package/.github/PULL_REQUEST_TEMPLATE.md +28 -0
  2. package/.github/workflows/update-copyright-years.yml +25 -0
  3. package/.travis.yml +40 -0
  4. package/ActionGuide/ActionGuide.d.ts +73 -0
  5. package/ActionGuide/ActionGuide.js +164 -0
  6. package/ActionGuide/ActionGuide.module.css +73 -0
  7. package/ActionGuide/package.json +3 -0
  8. package/ActionGuide/tests/ActionGuide-specs.js +51 -0
  9. package/Alert/Alert.d.ts +155 -0
  10. package/Alert/Alert.js +313 -0
  11. package/Alert/Alert.module.css +190 -0
  12. package/Alert/AlertImage.js +102 -0
  13. package/Alert/AlertImage.module.css +15 -0
  14. package/Alert/package.json +3 -0
  15. package/Alert/tests/Alert-specs.js +204 -0
  16. package/BodyText/BodyText.d.ts +74 -0
  17. package/BodyText/BodyText.js +170 -0
  18. package/BodyText/BodyText.module.css +95 -0
  19. package/BodyText/package.json +3 -0
  20. package/BodyText/tests/BodyText-specs.js +55 -0
  21. package/Button/Button.d.ts +131 -0
  22. package/Button/Button.js +351 -0
  23. package/Button/Button.module.css +2518 -0
  24. package/Button/package.json +3 -0
  25. package/Button/tests/Button-specs.js +252 -0
  26. package/CHANGELOG.md +170 -0
  27. package/Card/Card.d.ts +138 -0
  28. package/Card/Card.js +396 -0
  29. package/Card/Card.module.css +1296 -0
  30. package/Card/package.json +3 -0
  31. package/Card/tests/Card-specs.js +65 -0
  32. package/Checkbox/Checkbox.d.ts +99 -0
  33. package/Checkbox/Checkbox.js +222 -0
  34. package/Checkbox/Checkbox.module.css +1395 -0
  35. package/Checkbox/package.json +3 -0
  36. package/Checkbox/tests/Checkbox-specs.js +79 -0
  37. package/CheckboxItem/CheckboxItem.d.ts +99 -0
  38. package/CheckboxItem/CheckboxItem.js +210 -0
  39. package/CheckboxItem/CheckboxItem.module.css +50 -0
  40. package/CheckboxItem/package.json +3 -0
  41. package/CheckboxItem/tests/CheckboxItem-specs.js +52 -0
  42. package/Chips/Chip.js +252 -0
  43. package/Chips/Chip.module.css +30 -0
  44. package/Chips/Chips.js +215 -0
  45. package/Chips/Chips.module.css +8 -0
  46. package/Chips/index.js +86 -0
  47. package/Chips/tests/Chip-specs.js +186 -0
  48. package/Chips/tests/Chips-specs.js +312 -0
  49. package/ColorPicker/ColorPicker.js +416 -0
  50. package/ColorPicker/ColorPicker.module.css +78 -0
  51. package/ColorPicker/package.json +3 -0
  52. package/ColorPicker/tests/ColorPicker-specs.js +225 -0
  53. package/ColorPicker/utils.js +135 -0
  54. package/ContextualMenuDecorator/ContextualMenuDecorator.d.ts +106 -0
  55. package/ContextualMenuDecorator/ContextualMenuDecorator.js +264 -0
  56. package/ContextualMenuDecorator/ContextualMenuDecorator.module.css +42 -0
  57. package/ContextualMenuDecorator/package.json +3 -0
  58. package/ContextualMenuDecorator/tests/ContextualMenuDecorator-specs.js +136 -0
  59. package/ContextualPopupDecorator/ContextualPopup.js +200 -0
  60. package/ContextualPopupDecorator/ContextualPopup.module.css +270 -0
  61. package/ContextualPopupDecorator/ContextualPopupDecorator.d.ts +182 -0
  62. package/ContextualPopupDecorator/ContextualPopupDecorator.js +867 -0
  63. package/ContextualPopupDecorator/ContextualPopupDecorator.module.css +3 -0
  64. package/ContextualPopupDecorator/HolePunchScrim.js +69 -0
  65. package/ContextualPopupDecorator/HolePunchScrim.module.css +38 -0
  66. package/ContextualPopupDecorator/package.json +3 -0
  67. package/ContextualPopupDecorator/tests/ContextualPopupDecorator-specs.js +621 -0
  68. package/DatePicker/DatePicker.d.ts +173 -0
  69. package/DatePicker/DatePicker.js +175 -0
  70. package/DatePicker/DatePicker.module.css +5 -0
  71. package/DatePicker/DatePickerBase.js +348 -0
  72. package/DatePicker/package.json +3 -0
  73. package/DatePicker/tests/DatePicker-specs.js +247 -0
  74. package/DayPicker/DayPicker.d.ts +92 -0
  75. package/DayPicker/DayPicker.js +188 -0
  76. package/DayPicker/DayPicker.module.css +35 -0
  77. package/DayPicker/DaySelectorDecorator.js +301 -0
  78. package/DayPicker/package.json +3 -0
  79. package/DayPicker/tests/DayPicker-specs.js +138 -0
  80. package/Dropdown/Dropdown.d.ts +135 -0
  81. package/Dropdown/Dropdown.js +460 -0
  82. package/Dropdown/Dropdown.module.css +160 -0
  83. package/Dropdown/DropdownList.js +360 -0
  84. package/Dropdown/package.json +3 -0
  85. package/Dropdown/tests/Dropdown-specs.js +267 -0
  86. package/FixedPopupPanels/FixedPopupPanels.d.ts +72 -0
  87. package/FixedPopupPanels/FixedPopupPanels.js +170 -0
  88. package/FixedPopupPanels/FixedPopupPanels.module.css +146 -0
  89. package/FixedPopupPanels/package.json +3 -0
  90. package/FixedPopupPanels/tests/FixedPopupPanels-specs.js +142 -0
  91. package/FlexiblePopupPanels/FlexiblePopupPanels.js +177 -0
  92. package/FlexiblePopupPanels/FlexiblePopupPanels.module.css +291 -0
  93. package/FlexiblePopupPanels/Header.js +110 -0
  94. package/FlexiblePopupPanels/Panel.js +256 -0
  95. package/FlexiblePopupPanels/index.d.ts +145 -0
  96. package/FlexiblePopupPanels/index.js +68 -0
  97. package/FlexiblePopupPanels/package.json +3 -0
  98. package/FlexiblePopupPanels/tests/FlexiblePopupPanels-specs.js +305 -0
  99. package/FlexiblePopupPanels/useNavButtonFocus.js +65 -0
  100. package/FormCheckboxItem/FormCheckboxItem.d.ts +87 -0
  101. package/FormCheckboxItem/FormCheckboxItem.js +200 -0
  102. package/FormCheckboxItem/FormCheckboxItem.module.css +374 -0
  103. package/FormCheckboxItem/package.json +3 -0
  104. package/FormCheckboxItem/tests/FormCheckboxItem-specs.js +164 -0
  105. package/Heading/Heading.d.ts +104 -0
  106. package/Heading/Heading.js +203 -0
  107. package/Heading/Heading.module.css +217 -0
  108. package/Heading/package.json +3 -0
  109. package/Heading/tests/Heading-specs.js +57 -0
  110. package/Icon/Icon.d.ts +377 -0
  111. package/Icon/Icon.js +503 -0
  112. package/Icon/Icon.module.css +121 -0
  113. package/Icon/IconList.js +611 -0
  114. package/Icon/package.json +3 -0
  115. package/Icon/tests/Icon-specs.js +131 -0
  116. package/IconItem/IconItem.d.ts +137 -0
  117. package/IconItem/IconItem.js +360 -0
  118. package/IconItem/IconItem.module.css +414 -0
  119. package/IconItem/package.json +3 -0
  120. package/IconItem/tests/IconItem-specs.js +106 -0
  121. package/Image/Image.d.ts +60 -0
  122. package/Image/Image.js +165 -0
  123. package/Image/Image.module.css +5 -0
  124. package/Image/package.json +3 -0
  125. package/Image/tests/Image-specs.js +62 -0
  126. package/ImageItem/ImageItem.d.ts +134 -0
  127. package/ImageItem/ImageItem.js +377 -0
  128. package/ImageItem/ImageItem.module.css +1079 -0
  129. package/ImageItem/package.json +3 -0
  130. package/ImageItem/tests/ImageItem-specs.js +223 -0
  131. package/Input/Input.js +715 -0
  132. package/Input/Input.module.css +699 -0
  133. package/Input/InputField.js +487 -0
  134. package/Input/InputField.module.css +763 -0
  135. package/Input/InputFieldDecoratorIcon.js +66 -0
  136. package/Input/InputFieldSpotlightDecorator.js +380 -0
  137. package/Input/Keypad.js +111 -0
  138. package/Input/NumberField.js +311 -0
  139. package/Input/index.d.ts +423 -0
  140. package/Input/index.js +87 -0
  141. package/Input/package.json +3 -0
  142. package/Input/pointer.js +103 -0
  143. package/Input/tests/Input-specs.js +537 -0
  144. package/Input/tests/InputField-specs.js +292 -0
  145. package/Input/tests/InputPopup-specs.js +56 -0
  146. package/Input/util.js +130 -0
  147. package/Item/Item.d.ts +108 -0
  148. package/Item/Item.js +360 -0
  149. package/Item/Item.module.css +665 -0
  150. package/Item/package.json +3 -0
  151. package/Item/tests/Item-specs.js +108 -0
  152. package/KeyGuide/KeyGuide.d.ts +103 -0
  153. package/KeyGuide/KeyGuide.js +254 -0
  154. package/KeyGuide/KeyGuide.module.css +431 -0
  155. package/KeyGuide/package.json +3 -0
  156. package/KeyGuide/tests/KeyGuide-specs.js +168 -0
  157. package/LICENSE +201 -0
  158. package/Marquee/Marquee.d.ts +42 -0
  159. package/Marquee/Marquee.js +45 -0
  160. package/Marquee/package.json +3 -0
  161. package/MediaOverlay/MediaOverlay.d.ts +134 -0
  162. package/MediaOverlay/MediaOverlay.js +304 -0
  163. package/MediaOverlay/MediaOverlay.module.css +292 -0
  164. package/MediaOverlay/package.json +3 -0
  165. package/MediaOverlay/tests/MediaOverlay-specs.js +127 -0
  166. package/MediaPlayer/MediaControls.js +934 -0
  167. package/MediaPlayer/MediaControls.module.css +86 -0
  168. package/MediaPlayer/MediaKnob.js +61 -0
  169. package/MediaPlayer/MediaSlider.js +131 -0
  170. package/MediaPlayer/MediaSlider.module.css +319 -0
  171. package/MediaPlayer/MediaSliderDecorator.js +245 -0
  172. package/MediaPlayer/Times.js +152 -0
  173. package/MediaPlayer/Times.module.css +34 -0
  174. package/MediaPlayer/index.d.ts +223 -0
  175. package/MediaPlayer/index.js +34 -0
  176. package/MediaPlayer/package.json +3 -0
  177. package/MediaPlayer/tests/MediaSlider-specs.js +126 -0
  178. package/MediaPlayer/tests/util-specs.js +114 -0
  179. package/MediaPlayer/util.js +83 -0
  180. package/PageViews/Page.js +77 -0
  181. package/PageViews/Page.module.css +3 -0
  182. package/PageViews/PageViews.js +440 -0
  183. package/PageViews/PageViews.module.css +175 -0
  184. package/PageViews/PageViewsRouter.js +150 -0
  185. package/PageViews/index.js +45 -0
  186. package/PageViews/tests/PageViews-specs.js +192 -0
  187. package/Panels/Header.js +599 -0
  188. package/Panels/Header.module.css +243 -0
  189. package/Panels/Panel.js +347 -0
  190. package/Panels/Panel.module.css +33 -0
  191. package/Panels/Panels.js +258 -0
  192. package/Panels/Panels.module.css +12 -0
  193. package/Panels/index.d.ts +376 -0
  194. package/Panels/index.js +66 -0
  195. package/Panels/package.json +3 -0
  196. package/Panels/tests/Header-specs.js +146 -0
  197. package/Panels/tests/Panels-specs.js +257 -0
  198. package/Picker/Picker.d.ts +193 -0
  199. package/Picker/Picker.js +389 -0
  200. package/Picker/Picker.module.css +46 -0
  201. package/Picker/package.json +3 -0
  202. package/Picker/tests/Picker-specs.js +91 -0
  203. package/Popup/Popup.d.ts +169 -0
  204. package/Popup/Popup.js +690 -0
  205. package/Popup/Popup.module.css +180 -0
  206. package/Popup/package.json +3 -0
  207. package/Popup/tests/Popup-specs.js +475 -0
  208. package/PopupTabLayout/PopupTabLayout.d.ts +196 -0
  209. package/PopupTabLayout/PopupTabLayout.js +605 -0
  210. package/PopupTabLayout/PopupTabLayout.module.css +226 -0
  211. package/PopupTabLayout/package.json +3 -0
  212. package/PopupTabLayout/tests/PopupTabLayout-specs.js +285 -0
  213. package/ProgressBar/ProgressBar.d.ts +171 -0
  214. package/ProgressBar/ProgressBar.js +223 -0
  215. package/ProgressBar/ProgressBar.module.css +264 -0
  216. package/ProgressBar/ProgressBarTooltip.js +359 -0
  217. package/ProgressBar/ProgressBarTooltip.module.css +86 -0
  218. package/ProgressBar/package.json +3 -0
  219. package/ProgressBar/tests/ProgressBar-specs.js +400 -0
  220. package/ProgressButton/ProgressButton.d.ts +57 -0
  221. package/ProgressButton/ProgressButton.js +143 -0
  222. package/ProgressButton/ProgressButton.module.css +147 -0
  223. package/ProgressButton/package.json +3 -0
  224. package/ProgressButton/tests/ProgressButton-specs.js +71 -0
  225. package/QuickGuidePanels/Panel.js +90 -0
  226. package/QuickGuidePanels/QuickGuidePanels.js +463 -0
  227. package/QuickGuidePanels/QuickGuidePanels.module.css +26 -0
  228. package/QuickGuidePanels/index.js +52 -0
  229. package/QuickGuidePanels/tests/QuickGuidePanels-specs.js +250 -0
  230. package/README.md +59 -0
  231. package/RadioItem/RadioItem.d.ts +59 -0
  232. package/RadioItem/RadioItem.js +146 -0
  233. package/RadioItem/RadioItem.module.css +233 -0
  234. package/RadioItem/package.json +3 -0
  235. package/RadioItem/tests/RadioItem-specs.js +62 -0
  236. package/RangePicker/RangePicker.d.ts +174 -0
  237. package/RangePicker/RangePicker.js +372 -0
  238. package/RangePicker/RangePicker.module.css +55 -0
  239. package/RangePicker/package.json +3 -0
  240. package/RangePicker/tests/RangePicker-specs.js +122 -0
  241. package/Region/Region.d.ts +33 -0
  242. package/Region/Region.js +91 -0
  243. package/Region/package.json +3 -0
  244. package/Region/tests/Region-specs.js +28 -0
  245. package/Scroller/ContentContainerDecorator.js +24 -0
  246. package/Scroller/EditableWrapper.js +1036 -0
  247. package/Scroller/EditableWrapper.module.css +22 -0
  248. package/Scroller/Scroller.d.ts +270 -0
  249. package/Scroller/Scroller.js +470 -0
  250. package/Scroller/Scroller.module.css +41 -0
  251. package/Scroller/package.json +3 -0
  252. package/Scroller/tests/ContentContainerDecorator-specs.js +20 -0
  253. package/Scroller/tests/EditableWrapper-specs.js +133 -0
  254. package/Scroller/tests/Scroller-specs.js +159 -0
  255. package/Scroller/useEvent.js +39 -0
  256. package/Scroller/useThemeScroller.js +410 -0
  257. package/Skinnable/Skinnable.d.ts +27 -0
  258. package/Skinnable/Skinnable.js +65 -0
  259. package/Skinnable/package.json +3 -0
  260. package/Slider/Slider.d.ts +218 -0
  261. package/Slider/Slider.js +441 -0
  262. package/Slider/Slider.module.css +880 -0
  263. package/Slider/SliderBehaviorDecorator.js +184 -0
  264. package/Slider/package.json +3 -0
  265. package/Slider/tests/Slider-specs.js +573 -0
  266. package/Slider/utils.js +114 -0
  267. package/Spinner/Spinner.d.ts +64 -0
  268. package/Spinner/Spinner.js +254 -0
  269. package/Spinner/Spinner.module.css +368 -0
  270. package/Spinner/package.json +3 -0
  271. package/Spinner/tests/Spinner-specs.js +70 -0
  272. package/Sprite/Sprite.d.ts +100 -0
  273. package/Sprite/Sprite.js +345 -0
  274. package/Sprite/Sprite.module.css +32 -0
  275. package/Sprite/package.json +3 -0
  276. package/Sprite/tests/Sprite-specs.js +59 -0
  277. package/Steps/Steps.d.ts +119 -0
  278. package/Steps/Steps.js +303 -0
  279. package/Steps/Steps.module.css +130 -0
  280. package/Steps/package.json +3 -0
  281. package/Steps/tests/Steps-specs.js +175 -0
  282. package/Switch/Switch.d.ts +54 -0
  283. package/Switch/Switch.js +143 -0
  284. package/Switch/Switch.module.css +714 -0
  285. package/Switch/package.json +3 -0
  286. package/Switch/tests/Switch-specs.js +54 -0
  287. package/SwitchItem/SwitchItem.d.ts +56 -0
  288. package/SwitchItem/SwitchItem.js +144 -0
  289. package/SwitchItem/SwitchItem.module.css +31 -0
  290. package/SwitchItem/package.json +3 -0
  291. package/SwitchItem/tests/SwitchItem-specs.js +49 -0
  292. package/TabLayout/RefocusDecorator.js +142 -0
  293. package/TabLayout/Tab.js +84 -0
  294. package/TabLayout/TabGroup.js +377 -0
  295. package/TabLayout/TabGroup.module.css +280 -0
  296. package/TabLayout/TabLayout.d.ts +161 -0
  297. package/TabLayout/TabLayout.js +661 -0
  298. package/TabLayout/TabLayout.module.css +101 -0
  299. package/TabLayout/package.json +3 -0
  300. package/TabLayout/tests/TabGroup-specs.js +214 -0
  301. package/TabLayout/tests/TabLayout-specs.js +740 -0
  302. package/ThemeDecorator/AccessibilityDecorator.js +151 -0
  303. package/ThemeDecorator/I18nFontDecorator.js +33 -0
  304. package/ThemeDecorator/ThemeDecorator.d.ts +143 -0
  305. package/ThemeDecorator/ThemeDecorator.js +307 -0
  306. package/ThemeDecorator/ThemeDecorator.module.css +1250 -0
  307. package/ThemeDecorator/fontGenerator.js +76 -0
  308. package/ThemeDecorator/package.json +3 -0
  309. package/ThemeDecorator/screenTypes.json +10 -0
  310. package/ThemeDecorator/tests/ThemeDecorator-specs.js +151 -0
  311. package/TimePicker/TimePicker.d.ts +147 -0
  312. package/TimePicker/TimePicker.js +255 -0
  313. package/TimePicker/TimePicker.module.css +61 -0
  314. package/TimePicker/TimePickerBase.js +396 -0
  315. package/TimePicker/package.json +3 -0
  316. package/TimePicker/tests/TimePicker-specs.js +248 -0
  317. package/TooltipDecorator/Tooltip.js +252 -0
  318. package/TooltipDecorator/Tooltip.module.css +496 -0
  319. package/TooltipDecorator/TooltipDecorator.d.ts +229 -0
  320. package/TooltipDecorator/TooltipDecorator.js +260 -0
  321. package/TooltipDecorator/TooltipLabel.js +117 -0
  322. package/TooltipDecorator/package.json +3 -0
  323. package/TooltipDecorator/tests/TooltipDecorator-specs.js +224 -0
  324. package/TooltipDecorator/tests/useTooltip-specs.js +266 -0
  325. package/TooltipDecorator/useTooltip.js +278 -0
  326. package/TooltipDecorator/util.js +273 -0
  327. package/VideoPlayer/Feedback.js +110 -0
  328. package/VideoPlayer/Feedback.module.css +55 -0
  329. package/VideoPlayer/FeedbackContent.js +99 -0
  330. package/VideoPlayer/FeedbackIcon.js +67 -0
  331. package/VideoPlayer/FeedbackIcons.js +76 -0
  332. package/VideoPlayer/FeedbackTooltip.js +242 -0
  333. package/VideoPlayer/FeedbackTooltip.module.css +160 -0
  334. package/VideoPlayer/MediaTitle.js +143 -0
  335. package/VideoPlayer/MediaTitle.module.css +95 -0
  336. package/VideoPlayer/Overlay.js +51 -0
  337. package/VideoPlayer/Video.js +345 -0
  338. package/VideoPlayer/VideoPlayer.d.ts +582 -0
  339. package/VideoPlayer/VideoPlayer.js +2116 -0
  340. package/VideoPlayer/VideoPlayer.module.css +164 -0
  341. package/VideoPlayer/package.json +3 -0
  342. package/VideoPlayer/tests/Video-specs.js +235 -0
  343. package/VideoPlayer/tests/VideoPlayer-specs.js +180 -0
  344. package/VirtualList/VirtualList.d.ts +411 -0
  345. package/VirtualList/VirtualList.js +931 -0
  346. package/VirtualList/VirtualList.module.css +52 -0
  347. package/VirtualList/package.json +3 -0
  348. package/VirtualList/tests/VirtualGridList-specs.js +289 -0
  349. package/VirtualList/tests/VirtualGridList-translate-specs.js +711 -0
  350. package/VirtualList/tests/VirtualList-specs.js +288 -0
  351. package/VirtualList/tests/VirtualList-translate-specs.js +704 -0
  352. package/VirtualList/tests/useEvent-specs.js +172 -0
  353. package/VirtualList/tests/useEvent-translate-specs.js +309 -0
  354. package/VirtualList/useEvent.js +324 -0
  355. package/VirtualList/usePreventScroll.js +31 -0
  356. package/VirtualList/useSpotlight.js +157 -0
  357. package/VirtualList/useThemeVirtualList.js +471 -0
  358. package/VirtualList/useThemeVirtualList.module.css +34 -0
  359. package/WizardPanels/Panel.js +99 -0
  360. package/WizardPanels/WizardPanels.js +501 -0
  361. package/WizardPanels/WizardPanels.module.css +15 -0
  362. package/WizardPanels/index.d.ts +182 -0
  363. package/WizardPanels/index.js +50 -0
  364. package/WizardPanels/package.json +3 -0
  365. package/WizardPanels/tests/WizardPanels-specs.js +713 -0
  366. package/codecov.yml +13 -0
  367. package/fonts/Limestone_Icons.ttf +0 -0
  368. package/fonts/Miso/LICENSE.txt +75 -0
  369. package/fonts/Miso/Miso-Bold.ttf +0 -0
  370. package/fonts/Miso/Miso-Light.ttf +0 -0
  371. package/fonts/Miso/Miso-Regular.ttf +0 -0
  372. package/fonts/MuseoSans/LICENSE.txt +75 -0
  373. package/fonts/MuseoSans/MuseoSans-Black.ttf +0 -0
  374. package/fonts/MuseoSans/MuseoSans-BlackItalic.ttf +0 -0
  375. package/fonts/MuseoSans/MuseoSans-Bold.ttf +0 -0
  376. package/fonts/MuseoSans/MuseoSans-BoldItalic.ttf +0 -0
  377. package/fonts/MuseoSans/MuseoSans-Light.ttf +0 -0
  378. package/fonts/MuseoSans/MuseoSans-Medium.ttf +0 -0
  379. package/fonts/MuseoSans/MuseoSans-MediumItalic.ttf +0 -0
  380. package/fonts/MuseoSans/MuseoSans-Thin.ttf +0 -0
  381. package/index.js +2 -0
  382. package/internal/$L/$L.d.ts +21 -0
  383. package/internal/$L/$L.js +97 -0
  384. package/internal/$L/package.json +3 -0
  385. package/internal/AsyncRenderChildren/AsyncRenderChildren.js +74 -0
  386. package/internal/AsyncRenderChildren/package.json +3 -0
  387. package/internal/AsyncRenderChildren/tests/AsyncRenderChildren-specs.js +49 -0
  388. package/internal/DateComponentPicker/DateComponentPicker.js +165 -0
  389. package/internal/DateComponentPicker/DateComponentPicker.module.css +53 -0
  390. package/internal/DateComponentPicker/DateComponentRangePicker.js +132 -0
  391. package/internal/DateComponentPicker/index.js +31 -0
  392. package/internal/DateComponentPicker/package.json +3 -0
  393. package/internal/DateTime/DateTime.js +83 -0
  394. package/internal/DateTime/DateTime.module.css +51 -0
  395. package/internal/DateTime/DateTimeDecorator.js +268 -0
  396. package/internal/DateTime/index.js +37 -0
  397. package/internal/DateTime/package.json +3 -0
  398. package/internal/DateTime/tests/DateTimeDecorator-specs.js +33 -0
  399. package/internal/DebounceDecorator/DebounceDecorator.js +125 -0
  400. package/internal/DebounceDecorator/package.json +3 -0
  401. package/internal/DebounceDecorator/tests/DebounceDecorator-specs.js +151 -0
  402. package/internal/Panels/Arrangers.js +248 -0
  403. package/internal/Panels/CancelDecorator.js +43 -0
  404. package/internal/Panels/FloatingLayerIdProvider.js +27 -0
  405. package/internal/Panels/NavigationButton.js +64 -0
  406. package/internal/Panels/NavigationButton.module.css +69 -0
  407. package/internal/Panels/PanelsRouter.js +223 -0
  408. package/internal/Panels/PopupDecorator.js +287 -0
  409. package/internal/Panels/TransitionDecorator.js +99 -0
  410. package/internal/Panels/Viewport.js +313 -0
  411. package/internal/Panels/Viewport.module.css +25 -0
  412. package/internal/Panels/captureKeys.js +48 -0
  413. package/internal/Panels/index.js +101 -0
  414. package/internal/Panels/package.json +3 -0
  415. package/internal/Panels/useAutoFocus.js +95 -0
  416. package/internal/Panels/useFocusOnTransition.js +45 -0
  417. package/internal/Panels/useToggleRole.js +30 -0
  418. package/internal/Panels/util.js +64 -0
  419. package/internal/Picker/Picker.js +942 -0
  420. package/internal/Picker/Picker.module.css +1145 -0
  421. package/internal/Picker/PickerButton.js +97 -0
  422. package/internal/Picker/PickerItem.js +38 -0
  423. package/internal/Picker/SpottablePicker.js +63 -0
  424. package/internal/Picker/package.json +3 -0
  425. package/internal/Picker/tests/Picker-specs.js +968 -0
  426. package/internal/SharedStateDecorator/SharedStateDecorator.js +167 -0
  427. package/internal/SharedStateDecorator/package.json +3 -0
  428. package/internal/SharedStateDecorator/tests/SharedStateDecorator-specs.js +277 -0
  429. package/internal/WindowEventable/WindowEventable.js +114 -0
  430. package/internal/WindowEventable/package.json +3 -0
  431. package/internal/util/package.json +3 -0
  432. package/internal/util/util.js +79 -0
  433. package/internal/validators/package.json +4 -0
  434. package/internal/validators/tests/validators-specs.js +80 -0
  435. package/internal/validators/validators.js +136 -0
  436. package/package.json +69 -0
  437. package/resources/ilibmanifest.json +3 -0
  438. package/styles/color-mixins.less +230 -0
  439. package/styles/colors-game-green.less +25 -0
  440. package/styles/colors-game-orange.less +25 -0
  441. package/styles/colors-game.less +56 -0
  442. package/styles/colors-highcontrast.less +21 -0
  443. package/styles/colors.less +435 -0
  444. package/styles/mixins.less +337 -0
  445. package/styles/skin.less +54 -0
  446. package/styles/variables-base.less +32 -0
  447. package/styles/variables-game.less +25 -0
  448. package/styles/variables.less +1182 -0
  449. package/useScroll/HoverToScroll.js +265 -0
  450. package/useScroll/HoverToScroll.module.css +38 -0
  451. package/useScroll/OverscrollEffect.module.css +14 -0
  452. package/useScroll/Scrollbar.js +171 -0
  453. package/useScroll/Scrollbar.module.css +19 -0
  454. package/useScroll/ScrollbarPlaceholder.js +64 -0
  455. package/useScroll/ScrollbarTrack.js +209 -0
  456. package/useScroll/ScrollbarTrack.module.css +136 -0
  457. package/useScroll/package.json +3 -0
  458. package/useScroll/useEvent.js +693 -0
  459. package/useScroll/useOverscrollEffect.js +105 -0
  460. package/useScroll/useScroll.js +523 -0
  461. package/useScroll/useScroll.module.css +49 -0
  462. package/useScroll/useSpotlight.js +32 -0
  463. package/useScroll/useThemeScrollContentHandle.js +32 -0
@@ -0,0 +1,621 @@
1
+ "use strict";
2
+
3
+ var _pointer = require("@enact/spotlight/src/pointer");
4
+ var _FloatingLayer = require("@enact/ui/FloatingLayer");
5
+ require("@testing-library/jest-dom");
6
+ var _react = require("@testing-library/react");
7
+ var _userEvent = _interopRequireDefault(require("@testing-library/user-event"));
8
+ var _Button = _interopRequireDefault(require("../../Button"));
9
+ var _ContextualPopupDecorator = require("../ContextualPopupDecorator");
10
+ var _jsxRuntime = require("react/jsx-runtime");
11
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
12
+ function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }
13
+ function _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; }
14
+ var ContextualButton = (0, _ContextualPopupDecorator.ContextualPopupDecorator)(_Button["default"]);
15
+ var keyDown = function keyDown(keyCode) {
16
+ return function (picker) {
17
+ return _react.fireEvent.keyDown(picker, {
18
+ keyCode: keyCode
19
+ });
20
+ };
21
+ };
22
+ var leftKeyDown = keyDown(37);
23
+ describe('ContextualPopupDecorator Specs', function () {
24
+ beforeEach(function () {
25
+ global.Element.prototype.getBoundingClientRect = jest.fn(function () {
26
+ return {
27
+ width: 1800,
28
+ height: 1000,
29
+ top: 500,
30
+ left: 500,
31
+ bottom: 0,
32
+ right: 0
33
+ };
34
+ });
35
+ });
36
+ test('should emit onOpen event with type when opening', function () {
37
+ var handleOpen = jest.fn();
38
+ var Root = (0, _FloatingLayer.FloatingLayerDecorator)('div');
39
+ var message = 'goodbye';
40
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(Root, {
41
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(ContextualButton, {
42
+ onOpen: handleOpen,
43
+ open: true,
44
+ popupComponent: function popupComponent() {
45
+ return message;
46
+ },
47
+ children: "Hello"
48
+ })
49
+ }));
50
+ var expected = 1;
51
+ var expectedType = {
52
+ type: 'onOpen'
53
+ };
54
+ var actual = handleOpen.mock.calls.length && handleOpen.mock.calls[0][0];
55
+ expect(handleOpen).toHaveBeenCalledTimes(expected);
56
+ expect(actual).toMatchObject(expectedType);
57
+ });
58
+ test('should emit onClose event with type when clicking on contextual button', /*#__PURE__*/_asyncToGenerator(function* () {
59
+ var handleClose = jest.fn();
60
+ var Root = (0, _FloatingLayer.FloatingLayerDecorator)('div');
61
+ var message = 'goodbye';
62
+ var user = _userEvent["default"].setup();
63
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(Root, {
64
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(ContextualButton, {
65
+ onClose: handleClose,
66
+ open: true,
67
+ popupComponent: function popupComponent() {
68
+ return message;
69
+ },
70
+ children: "Hello"
71
+ })
72
+ }));
73
+ var contextualButton = _react.screen.getByRole('button');
74
+ yield user.click(contextualButton);
75
+ var expected = 1;
76
+ var expectedType = {
77
+ type: 'onClose'
78
+ };
79
+ var actual = handleClose.mock.calls.length && handleClose.mock.calls[0][0];
80
+ expect(handleClose).toHaveBeenCalledTimes(expected);
81
+ expect(actual).toMatchObject(expectedType);
82
+ }));
83
+ test('should render component into FloatingLayer if open', function () {
84
+ var Root = (0, _FloatingLayer.FloatingLayerDecorator)('div');
85
+ var message = 'goodbye';
86
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(Root, {
87
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(ContextualButton, {
88
+ open: true,
89
+ popupComponent: function popupComponent() {
90
+ return message;
91
+ },
92
+ children: "Hello"
93
+ })
94
+ }));
95
+ var contextualPopup = _react.screen.getByRole('alert');
96
+ var expected = message;
97
+ var actual = contextualPopup.children.item(0);
98
+ expect(actual).toHaveTextContent(expected);
99
+ });
100
+ test('should not render into FloatingLayer if not open', function () {
101
+ var Root = (0, _FloatingLayer.FloatingLayerDecorator)('div');
102
+ var message = 'goodbye';
103
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(Root, {
104
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(ContextualButton, {
105
+ popupComponent: function popupComponent() {
106
+ return message;
107
+ },
108
+ children: "Hello"
109
+ })
110
+ }));
111
+ var popup = _react.screen.queryByText(message);
112
+ expect(popup).toBeNull();
113
+ });
114
+ test('should not close popup when clicking outside if noAutoDismiss is true', /*#__PURE__*/_asyncToGenerator(function* () {
115
+ var handleClose = jest.fn();
116
+ var Root = (0, _FloatingLayer.FloatingLayerDecorator)('div');
117
+ var message = 'goodbye';
118
+ var user = _userEvent["default"].setup();
119
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(Root, {
120
+ "data-testid": "outsideArea",
121
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(ContextualButton, {
122
+ noAutoDismiss: true,
123
+ onClose: handleClose,
124
+ open: true,
125
+ popupComponent: function popupComponent() {
126
+ return message;
127
+ },
128
+ children: "Hello"
129
+ })
130
+ }));
131
+ var outsideArea = _react.screen.getByTestId('outsideArea');
132
+ yield user.click(outsideArea);
133
+ expect(handleClose).not.toHaveBeenCalled();
134
+ }));
135
+ test('should have \'below\' className when direction is set to \'below\'', function () {
136
+ var handleClose = jest.fn();
137
+ var Root = (0, _FloatingLayer.FloatingLayerDecorator)('div');
138
+ var message = 'goodbye';
139
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(Root, {
140
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(ContextualButton, {
141
+ direction: "below",
142
+ onClose: handleClose,
143
+ open: true,
144
+ popupComponent: function popupComponent() {
145
+ return message;
146
+ },
147
+ children: "Hello"
148
+ })
149
+ }));
150
+ var contextualPopup = _react.screen.getByRole('alert');
151
+ var expected = 'below';
152
+ var actual = contextualPopup.children.item(0);
153
+ expect(actual).toHaveClass(expected);
154
+ });
155
+ test('should have \'below center\' className when direction is set to \'below center\'', function () {
156
+ var handleClose = jest.fn();
157
+ var Root = (0, _FloatingLayer.FloatingLayerDecorator)('div');
158
+ var message = 'goodbye';
159
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(Root, {
160
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(ContextualButton, {
161
+ direction: "below center",
162
+ onClose: handleClose,
163
+ open: true,
164
+ popupComponent: function popupComponent() {
165
+ return message;
166
+ },
167
+ children: "Hello"
168
+ })
169
+ }));
170
+ var contextualPopup = _react.screen.getByRole('alert');
171
+ var expected = 'below center';
172
+ var actual = contextualPopup.children.item(0);
173
+ expect(actual).toHaveClass(expected);
174
+ });
175
+ test('should have \'below left\' className when direction is set to \'below left\'', function () {
176
+ var handleClose = jest.fn();
177
+ var Root = (0, _FloatingLayer.FloatingLayerDecorator)('div');
178
+ var message = 'goodbye';
179
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(Root, {
180
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(ContextualButton, {
181
+ direction: "below left",
182
+ onClose: handleClose,
183
+ open: true,
184
+ popupComponent: function popupComponent() {
185
+ return message;
186
+ },
187
+ children: "Hello"
188
+ })
189
+ }));
190
+ var contextualPopup = _react.screen.getByRole('alert');
191
+ var expected = 'below left';
192
+ var actual = contextualPopup.children.item(0);
193
+ expect(actual).toHaveClass(expected);
194
+ });
195
+ test('should have \'below right\' className when direction is set to \'below right\'', function () {
196
+ var handleClose = jest.fn();
197
+ var Root = (0, _FloatingLayer.FloatingLayerDecorator)('div');
198
+ var message = 'goodbye';
199
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(Root, {
200
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(ContextualButton, {
201
+ direction: "below right",
202
+ onClose: handleClose,
203
+ open: true,
204
+ popupComponent: function popupComponent() {
205
+ return message;
206
+ },
207
+ children: "Hello"
208
+ })
209
+ }));
210
+ var contextualPopup = _react.screen.getByRole('alert');
211
+ var expected = 'below right';
212
+ var actual = contextualPopup.children.item(0);
213
+ expect(actual).toHaveClass(expected);
214
+ });
215
+ test('should have \'right bottom\' className when direction is set to \'right bottom\'', function () {
216
+ var handleClose = jest.fn();
217
+ var Root = (0, _FloatingLayer.FloatingLayerDecorator)('div');
218
+ var message = 'goodbye';
219
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(Root, {
220
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(ContextualButton, {
221
+ direction: "right bottom",
222
+ onClose: handleClose,
223
+ open: true,
224
+ popupComponent: function popupComponent() {
225
+ return message;
226
+ },
227
+ children: "Hello"
228
+ })
229
+ }));
230
+ var contextualPopup = _react.screen.getByRole('alert');
231
+ var expected = 'right bottom';
232
+ var actual = contextualPopup.children.item(0);
233
+ expect(actual).toHaveClass(expected);
234
+ });
235
+ test('should have \'right middle\' className when direction is set to \'right middle\'', function () {
236
+ var handleClose = jest.fn();
237
+ var Root = (0, _FloatingLayer.FloatingLayerDecorator)('div');
238
+ var message = 'goodbye';
239
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(Root, {
240
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(ContextualButton, {
241
+ direction: "right middle",
242
+ onClose: handleClose,
243
+ open: true,
244
+ popupComponent: function popupComponent() {
245
+ return message;
246
+ },
247
+ children: "Hello"
248
+ })
249
+ }));
250
+ var contextualPopup = _react.screen.getByRole('alert');
251
+ var expected = 'right middle';
252
+ var actual = contextualPopup.children.item(0);
253
+ expect(actual).toHaveClass(expected);
254
+ });
255
+ test('should have \'right top\' className when direction is set to \'right top\'', function () {
256
+ var handleClose = jest.fn();
257
+ var Root = (0, _FloatingLayer.FloatingLayerDecorator)('div');
258
+ var message = 'goodbye';
259
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(Root, {
260
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(ContextualButton, {
261
+ direction: "right top",
262
+ onClose: handleClose,
263
+ open: true,
264
+ popupComponent: function popupComponent() {
265
+ return message;
266
+ },
267
+ children: "Hello"
268
+ })
269
+ }));
270
+ var contextualPopup = _react.screen.getByRole('alert');
271
+ var expected = 'right top';
272
+ var actual = contextualPopup.children.item(0);
273
+ expect(actual).toHaveClass(expected);
274
+ });
275
+ test('should have \'above\' className when direction is set to \'above\'', function () {
276
+ var handleClose = jest.fn();
277
+ var Root = (0, _FloatingLayer.FloatingLayerDecorator)('div');
278
+ var message = 'goodbye';
279
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(Root, {
280
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(ContextualButton, {
281
+ direction: "above",
282
+ onClose: handleClose,
283
+ open: true,
284
+ popupComponent: function popupComponent() {
285
+ return message;
286
+ },
287
+ children: "Hello"
288
+ })
289
+ }));
290
+ var contextualPopup = _react.screen.getByRole('alert');
291
+ var expected = 'above';
292
+ var actual = contextualPopup.children.item(0);
293
+ expect(actual).toHaveClass(expected);
294
+ });
295
+ test('should have \'above center\' className when direction is set to \'above center\'', function () {
296
+ var handleClose = jest.fn();
297
+ var Root = (0, _FloatingLayer.FloatingLayerDecorator)('div');
298
+ var message = 'goodbye';
299
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(Root, {
300
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(ContextualButton, {
301
+ direction: "above center",
302
+ onClose: handleClose,
303
+ open: true,
304
+ popupComponent: function popupComponent() {
305
+ return message;
306
+ },
307
+ children: "Hello"
308
+ })
309
+ }));
310
+ var contextualPopup = _react.screen.getByRole('alert');
311
+ var expected = 'above center';
312
+ var actual = contextualPopup.children.item(0);
313
+ expect(actual).toHaveClass(expected);
314
+ });
315
+ test('should have \'above left\' className when direction is set to \'above left\'', function () {
316
+ var handleClose = jest.fn();
317
+ var Root = (0, _FloatingLayer.FloatingLayerDecorator)('div');
318
+ var message = 'goodbye';
319
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(Root, {
320
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(ContextualButton, {
321
+ direction: "above left",
322
+ onClose: handleClose,
323
+ open: true,
324
+ popupComponent: function popupComponent() {
325
+ return message;
326
+ },
327
+ children: "Hello"
328
+ })
329
+ }));
330
+ var contextualPopup = _react.screen.getByRole('alert');
331
+ var expected = 'above left';
332
+ var actual = contextualPopup.children.item(0);
333
+ expect(actual).toHaveClass(expected);
334
+ });
335
+ test('should have \'above right\' className when direction is set to \'above right\'', function () {
336
+ var handleClose = jest.fn();
337
+ var Root = (0, _FloatingLayer.FloatingLayerDecorator)('div');
338
+ var message = 'goodbye';
339
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(Root, {
340
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(ContextualButton, {
341
+ direction: "above right",
342
+ onClose: handleClose,
343
+ open: true,
344
+ popupComponent: function popupComponent() {
345
+ return message;
346
+ },
347
+ children: "Hello"
348
+ })
349
+ }));
350
+ var contextualPopup = _react.screen.getByRole('alert');
351
+ var expected = 'above right';
352
+ var actual = contextualPopup.children.item(0);
353
+ expect(actual).toHaveClass(expected);
354
+ });
355
+ test('should have \'left bottom\' className when direction is set to \'left bottom\'', function () {
356
+ var handleClose = jest.fn();
357
+ var Root = (0, _FloatingLayer.FloatingLayerDecorator)('div');
358
+ var message = 'goodbye';
359
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(Root, {
360
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(ContextualButton, {
361
+ direction: "left bottom",
362
+ onClose: handleClose,
363
+ open: true,
364
+ popupComponent: function popupComponent() {
365
+ return message;
366
+ },
367
+ children: "Hello"
368
+ })
369
+ }));
370
+ var contextualPopup = _react.screen.getByRole('alert');
371
+ var expected = 'left bottom';
372
+ var actual = contextualPopup.children.item(0);
373
+ expect(actual).toHaveClass(expected);
374
+ });
375
+ test('should have \'left middle\' className when direction is set to \'left middle\'', function () {
376
+ var handleClose = jest.fn();
377
+ var Root = (0, _FloatingLayer.FloatingLayerDecorator)('div');
378
+ var message = 'goodbye';
379
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(Root, {
380
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(ContextualButton, {
381
+ direction: "left middle",
382
+ onClose: handleClose,
383
+ open: true,
384
+ popupComponent: function popupComponent() {
385
+ return message;
386
+ },
387
+ children: "Hello"
388
+ })
389
+ }));
390
+ var contextualPopup = _react.screen.getByRole('alert');
391
+ var expected = 'left middle';
392
+ var actual = contextualPopup.children.item(0);
393
+ expect(actual).toHaveClass(expected);
394
+ });
395
+ test('should have \'left top\' className when direction is set to \'left top\'', function () {
396
+ var handleClose = jest.fn();
397
+ var Root = (0, _FloatingLayer.FloatingLayerDecorator)('div');
398
+ var message = 'goodbye';
399
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(Root, {
400
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(ContextualButton, {
401
+ direction: "left top",
402
+ onClose: handleClose,
403
+ open: true,
404
+ popupComponent: function popupComponent() {
405
+ return message;
406
+ },
407
+ children: "Hello"
408
+ })
409
+ }));
410
+ var contextualPopup = _react.screen.getByRole('alert');
411
+ var expected = 'left top';
412
+ var actual = contextualPopup.children.item(0);
413
+ expect(actual).toHaveClass(expected);
414
+ });
415
+ test('should set pointerMode to be false when directional key is pressed', function () {
416
+ var Root = (0, _FloatingLayer.FloatingLayerDecorator)('div');
417
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(Root, {
418
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(ContextualButton, {
419
+ open: true,
420
+ popupComponent: function popupComponent() {
421
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
422
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Button["default"], {
423
+ children: "first"
424
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Button["default"], {
425
+ children: "second"
426
+ })]
427
+ });
428
+ },
429
+ children: "Hello"
430
+ })
431
+ }));
432
+ var contextualButton = _react.screen.getByRole('alert');
433
+ leftKeyDown(contextualButton);
434
+ var expected = false;
435
+ var pointerMode = (0, _pointer.getPointerMode)();
436
+ expect(pointerMode).toBe(expected);
437
+ });
438
+ test('should close popup if prop \'open\' is omitted on rerender', function () {
439
+ var Root = (0, _FloatingLayer.FloatingLayerDecorator)('div');
440
+ var _render = (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(Root, {
441
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(ContextualButton, {
442
+ open: true,
443
+ popupComponent: function popupComponent() {
444
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
445
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Button["default"], {
446
+ children: "first"
447
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Button["default"], {
448
+ children: "second"
449
+ })]
450
+ });
451
+ },
452
+ children: "Hello"
453
+ })
454
+ })),
455
+ rerender = _render.rerender;
456
+ var firstRender = _react.screen.getAllByRole('button').length;
457
+ var expectedFirst = 3;
458
+ rerender(/*#__PURE__*/(0, _jsxRuntime.jsx)(Root, {
459
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(ContextualButton, {
460
+ popupComponent: function popupComponent() {
461
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
462
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Button["default"], {
463
+ children: "first"
464
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Button["default"], {
465
+ children: "second"
466
+ })]
467
+ });
468
+ },
469
+ children: "Hello"
470
+ })
471
+ }));
472
+ var secondRender = _react.screen.getAllByRole('button').length;
473
+ var expectedSecond = 1;
474
+ expect(firstRender).toBe(expectedFirst);
475
+ expect(secondRender).toBe(expectedSecond);
476
+ });
477
+ test('should open popup if prop \'open\' is added on rerender', function () {
478
+ var Root = (0, _FloatingLayer.FloatingLayerDecorator)('div');
479
+ var _render2 = (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(Root, {
480
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(ContextualButton, {
481
+ popupComponent: function popupComponent() {
482
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
483
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Button["default"], {
484
+ children: "first"
485
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Button["default"], {
486
+ children: "second"
487
+ })]
488
+ });
489
+ },
490
+ children: "Hello"
491
+ })
492
+ })),
493
+ rerender = _render2.rerender;
494
+ var firstRender = _react.screen.getAllByRole('button').length;
495
+ var expectedFirst = 1;
496
+ rerender(/*#__PURE__*/(0, _jsxRuntime.jsx)(Root, {
497
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(ContextualButton, {
498
+ open: true,
499
+ popupComponent: function popupComponent() {
500
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
501
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Button["default"], {
502
+ children: "first"
503
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Button["default"], {
504
+ children: "second"
505
+ })]
506
+ });
507
+ },
508
+ children: "Hello"
509
+ })
510
+ }));
511
+ var secondRender = _react.screen.getAllByRole('button').length;
512
+ var expectedSecond = 3;
513
+ expect(firstRender).toBe(expectedFirst);
514
+ expect(secondRender).toBe(expectedSecond);
515
+ });
516
+ test('should capture \'onKeyDown\' event from outside of popup', function () {
517
+ var handleOnKeyDown = jest.fn();
518
+ var Root = (0, _FloatingLayer.FloatingLayerDecorator)('div');
519
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(Root, {
520
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(ContextualButton, {
521
+ onKeyDown: handleOnKeyDown,
522
+ open: true,
523
+ popupComponent: function popupComponent() {
524
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
525
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Button["default"], {
526
+ children: "first"
527
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Button["default"], {
528
+ children: "second"
529
+ })]
530
+ });
531
+ },
532
+ children: "Hello"
533
+ })
534
+ }));
535
+ var button = _react.screen.getAllByRole('button')[0];
536
+ leftKeyDown(button);
537
+ expect(handleOnKeyDown).toHaveBeenCalled();
538
+ });
539
+ test('should render floatingLayer according to prop \'scrimType\'', function () {
540
+ var Root = (0, _FloatingLayer.FloatingLayerDecorator)('div');
541
+ var _render3 = (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(Root, {
542
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(ContextualButton, {
543
+ scrimType: "holepunch",
544
+ open: true,
545
+ popupComponent: function popupComponent() {
546
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
547
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Button["default"], {
548
+ children: "Button"
549
+ })
550
+ });
551
+ },
552
+ children: "Hello"
553
+ })
554
+ })),
555
+ rerender = _render3.rerender;
556
+ var scrimDivFirst = _react.screen.getByRole('alert').previousElementSibling;
557
+ var expectedFirst = 'holePunchScrim';
558
+ rerender(/*#__PURE__*/(0, _jsxRuntime.jsx)(Root, {
559
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(ContextualButton, {
560
+ scrimType: "transparent",
561
+ open: true,
562
+ popupComponent: function popupComponent() {
563
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
564
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Button["default"], {
565
+ children: "Button"
566
+ })
567
+ });
568
+ },
569
+ children: "Hello"
570
+ })
571
+ }));
572
+ var scrimDivSecond = _react.screen.getByRole('alert').parentElement.previousElementSibling;
573
+ var expectedSecond = 'transparent';
574
+ expect(scrimDivFirst).toHaveClass(expectedFirst);
575
+ expect(scrimDivSecond).toHaveClass(expectedSecond);
576
+ });
577
+ test('should create and observe with `ResizeObserver` when the popup opened and disconnect when the popup closed', function () {
578
+ var originalObserver = global.ResizeObserver;
579
+ var MockObserverInstance = {
580
+ observe: jest.fn(),
581
+ disconnect: jest.fn()
582
+ };
583
+ global.ResizeObserver = jest.fn().mockImplementation(function () {
584
+ return MockObserverInstance;
585
+ });
586
+ var Root = (0, _FloatingLayer.FloatingLayerDecorator)('div');
587
+ var _render4 = (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(Root, {
588
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(ContextualButton, {
589
+ "data-testid": "contextualButton",
590
+ open: true,
591
+ popupComponent: function popupComponent() {
592
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
593
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Button["default"], {
594
+ children: "Button"
595
+ })
596
+ });
597
+ },
598
+ children: "Hello"
599
+ })
600
+ })),
601
+ rerender = _render4.rerender;
602
+ var contextualButton = _react.screen.getByTestId('contextualButton');
603
+ expect(contextualButton).toBeInTheDocument();
604
+ expect(MockObserverInstance.observe).toHaveBeenCalled();
605
+ rerender(/*#__PURE__*/(0, _jsxRuntime.jsx)(Root, {
606
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(ContextualButton, {
607
+ "data-testid": "contextualButton",
608
+ popupComponent: function popupComponent() {
609
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
610
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Button["default"], {
611
+ children: "Button"
612
+ })
613
+ });
614
+ },
615
+ children: "Hello"
616
+ })
617
+ }));
618
+ expect(MockObserverInstance.disconnect).toHaveBeenCalled();
619
+ global.ResizeObserver = originalObserver;
620
+ });
621
+ });