@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,305 @@
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 _ = require("../");
8
+ var _jsxRuntime = require("react/jsx-runtime");
9
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
10
+ 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); }
11
+ 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); }); }; }
12
+ var FloatingLayerController = (0, _FloatingLayer.FloatingLayerDecorator)('div');
13
+ describe('FlexiblePopupPanels Specs', function () {
14
+ test('should hide previous and next buttons when there is only one panel', function () {
15
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(FloatingLayerController, {
16
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_.FlexiblePopupPanels, {
17
+ open: true,
18
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_.Panel, {})
19
+ })
20
+ }));
21
+ var actual = _react.screen.queryByRole('button');
22
+ expect(actual).toBeNull();
23
+ });
24
+ test('should show previous and next buttons when there is more than one panel', function () {
25
+ var _render = (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(FloatingLayerController, {
26
+ children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_.FlexiblePopupPanels, {
27
+ open: true,
28
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_.Panel, {}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_.Panel, {}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_.Panel, {})]
29
+ })
30
+ })),
31
+ unmount = _render.unmount;
32
+ var expected = 2;
33
+ var actual = _react.screen.getAllByRole('button').length;
34
+ unmount();
35
+ expect(actual).toBe(expected);
36
+ });
37
+ test('should show previous button when using `prevButton` on the only panel', function () {
38
+ var _render2 = (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(FloatingLayerController, {
39
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_.FlexiblePopupPanels, {
40
+ open: true,
41
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_.Panel, {
42
+ prevButton: true
43
+ })
44
+ })
45
+ })),
46
+ unmount = _render2.unmount;
47
+ var expected = 1;
48
+ var actual = _react.screen.getAllByRole('button').length;
49
+ unmount();
50
+ expect(actual).toBe(expected);
51
+ });
52
+ test('should show previous button when using `nextButton` on the only panel', function () {
53
+ var _render3 = (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(FloatingLayerController, {
54
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_.FlexiblePopupPanels, {
55
+ open: true,
56
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_.Panel, {
57
+ nextButton: true
58
+ })
59
+ })
60
+ })),
61
+ unmount = _render3.unmount;
62
+ var expected = 1;
63
+ var actual = _react.screen.getAllByRole('button').length;
64
+ unmount();
65
+ expect(actual).toBe(expected);
66
+ });
67
+ test('should hide previous button on all panels when `prevButtonVisibility` is set to "never"', function () {
68
+ var _render4 = (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(FloatingLayerController, {
69
+ children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_.FlexiblePopupPanels, {
70
+ prevButtonVisibility: "never",
71
+ open: true,
72
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_.Panel, {}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_.Panel, {})]
73
+ })
74
+ })),
75
+ unmount = _render4.unmount;
76
+ var expected = 1;
77
+ var actual = _react.screen.getAllByRole('button').length;
78
+ unmount();
79
+ expect(actual).toBe(expected);
80
+ });
81
+ test('should hide next button on all panels when `nextButtonVisibility` is set to "never"', function () {
82
+ var _render5 = (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(FloatingLayerController, {
83
+ children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_.FlexiblePopupPanels, {
84
+ nextButtonVisibility: "never",
85
+ open: true,
86
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_.Panel, {}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_.Panel, {})]
87
+ })
88
+ })),
89
+ unmount = _render5.unmount;
90
+ var expected = 1;
91
+ var actual = _react.screen.getAllByRole('button').length;
92
+ unmount();
93
+ expect(actual).toBe(expected);
94
+ });
95
+ test('should show previous button on the only panel when `prevButtonVisibility` set to "always"', function () {
96
+ var _render6 = (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(FloatingLayerController, {
97
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_.FlexiblePopupPanels, {
98
+ prevButtonVisibility: "always",
99
+ open: true,
100
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_.Panel, {})
101
+ })
102
+ })),
103
+ unmount = _render6.unmount;
104
+ var expected = 1;
105
+ var actual = _react.screen.getAllByRole('button').length;
106
+ unmount();
107
+ expect(actual).toBe(expected);
108
+ });
109
+ test('should show next button on the only panel when `nextButtonVisibility` set to "always"', function () {
110
+ var _render7 = (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(FloatingLayerController, {
111
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_.FlexiblePopupPanels, {
112
+ nextButtonVisibility: "always",
113
+ open: true,
114
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_.Panel, {})
115
+ })
116
+ })),
117
+ unmount = _render7.unmount;
118
+ var expected = 1;
119
+ var actual = _react.screen.getAllByRole('button').length;
120
+ unmount();
121
+ expect(actual).toBe(expected);
122
+ });
123
+ test('should hide previous button on panels that override using `prevButton={false}`', function () {
124
+ var _render8 = (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(FloatingLayerController, {
125
+ children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_.FlexiblePopupPanels, {
126
+ index: 1,
127
+ open: true,
128
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_.Panel, {}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_.Panel, {
129
+ prevButton: false
130
+ })]
131
+ })
132
+ })),
133
+ unmount = _render8.unmount;
134
+ var expected = 1;
135
+ var actual = _react.screen.getAllByRole('button').length;
136
+ unmount();
137
+ expect(actual).toBe(expected);
138
+ });
139
+ test('should hide next button on panels that override using `nextButton={false}`', function () {
140
+ var _render9 = (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(FloatingLayerController, {
141
+ children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_.FlexiblePopupPanels, {
142
+ index: 0,
143
+ open: true,
144
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_.Panel, {
145
+ nextButton: false
146
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_.Panel, {})]
147
+ })
148
+ })),
149
+ unmount = _render9.unmount;
150
+ var expected = 1;
151
+ var actual = _react.screen.getAllByRole('button').length;
152
+ unmount();
153
+ expect(actual).toBe(expected);
154
+ });
155
+ test('should hide previous button when `prevButtonVisibility` prop is set to always and panel overrides using `prevButton={false}`', function () {
156
+ var _render0 = (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(FloatingLayerController, {
157
+ children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_.FlexiblePopupPanels, {
158
+ index: 1,
159
+ prevButtonVisibility: "always",
160
+ open: true,
161
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_.Panel, {}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_.Panel, {
162
+ prevButton: false
163
+ })]
164
+ })
165
+ })),
166
+ unmount = _render0.unmount;
167
+ var expected = 1;
168
+ var actual = _react.screen.getAllByRole('button').length;
169
+ unmount();
170
+ expect(actual).toBe(expected);
171
+ });
172
+ test('should hide next button when `nextButtonVisibility` prop is set to always and panel overrides using `nextButton={false}`', function () {
173
+ var _render1 = (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(FloatingLayerController, {
174
+ children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_.FlexiblePopupPanels, {
175
+ index: 0,
176
+ nextButtonVisibility: "always",
177
+ open: true,
178
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_.Panel, {
179
+ nextButton: false
180
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_.Panel, {})]
181
+ })
182
+ })),
183
+ unmount = _render1.unmount;
184
+ var expected = 1;
185
+ var actual = _react.screen.getAllByRole('button').length;
186
+ unmount();
187
+ expect(actual).toBe(expected);
188
+ });
189
+ test('should fire `onNextClick` and `onChange` with each type in it when the next button is clicked', /*#__PURE__*/_asyncToGenerator(function* () {
190
+ var handleNextClick = jest.fn();
191
+ var handleChange = jest.fn();
192
+ var user = _userEvent["default"].setup();
193
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(FloatingLayerController, {
194
+ children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_.FlexiblePopupPanels, {
195
+ open: true,
196
+ onNextClick: handleNextClick,
197
+ onChange: handleChange,
198
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_.Panel, {}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_.Panel, {}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_.Panel, {})]
199
+ })
200
+ }));
201
+ yield user.click(_react.screen.getByLabelText('Next'));
202
+ var nextClickExpected = {
203
+ type: 'onNextClick'
204
+ };
205
+ var changeExpected = {
206
+ type: 'onChange'
207
+ };
208
+ yield (0, _react.waitFor)(function () {
209
+ var nextClickActual = handleNextClick.mock.calls.length && handleNextClick.mock.calls[0][0];
210
+ expect(nextClickActual).toMatchObject(nextClickExpected);
211
+ });
212
+ yield (0, _react.waitFor)(function () {
213
+ var changeActual = handleChange.mock.calls.length && handleChange.mock.calls[0][0];
214
+ expect(changeActual).toMatchObject(changeExpected);
215
+ });
216
+ }));
217
+ test('should fire `onPrevClick` with type `onPrevClick` when the previous button is clicked', /*#__PURE__*/_asyncToGenerator(function* () {
218
+ var handlePrevClick = jest.fn();
219
+ var user = _userEvent["default"].setup();
220
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(FloatingLayerController, {
221
+ children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_.FlexiblePopupPanels, {
222
+ open: true,
223
+ onPrevClick: handlePrevClick,
224
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_.Panel, {}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_.Panel, {}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_.Panel, {})]
225
+ })
226
+ }));
227
+ yield user.click(_react.screen.getByLabelText('Previous'));
228
+ var expected = {
229
+ type: 'onPrevClick'
230
+ };
231
+ yield (0, _react.waitFor)(function () {
232
+ var actual = handlePrevClick.mock.calls.length && handlePrevClick.mock.calls[0][0];
233
+ expect(actual).toMatchObject(expected);
234
+ });
235
+ }));
236
+ test('should close on back key when on first panel', function () {
237
+ var map = {};
238
+ window.addEventListener = jest.fn(function (event, cb) {
239
+ map[event] = cb;
240
+ });
241
+ var spy = jest.fn();
242
+ var _render10 = (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(FloatingLayerController, {
243
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_.FlexiblePopupPanels, {
244
+ index: 0,
245
+ onClose: spy,
246
+ open: true,
247
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_.Panel, {})
248
+ })
249
+ })),
250
+ unmount = _render10.unmount;
251
+ map.keyup({
252
+ type: 'keyup',
253
+ currentTarget: window,
254
+ keyCode: 27
255
+ });
256
+ var expectedEvent = {
257
+ type: 'onClose'
258
+ };
259
+ var actualEvent = spy.mock.calls.length && spy.mock.calls[0][0];
260
+ unmount();
261
+ expect(spy).toHaveBeenCalled();
262
+ expect(actualEvent).toMatchObject(expectedEvent);
263
+ });
264
+ test('should go back on back key when not on first panel', function () {
265
+ var map = {};
266
+ window.addEventListener = jest.fn(function (event, cb) {
267
+ map[event] = cb;
268
+ });
269
+ var spy = jest.fn();
270
+ var _render11 = (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(FloatingLayerController, {
271
+ children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_.FlexiblePopupPanels, {
272
+ index: 1,
273
+ onBack: spy,
274
+ open: true,
275
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_.Panel, {}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_.Panel, {})]
276
+ })
277
+ })),
278
+ unmount = _render11.unmount;
279
+ map.keyup({
280
+ type: 'keyup',
281
+ currentTarget: window,
282
+ keyCode: 27
283
+ });
284
+ var expectedEvent = {
285
+ type: 'onBack'
286
+ };
287
+ var actualEvent = spy.mock.calls.length && spy.mock.calls[0][0];
288
+ unmount();
289
+ expect(spy).toHaveBeenCalled();
290
+ expect(actualEvent).toMatchObject(expectedEvent);
291
+ });
292
+ test('should correctly assign the fullHeight class', function () {
293
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(FloatingLayerController, {
294
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_.FlexiblePopupPanels, {
295
+ "data-testid": "flexiblePopupPanels",
296
+ fullHeight: true,
297
+ open: true,
298
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_.Panel, {})
299
+ })
300
+ }));
301
+ var expected = 'fullHeight';
302
+ var actual = _react.screen.getByTestId('flexiblePopupPanels').parentElement.parentElement;
303
+ expect(actual).toHaveClass(expected);
304
+ });
305
+ });
@@ -0,0 +1,65 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports["default"] = exports.NavButtonFocusDecorator = void 0;
7
+ exports.useNavButtonFocus = useNavButtonFocus;
8
+ var _spotlight = _interopRequireDefault(require("@enact/spotlight"));
9
+ var _propTypes = _interopRequireDefault(require("prop-types"));
10
+ var _react = require("react");
11
+ var _FlexiblePopupPanelsModule = _interopRequireDefault(require("./FlexiblePopupPanels.module.css"));
12
+ var _jsxRuntime = require("react/jsx-runtime");
13
+ var _excluded = ["index"];
14
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
15
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
16
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
17
+ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
18
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
19
+ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
20
+ function _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }
21
+ function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }
22
+ var prevButtonSelector = ".".concat(_FlexiblePopupPanelsModule["default"].navCellBefore, " .").concat(_FlexiblePopupPanelsModule["default"].navButton);
23
+ var nextButtonSelector = ".".concat(_FlexiblePopupPanelsModule["default"].navCellAfter, " .").concat(_FlexiblePopupPanelsModule["default"].navButton);
24
+ function useNavButtonFocus(_ref) {
25
+ var index = _ref.index;
26
+ var autoFocus;
27
+ var _useRef = (0, _react.useRef)({
28
+ index: index
29
+ }),
30
+ ref = _useRef.current;
31
+
32
+ // on index change
33
+ if (index !== ref.index) {
34
+ var current = _spotlight["default"].getCurrent();
35
+ // if the currently focused component is a nav button
36
+ if (current && current.classList.contains(_FlexiblePopupPanelsModule["default"].navButton)) {
37
+ var prevButtonFocused = current.matches(prevButtonSelector);
38
+
39
+ // set autoFocus to point to the selector for the appropriate button
40
+ autoFocus = prevButtonFocused ? prevButtonSelector : nextButtonSelector;
41
+ }
42
+ ref.index = index;
43
+ }
44
+ return {
45
+ autoFocus: autoFocus
46
+ };
47
+ }
48
+ var NavButtonFocusDecorator = exports.NavButtonFocusDecorator = function NavButtonFocusDecorator(Wrapped) {
49
+ // eslint-disable-next-line no-shadow
50
+ function NavButtonFocusDecorator(_ref2) {
51
+ var index = _ref2.index,
52
+ rest = _objectWithoutProperties(_ref2, _excluded);
53
+ var nav = useNavButtonFocus({
54
+ index: index
55
+ });
56
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(Wrapped, _objectSpread(_objectSpread(_objectSpread({}, rest), nav), {}, {
57
+ index: index
58
+ }));
59
+ }
60
+ NavButtonFocusDecorator.propTypes = {
61
+ index: _propTypes["default"].number
62
+ };
63
+ return NavButtonFocusDecorator;
64
+ };
65
+ var _default = exports["default"] = useNavButtonFocus;
@@ -0,0 +1,87 @@
1
+ // Type definitions for limestone/FormCheckboxItem
2
+
3
+ import { ToggleableProps as ui_Toggleable_ToggleableProps } from "@enact/ui/Toggleable";
4
+ import { ItemProps as limestone_Item_ItemProps } from "limestone/Item";
5
+ import * as React from "react";
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 FormCheckboxItemBaseProps extends limestone_Item_ItemProps {
11
+ /**
12
+ * Customizes the component by mapping the supplied collection of CSS class names to the
13
+ corresponding internal elements and states of this component.
14
+ *
15
+ * The following classes are supported:
16
+ * * `formCheckboxItem` - The root class name
17
+ */
18
+ css?: object;
19
+ /**
20
+ * The icon content.
21
+ *
22
+ * May be specified as either:
23
+ * * A string that represents an icon from the ,
24
+ * * An HTML entity string, Unicode reference or hex value (in the form '0x...'),
25
+ * * A URL specifying path to an icon image, or
26
+ * * An object representing a resolution independent resource (See )
27
+ */
28
+ icon?: string | object;
29
+ /**
30
+ * Enables the "indeterminate" state.
31
+ *
32
+ * An indeterminate, mixed, or half-selected state is typically used in a hierarchy or group
33
+ to represent that some, not all, children are selected.
34
+ *
35
+ * NOTE: This does not prevent updating the `selected` state. Applications must control this
36
+ property directly.
37
+ */
38
+ indeterminate?: boolean;
39
+ /**
40
+ * The icon to be used in the `indeterminate` state.
41
+ *
42
+ * May be specified as either:
43
+ * * A string that represents an icon from the ,
44
+ * * An HTML entity string, Unicode reference or hex value (in the form '0x...'),
45
+ * * A URL specifying path to an icon image, or
46
+ * * An object representing a resolution independent resource (See )
47
+ */
48
+ indeterminateIcon?: string;
49
+ /**
50
+ * Controls the presence of the checkmark icon.
51
+ */
52
+ selected?: boolean;
53
+ /**
54
+ * Nodes to be inserted after the checkbox and before `children` .
55
+ */
56
+ slotBefore?: React.ReactNode;
57
+ }
58
+ /**
59
+ * A Limestone-styled form item with a checkbox component.
60
+ *
61
+ * Useful to show a selected state on an item inside a form.
62
+ */
63
+
64
+ export class FormCheckboxItemBase extends React.Component<
65
+ Merge<React.HTMLProps<HTMLElement>, FormCheckboxItemBaseProps>
66
+ > {}
67
+
68
+ export interface FormCheckboxItemDecoratorProps
69
+ extends ui_Toggleable_ToggleableProps {}
70
+ export function FormCheckboxItemDecorator<P>(
71
+ Component: React.ComponentType<P> | string,
72
+ ): React.ComponentType<P & FormCheckboxItemDecoratorProps>;
73
+
74
+ export interface FormCheckboxItemProps
75
+ extends Merge<FormCheckboxItemBaseProps, FormCheckboxItemDecoratorProps> {}
76
+ /**
77
+ * A Limestone-styled form item with a checkbox component.
78
+ *
79
+ * `FormCheckboxItem` will manage its `selected` state via unless
80
+ set directly.
81
+ */
82
+
83
+ export class FormCheckboxItem extends React.Component<
84
+ Merge<React.HTMLProps<HTMLElement>, FormCheckboxItemProps>
85
+ > {}
86
+
87
+ export default FormCheckboxItem;
@@ -0,0 +1,200 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports["default"] = exports.FormCheckboxItemDecorator = exports.FormCheckboxItemBase = exports.FormCheckboxItem = void 0;
7
+ var _kind = _interopRequireDefault(require("@enact/core/kind"));
8
+ var _Pure = _interopRequireDefault(require("@enact/ui/internal/Pure"));
9
+ var _Slottable = _interopRequireDefault(require("@enact/ui/Slottable"));
10
+ var _Toggleable = _interopRequireDefault(require("@enact/ui/Toggleable"));
11
+ var _propTypes = _interopRequireDefault(require("prop-types"));
12
+ var _compose = _interopRequireDefault(require("ramda/src/compose"));
13
+ var _react = require("react");
14
+ var _Skinnable = _interopRequireDefault(require("../Skinnable"));
15
+ var _Checkbox = require("../Checkbox");
16
+ var _Item = require("../Item");
17
+ var _FormCheckboxItemModule = _interopRequireDefault(require("./FormCheckboxItem.module.css"));
18
+ var _jsxRuntime = require("react/jsx-runtime");
19
+ var _excluded = ["children", "css", "icon", "indeterminate", "indeterminateIcon", "selected", "slotBefore"];
20
+ /**
21
+ * Provides Limestone styled form item component and interactive toggleable checkbox.
22
+ *
23
+ * @example
24
+ * <FormCheckboxItem>A Checkbox for a form</FormCheckboxItem>
25
+ *
26
+ * @module limestone/FormCheckboxItem
27
+ * @exports FormCheckboxItem
28
+ * @exports FormCheckboxItemBase
29
+ * @exports FormCheckboxItemDecorator
30
+ */
31
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
32
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
33
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
34
+ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
35
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
36
+ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
37
+ function _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }
38
+ function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }
39
+ var Item = (0, _Item.ItemDecorator)(_Item.ItemBase);
40
+ var Checkbox = (0, _Skinnable["default"])(_Checkbox.CheckboxBase);
41
+ var hasChildren = function hasChildren(children) {
42
+ return _react.Children.toArray(children).filter(Boolean).length > 0;
43
+ };
44
+
45
+ /**
46
+ * A Limestone-styled form item with a checkbox component.
47
+ *
48
+ * Useful to show a selected state on an item inside a form.
49
+ *
50
+ * @class FormCheckboxItemBase
51
+ * @memberof limestone/FormCheckboxItem
52
+ * @extends limestone/Item.Item
53
+ * @ui
54
+ * @public
55
+ */
56
+ var FormCheckboxItemBase = exports.FormCheckboxItemBase = (0, _kind["default"])({
57
+ name: 'FormCheckboxItem',
58
+ propTypes: /** @lends limestone/FormCheckboxItem.FormCheckboxItemBase.prototype */{
59
+ /**
60
+ * Customizes the component by mapping the supplied collection of CSS class names to the
61
+ * corresponding internal elements and states of this component.
62
+ *
63
+ * The following classes are supported:
64
+ *
65
+ * * `formCheckboxItem` - The root class name
66
+ *
67
+ * @type {Object}
68
+ * @public
69
+ */
70
+ css: _propTypes["default"].object,
71
+ /**
72
+ * The icon content.
73
+ *
74
+ * May be specified as either:
75
+ *
76
+ * * A string that represents an icon from the {@link limestone/Icon.iconList|iconList},
77
+ * * An HTML entity string, Unicode reference or hex value (in the form '0x...'),
78
+ * * A URL specifying path to an icon image, or
79
+ * * An object representing a resolution independent resource (See {@link ui/resolution})
80
+ *
81
+ * @type {String|Object}
82
+ * @public
83
+ */
84
+ icon: _propTypes["default"].oneOfType([_propTypes["default"].string, _propTypes["default"].object]),
85
+ /**
86
+ * Enables the "indeterminate" state.
87
+ *
88
+ * An indeterminate, mixed, or half-selected state is typically used in a hierarchy or group
89
+ * to represent that some, not all, children are selected.
90
+ *
91
+ * NOTE: This does not prevent updating the `selected` state. Applications must control this
92
+ * property directly.
93
+ *
94
+ * @type {Boolean}
95
+ * @public
96
+ */
97
+ indeterminate: _propTypes["default"].bool,
98
+ /**
99
+ * The icon to be used in the `indeterminate` state.
100
+ *
101
+ * May be specified as either:
102
+ *
103
+ * * A string that represents an icon from the {@link limestone/Icon.iconList|iconList},
104
+ * * An HTML entity string, Unicode reference or hex value (in the form '0x...'),
105
+ * * A URL specifying path to an icon image, or
106
+ * * An object representing a resolution independent resource (See {@link ui/resolution})
107
+ *
108
+ * @type {String}
109
+ * @public
110
+ */
111
+ indeterminateIcon: _propTypes["default"].oneOfType([_propTypes["default"].string, _propTypes["default"].object]),
112
+ /**
113
+ * Controls the presence of the checkmark icon.
114
+ *
115
+ * @type {Boolean}
116
+ * @public
117
+ */
118
+ selected: _propTypes["default"].bool,
119
+ /**
120
+ * Nodes to be inserted after the checkbox and before `children`.
121
+ *
122
+ * @type {Node}
123
+ * @public
124
+ */
125
+ slotBefore: _propTypes["default"].node
126
+ },
127
+ styles: {
128
+ css: _FormCheckboxItemModule["default"],
129
+ className: 'formCheckboxItem',
130
+ publicClassNames: ['formCheckboxItem']
131
+ },
132
+ computed: {
133
+ className: function className(_ref) {
134
+ var slotBefore = _ref.slotBefore,
135
+ styler = _ref.styler;
136
+ return styler.append({
137
+ hasSlotBefore: hasChildren(slotBefore)
138
+ });
139
+ }
140
+ },
141
+ render: function render(_ref2) {
142
+ var children = _ref2.children,
143
+ css = _ref2.css,
144
+ icon = _ref2.icon,
145
+ indeterminate = _ref2.indeterminate,
146
+ indeterminateIcon = _ref2.indeterminateIcon,
147
+ selected = _ref2.selected,
148
+ slotBefore = _ref2.slotBefore,
149
+ rest = _objectWithoutProperties(_ref2, _excluded);
150
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(Item, _objectSpread(_objectSpread({
151
+ "data-webos-voice-intent": "SelectCheckItem",
152
+ role: "checkbox"
153
+ }, rest), {}, {
154
+ "aria-checked": selected,
155
+ css: css,
156
+ selected: selected,
157
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)("slotBefore", {
158
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(Checkbox, {
159
+ className: css.checkbox,
160
+ indeterminate: indeterminate,
161
+ indeterminateIcon: indeterminateIcon,
162
+ selected: selected,
163
+ standalone: true,
164
+ children: icon
165
+ }), slotBefore]
166
+ }), children]
167
+ }));
168
+ }
169
+ });
170
+
171
+ /**
172
+ * Adds interactive functionality to `FormCheckboxItem`.
173
+ *
174
+ * @class FormCheckboxItemDecorator
175
+ * @memberof limestone/FormCheckboxItem
176
+ * @mixes ui/Toggleable.Toggleable
177
+ * @hoc
178
+ * @public
179
+ */
180
+ var FormCheckboxItemDecorator = exports.FormCheckboxItemDecorator = (0, _compose["default"])((0, _Toggleable["default"])({
181
+ toggleProp: 'onClick'
182
+ }), (0, _Slottable["default"])({
183
+ slots: ['label', 'slotAfter', 'slotBefore']
184
+ }));
185
+
186
+ /**
187
+ * A Limestone-styled form item with a checkbox component.
188
+ *
189
+ * `FormCheckboxItem` will manage its `selected` state via {@link ui/Toggleable|Toggleable} unless
190
+ * set directly.
191
+ *
192
+ * @class FormCheckboxItem
193
+ * @memberof limestone/FormCheckboxItem
194
+ * @extends limestone/FormCheckboxItem.FormCheckboxItemBase
195
+ * @mixes limestone/FormCheckboxItem.FormCheckboxItemDecorator
196
+ * @ui
197
+ * @public
198
+ */
199
+ var FormCheckboxItem = exports.FormCheckboxItem = (0, _Pure["default"])(FormCheckboxItemDecorator(FormCheckboxItemBase));
200
+ var _default = exports["default"] = FormCheckboxItem;