@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,226 @@
1
+ .popupTabLayout.popup,
2
+ .popupTabLayout.optimized {
3
+ margin: 1.25rem auto 2.75rem 1.25rem;
4
+ max-height: calc(100vh - 4rem );
5
+ }
6
+ .popupTabLayout .tabLayout .tabs {
7
+ bottom: auto;
8
+ }
9
+ .popupTabLayout .tabLayout.collapsed {
10
+ /* Override TabLayout */
11
+ }
12
+ .popupTabLayout .tabLayout .tabGroup .tab.vertical.button.selected .bg {
13
+ /* Override TabLayout */
14
+ }
15
+ :global(.spotlight-input-key) .popupTabLayout .tabLayout .tabGroup .tab.vertical.button:global(.spottable):focus .bg,
16
+ :global(.spotlight-input-mouse) .popupTabLayout .tabLayout .tabGroup .tab.vertical.button:global(.spottable):focus .bg {
17
+ /* Override TabLayout */
18
+ }
19
+ :global(.spotlight-input-touch) .popupTabLayout .tabLayout .tabGroup .tab.vertical.button:global(.spottable):active .bg {
20
+ /* Override TabLayout */
21
+ }
22
+ .popupTabLayout .tabLayout .tabGroup .tab.vertical.collapsed.button.selected .bg {
23
+ /* Override TabLayout */
24
+ }
25
+ .popupTabLayout .tabs {
26
+ margin-right: var(--primitive-spacing-36);
27
+ }
28
+ .popupTabLayout .tabsExpanded {
29
+ /* Override TabLayout */
30
+ }
31
+ .popupTabLayout .content {
32
+ margin-top: 0;
33
+ height: 100%;
34
+ }
35
+ .popupTabLayout .panels::before {
36
+ content: "";
37
+ position: absolute;
38
+ top: 0;
39
+ right: 0;
40
+ bottom: 0;
41
+ left: 0;
42
+ }
43
+ .popupTabLayout:global(.neutral) {
44
+ background-color: transparent;
45
+ }
46
+ .popupTabLayout:global(.neutral) .tabs {
47
+ border-radius: var(--semantic-radius-container);
48
+ }
49
+ .popupTabLayout:global(.neutral) .content .panels::before {
50
+ border-radius: var(--semantic-radius-popup);
51
+ }
52
+ .popupTabLayout:global(.neutral) .tabs,
53
+ .popupTabLayout:global(.neutral) .content .panels::before {
54
+ background-color: var(--semantic-color-background-overlay-default);
55
+ box-shadow: 0 0.75rem 1rem color(from var(--semantic-color-on-background-black) srgb r g b / 0.35);
56
+ outline-color: var(--semantic-color-stroke-overlay-default);
57
+ outline-width: 0.021rem;
58
+ outline-style: solid;
59
+ outline-offset: -0.021rem;
60
+ }
61
+ :global(.noAnimation) .popupTabLayout:global(.neutral) .tabs,
62
+ :global(.noAnimation) .popupTabLayout:global(.neutral) .content .panels::before {
63
+ box-shadow: none;
64
+ }
65
+ :global(.enact-a11y-high-contrast) .popupTabLayout:global(.neutral):global(.highContrast) {
66
+ background-color: transparent;
67
+ }
68
+ :global(.enact-a11y-high-contrast) .popupTabLayout:global(.neutral):global(.highContrast) .tabs {
69
+ border-radius: var(--semantic-radius-container);
70
+ }
71
+ :global(.enact-a11y-high-contrast) .popupTabLayout:global(.neutral):global(.highContrast) .content .panels::before {
72
+ border-radius: var(--semantic-radius-popup);
73
+ }
74
+ :global(.enact-a11y-high-contrast) .popupTabLayout:global(.neutral):global(.highContrast) .tabs,
75
+ :global(.enact-a11y-high-contrast) .popupTabLayout:global(.neutral):global(.highContrast) .content .panels::before {
76
+ background-color: var(--semantic-color-background-overlay-default);
77
+ box-shadow: 0 0.75rem 1rem color(from var(--semantic-color-on-background-black) srgb r g b / 0.35);
78
+ outline-color: #7c848b;
79
+ outline-width: 0.021rem;
80
+ outline-style: solid;
81
+ outline-offset: -0.021rem;
82
+ }
83
+ :global(.noAnimation) :global(.enact-a11y-high-contrast) .popupTabLayout:global(.neutral):global(.highContrast) .tabs,
84
+ :global(.noAnimation) :global(.enact-a11y-high-contrast) .popupTabLayout:global(.neutral):global(.highContrast) .content .panels::before {
85
+ box-shadow: none;
86
+ }
87
+ .popupTabLayout:global(.light) {
88
+ background-color: transparent;
89
+ }
90
+ .popupTabLayout:global(.light) .tabs {
91
+ border-radius: var(--semantic-radius-container);
92
+ }
93
+ .popupTabLayout:global(.light) .content .panels::before {
94
+ border-radius: var(--semantic-radius-popup);
95
+ }
96
+ .popupTabLayout:global(.light) .tabs,
97
+ .popupTabLayout:global(.light) .content .panels::before {
98
+ background-color: var(--semantic-color-background-overlay-default);
99
+ box-shadow: 0 0.75rem 1rem color(from var(--semantic-color-on-background-black) srgb r g b / 0.35);
100
+ outline-color: var(--semantic-color-stroke-overlay-default);
101
+ outline-width: 0.021rem;
102
+ outline-style: solid;
103
+ outline-offset: -0.021rem;
104
+ }
105
+ :global(.noAnimation) .popupTabLayout:global(.light) .tabs,
106
+ :global(.noAnimation) .popupTabLayout:global(.light) .content .panels::before {
107
+ box-shadow: none;
108
+ }
109
+ .popupTabLayout:global(.game) {
110
+ --semantic-color-surface-default: #2d224c;
111
+ --semantic-color-surface-default-focused: #6d2fa1;
112
+ --semantic-color-on-surface-main-focused: #e6e6e6;
113
+ background-color: transparent;
114
+ }
115
+ .popupTabLayout:global(.game) .tabs {
116
+ border-radius: var(--semantic-radius-container);
117
+ }
118
+ .popupTabLayout:global(.game) .content .panels::before {
119
+ border-radius: var(--semantic-radius-popup);
120
+ }
121
+ .popupTabLayout:global(.game) .tabs,
122
+ .popupTabLayout:global(.game) .content .panels::before {
123
+ background-color: var(--semantic-color-background-overlay-default);
124
+ box-shadow: 0 0.75rem 1rem color(from var(--semantic-color-on-background-black) srgb r g b / 0.35);
125
+ outline-color: var(--semantic-color-stroke-overlay-default);
126
+ outline-width: 0.021rem;
127
+ outline-style: solid;
128
+ outline-offset: -0.021rem;
129
+ }
130
+ :global(.noAnimation) .popupTabLayout:global(.game) .tabs,
131
+ :global(.noAnimation) .popupTabLayout:global(.game) .content .panels::before {
132
+ box-shadow: none;
133
+ }
134
+ :global(.green) .popupTabLayout:global(.game) {
135
+ --semantic-color-surface-default: #1F2C24;
136
+ --semantic-color-surface-default-focused: #3ea07d;
137
+ background-color: transparent;
138
+ }
139
+ :global(.green) .popupTabLayout:global(.game) .tabs {
140
+ border-radius: var(--semantic-radius-container);
141
+ }
142
+ :global(.green) .popupTabLayout:global(.game) .content .panels::before {
143
+ border-radius: var(--semantic-radius-popup);
144
+ }
145
+ :global(.green) .popupTabLayout:global(.game) .tabs,
146
+ :global(.green) .popupTabLayout:global(.game) .content .panels::before {
147
+ background-color: var(--semantic-color-background-overlay-default);
148
+ box-shadow: 0 0.75rem 1rem color(from var(--semantic-color-on-background-black) srgb r g b / 0.35);
149
+ outline-color: var(--semantic-color-stroke-overlay-default);
150
+ outline-width: 0.021rem;
151
+ outline-style: solid;
152
+ outline-offset: -0.021rem;
153
+ }
154
+ :global(.noAnimation) :global(.green) .popupTabLayout:global(.game) .tabs,
155
+ :global(.noAnimation) :global(.green) .popupTabLayout:global(.game) .content .panels::before {
156
+ box-shadow: none;
157
+ }
158
+ :global(.orange) .popupTabLayout:global(.game) {
159
+ --semantic-color-surface-default: #422923;
160
+ --semantic-color-surface-default-focused: #b85f23;
161
+ background-color: transparent;
162
+ }
163
+ :global(.orange) .popupTabLayout:global(.game) .tabs {
164
+ border-radius: var(--semantic-radius-container);
165
+ }
166
+ :global(.orange) .popupTabLayout:global(.game) .content .panels::before {
167
+ border-radius: var(--semantic-radius-popup);
168
+ }
169
+ :global(.orange) .popupTabLayout:global(.game) .tabs,
170
+ :global(.orange) .popupTabLayout:global(.game) .content .panels::before {
171
+ background-color: var(--semantic-color-background-overlay-default);
172
+ box-shadow: 0 0.75rem 1rem color(from var(--semantic-color-on-background-black) srgb r g b / 0.35);
173
+ outline-color: var(--semantic-color-stroke-overlay-default);
174
+ outline-width: 0.021rem;
175
+ outline-style: solid;
176
+ outline-offset: -0.021rem;
177
+ }
178
+ :global(.noAnimation) :global(.orange) .popupTabLayout:global(.game) .tabs,
179
+ :global(.noAnimation) :global(.orange) .popupTabLayout:global(.game) .content .panels::before {
180
+ box-shadow: none;
181
+ }
182
+ .popupTransitionContainer {
183
+ width: 100%;
184
+ }
185
+ .popup > .body {
186
+ position: relative;
187
+ padding: 0;
188
+ }
189
+ :global(.enact-locale-right-to-left) .popup > .body {
190
+ padding: 0;
191
+ }
192
+ .panels {
193
+ position: relative;
194
+ top: auto;
195
+ right: auto;
196
+ bottom: auto;
197
+ left: auto;
198
+ max-height: 100%;
199
+ }
200
+ .panels > .viewport {
201
+ position: static;
202
+ top: auto;
203
+ right: auto;
204
+ bottom: auto;
205
+ left: auto;
206
+ }
207
+ .panel {
208
+ padding: 0;
209
+ max-height: calc(100vh - 4rem );
210
+ }
211
+ .panel > .body {
212
+ display: flex;
213
+ flex-direction: column;
214
+ flex: 0 1 auto;
215
+ padding: var(--primitive-spacing-60);
216
+ }
217
+ .popup > .body,
218
+ .optimized {
219
+ pointer-events: none;
220
+ }
221
+ .popup > .body .tabs,
222
+ .optimized .tabs,
223
+ .popup > .body .content > .panels,
224
+ .optimized .content > .panels {
225
+ pointer-events: auto;
226
+ }
@@ -0,0 +1,3 @@
1
+ {
2
+ "main": "PopupTabLayout.js"
3
+ }
@@ -0,0 +1,285 @@
1
+ "use strict";
2
+
3
+ var _FloatingLayer = require("@enact/ui/FloatingLayer");
4
+ require("@testing-library/jest-dom");
5
+ var _react = require("@testing-library/react");
6
+ var _userEvent = _interopRequireDefault(require("@testing-library/user-event"));
7
+ var _Item = require("../../Item");
8
+ var _PopupTabLayout = require("../PopupTabLayout");
9
+ var _jsxRuntime = require("react/jsx-runtime");
10
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
11
+ 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); }
12
+ 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); }); }; }
13
+ var FloatingLayerController = (0, _FloatingLayer.FloatingLayerDecorator)('div');
14
+ var keyDown = function keyDown(keyCode) {
15
+ return function (elm) {
16
+ return _react.fireEvent.keyDown(elm, {
17
+ keyCode: keyCode
18
+ });
19
+ };
20
+ };
21
+ var enterKeyDown = keyDown(13);
22
+ var escapeKeyDown = keyDown(27);
23
+ var leftKeyDown = keyDown(37);
24
+ var downKeyDown = keyDown(40);
25
+ var keyUp = function keyUp(keyCode) {
26
+ return function (elm) {
27
+ return _react.fireEvent.keyUp(elm, {
28
+ keyCode: keyCode
29
+ });
30
+ };
31
+ };
32
+ var enterKeyUp = keyUp(13);
33
+ var escapeKeyUp = keyUp(27);
34
+ var downKeyUp = keyUp(40);
35
+ describe('PopupTabLayout specs', function () {
36
+ test('should be rendered opened if open is set to true', function () {
37
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(FloatingLayerController, {
38
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_PopupTabLayout.PopupTabLayout, {
39
+ open: true,
40
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
41
+ children: "popupTabLayout"
42
+ })
43
+ })
44
+ }));
45
+ var popupTabLayout = _react.screen.getByText('popupTabLayout');
46
+ expect(popupTabLayout).toBeInTheDocument();
47
+ });
48
+ test('should not be rendered if open is set to false', function () {
49
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(FloatingLayerController, {
50
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_PopupTabLayout.PopupTabLayout, {
51
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
52
+ children: "popupTabLayout"
53
+ })
54
+ })
55
+ }));
56
+ var popupTabLayout = _react.screen.queryByText('popupTabLayout');
57
+ expect(popupTabLayout).toBeNull();
58
+ });
59
+ test('should apply \'ease-in-out\' class when noAnimation is false', function () {
60
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(FloatingLayerController, {
61
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_PopupTabLayout.PopupTabLayout, {
62
+ "data-testid": "popupTabLayout",
63
+ noAnimation: false,
64
+ open: true,
65
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
66
+ children: "popupTabLayout"
67
+ })
68
+ })
69
+ }));
70
+ var expected = 'ease-in-out';
71
+ var actual = _react.screen.getByTestId('popupTabLayout').parentElement.parentElement.parentElement.parentElement;
72
+ expect(actual).toHaveClass(expected);
73
+ });
74
+ test('should not apply \'ease-in-out\' class when noAnimation is true', function () {
75
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(FloatingLayerController, {
76
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_PopupTabLayout.PopupTabLayout, {
77
+ "data-testid": "popupTabLayout",
78
+ noAnimation: true,
79
+ open: true,
80
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
81
+ children: "popupTabLayout"
82
+ })
83
+ })
84
+ }));
85
+ var expected = 'ease-in-out';
86
+ var actual = _react.screen.getByTestId('popupTabLayout').parentElement.parentElement.parentElement.parentElement;
87
+ expect(actual).not.toHaveClass(expected);
88
+ });
89
+ test('should not close popupTabLayout on escape if noAutoDismiss is true', /*#__PURE__*/_asyncToGenerator(function* () {
90
+ var handleClose = jest.fn();
91
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(FloatingLayerController, {
92
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_PopupTabLayout.PopupTabLayout, {
93
+ noAutoDismiss: true,
94
+ onClose: handleClose,
95
+ open: true,
96
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
97
+ children: "popupTabLayout"
98
+ })
99
+ })
100
+ }));
101
+ _react.fireEvent.keyUp(_react.screen.getByText('popupTabLayout'), {
102
+ keyCode: 27
103
+ });
104
+ yield (0, _react.waitFor)(function () {
105
+ expect(handleClose).not.toHaveBeenCalled();
106
+ });
107
+ }));
108
+ test('should display items from second tab', /*#__PURE__*/_asyncToGenerator(function* () {
109
+ var user = _userEvent["default"].setup();
110
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(FloatingLayerController, {
111
+ children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_PopupTabLayout.PopupTabLayout, {
112
+ open: true,
113
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_PopupTabLayout.Tab, {
114
+ title: "First Tab Title",
115
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_PopupTabLayout.TabPanels, {
116
+ children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_PopupTabLayout.TabPanel, {
117
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Item.Item, {
118
+ children: "Item 1"
119
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Item.Item, {
120
+ children: "Item 2"
121
+ })]
122
+ })
123
+ })
124
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_PopupTabLayout.Tab, {
125
+ title: "Second Tab Title",
126
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_PopupTabLayout.TabPanels, {
127
+ children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_PopupTabLayout.TabPanel, {
128
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Item.Item, {
129
+ children: "Item 3"
130
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Item.Item, {
131
+ children: "Item 4"
132
+ })]
133
+ })
134
+ })
135
+ })]
136
+ })
137
+ }));
138
+ var thirdItem = _react.screen.queryByText('Item 3');
139
+ var fourthItem = _react.screen.queryByText('Item 4');
140
+ expect(thirdItem).not.toBeInTheDocument();
141
+ expect(fourthItem).not.toBeInTheDocument();
142
+ var secondTab = _react.screen.getByText('Second Tab Title');
143
+ yield user.click(secondTab);
144
+ thirdItem = _react.screen.getByText('Item 3');
145
+ fourthItem = _react.screen.getByText('Item 4');
146
+ expect(thirdItem).toBeInTheDocument();
147
+ expect(fourthItem).toBeInTheDocument();
148
+ }));
149
+ test('should fire onTabClick event for 5-way Select on tab element', function () {
150
+ var onTabClick = jest.fn();
151
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(FloatingLayerController, {
152
+ children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_PopupTabLayout.PopupTabLayout, {
153
+ open: true,
154
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_PopupTabLayout.Tab, {
155
+ onTabClick: onTabClick,
156
+ title: "First Tab Title",
157
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_PopupTabLayout.TabPanels, {
158
+ children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_PopupTabLayout.TabPanel, {
159
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Item.Item, {
160
+ children: "Item 1"
161
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Item.Item, {
162
+ children: "Item 2"
163
+ })]
164
+ })
165
+ })
166
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_PopupTabLayout.Tab, {
167
+ title: "Second Tab Title",
168
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_PopupTabLayout.TabPanels, {
169
+ children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_PopupTabLayout.TabPanel, {
170
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Item.Item, {
171
+ children: "Item 3"
172
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Item.Item, {
173
+ children: "Item 4"
174
+ })]
175
+ })
176
+ })
177
+ })]
178
+ })
179
+ }));
180
+ var firstTab = _react.screen.getByText('First Tab Title');
181
+ enterKeyDown(firstTab);
182
+ enterKeyUp(firstTab);
183
+ expect(onTabClick).toHaveBeenCalled();
184
+ });
185
+ test('should fire onBack event when returning to previous tab', function () {
186
+ var handleOnBack = jest.fn();
187
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(FloatingLayerController, {
188
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_PopupTabLayout.PopupTabLayout, {
189
+ open: true,
190
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_PopupTabLayout.Tab, {
191
+ title: "Tab Title",
192
+ children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_PopupTabLayout.TabPanels, {
193
+ index: 1,
194
+ onBack: handleOnBack,
195
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_PopupTabLayout.TabPanel, {
196
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Item.Item, {
197
+ children: "Item 1"
198
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Item.Item, {
199
+ children: "Item 2"
200
+ })]
201
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_PopupTabLayout.TabPanel, {
202
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Item.Item, {
203
+ children: "Item 3"
204
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Item.Item, {
205
+ children: "Item 4"
206
+ })]
207
+ })]
208
+ })
209
+ })
210
+ })
211
+ }));
212
+ var tab = _react.screen.getByText('Tab Title');
213
+ escapeKeyDown(tab);
214
+ escapeKeyUp(tab);
215
+ expect(handleOnBack).toHaveBeenCalled();
216
+ });
217
+ test('should fire onKeyDown event for 5-way navigation inside Tab element', function () {
218
+ var onKeyDown = jest.fn();
219
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(FloatingLayerController, {
220
+ children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_PopupTabLayout.PopupTabLayout, {
221
+ open: true,
222
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_PopupTabLayout.Tab, {
223
+ title: "First Tab Title",
224
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_PopupTabLayout.TabPanels, {
225
+ children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_PopupTabLayout.TabPanel, {
226
+ onKeyDown: onKeyDown,
227
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Item.Item, {
228
+ children: "Item 1"
229
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Item.Item, {
230
+ children: "Item 2"
231
+ })]
232
+ })
233
+ })
234
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_PopupTabLayout.Tab, {
235
+ title: "Second Tab Title",
236
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_PopupTabLayout.TabPanels, {
237
+ children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_PopupTabLayout.TabPanel, {
238
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Item.Item, {
239
+ children: "Item 3"
240
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Item.Item, {
241
+ children: "Item 4"
242
+ })]
243
+ })
244
+ })
245
+ })]
246
+ })
247
+ }));
248
+ var firstItem = _react.screen.getByText('Item 1');
249
+ downKeyDown(firstItem);
250
+ downKeyUp(firstItem);
251
+ expect(onKeyDown).toHaveBeenCalled();
252
+ });
253
+ test('should fire onBack event when left key pressed from the second TabPanel', function () {
254
+ var onBack = jest.fn();
255
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(FloatingLayerController, {
256
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_PopupTabLayout.PopupTabLayout, {
257
+ open: true,
258
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_PopupTabLayout.Tab, {
259
+ title: "Tab Title",
260
+ children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_PopupTabLayout.TabPanels, {
261
+ index: 1,
262
+ onBack: onBack,
263
+ rtl: false,
264
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_PopupTabLayout.TabPanel, {
265
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Item.Item, {
266
+ children: "Item 1"
267
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Item.Item, {
268
+ children: "Item 2"
269
+ })]
270
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_PopupTabLayout.TabPanel, {
271
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Item.Item, {
272
+ children: "Item 3"
273
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Item.Item, {
274
+ children: "Item 4"
275
+ })]
276
+ })]
277
+ })
278
+ })
279
+ })
280
+ }));
281
+ var firstItem = _react.screen.getByText('Item 3');
282
+ leftKeyDown(firstItem);
283
+ expect(onBack).toHaveBeenCalled();
284
+ });
285
+ });
@@ -0,0 +1,171 @@
1
+ // Type definitions for limestone/ProgressBar
2
+
3
+ import { SkinnableProps as limestone_Skinnable_SkinnableProps } from "limestone/Skinnable";
4
+ import * as React from "react";
5
+
6
+ type Omit<T, K extends keyof T> = Pick<T, Exclude<keyof T, K>>;
7
+ type Merge<M, N> = Omit<M, Extract<keyof M, keyof N>> & N;
8
+
9
+ export interface ProgressBarBaseProps {
10
+ /**
11
+ * The proportion of the loaded portion of the progress bar.
12
+ * * Valid values are between `0` and `1` .
13
+ */
14
+ backgroundProgress?: number;
15
+ /**
16
+ * Customizes the component by mapping the supplied collection of CSS class names to the
17
+ corresponding internal elements and states of this component.
18
+ *
19
+ * The following classes are supported:
20
+ * * `progressBar` - The root component class
21
+ * * `radial` - Applied when `orientation` is `'radial'`
22
+ */
23
+ css?: object;
24
+ /**
25
+ * Highlights the filled portion.
26
+ */
27
+ highlighted?: boolean;
28
+ /**
29
+ * The orientation of the slider.
30
+ */
31
+ orientation?: "horizontal" | "vertical" | "radial";
32
+ /**
33
+ * A number between `0` and `1` indicating the proportion of the filled portion of the bar.
34
+ */
35
+ progress?: number;
36
+ /**
37
+ * Displays an anchor at `progressAnchor` .
38
+ */
39
+ showAnchor?: boolean;
40
+ /**
41
+ * Enables the built-in tooltip.
42
+ *
43
+ * To customize the tooltip, pass either a custom tooltip component or an instance of
44
+ with additional
45
+ props configured.
46
+ *
47
+ * The provided component will receive the following props from `ProgressBar` :
48
+ * * `orientation` - The value of `orientation`
49
+ * * `percent` - Always `true` indicating the value should be presented as a percentage
50
+ rather than an absolute value
51
+ * * `progress` - The `value` as a proportion between `min` and `max`
52
+ * * `visible` - Always `true` indicating that the tooltip should be visible
53
+ *
54
+ * Usage:
55
+ * ```
56
+ <ProgressBar
57
+ tooltip={
58
+ <ProgressBarTooltip position="after" />
59
+ }
60
+ />
61
+ ```
62
+
63
+ * The tooltip may also be passed as a child via the `"tooltip"` slot. See
64
+ for more information on how slots can be used.
65
+ *
66
+ * Usage:
67
+ * ```
68
+ <ProgressBar>
69
+ <ProgressBarTooltip position="after" />
70
+ </ProgressBar>
71
+ ```
72
+ */
73
+ tooltip?: boolean | React.ComponentType | JSX.Element;
74
+ }
75
+ /**
76
+ * Renders a limestone-styled progress bar.
77
+ */
78
+
79
+ export class ProgressBarBase extends React.Component<
80
+ Merge<React.HTMLProps<HTMLElement>, ProgressBarBaseProps>
81
+ > {}
82
+
83
+ export interface ProgressBarTooltipProps {
84
+ /**
85
+ * Customizes the component by mapping the supplied collection of CSS class names to the
86
+ corresponding internal elements and states of this component.
87
+ *
88
+ * The following classes are supported:
89
+ * * `tooltip` - The root component class
90
+ */
91
+ css?: object;
92
+ /**
93
+ * Sets the orientation of the tooltip based on the orientation of the bar.
94
+ *
95
+ * 'vertical' sends the tooltip to one of the sides, 'horizontal' positions it above the
96
+ bar, 'radial' can position it on all sides.
97
+ */
98
+ orientation?: "horizontal" | "vertical" | "radial";
99
+ /**
100
+ * Displays the value as a percentage.
101
+ */
102
+ percent?: boolean;
103
+ /**
104
+ * Position of the tooltip with respect to the progress bar.
105
+ * * For `orientation="horizontal"` or `orientation="radial"` progress bars, the default value is `'above'` .
106
+ * * For `orientation="vertical"` progress bars, the default value is `'before'` .
107
+ *
108
+ * When using `'before'` or `'after'` alone or in any of the below combinations, `'before'`
109
+ will position the tooltip on the side of the current locale's text directionality. In LTR
110
+ locales, it will be on the left; in RTL locales, it will be on the right. Similarly,
111
+ `'after'` will position the tooltip on the opposite side: the right side for LTR and
112
+ left for RTL.
113
+ *
114
+ * Valid values when `orientation="horizontal"` or `orientation="radial"`
115
+ * _Value_ _Tooltip Direction_ `'above'` Above component, flowing to the nearest end `'above left'` Above component, flowing to the left `'above before'` Above component, flowing to the start of text `'above center'` Above component, flowing to the center `'above right'` Above component, flowing to the right `'above after'` Above component, flowing to the end of text `'below'` Below component, flowing to the nearest end `'below left'` Below component, flowing to the left `'below before'` Below component, flowing to the start of text `'below center'` Below component, flowing to the center `'below right'` Below component, flowing to the right `'below after'` Below component, flowing to the end of text
116
+ * Valid values when `orientation="vertical"` or `orientation="radial"`
117
+ * _Value_ _Tooltip Direction_ `'left'` Left of the component, contents middle aligned `'before'` Start of text side of the component, contents middle aligned `'right'` right of the component, contents middle aligned `'after'` End of text side of the component, contents middle aligned */
118
+ position?:
119
+ | "above"
120
+ | "above before"
121
+ | "above left"
122
+ | "above after"
123
+ | "above center"
124
+ | "above right"
125
+ | "below"
126
+ | "below left"
127
+ | "below before"
128
+ | "below center"
129
+ | "below right"
130
+ | "below after"
131
+ | "left"
132
+ | "before"
133
+ | "right"
134
+ | "after";
135
+ /**
136
+ * The proportion of the filled part of the bar.
137
+ * * Should be a number between 0 and 1.
138
+ */
139
+ proportion?: number;
140
+ /**
141
+ * Visibility of the tooltip
142
+ */
143
+ visible?: boolean;
144
+ }
145
+ /**
146
+ * A specifically adapted for use with
147
+ or
148
+ .
149
+ */
150
+
151
+ export class ProgressBarTooltip extends React.Component<
152
+ Merge<React.HTMLProps<HTMLElement>, ProgressBarTooltipProps>
153
+ > {}
154
+
155
+ export interface ProgressBarDecoratorProps
156
+ extends limestone_Skinnable_SkinnableProps {}
157
+ export function ProgressBarDecorator<P>(
158
+ Component: React.ComponentType<P> | string,
159
+ ): React.ComponentType<P & ProgressBarDecoratorProps>;
160
+
161
+ export interface ProgressBarProps
162
+ extends Merge<ProgressBarBaseProps, ProgressBarDecoratorProps> {}
163
+ /**
164
+ * The ready-to-use Limestone-styled ProgressBar.
165
+ */
166
+
167
+ export class ProgressBar extends React.Component<
168
+ Merge<React.HTMLProps<HTMLElement>, ProgressBarProps>
169
+ > {}
170
+
171
+ export default ProgressBar;