@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,66 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "Header", {
7
+ enumerable: true,
8
+ get: function get() {
9
+ return _Header["default"];
10
+ }
11
+ });
12
+ Object.defineProperty(exports, "HeaderBase", {
13
+ enumerable: true,
14
+ get: function get() {
15
+ return _Header.HeaderBase;
16
+ }
17
+ });
18
+ Object.defineProperty(exports, "Panel", {
19
+ enumerable: true,
20
+ get: function get() {
21
+ return _Panel["default"];
22
+ }
23
+ });
24
+ Object.defineProperty(exports, "Panels", {
25
+ enumerable: true,
26
+ get: function get() {
27
+ return _Panels["default"];
28
+ }
29
+ });
30
+ Object.defineProperty(exports, "PanelsBase", {
31
+ enumerable: true,
32
+ get: function get() {
33
+ return _Panels["default"];
34
+ }
35
+ });
36
+ Object.defineProperty(exports, "Routable", {
37
+ enumerable: true,
38
+ get: function get() {
39
+ return _Routable["default"];
40
+ }
41
+ });
42
+ Object.defineProperty(exports, "Route", {
43
+ enumerable: true,
44
+ get: function get() {
45
+ return _Routable.Route;
46
+ }
47
+ });
48
+ exports["default"] = void 0;
49
+ var _Routable = _interopRequireWildcard(require("@enact/ui/Routable"));
50
+ var _Header = _interopRequireWildcard(require("./Header"));
51
+ var _Panel = _interopRequireDefault(require("./Panel"));
52
+ var _Panels = _interopRequireDefault(require("./Panels"));
53
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
54
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
55
+ /**
56
+ * Panels provides a way to manage different screens of an app.
57
+ *
58
+ * @module limestone/Panels
59
+ * @exports Header
60
+ * @exports Panel
61
+ * @exports Panels
62
+ * @exports PanelsBase
63
+ * @exports Routable
64
+ * @exports Route
65
+ */
66
+ var _default = exports["default"] = _Panels["default"];
@@ -0,0 +1,3 @@
1
+ {
2
+ "main": "index.js"
3
+ }
@@ -0,0 +1,146 @@
1
+ "use strict";
2
+
3
+ require("@testing-library/jest-dom");
4
+ var _react = require("@testing-library/react");
5
+ var _Header = _interopRequireDefault(require("../Header"));
6
+ var _jsxRuntime = require("react/jsx-runtime");
7
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
8
+ 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); }
9
+ 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); }); }; }
10
+ describe('Header Specs', function () {
11
+ test('should render with title text without changing case', function () {
12
+ var expected = 'cRaZy-cased super Header';
13
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_Header["default"], {
14
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)("title", {
15
+ children: expected
16
+ })
17
+ }));
18
+ var header = _react.screen.getByText(expected);
19
+ expect(header).toBeInTheDocument();
20
+ });
21
+ test('should support "wizard" type', function () {
22
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_Header["default"], {
23
+ "data-testid": "header",
24
+ type: "wizard",
25
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)("title", {
26
+ children: "Wizard Header"
27
+ })
28
+ }));
29
+ var expected = 'wizard';
30
+ var header = _react.screen.getByTestId('header');
31
+ expect(header).toHaveClass(expected);
32
+ });
33
+ test('should support "compact" type', function () {
34
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_Header["default"], {
35
+ "data-testid": "header",
36
+ type: "compact",
37
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)("title", {
38
+ children: "Compact Header"
39
+ })
40
+ }));
41
+ var expected = 'compact';
42
+ var header = _react.screen.getByTestId('header');
43
+ expect(header).toHaveClass(expected);
44
+ });
45
+ test('should have centered class applied when the centered prop is true', function () {
46
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_Header["default"], {
47
+ "data-testid": "header",
48
+ centered: true,
49
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)("title", {
50
+ children: "Centered Header"
51
+ })
52
+ }));
53
+ var expected = 'centered';
54
+ var header = _react.screen.getByTestId('header');
55
+ expect(header).toHaveClass(expected);
56
+ });
57
+ test('should support `slotAbove`', function () {
58
+ var expected = 'slot above';
59
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsxs)(_Header["default"], {
60
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("slotAbove", {
61
+ children: expected
62
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)("title", {
63
+ children: "Slotted Header"
64
+ })]
65
+ }));
66
+ var slotAbove = _react.screen.getByText(expected);
67
+ var expectedClass = 'slotAbove';
68
+ expect(slotAbove).toHaveClass(expectedClass);
69
+ });
70
+ test('should support `slotBefore`', function () {
71
+ var expected = 'slot before';
72
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsxs)(_Header["default"], {
73
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("slotBefore", {
74
+ children: expected
75
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)("title", {
76
+ children: "Slotted Header"
77
+ })]
78
+ }));
79
+ var slotBefore = _react.screen.getByText(expected).parentElement;
80
+ var expectedClass = 'slotBefore';
81
+ expect(slotBefore).toHaveClass(expectedClass);
82
+ });
83
+ test('should support `slotAfter`', function () {
84
+ var expected = 'slot after';
85
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsxs)(_Header["default"], {
86
+ noCloseButton: true,
87
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("title", {
88
+ children: "Slotted Header"
89
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)("slotAfter", {
90
+ children: expected
91
+ })]
92
+ }));
93
+ var slotAfter = _react.screen.getByText(expected).parentElement;
94
+ var expectedClass = 'slotAfter';
95
+ expect(slotAfter).toHaveClass(expectedClass);
96
+ });
97
+ test('should not render back button', function () {
98
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_Header["default"], {}));
99
+ var backButton = _react.screen.queryByLabelText('go to previous');
100
+ expect(backButton).toBeNull();
101
+ });
102
+ test('should render close button when \'noCloseButton\' is not specified', function () {
103
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_Header["default"], {}));
104
+ var closeButton = _react.screen.getByLabelText('Exit app');
105
+ expect(closeButton).toBeInTheDocument();
106
+ });
107
+ test('should not render close button when \'noCloseButton\' is set to true', function () {
108
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_Header["default"], {
109
+ noCloseButton: true
110
+ }));
111
+ var closeButton = _react.screen.queryByLabelText('Exit app');
112
+ expect(closeButton).toBeNull();
113
+ });
114
+ test('should call onClose when close button is clicked', /*#__PURE__*/_asyncToGenerator(function* () {
115
+ var handleClose = jest.fn();
116
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_Header["default"], {
117
+ onClose: handleClose
118
+ }));
119
+ _react.fireEvent.click(_react.screen.getByRole('button'));
120
+ expect(handleClose).toHaveBeenCalled();
121
+ yield (0, _react.waitFor)(function () {
122
+ expect(handleClose).toHaveBeenCalledTimes(1);
123
+ });
124
+ }));
125
+ test('should set close button "aria-label" to closeButtonAriaLabel', function () {
126
+ var label = 'custom close button label';
127
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_Header["default"], {
128
+ closeButtonAriaLabel: label
129
+ }));
130
+ var closeButtonAriaLabel = _react.screen.getByLabelText(label);
131
+ var slotAfter = closeButtonAriaLabel.parentElement.parentElement;
132
+ expect(closeButtonAriaLabel).toBeInTheDocument();
133
+ expect(slotAfter).toHaveClass('slotAfter');
134
+ });
135
+ test('should set close button `shadowed` to true when `shadowed` is set to true', function () {
136
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_Header["default"], {
137
+ shadowed: true,
138
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)("title", {
139
+ children: "title"
140
+ })
141
+ }));
142
+ var button = _react.screen.getByRole('button');
143
+ var expected = 'button shadowed';
144
+ expect(button).toHaveClass(expected);
145
+ });
146
+ });
@@ -0,0 +1,257 @@
1
+ "use strict";
2
+
3
+ require("@testing-library/jest-dom");
4
+ var _react = require("@testing-library/react");
5
+ var _userEvent = _interopRequireDefault(require("@testing-library/user-event"));
6
+ var _Header = _interopRequireDefault(require("../Header"));
7
+ var _Panel = _interopRequireDefault(require("../Panel"));
8
+ var _Panels = _interopRequireDefault(require("../Panels"));
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
+ describe('Panels Specs', function () {
14
+ test('should set {autoFocus} on child to "default-element" on first render', function () {
15
+ var DivPanel = function DivPanel(_ref) {
16
+ var autoFocus = _ref.autoFocus,
17
+ id = _ref.id;
18
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
19
+ "data-testid": "panel",
20
+ id: id,
21
+ children: autoFocus
22
+ });
23
+ };
24
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_Panels["default"], {
25
+ index: 0,
26
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(DivPanel, {})
27
+ }));
28
+ var expected = 'default-element';
29
+ var actual = _react.screen.getByTestId('panel').textContent;
30
+ expect(actual).toBe(expected);
31
+ });
32
+ test('should set {autoFocus} on child to "default-element" when navigating to a higher index', function () {
33
+ var DivPanel = function DivPanel(_ref2) {
34
+ var autoFocus = _ref2.autoFocus,
35
+ id = _ref2.id;
36
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
37
+ "data-testid": "panel",
38
+ id: id,
39
+ children: autoFocus
40
+ });
41
+ };
42
+ var _render = (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsxs)(_Panels["default"], {
43
+ index: 0,
44
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(DivPanel, {}), /*#__PURE__*/(0, _jsxRuntime.jsx)(DivPanel, {
45
+ id: "p2"
46
+ })]
47
+ })),
48
+ rerender = _render.rerender;
49
+ rerender(/*#__PURE__*/(0, _jsxRuntime.jsxs)(_Panels["default"], {
50
+ index: 1,
51
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(DivPanel, {}), /*#__PURE__*/(0, _jsxRuntime.jsx)(DivPanel, {
52
+ id: "p2"
53
+ })]
54
+ }));
55
+ var expected = 'default-element';
56
+ var actual = _react.screen.getAllByTestId('panel')[0].textContent;
57
+ expect(actual).toBe(expected);
58
+ });
59
+ test('should not set {autoFocus} on child when navigating to a higher index when it has an autoFocus prop set', function () {
60
+ var DivPanel = function DivPanel(_ref3) {
61
+ var autoFocus = _ref3.autoFocus,
62
+ id = _ref3.id;
63
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
64
+ "data-testid": "panel",
65
+ id: id,
66
+ children: autoFocus
67
+ });
68
+ };
69
+ var _render2 = (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsxs)(_Panels["default"], {
70
+ index: 0,
71
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(DivPanel, {}), /*#__PURE__*/(0, _jsxRuntime.jsx)(DivPanel, {
72
+ id: "p2",
73
+ autoFocus: "last-focused"
74
+ })]
75
+ })),
76
+ rerender = _render2.rerender;
77
+ rerender(/*#__PURE__*/(0, _jsxRuntime.jsxs)(_Panels["default"], {
78
+ index: 1,
79
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(DivPanel, {}), /*#__PURE__*/(0, _jsxRuntime.jsx)(DivPanel, {
80
+ id: "p2",
81
+ autoFocus: "last-focused"
82
+ })]
83
+ }));
84
+ var expected = 'last-focused';
85
+ var panel = _react.screen.getAllByTestId('panel')[0];
86
+ expect(panel.textContent).toBe(expected);
87
+ expect(panel.id).toBe('p2');
88
+ });
89
+ test('should return a ref to the root Panel node', function () {
90
+ var ref = jest.fn();
91
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_Panel["default"], {
92
+ ref: ref
93
+ }));
94
+ var expected = 'ARTICLE';
95
+ var actual = ref.mock.calls[0][0].nodeName;
96
+ expect(actual).toBe(expected);
97
+ });
98
+ describe('with Panel and Header', function () {
99
+ test('should not render back button on the first panel', function () {
100
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_Panels["default"], {
101
+ index: 0,
102
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Panel["default"], {
103
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Header["default"], {})
104
+ })
105
+ }));
106
+ var backButton = _react.screen.queryByLabelText('go to previous');
107
+ expect(backButton).toBeNull();
108
+ });
109
+ test('should render back button when not on the first panel', function () {
110
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsxs)(_Panels["default"], {
111
+ index: 1,
112
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Panel["default"], {
113
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Header["default"], {})
114
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Panel["default"], {
115
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Header["default"], {})
116
+ })]
117
+ }));
118
+ var backButton = _react.screen.getByLabelText('go to previous');
119
+ expect(backButton).toBeInTheDocument();
120
+ });
121
+ test('should fire `onBack` with `onBack` type when back clicked', /*#__PURE__*/_asyncToGenerator(function* () {
122
+ var handleBack = jest.fn();
123
+ var user = _userEvent["default"].setup();
124
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsxs)(_Panels["default"], {
125
+ index: 1,
126
+ onBack: handleBack,
127
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Panel["default"], {
128
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Header["default"], {})
129
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Panel["default"], {
130
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Header["default"], {})
131
+ })]
132
+ }));
133
+ yield user.click(_react.screen.getByLabelText('go to previous'));
134
+ var expected = {
135
+ type: 'onBack'
136
+ };
137
+ yield (0, _react.waitFor)(function () {
138
+ var actual = handleBack.mock.calls.length && handleBack.mock.calls[0][0];
139
+ expect(actual).toMatchObject(expected);
140
+ });
141
+ }));
142
+ test('should not render back button when not on the first panel and \'noBackButton\' is set to true', function () {
143
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsxs)(_Panels["default"], {
144
+ index: 1,
145
+ noBackButton: true,
146
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Panel["default"], {
147
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Header["default"], {})
148
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Panel["default"], {
149
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Header["default"], {})
150
+ })]
151
+ }));
152
+ var backButton = _react.screen.queryByLabelText('go to previous');
153
+ expect(backButton).toBeNull();
154
+ });
155
+ test('should not render back button when \'noBackButton\' is set on `Panel` 2', function () {
156
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsxs)(_Panels["default"], {
157
+ index: 1,
158
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Panel["default"], {
159
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Header["default"], {})
160
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Panel["default"], {
161
+ noBackButton: true,
162
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Header["default"], {})
163
+ })]
164
+ }));
165
+ var backButton = _react.screen.queryByLabelText('go to previous');
166
+ expect(backButton).toBeNull();
167
+ });
168
+ test('should render back button on panel 3 when \'noBackButton\' is set on panel 2', function () {
169
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsxs)(_Panels["default"], {
170
+ index: 2,
171
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Panel["default"], {
172
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Header["default"], {})
173
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Panel["default"], {
174
+ noBackButton: true,
175
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Header["default"], {})
176
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Panel["default"], {
177
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Header["default"], {})
178
+ })]
179
+ }));
180
+ var backButton = _react.screen.getByLabelText('go to previous');
181
+ expect(backButton).toBeInTheDocument();
182
+ });
183
+ test('should set back button "aria-label" to backButtonAriaLabel', function () {
184
+ var label = 'custom back button label';
185
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsxs)(_Panels["default"], {
186
+ backButtonAriaLabel: label,
187
+ index: 1,
188
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Panel["default"], {
189
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Header["default"], {})
190
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Panel["default"], {
191
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Header["default"], {})
192
+ })]
193
+ }));
194
+ var backButton = _react.screen.getByLabelText(label);
195
+ var backButtonContainer = backButton.parentElement.parentElement;
196
+ var expectedClass = 'slotBefore';
197
+ expect(backButton).toBeInTheDocument();
198
+ expect(backButtonContainer).toHaveClass(expectedClass);
199
+ });
200
+ test('should set back button "aria-label" to backButtonAriaLabel when defined only on a panel', function () {
201
+ var label = 'custom back button label';
202
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsxs)(_Panels["default"], {
203
+ index: 1,
204
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Panel["default"], {
205
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Header["default"], {})
206
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Panel["default"], {
207
+ backButtonAriaLabel: label,
208
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Header["default"], {})
209
+ })]
210
+ }));
211
+ var backButton = _react.screen.getByLabelText(label);
212
+ var backButtonContainer = backButton.parentElement.parentElement;
213
+ var expectedClass = 'slotBefore';
214
+ expect(backButton).toBeInTheDocument();
215
+ expect(backButtonContainer).toHaveClass(expectedClass);
216
+ });
217
+ test('should render close button', function () {
218
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_Panels["default"], {
219
+ index: 0,
220
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Panel["default"], {
221
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Header["default"], {})
222
+ })
223
+ }));
224
+ var closeButton = _react.screen.getByLabelText('Exit app');
225
+ var closeButtonContainer = closeButton.parentElement.parentElement;
226
+ var expectedClass = 'slotAfter';
227
+ expect(closeButton).toBeInTheDocument();
228
+ expect(closeButtonContainer).toHaveClass(expectedClass);
229
+ });
230
+ test('should not render close button when \'noCloseButton\' is set to true', function () {
231
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_Panels["default"], {
232
+ index: 0,
233
+ noCloseButton: true,
234
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Panel["default"], {
235
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Header["default"], {})
236
+ })
237
+ }));
238
+ var closeButton = _react.screen.queryByLabelText('Exit app');
239
+ expect(closeButton).toBeNull();
240
+ });
241
+ test('should set close button "aria-label" to closeButtonAriaLabel', function () {
242
+ var label = 'custom close button label';
243
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_Panels["default"], {
244
+ closeButtonAriaLabel: label,
245
+ index: 0,
246
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Panel["default"], {
247
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Header["default"], {})
248
+ })
249
+ }));
250
+ var closeButton = _react.screen.getByLabelText(label);
251
+ var closeButtonContainer = closeButton.parentElement.parentElement;
252
+ var expectedClass = 'slotAfter';
253
+ expect(closeButton).toBeInTheDocument();
254
+ expect(closeButtonContainer).toHaveClass(expectedClass);
255
+ });
256
+ });
257
+ });
@@ -0,0 +1,193 @@
1
+ // Type definitions for limestone/Picker
2
+
3
+ import * as React from "react";
4
+ import { ChangeableProps as ui_Changeable_ChangeableProps } from "@enact/ui/Changeable";
5
+ import { MarqueeControllerProps as limestone_Marquee_MarqueeControllerProps } from "limestone/Marquee";
6
+
7
+ type Omit<T, K extends keyof T> = Pick<T, Exclude<keyof T, K>>;
8
+ type Merge<M, N> = Omit<M, Extract<keyof M, keyof N>> & N;
9
+
10
+ export interface PickerBaseProps {
11
+ /**
12
+ * Picker value list.
13
+ */
14
+ children: React.ReactNode;
15
+ /**
16
+ * The `aria-valuetext` for the picker.
17
+ *
18
+ * By default, `aria-valuetext` is set to the current selected child text.
19
+ */
20
+ "aria-valuetext"?: string;
21
+ /**
22
+ * Determines which key to adjust the picker's value for the joined horizontal one.
23
+ * * `'enter'` allows the user to use the enter key to adjust the picker's value
24
+ * * `'arrow'` allows the user to use the left or right keys to adjust the picker's value.
25
+ *
26
+ * The default value for joined horizontal picker is `'enter'` .
27
+ If is `'vertical'` or
28
+ is undefined or is `false` , this prop is ignored.
29
+ */
30
+ changedBy?: "enter" | "arrow";
31
+ /**
32
+ * Customizes the component by mapping the supplied collection of CSS class names to the
33
+ corresponding internal elements and states of this component.
34
+ *
35
+ * The following classes are supported:
36
+ * * `title` - The title component class
37
+ * * `inlineTitle` - The title component class when `inlineTitle` is true
38
+ */
39
+ css?: object;
40
+ /**
41
+ * The voice control labels for the `children` .
42
+ *
43
+ * By default, `data-webos-voice-labels-ext` is generated from `children` . However, if
44
+ `children` is not an array of numbers or strings, `data-webos-voice-labels-ext` should be
45
+ set to an array of labels.
46
+ */
47
+ "data-webos-voice-labels-ext"?: number[] | string[];
48
+ /**
49
+ * A custom icon for the decrementer.
50
+ *
51
+ * All strings supported by are supported. Without a
52
+ custom icon, the default is used, and is automatically changed when the
53
+ is changed.
54
+ */
55
+ decrementIcon?: string;
56
+ /**
57
+ * Disables the picker.
58
+ */
59
+ disabled?: boolean;
60
+ /**
61
+ * A custom icon for the incrementer.
62
+ *
63
+ * All strings supported by are supported. Without a
64
+ custom icon, the default is used, and is automatically changed when the
65
+ is changed.
66
+ */
67
+ incrementIcon?: string;
68
+ /**
69
+ * Applies inline styling to the title.
70
+ */
71
+ inlineTitle?: boolean;
72
+ /**
73
+ * Allows the user to use the arrow keys or enter key to adjust the picker's value.
74
+ *
75
+ * Key presses are captured in the directions of the increment and decrement buttons but
76
+ others are unaffected. A non-joined Picker allows navigation in any direction, but
77
+ requires individual ENTER presses on the incrementer and decrementer buttons. Pointer
78
+ interaction is the same for both formats.
79
+ */
80
+ joined?: boolean;
81
+ /**
82
+ * Disables marqueeing of items.
83
+ *
84
+ * By default, each picker item is wrapped by a
85
+ . When this is set, the items will
86
+ not be wrapped.
87
+ */
88
+ marqueeDisabled?: boolean;
89
+ /**
90
+ * Disables transition animation.
91
+ */
92
+ noAnimation?: boolean;
93
+ /**
94
+ * Called when the `value` changes.
95
+ */
96
+ onChange?: Function;
97
+ /**
98
+ * Orientation of the picker.
99
+ *
100
+ * Controls whether the buttons are arranged horizontally or vertically around the value.
101
+ */
102
+ orientation?: "horizontal" | "vertical";
103
+ /**
104
+ * When `true` , the picker buttons operate in the reverse direction such that pressing
105
+ up/left decrements the value and down/right increments the value. This is more natural
106
+ for vertical lists of text options where "up" implies a spatial change rather than
107
+ incrementing the value.
108
+ *
109
+ * If this prop is omitted, it will be determined by `orientation` .
110
+ For example, if `orientation` is `vertical` , `reverse` is `true` .
111
+ Conversely, if `orientation` is `horizontal` , `reverse` is `false` .
112
+ */
113
+ reverse?: boolean;
114
+ /**
115
+ * The primary text of the `Picker` .
116
+ *
117
+ * The screen readers read out the title text when the `joined` prop is false
118
+ */
119
+ title?: string;
120
+ /**
121
+ * The type of picker. It determines the aria-label for the next and previous buttons.
122
+ *
123
+ * Depending on the `type` , `joined` , `decrementAriaLabel` , and `incrementAriaLabel` ,
124
+ the screen readers read out differently when Spotlight is on the next button, the previous button,
125
+ or the picker itself.
126
+ *
127
+ * For example, if Spotlight is on the next button, the `joined` prop is false,
128
+ and aria label props( `decrementAriaLabel` and `incrementAriaLabel` ) are not defined,
129
+ then the screen readers read out as follows.
130
+ `'string'` type: `'next item'`
131
+ `'number'` type: `'press ok button to increase the value'`
132
+ */
133
+ type?: "number" | "string";
134
+ /**
135
+ * Index of the selected child.
136
+ */
137
+ value?: number;
138
+ /**
139
+ * The width of the picker.
140
+ *
141
+ * A number can be used to set the minimum number of characters to be shown. Setting a
142
+ number to less than the number of characters in the longest value will cause the width to
143
+ grow for the longer values.
144
+ *
145
+ * A string can be used to select from pre-defined widths:
146
+ * * `'small'` - numeric values
147
+ * * `'medium'` - single or short words
148
+ * * `'large'` - maximum-sized pickers taking full width of its parent
149
+ *
150
+ * By default, the picker will size according to the longest valid value.
151
+ */
152
+ width?: "small" | "medium" | "large" | number;
153
+ /**
154
+ * Allows picker to continue from the start of the list after it reaches the end and
155
+ vice versa.
156
+ */
157
+ wrap?: boolean;
158
+ }
159
+ /**
160
+ * The base `Picker` component.
161
+ *
162
+ * This version is not .
163
+ */
164
+
165
+ export class PickerBase extends React.Component<
166
+ Merge<React.HTMLProps<HTMLElement>, PickerBaseProps>
167
+ > {}
168
+
169
+ export interface PickerProps
170
+ extends Merge<
171
+ Merge<PickerBaseProps, ui_Changeable_ChangeableProps>,
172
+ limestone_Marquee_MarqueeControllerProps
173
+ > {
174
+ /**
175
+ * Default index of the selected child.
176
+ *
177
+ * _Note_ : Changing `defaultValue` after initial render has no effect.
178
+ */
179
+ defaultValue?: number;
180
+ }
181
+ /**
182
+ * A Picker component that allows selecting values from a list of values.
183
+ *
184
+ * By default, `Picker` maintains the state of its `value` property. Supply the `defaultValue`
185
+ property to control its initial value. If you wish to directly control updates to the component,
186
+ supply a value to `value` at creation time and update it in response to `onChange` events.
187
+ */
188
+
189
+ export class Picker extends React.Component<
190
+ Merge<React.HTMLProps<HTMLElement>, PickerProps>
191
+ > {}
192
+
193
+ export default Picker;