@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,3 @@
1
+ {
2
+ "main": "Switch.js"
3
+ }
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+
3
+ require("@testing-library/jest-dom");
4
+ var _react = require("@testing-library/react");
5
+ var _userEvent = _interopRequireDefault(require("@testing-library/user-event"));
6
+ var _Switch = _interopRequireWildcard(require("../Switch"));
7
+ var _jsxRuntime = require("react/jsx-runtime");
8
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
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
+ describe('Switch Specs', function () {
13
+ test('should not have `selected` className', function () {
14
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_Switch.SwitchBase, {}));
15
+ var unexpected = 'selected';
16
+ var actual = _react.screen.getByRole('button');
17
+ expect(actual).not.toHaveClass(unexpected);
18
+ });
19
+ test('should have `selected` className', function () {
20
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_Switch.SwitchBase, {
21
+ selected: true
22
+ }));
23
+ var expected = 'selected';
24
+ var actual = _react.screen.getByRole('button');
25
+ expect(actual).toHaveClass(expected);
26
+ });
27
+ test('should have `animated` className', function () {
28
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_Switch.SwitchBase, {}));
29
+ var expected = 'animated';
30
+ var actual = _react.screen.getByRole('button');
31
+ expect(actual).toHaveClass(expected);
32
+ });
33
+ test('should not have `animated` className when `noAnimation`', function () {
34
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_Switch.SwitchBase, {
35
+ noAnimation: true
36
+ }));
37
+ var unexpected = 'animated';
38
+ var actual = _react.screen.getByRole('button');
39
+ expect(actual).not.toHaveClass(unexpected);
40
+ });
41
+ test('toggle Switch', /*#__PURE__*/_asyncToGenerator(function* () {
42
+ var handleToggle = jest.fn();
43
+ var user = _userEvent["default"].setup();
44
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_Switch["default"], {
45
+ onToggle: handleToggle
46
+ }));
47
+ var actual = _react.screen.getByRole('button');
48
+ yield user.click(actual);
49
+ var expectedClass = 'selected';
50
+ expect(actual).toHaveClass(expectedClass);
51
+ var expectedTimes = 1;
52
+ expect(handleToggle).toHaveBeenCalledTimes(expectedTimes);
53
+ }));
54
+ });
@@ -0,0 +1,56 @@
1
+ // Type definitions for limestone/SwitchItem
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 SwitchItemBaseProps
11
+ extends Omit<limestone_Item_ItemProps, "iconComponent"> {
12
+ /**
13
+ * Customizes the component by mapping the supplied collection of CSS class names to the
14
+ corresponding internal elements and states of this component.
15
+ *
16
+ * The following classes are supported:
17
+ * * `switchItem` - The root class name
18
+ */
19
+ css?: object;
20
+ /**
21
+ * If true the switch will be selected.
22
+ */
23
+ selected?: boolean;
24
+ /**
25
+ * Nodes to be inserted after `children` and before the switch.
26
+ */
27
+ slotAfter?: React.ReactNode;
28
+ }
29
+ /**
30
+ * Renders an item with a .
31
+ */
32
+
33
+ export class SwitchItemBase extends React.Component<
34
+ Merge<React.HTMLProps<HTMLElement>, SwitchItemBaseProps>
35
+ > {}
36
+
37
+ export interface SwitchItemDecoratorProps
38
+ extends ui_Toggleable_ToggleableProps {}
39
+ export function SwitchItemDecorator<P>(
40
+ Component: React.ComponentType<P> | string,
41
+ ): React.ComponentType<P & SwitchItemDecoratorProps>;
42
+
43
+ export interface SwitchItemProps
44
+ extends Merge<SwitchItemBaseProps, SwitchItemDecoratorProps> {}
45
+ /**
46
+ * A Limestone-styled item with a switch component.
47
+ *
48
+ * `SwitchItem` will manage its `selected` state via unless set
49
+ directly.
50
+ */
51
+
52
+ export class SwitchItem extends React.Component<
53
+ Merge<React.HTMLProps<HTMLElement>, SwitchItemProps>
54
+ > {}
55
+
56
+ export default SwitchItem;
@@ -0,0 +1,144 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports["default"] = exports.SwitchItemDecorator = exports.SwitchItemBase = exports.SwitchItem = void 0;
7
+ var _kind = _interopRequireDefault(require("@enact/core/kind"));
8
+ var _propTypes = _interopRequireDefault(require("prop-types"));
9
+ var _compose = _interopRequireDefault(require("ramda/src/compose"));
10
+ var _Pure = _interopRequireDefault(require("@enact/ui/internal/Pure"));
11
+ var _Slottable = _interopRequireDefault(require("@enact/ui/Slottable"));
12
+ var _Toggleable = _interopRequireDefault(require("@enact/ui/Toggleable"));
13
+ var _Item = require("../Item");
14
+ var _Skinnable = _interopRequireDefault(require("../Skinnable"));
15
+ var _Switch = require("../Switch");
16
+ var _SwitchItemModule = _interopRequireDefault(require("./SwitchItem.module.css"));
17
+ var _jsxRuntime = require("react/jsx-runtime");
18
+ var _excluded = ["children", "css", "selected", "slotAfter"];
19
+ /**
20
+ * Provides Limestone-themed item component and interactive toggleable switch.
21
+ *
22
+ * @example
23
+ * <SwitchItem>
24
+ * Item
25
+ * </SwitchItem>
26
+ *
27
+ * @module limestone/SwitchItem
28
+ * @exports SwitchItem
29
+ * @exports SwitchItemBase
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 Switch = (0, _Skinnable["default"])(_Switch.SwitchBase);
41
+ Switch.displayName = 'Switch';
42
+
43
+ /**
44
+ * Renders an item with a {@link limestone/Switch|Switch}.
45
+ *
46
+ * @class SwitchItemBase
47
+ * @memberof limestone/SwitchItem
48
+ * @extends limestone/Item.Item
49
+ * @omit iconComponent
50
+ * @ui
51
+ * @public
52
+ */
53
+ var SwitchItemBase = exports.SwitchItemBase = (0, _kind["default"])({
54
+ name: 'SwitchItem',
55
+ propTypes: /** @lends limestone/SwitchItem.SwitchItemBase.prototype */{
56
+ /**
57
+ * Customizes the component by mapping the supplied collection of CSS class names to the
58
+ * corresponding internal elements and states of this component.
59
+ *
60
+ * The following classes are supported:
61
+ *
62
+ * * `switchItem` - The root class name
63
+ *
64
+ * @type {Object}
65
+ * @public
66
+ */
67
+ css: _propTypes["default"].object,
68
+ /**
69
+ * If true the switch will be selected.
70
+ *
71
+ * @type {Boolean}
72
+ * @default false
73
+ * @public
74
+ */
75
+ selected: _propTypes["default"].bool,
76
+ /**
77
+ * Nodes to be inserted after `children` and before the switch.
78
+ *
79
+ * @type {Node}
80
+ * @public
81
+ */
82
+ slotAfter: _propTypes["default"].node
83
+ },
84
+ defaultProps: {
85
+ selected: false
86
+ },
87
+ styles: {
88
+ css: _SwitchItemModule["default"],
89
+ className: 'switchItem',
90
+ publicClassNames: ['switchItem']
91
+ },
92
+ render: function render(_ref) {
93
+ var children = _ref.children,
94
+ css = _ref.css,
95
+ selected = _ref.selected,
96
+ slotAfter = _ref.slotAfter,
97
+ rest = _objectWithoutProperties(_ref, _excluded);
98
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(Item, _objectSpread(_objectSpread({
99
+ "data-webos-voice-intent": "SetToggleItem",
100
+ role: "button"
101
+ }, rest), {}, {
102
+ "aria-pressed": selected,
103
+ css: css,
104
+ selected: selected,
105
+ children: [children, /*#__PURE__*/(0, _jsxRuntime.jsxs)("slotAfter", {
106
+ children: [slotAfter, /*#__PURE__*/(0, _jsxRuntime.jsx)(Switch, {
107
+ selected: selected,
108
+ css: css
109
+ })]
110
+ })]
111
+ }));
112
+ }
113
+ });
114
+
115
+ /**
116
+ * Adds interactive functionality to `SwitchItem`.
117
+ *
118
+ * @class SwitchItemDecorator
119
+ * @memberof limestone/SwitchItem
120
+ * @mixes ui/Toggleable.Toggleable
121
+ * @hoc
122
+ * @public
123
+ */
124
+ var SwitchItemDecorator = exports.SwitchItemDecorator = (0, _compose["default"])((0, _Toggleable["default"])({
125
+ toggleProp: 'onClick'
126
+ }), (0, _Slottable["default"])({
127
+ slots: ['label', 'slotAfter', 'slotBefore']
128
+ }));
129
+
130
+ /**
131
+ * A Limestone-styled item with a switch component.
132
+ *
133
+ * `SwitchItem` will manage its `selected` state via {@link ui/Toggleable|Toggleable} unless set
134
+ * directly.
135
+ *
136
+ * @class SwitchItem
137
+ * @memberof limestone/SwitchItem
138
+ * @extends limestone/SwitchItem.SwitchItemBase
139
+ * @mixes limestone/SwitchItem.SwitchItemDecorator
140
+ * @ui
141
+ * @public
142
+ */
143
+ var SwitchItem = exports.SwitchItem = (0, _Pure["default"])(SwitchItemDecorator(SwitchItemBase));
144
+ var _default = exports["default"] = SwitchItem;
@@ -0,0 +1,31 @@
1
+ :global(.neutral) .switchItem.selected .bg {
2
+ background-color: transparent;
3
+ }
4
+ :global(.enact-a11y-high-contrast) :global(.neutral):global(.highContrast) .switchItem.selected .bg {
5
+ background-color: transparent;
6
+ }
7
+ :global(.light) .switchItem.selected .bg {
8
+ background-color: transparent;
9
+ }
10
+ :global(.game) {
11
+ --semantic-color-surface-default: #2d224c;
12
+ --semantic-color-surface-default-focused: #6d2fa1;
13
+ --semantic-color-on-surface-main-focused: #e6e6e6;
14
+ }
15
+ :global(.game) .switchItem.selected .bg {
16
+ background-color: transparent;
17
+ }
18
+ :global(.green) :global(.game) {
19
+ --semantic-color-surface-default: #1F2C24;
20
+ --semantic-color-surface-default-focused: #3ea07d;
21
+ }
22
+ :global(.green) :global(.game) .switchItem.selected .bg {
23
+ background-color: transparent;
24
+ }
25
+ :global(.orange) :global(.game) {
26
+ --semantic-color-surface-default: #422923;
27
+ --semantic-color-surface-default-focused: #b85f23;
28
+ }
29
+ :global(.orange) :global(.game) .switchItem.selected .bg {
30
+ background-color: transparent;
31
+ }
@@ -0,0 +1,3 @@
1
+ {
2
+ "main": "SwitchItem.js"
3
+ }
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+
3
+ require("@testing-library/jest-dom");
4
+ var _react = require("@testing-library/react");
5
+ var _userEvent = _interopRequireDefault(require("@testing-library/user-event"));
6
+ var _SwitchItem = _interopRequireWildcard(require("../SwitchItem"));
7
+ var _jsxRuntime = require("react/jsx-runtime");
8
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
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
+ describe('SwitchItem Specs', function () {
13
+ test('should contain a Switch', function () {
14
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_SwitchItem.SwitchItemBase, {}));
15
+ var expected = 'switch';
16
+ var actual = _react.screen.getAllByRole('button')[1];
17
+ expect(actual).toHaveClass(expected);
18
+ });
19
+ test('should pass `selected` to Switch element', function () {
20
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_SwitchItem.SwitchItemBase, {
21
+ selected: true
22
+ }));
23
+ var expected = 'selected';
24
+ var SwitchItemElement = _react.screen.getAllByRole('button')[0];
25
+ var SwitchElement = _react.screen.getAllByRole('button')[1];
26
+ expect(SwitchItemElement).toHaveClass(expected);
27
+ expect(SwitchElement).toHaveClass(expected);
28
+ });
29
+ test('should toggle Switch', /*#__PURE__*/_asyncToGenerator(function* () {
30
+ var handleToggle = jest.fn();
31
+ var user = _userEvent["default"].setup();
32
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_SwitchItem["default"], {
33
+ onToggle: handleToggle
34
+ }));
35
+ var actual = _react.screen.getAllByRole('button')[1];
36
+ yield user.click(actual);
37
+ var expectedClass = 'selected';
38
+ expect(actual).toHaveClass(expectedClass);
39
+ var expectedTimes = 1;
40
+ expect(handleToggle).toHaveBeenCalledTimes(expectedTimes);
41
+ }));
42
+ test('should render correct children', function () {
43
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_SwitchItem["default"], {
44
+ children: "Hello SwitchItem"
45
+ }));
46
+ var Child = _react.screen.getByText(/Hello SwitchItem/i);
47
+ expect(Child).toBeInTheDocument();
48
+ });
49
+ });
@@ -0,0 +1,142 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.getNavigableFilter = exports["default"] = exports.RefocusDecorator = void 0;
7
+ exports.getTabsSpotlightId = getTabsSpotlightId;
8
+ var _spotlight = _interopRequireDefault(require("@enact/spotlight"));
9
+ var _IdProvider = require("@enact/ui/internal/IdProvider");
10
+ var _propTypes = _interopRequireDefault(require("prop-types"));
11
+ var _react = require("react");
12
+ var _TabGroupModule = _interopRequireDefault(require("./TabGroup.module.css"));
13
+ var _jsxRuntime = require("react/jsx-runtime");
14
+ var _excluded = ["blockCollapseOnPortrait", "collapsed", "index", "onCollapse", "onTabAnimationEnd", "orientation", "spotlightId"];
15
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
16
+ 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; }
17
+ 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; }
18
+ 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; }
19
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
20
+ 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); }
21
+ 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; }
22
+ 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; }
23
+ function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
24
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
25
+ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
26
+ function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
27
+ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
28
+ function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
29
+ function getTabsSpotlightId(spotlightId, collapsed) {
30
+ return "".concat(spotlightId, "-tabs-").concat(collapsed ? 'collapsed' : 'expanded');
31
+ }
32
+ function getContainerNode(containerId) {
33
+ return document.querySelector("[data-spotlight-id='".concat(containerId, "']"));
34
+ }
35
+ var getNavigableFilter = exports.getNavigableFilter = function getNavigableFilter(spotlightId, collapsed) {
36
+ return function (elem) {
37
+ return _spotlight["default"].getPointerMode() || !elem.classList.contains(_TabGroupModule["default"].tab) && elem.dataset.spotlightId !== getTabsSpotlightId(spotlightId, collapsed);
38
+ };
39
+ };
40
+ function useScreenOrientation() {
41
+ var getOrientation = function getOrientation() {
42
+ return window.innerWidth > window.innerHeight ? 'landscape' : 'portrait';
43
+ };
44
+ var _useState = (0, _react.useState)(getOrientation()),
45
+ _useState2 = _slicedToArray(_useState, 2),
46
+ orientation = _useState2[0],
47
+ setOrientation = _useState2[1];
48
+ (0, _react.useEffect)(function () {
49
+ var handleResize = function handleResize() {
50
+ setOrientation(getOrientation());
51
+ };
52
+ window.addEventListener('resize', handleResize);
53
+
54
+ // Cleanup
55
+ return function () {
56
+ return window.removeEventListener('resize', handleResize);
57
+ };
58
+ }, []);
59
+ return orientation;
60
+ }
61
+ var RefocusDecorator = exports.RefocusDecorator = function RefocusDecorator(Wrapped) {
62
+ // eslint-disable-next-line no-shadow
63
+ function RefocusDecorator(_ref) {
64
+ var blockCollapseOnPortrait = _ref.blockCollapseOnPortrait,
65
+ collapsed = _ref.collapsed,
66
+ index = _ref.index,
67
+ onCollapse = _ref.onCollapse,
68
+ onTabAnimationEnd = _ref.onTabAnimationEnd,
69
+ orientation = _ref.orientation,
70
+ spotlightId = _ref.spotlightId,
71
+ rest = _objectWithoutProperties(_ref, _excluded);
72
+ var _useId = (0, _IdProvider.useId)({
73
+ prefix: 'lime-tablayout-'
74
+ }),
75
+ generateId = _useId.generateId;
76
+ var screenOrientation = useScreenOrientation();
77
+ var screenOrientationRef = (0, _react.useRef)(null);
78
+
79
+ // generate an id for the component (and a derived id for the tabs) so we can refocus them
80
+ // generating a different ID by orientation so swapping orientations doesn't clear container
81
+ // config before the new one is mounted
82
+ spotlightId = spotlightId || generateId(orientation || 'vertical');
83
+ (0, _react.useLayoutEffect)(function () {
84
+ if (!_spotlight["default"].getPointerMode() && !_spotlight["default"].isPaused()) {
85
+ var current = _spotlight["default"].getCurrent(),
86
+ tabsSpotlightId = getTabsSpotlightId(spotlightId, collapsed),
87
+ containerNode = getContainerNode(tabsSpotlightId);
88
+ if (!current || containerNode && containerNode.querySelector(".".concat(_TabGroupModule["default"].selected)) !== current) {
89
+ _spotlight["default"].focus(spotlightId);
90
+ }
91
+ }
92
+ }, [index]); // eslint-disable-line react-hooks/exhaustive-deps
93
+
94
+ (0, _react.useEffect)(function () {
95
+ _spotlight["default"].set(spotlightId, {
96
+ navigableFilter: collapsed && orientation !== 'horizontal' ? getNavigableFilter(spotlightId, collapsed) : null
97
+ });
98
+ }, [collapsed, orientation, spotlightId]);
99
+ (0, _react.useEffect)(function () {
100
+ if (!blockCollapseOnPortrait && screenOrientationRef.current !== screenOrientation) {
101
+ if (screenOrientation === 'portrait') {
102
+ var currentFocusedElement = document.querySelector(':focus'),
103
+ tabsSpotlightId = getTabsSpotlightId(spotlightId, false),
104
+ tabsContainer = getContainerNode(tabsSpotlightId);
105
+ if (tabsContainer && !tabsContainer.contains(currentFocusedElement)) {
106
+ onCollapse();
107
+ }
108
+ }
109
+ screenOrientationRef.current = screenOrientation;
110
+ }
111
+ }, [blockCollapseOnPortrait, onCollapse, screenOrientation, spotlightId]);
112
+ var handleTabAnimationEnd = (0, _react.useCallback)(function (ev) {
113
+ if (onTabAnimationEnd) {
114
+ onTabAnimationEnd(ev);
115
+ }
116
+ if (!collapsed && !_spotlight["default"].getPointerMode() && !_spotlight["default"].isPaused()) {
117
+ var tabsSpotlightId = getTabsSpotlightId(spotlightId, collapsed);
118
+ var containerNode = getContainerNode(tabsSpotlightId);
119
+ if (containerNode && !containerNode.contains(_spotlight["default"].getCurrent())) {
120
+ _spotlight["default"].focus(tabsSpotlightId);
121
+ }
122
+ }
123
+ }, [collapsed, onTabAnimationEnd, spotlightId]);
124
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(Wrapped, _objectSpread(_objectSpread({}, rest), {}, {
125
+ collapsed: collapsed,
126
+ index: index,
127
+ onCollapse: onCollapse,
128
+ onTabAnimationEnd: handleTabAnimationEnd,
129
+ orientation: orientation,
130
+ spotlightId: spotlightId
131
+ }));
132
+ }
133
+ RefocusDecorator.propTypes = {
134
+ collapsed: _propTypes["default"].bool,
135
+ index: _propTypes["default"].number,
136
+ onTabAnimationEnd: _propTypes["default"].func,
137
+ orientation: _propTypes["default"].string,
138
+ spotlightId: _propTypes["default"].string
139
+ };
140
+ return RefocusDecorator;
141
+ };
142
+ var _default = exports["default"] = RefocusDecorator;
@@ -0,0 +1,84 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports["default"] = void 0;
7
+ var _kind = _interopRequireDefault(require("@enact/core/kind"));
8
+ var _propTypes = _interopRequireDefault(require("prop-types"));
9
+ var _jsxRuntime = require("react/jsx-runtime");
10
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
11
+ /**
12
+ * An item for the TabLayout.
13
+ *
14
+ * Configures the tab title and icon.
15
+ *
16
+ * @class Tab
17
+ * @memberof limestone/TabLayout
18
+ * @ui
19
+ * @public
20
+ */var Tab = (0, _kind["default"])({
21
+ name: 'Tab',
22
+ propTypes: /** @lends limestone/TabLayout.Tab.prototype */{
23
+ /**
24
+ * Title of the tab.
25
+ *
26
+ * @type {String}
27
+ * @required
28
+ * @public
29
+ */
30
+ title: _propTypes["default"].string.isRequired,
31
+ /**
32
+ * The contents to show when the tab is selected.
33
+ *
34
+ * @type {Node}
35
+ * @public
36
+ */
37
+ children: _propTypes["default"].node,
38
+ /**
39
+ * The icon content of the tab.
40
+ *
41
+ * @see {@link ui/Icon.IconBase.children}
42
+ * @type {String|Object}
43
+ * @public
44
+ */
45
+ icon: _propTypes["default"].oneOfType([_propTypes["default"].string, _propTypes["default"].object]),
46
+ /**
47
+ * Called when a tab is clicked.
48
+ *
49
+ * @type {Function}
50
+ * @public
51
+ */
52
+ onTabClick: _propTypes["default"].func,
53
+ /**
54
+ * Configuration props for a {@link limestone/Sprite.Sprite|Sprite} icon.
55
+ *
56
+ * All props on {@link limestone/Sprite.Sprite|Sprite} are supported here. By default,
57
+ * `stopped` will be set to `false` when the tab is focused and `true` otherwise. To
58
+ * override, pass `stopped` in this object.
59
+ *
60
+ * @see {@link limestone/Sprite.Sprite}
61
+ * @type {Object}
62
+ * @public
63
+ */
64
+ sprite: _propTypes["default"].object,
65
+ /**
66
+ * Key for the tab.
67
+ *
68
+ * Note: `TabLayout` automatically generates a key based on the title and icon combination.
69
+ * If this combination is not unique for all items, `tabKey` must be specified to make each
70
+ * tab have a unique (and persistent) key.
71
+ *
72
+ * @type {String|Number}
73
+ * @required
74
+ * @public
75
+ */
76
+ tabKey: _propTypes["default"].oneOfType([_propTypes["default"].string, _propTypes["default"].number])
77
+ },
78
+ render: function render() {
79
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
80
+ children: "Tab is only to be used in TabLayout!"
81
+ });
82
+ }
83
+ });
84
+ var _default = exports["default"] = Tab;