@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,470 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "ContentContainerDecorator", {
7
+ enumerable: true,
8
+ get: function get() {
9
+ return _ContentContainerDecorator.ContentContainerDecorator;
10
+ }
11
+ });
12
+ exports["default"] = exports.ScrollerBase = exports.Scroller = void 0;
13
+ var _util = require("@enact/core/util");
14
+ var _I18nDecorator = require("@enact/i18n/I18nDecorator");
15
+ var _SpotlightContainerDecorator = _interopRequireDefault(require("@enact/spotlight/SpotlightContainerDecorator"));
16
+ var _Spottable = _interopRequireDefault(require("@enact/spotlight/Spottable"));
17
+ var _Resizable = require("@enact/ui/Resizable");
18
+ var _Scroller = require("@enact/ui/Scroller");
19
+ var _classnames = _interopRequireDefault(require("classnames"));
20
+ var _propTypes = _interopRequireDefault(require("prop-types"));
21
+ var _react = require("react");
22
+ var _useScroll2 = _interopRequireDefault(require("../useScroll"));
23
+ var _HoverToScroll = _interopRequireDefault(require("../useScroll/HoverToScroll"));
24
+ var _Scrollbar = _interopRequireDefault(require("../useScroll/Scrollbar"));
25
+ var _ScrollbarPlaceholder = _interopRequireDefault(require("../useScroll/ScrollbarPlaceholder"));
26
+ var _Skinnable = _interopRequireDefault(require("../Skinnable"));
27
+ var _ContentContainerDecorator = require("./ContentContainerDecorator");
28
+ var _EditableWrapper = require("./EditableWrapper");
29
+ var _useThemeScroller2 = _interopRequireDefault(require("./useThemeScroller"));
30
+ var _jsxRuntime = require("react/jsx-runtime");
31
+ var _excluded = ["aria-label", "hoverToScroll"],
32
+ _excluded2 = ["className"];
33
+ /**
34
+ * Provides Limestone-themed scroller components and behaviors.
35
+ *
36
+ * @example
37
+ * <Scroller>
38
+ * <div style={{height: '300px'}}>
39
+ * <p>San Francisco</p>
40
+ * <p>Seoul</p>
41
+ * <p>Bangalore</p>
42
+ * <p>New York</p>
43
+ * <p>London</p>
44
+ * </div>
45
+ * </Scroller>
46
+ *
47
+ * @module limestone/Scroller
48
+ * @exports Scroller
49
+ * @exports ScrollerBase
50
+ */
51
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
52
+ 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; }
53
+ 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; }
54
+ 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; }
55
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
56
+ 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); }
57
+ 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; }
58
+ 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; }
59
+ var nop = function nop() {};
60
+ var SpottableDiv = (0, _Spottable["default"])('div');
61
+ var scrollerId = 0;
62
+ var scrollerDefaultProps = {
63
+ 'data-spotlight-container-disabled': false,
64
+ cbScrollTo: nop,
65
+ direction: 'both',
66
+ fadeOut: false,
67
+ focusableScrollbar: false,
68
+ horizontalScrollbar: 'auto',
69
+ noScrollByDrag: false,
70
+ noScrollByWheel: false,
71
+ onScroll: nop,
72
+ onScrollStart: nop,
73
+ onScrollStop: nop,
74
+ overscrollEffectOn: {
75
+ arrowKey: false,
76
+ drag: true,
77
+ pageKey: false,
78
+ track: false,
79
+ wheel: true
80
+ },
81
+ scrollMode: 'native',
82
+ verticalScrollbar: 'auto'
83
+ };
84
+
85
+ /**
86
+ * A Limestone-styled Scroller, useScroll applied.
87
+ *
88
+ * Usage:
89
+ * ```
90
+ * <Scroller>Scroll me.</Scroller>
91
+ * ```
92
+ *
93
+ * @class Scroller
94
+ * @memberof limestone/Scroller
95
+ * @extends ui/Scroller.ScrollerBasic
96
+ * @ui
97
+ * @public
98
+ */
99
+ var Scroller = exports.Scroller = function Scroller(props) {
100
+ var scrollerProps = (0, _util.setDefaultProps)(props, scrollerDefaultProps);
101
+ if (typeof ENACT_PACK_NO_ANIMATION !== 'undefined' && ENACT_PACK_NO_ANIMATION) {
102
+ scrollerProps.overscrollEffectOn = {
103
+ arrowKey: false,
104
+ drag: false,
105
+ pageKey: false,
106
+ track: false,
107
+ wheel: false
108
+ };
109
+ }
110
+ var ariaLabel = scrollerProps['aria-label'],
111
+ hoverToScroll = scrollerProps.hoverToScroll,
112
+ rest = _objectWithoutProperties(scrollerProps, _excluded);
113
+ var id = "scroller_".concat(++scrollerId, "_content");
114
+
115
+ // Hooks
116
+
117
+ var _useScroll = (0, _useScroll2["default"])(_objectSpread(_objectSpread({}, rest), {}, {
118
+ scrollToContentContainerOnFocus: true
119
+ })),
120
+ ScrollContentWrapper = _useScroll.scrollContentWrapper,
121
+ scrollContentHandle = _useScroll.scrollContentHandle,
122
+ isHorizontalScrollbarVisible = _useScroll.isHorizontalScrollbarVisible,
123
+ isVerticalScrollbarVisible = _useScroll.isVerticalScrollbarVisible,
124
+ resizeContextProps = _useScroll.resizeContextProps,
125
+ scrollContainerProps = _useScroll.scrollContainerProps,
126
+ scrollContentWrapperProps = _useScroll.scrollContentWrapperProps,
127
+ scrollContentProps = _useScroll.scrollContentProps,
128
+ horizontalScrollbarProps = _useScroll.horizontalScrollbarProps,
129
+ verticalScrollbarProps = _useScroll.verticalScrollbarProps,
130
+ hoverToScrollProps = _useScroll.hoverToScrollProps;
131
+ var className = scrollContentWrapperProps.className,
132
+ scrollContentWrapperRest = _objectWithoutProperties(scrollContentWrapperProps, _excluded2);
133
+ var _useThemeScroller = (0, _useThemeScroller2["default"])(rest, _objectSpread(_objectSpread({}, scrollContentProps), {}, {
134
+ className: (0, _classnames["default"])(className, scrollContentProps.className)
135
+ }), id, isHorizontalScrollbarVisible, isVerticalScrollbarVisible),
136
+ editableWrapperProps = _useThemeScroller.editableWrapperProps,
137
+ focusableBodyProps = _useThemeScroller.focusableBodyProps,
138
+ themeScrollContentProps = _useThemeScroller.themeScrollContentProps;
139
+ var children = rest.children,
140
+ direction = rest.direction,
141
+ editable = rest.editable;
142
+
143
+ // To apply spotlight navigableFilter, SpottableDiv should be in scrollContainer.
144
+ var ScrollBody = rest.focusableScrollbar === 'byEnter' ? SpottableDiv : _react.Fragment;
145
+
146
+ // Render
147
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Resizable.ResizeContext, _objectSpread(_objectSpread({}, resizeContextProps), {}, {
148
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(ScrollContentWrapper, _objectSpread(_objectSpread(_objectSpread({}, scrollContainerProps), scrollContentWrapperRest), {}, {
149
+ children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(ScrollBody, _objectSpread(_objectSpread({}, focusableBodyProps), {}, {
150
+ children: [rest.focusableScrollbar ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_ScrollbarPlaceholder["default"], {}) : null, /*#__PURE__*/(0, _jsxRuntime.jsx)(_Scroller.ScrollerBasic, _objectSpread(_objectSpread({}, themeScrollContentProps), {}, {
151
+ "aria-label": ariaLabel,
152
+ id: id,
153
+ ref: scrollContentHandle,
154
+ children: editable && direction === 'horizontal' ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_EditableWrapper.EditableWrapper, _objectSpread({}, editableWrapperProps)) : children
155
+ })), isVerticalScrollbarVisible ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_Scrollbar["default"], _objectSpread({}, verticalScrollbarProps)) : null, isHorizontalScrollbarVisible ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_Scrollbar["default"], _objectSpread({}, horizontalScrollbarProps)) : null, hoverToScroll ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_HoverToScroll["default"], _objectSpread({}, hoverToScrollProps)) : null]
156
+ }))
157
+ }))
158
+ }));
159
+ };
160
+ Scroller.displayName = 'Scroller';
161
+ Scroller.propTypes = /** @lends limestone/Scroller.Scroller.prototype */{
162
+ /**
163
+ * The "aria-label" for the Scroller.
164
+ *
165
+ * When `aria-label` is set and `focusableScrollbar` is `byEnter`, it will be used
166
+ * instead to provide an accessibility label for the Scroller.
167
+ *
168
+ * @type {String}
169
+ * @public
170
+ */
171
+ 'aria-label': _propTypes["default"].string,
172
+ /**
173
+ * A callback function that receives a reference to the `scrollTo` feature.
174
+ *
175
+ * Once received, the `scrollTo` method can be called as an imperative interface.
176
+ *
177
+ * - {position: {x, y}} - Pixel value for x and/or y position
178
+ * - {align} - Where the scroll area should be aligned. Values are:
179
+ * `'left'`, `'right'`, `'top'`, `'bottom'`,
180
+ * `'topleft'`, `'topright'`, `'bottomleft'`, and `'bottomright'`.
181
+ * - {node} - Node to scroll into view
182
+ * - {animate} - When `true`, scroll occurs with animation. When `false`, no
183
+ * animation occurs.
184
+ * - {focus} - When `true`, attempts to focus item after scroll. Only valid when scrolling
185
+ * by `node`.
186
+ * > Note: Only specify one of: `position`, `align`, `node`
187
+ *
188
+ * Example:
189
+ * ```
190
+ * // If you set cbScrollTo prop like below;
191
+ * cbScrollTo: (fn) => {this.scrollTo = fn;}
192
+ * // You can simply call like below;
193
+ * this.scrollTo({align: 'top'}); // scroll to the top
194
+ * ```
195
+ *
196
+ * @type {Function}
197
+ * @public
198
+ */
199
+ cbScrollTo: _propTypes["default"].func,
200
+ /**
201
+ * This is set to `true` by SpotlightContainerDecorator
202
+ *
203
+ * @type {Boolean}
204
+ * @private
205
+ */
206
+ 'data-spotlight-container': _propTypes["default"].bool,
207
+ /**
208
+ * `false` if the content of the scroller could get focus
209
+ *
210
+ * @type {Boolean}
211
+ * @default false
212
+ * @private
213
+ */
214
+ 'data-spotlight-container-disabled': _propTypes["default"].bool,
215
+ /**
216
+ * This is passed onto the wrapped component to allow
217
+ * it to customize the spotlight container for its use case.
218
+ *
219
+ * @type {String}
220
+ * @private
221
+ */
222
+ 'data-spotlight-id': _propTypes["default"].string,
223
+ /**
224
+ * Disable voice control feature of component.
225
+ *
226
+ * @type {Boolean}
227
+ * @public
228
+ */
229
+ 'data-webos-voice-disabled': _propTypes["default"].bool,
230
+ /**
231
+ * Activates the component for voice control.
232
+ *
233
+ * @type {Boolean}
234
+ * @public
235
+ */
236
+ 'data-webos-voice-focused': _propTypes["default"].bool,
237
+ /**
238
+ * The voice control group label.
239
+ *
240
+ * @type {String}
241
+ * @public
242
+ */
243
+ 'data-webos-voice-group-label': _propTypes["default"].string,
244
+ /**
245
+ * Direction of the scroller.
246
+ *
247
+ * @type {('both'|'horizontal'|'vertical')}
248
+ * @default 'both'
249
+ * @public
250
+ */
251
+ direction: _propTypes["default"].oneOf(['both', 'horizontal', 'vertical']),
252
+ /**
253
+ * Enables editing items in the scroller.
254
+ * You can specify props for editable scroller as an object.
255
+ * See the details in {@link limestone/Scroller.EditableShape|EditableShape}
256
+ *
257
+ * @type {limestone/Scroller.EditableShape}
258
+ * @public
259
+ */
260
+ editable: _EditableWrapper.EditableShape,
261
+ /**
262
+ * Adds fade-out effect on the scroller.
263
+ *
264
+ * Set this to `true` only if the content has no spottable but text.
265
+ * > Note: Fade-out effect will not show if the `direction` is set to `both`.
266
+ *
267
+ * @type {Boolean}
268
+ * @default false
269
+ * @public
270
+ */
271
+ fadeOut: _propTypes["default"].bool,
272
+ /**
273
+ * Allows 5-way navigation to the scroll thumb.
274
+ *
275
+ * By default, 5-way will not move focus to the scroll thumb.
276
+ * If `true`, the scroll thumb will get focus by directional keys.
277
+ * If `'byEnter'`, scroll thumb will get focus first by directional keys,
278
+ * then the scroll body will get focus by enter key or back key pressed on scroll thumb.
279
+ *
280
+ * @type {Boolean|'byEnter'}
281
+ * @default false
282
+ * @public
283
+ */
284
+ focusableScrollbar: _propTypes["default"].oneOfType([_propTypes["default"].bool, _propTypes["default"].oneOf(['byEnter'])]),
285
+ /**
286
+ * Specifies how to show horizontal scrollbar.
287
+ *
288
+ * @type {('auto'|'visible'|'hidden')}
289
+ * @default 'auto'
290
+ * @public
291
+ */
292
+ horizontalScrollbar: _propTypes["default"].oneOf(['auto', 'visible', 'hidden']),
293
+ /**
294
+ * Sets the hint string read when focusing the scroll thumb in the horizontal scroll bar.
295
+ *
296
+ * @type {String}
297
+ * @default $L('scroll up or down with up down button')
298
+ * @public
299
+ */
300
+ horizontalScrollThumbAriaLabel: _propTypes["default"].string,
301
+ /**
302
+ * Enables scroll by hover on edges in scroll direction.
303
+ *
304
+ * @type {Boolean}
305
+ * @public
306
+ */
307
+ hoverToScroll: _propTypes["default"].bool,
308
+ /**
309
+ * Unique identifier for the component.
310
+ *
311
+ * When defined and when the `Scroller` is within a {@link limestone/Panels.Panel|Panel}, the
312
+ * `Scroller` will store its scroll position and restore that position when returning to the
313
+ * `Panel`.
314
+ *
315
+ * @type {String}
316
+ * @public
317
+ */
318
+ id: _propTypes["default"].string,
319
+ /**
320
+ * Prevents scroll by dragging or flicking on the scroller.
321
+ *
322
+ * @type {Boolean}
323
+ * @default false
324
+ * @private
325
+ */
326
+ noScrollByDrag: _propTypes["default"].bool,
327
+ /**
328
+ * Prevents scroll by wheeling on the scroller.
329
+ *
330
+ * @type {Boolean}
331
+ * @default false
332
+ * @public
333
+ */
334
+ noScrollByWheel: _propTypes["default"].bool,
335
+ /**
336
+ * Called when scrolling.
337
+ *
338
+ * Passes `scrollLeft`, `scrollTop`.
339
+ * It is not recommended to set this prop since it can cause performance degradation.
340
+ * Use `onScrollStart` or `onScrollStop` instead.
341
+ *
342
+ * @type {Function}
343
+ * @param {Object} event
344
+ * @param {Number} event.scrollLeft Scroll left value.
345
+ * @param {Number} event.scrollTop Scroll top value.
346
+ * @public
347
+ */
348
+ onScroll: _propTypes["default"].func,
349
+ /**
350
+ * Called when scroll starts.
351
+ *
352
+ * Passes `scrollLeft` and `scrollTop`.
353
+ *
354
+ * Example:
355
+ * ```
356
+ * onScrollStart = ({scrollLeft, scrollTop}) => {
357
+ * // do something with scrollLeft and scrollTop
358
+ * }
359
+ *
360
+ * render = () => (
361
+ * <Scroller
362
+ * ...
363
+ * onScrollStart={this.onScrollStart}
364
+ * ...
365
+ * />
366
+ * )
367
+ * ```
368
+ *
369
+ * @type {Function}
370
+ * @param {Object} event
371
+ * @param {Number} event.scrollLeft Scroll left value.
372
+ * @param {Number} event.scrollTop Scroll top value.
373
+ * @public
374
+ */
375
+ onScrollStart: _propTypes["default"].func,
376
+ /**
377
+ * Called when scroll stops.
378
+ *
379
+ * Passes `scrollLeft` and `scrollTop`.
380
+ *
381
+ * Example:
382
+ * ```
383
+ * onScrollStop = ({scrollLeft, scrollTop}) => {
384
+ * // do something with scrollLeft and scrollTop
385
+ * }
386
+ *
387
+ * render = () => (
388
+ * <Scroller
389
+ * ...
390
+ * onScrollStop={this.onScrollStop}
391
+ * ...
392
+ * />
393
+ * )
394
+ * ```
395
+ *
396
+ * @type {Function}
397
+ * @param {Object} event
398
+ * @param {Number} event.scrollLeft Scroll left value.
399
+ * @param {Number} event.scrollTop Scroll top value.
400
+ * @public
401
+ */
402
+ onScrollStop: _propTypes["default"].func,
403
+ /**
404
+ * Specifies overscroll effects shows on which type of inputs.
405
+ *
406
+ * @type {Object}
407
+ * @default {
408
+ * arrowKey: false,
409
+ * drag: true,
410
+ * pageKey: false,
411
+ * track: false,
412
+ * wheel: true
413
+ * }
414
+ * @private
415
+ */
416
+ overscrollEffectOn: _propTypes["default"].shape({
417
+ arrowKey: _propTypes["default"].bool,
418
+ drag: _propTypes["default"].bool,
419
+ pageKey: _propTypes["default"].bool,
420
+ track: _propTypes["default"].bool,
421
+ wheel: _propTypes["default"].bool
422
+ }),
423
+ /**
424
+ * Customizes the component by mapping the supplied collection of CSS class names to the
425
+ * corresponding internal elements and states of this component.
426
+ *
427
+ * The following classes are supported:
428
+ *
429
+ * * `scrollbarTrack` - The scrollbarTrack component class
430
+ * * `thumb` - The scrollbar thumb component class
431
+ *
432
+ * @type {Object}
433
+ * @public
434
+ */
435
+ scrollbarTrackCss: _propTypes["default"].object,
436
+ /**
437
+ * Specifies how to scroll.
438
+ *
439
+ * @type {('native'|'translate')}
440
+ * @default 'native'
441
+ * @public
442
+ */
443
+ scrollMode: _propTypes["default"].oneOf(['native', 'translate']),
444
+ /**
445
+ * Specifies how to show vertical scrollbar.
446
+ *
447
+ * @type {('auto'|'visible'|'hidden')}
448
+ * @default 'auto'
449
+ * @public
450
+ */
451
+ verticalScrollbar: _propTypes["default"].oneOf(['auto', 'visible', 'hidden']),
452
+ /**
453
+ * Sets the hint string read when focusing the scroll thumb in the vertical scroll bar.
454
+ *
455
+ * @type {String}
456
+ * @default $L('scroll left or right with left right button')
457
+ * @public
458
+ */
459
+ verticalScrollThumbAriaLabel: _propTypes["default"].string
460
+ };
461
+ var ScrollerBase = exports.ScrollerBase = Scroller;
462
+ exports.Scroller = Scroller = (0, _Skinnable["default"])((0, _SpotlightContainerDecorator["default"])({
463
+ overflow: true,
464
+ preserveId: true,
465
+ restrict: 'self-first'
466
+ }, (0, _I18nDecorator.I18nContextDecorator)({
467
+ rtlProp: 'rtl'
468
+ }, Scroller)));
469
+ Scroller.defaultPropValues = scrollerDefaultProps;
470
+ var _default = exports["default"] = Scroller;
@@ -0,0 +1,41 @@
1
+ .focusableBody {
2
+ display: flex;
3
+ flex-direction: column;
4
+ width: 100%;
5
+ height: 100%;
6
+ overflow: inherit;
7
+ }
8
+ .focusableBody::before {
9
+ content: '';
10
+ position: absolute;
11
+ top: 0;
12
+ right: 0;
13
+ bottom: 0;
14
+ left: 0;
15
+ border-radius: 0.25rem;
16
+ opacity: 0;
17
+ }
18
+ :global(.spotlight-input-key):global(.spotlight-input-key) .focusableBody:global(.spottable):focus::before,
19
+ :global(.spotlight-input-key):global(.spotlight-input-mouse) .focusableBody:global(.spottable):focus::before {
20
+ background-color: color(from var(--semantic-color-surface-default-focused) srgb r g b / 0.1);
21
+ opacity: 1;
22
+ }
23
+ :global(.spotlight-input-key):global(.spotlight-input-touch) .focusableBody:global(.spottable):active::before {
24
+ background-color: color(from var(--semantic-color-surface-default-focused) srgb r g b / 0.1);
25
+ opacity: 1;
26
+ }
27
+ .verticalFadeout {
28
+ padding: 1rem 0;
29
+ mask-image: linear-gradient(transparent, #000 1rem, #000 calc(100% - 1rem), transparent 100%);
30
+ }
31
+ .focusableBody .verticalFadeout {
32
+ padding: 1.5rem 1rem 1.5rem 1.875rem;
33
+ mask-image: linear-gradient(transparent 0.5rem, #000 calc(0.5rem + 1rem), #000 calc(100% - 1rem - 0.5rem), transparent calc(100% - 0.5rem));
34
+ }
35
+ :global(.enact-locale-right-to-left) .focusableBody .verticalFadeout {
36
+ padding: 1.5rem 1.875rem 1.5rem 1rem;
37
+ }
38
+ .horizontalFadeout {
39
+ padding: 0 1rem;
40
+ mask-image: linear-gradient(to right, transparent, #000 1rem, #000 calc(100% - 1rem), transparent 100%);
41
+ }
@@ -0,0 +1,3 @@
1
+ {
2
+ "main": "Scroller.js"
3
+ }
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+
3
+ require("@testing-library/jest-dom");
4
+ var _container = require("@enact/spotlight/src/container");
5
+ var _react = require("@testing-library/react");
6
+ var _Scroller = require("../Scroller");
7
+ var _jsxRuntime = require("react/jsx-runtime");
8
+ describe('ContentContainerDecorator', function () {
9
+ test('should set \'positionTargetOnFocus\' container config to true', function () {
10
+ var Container = (0, _Scroller.ContentContainerDecorator)('div');
11
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(Container, {
12
+ "data-testid": "container-id"
13
+ }));
14
+ var containerId = (0, _container.getContainerId)(_react.screen.getByTestId('container-id'));
15
+ var containerConfig = (0, _container.getContainerConfig)(containerId);
16
+ var actual = containerConfig.positionTargetOnFocus;
17
+ var expected = true;
18
+ expect(actual).toBe(expected);
19
+ });
20
+ });
@@ -0,0 +1,133 @@
1
+ "use strict";
2
+
3
+ var _spotlight = _interopRequireDefault(require("@enact/spotlight"));
4
+ var _SpotlightContainerDecorator = _interopRequireDefault(require("@enact/spotlight/SpotlightContainerDecorator"));
5
+ require("@testing-library/jest-dom");
6
+ var _react = require("@testing-library/react");
7
+ var _Button = _interopRequireDefault(require("../../Button"));
8
+ var _IconItem = _interopRequireDefault(require("../../IconItem"));
9
+ var _Scroller = _interopRequireDefault(require("../Scroller"));
10
+ var _jsxRuntime = require("react/jsx-runtime");
11
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
12
+ 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; }
13
+ 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; }
14
+ 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; }
15
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
16
+ 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); }
17
+ var keyDownUp = function keyDownUp(keyCode) {
18
+ return function (elm) {
19
+ _react.fireEvent.keyDown(elm, {
20
+ keyCode: keyCode
21
+ });
22
+ return _react.fireEvent.keyUp(elm, {
23
+ keyCode: keyCode
24
+ });
25
+ };
26
+ };
27
+ var pressEnterKey = keyDownUp(13);
28
+ var populateItems = function populateItems(_ref) {
29
+ var index = _ref.index;
30
+ var iconItemProps = {
31
+ background: '#ffffff',
32
+ bordered: true,
33
+ disabled: false,
34
+ label: "Icon ".concat(index)
35
+ };
36
+ return {
37
+ index: index,
38
+ iconItemProps: iconItemProps
39
+ };
40
+ };
41
+ var ContainerDivWithLeaveForConfig = (0, _SpotlightContainerDecorator["default"])({
42
+ leaveFor: {
43
+ left: '',
44
+ right: ''
45
+ }
46
+ }, 'div');
47
+ describe('Editable Scroller', function () {
48
+ var items;
49
+ var editableScrollerContents;
50
+ beforeEach(function () {
51
+ items = [];
52
+ for (var i = 0; i < 20; i++) {
53
+ items.push(populateItems({
54
+ index: i
55
+ }));
56
+ }
57
+ editableScrollerContents = items.map(function (item, index) {
58
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
59
+ "aria-label": "Icon ".concat(item.index),
60
+ "data-index": item.index,
61
+ style: {
62
+ order: index + 1
63
+ },
64
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(ContainerDivWithLeaveForConfig, {
65
+ children: [item.disabled ? null : /*#__PURE__*/(0, _jsxRuntime.jsx)(_Button["default"], {
66
+ "aria-label": "Delete",
67
+ icon: "trash"
68
+ }), item.disabled ? null : /*#__PURE__*/(0, _jsxRuntime.jsx)(_Button["default"], {
69
+ "aria-label": "Hide",
70
+ icon: "minus"
71
+ }), item.disabled ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_Button["default"], {
72
+ "aria-label": "Show",
73
+ icon: "plus"
74
+ }) : null]
75
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_IconItem["default"], _objectSpread(_objectSpread({}, item.iconItemProps), {}, {
76
+ disabled: item.iconItemProps['disabled'] || item.hidden
77
+ }))]
78
+ }, item.index);
79
+ });
80
+ });
81
+ afterEach(function () {
82
+ items = null;
83
+ editableScrollerContents = null;
84
+ });
85
+ describe('Select Item', function () {
86
+ test('should have selected class and custom selected class when item is selected', function () {
87
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_Scroller["default"], {
88
+ direction: "horizontal",
89
+ editable: {
90
+ css: {
91
+ 'selected': 'customSelected'
92
+ },
93
+ onComplete: jest.fn(),
94
+ removeItemFuncRef: jest.fn(),
95
+ hideItemFuncRef: jest.fn(),
96
+ showItemFuncRef: jest.fn(),
97
+ focusItemFuncRef: jest.fn(),
98
+ selectItemBy: 'press'
99
+ },
100
+ children: editableScrollerContents
101
+ }));
102
+ var item = _react.screen.getByLabelText('Icon 0');
103
+ pressEnterKey(item);
104
+ expect(item).toHaveClass('selected');
105
+ expect(item).toHaveClass('customSelected');
106
+ });
107
+ test('should not have selected class and custom selected class and should have custom focused class when item is unselected', function () {
108
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_Scroller["default"], {
109
+ direction: "horizontal",
110
+ editable: {
111
+ css: {
112
+ 'selected': 'customSelected',
113
+ 'focused': 'customFocused'
114
+ },
115
+ onComplete: jest.fn(),
116
+ removeItemFuncRef: jest.fn(),
117
+ hideItemFuncRef: jest.fn(),
118
+ showItemFuncRef: jest.fn(),
119
+ focusItemFuncRef: jest.fn(),
120
+ selectItemBy: 'press'
121
+ },
122
+ children: editableScrollerContents
123
+ }));
124
+ _spotlight["default"].setPointerMode(false);
125
+ var item = _react.screen.getByLabelText('Icon 0');
126
+ pressEnterKey(item);
127
+ pressEnterKey(item);
128
+ expect(item).not.toHaveClass('selected');
129
+ expect(item).not.toHaveClass('customSelected');
130
+ expect(item).toHaveClass('customFocused');
131
+ });
132
+ });
133
+ });