@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,225 @@
1
+ "use strict";
2
+
3
+ var _FloatingLayer = require("@enact/ui/FloatingLayer");
4
+ require("@testing-library/jest-dom");
5
+ var _react = require("@testing-library/react");
6
+ var _userEvent = _interopRequireDefault(require("@testing-library/user-event"));
7
+ var _ColorPicker = _interopRequireDefault(require("../ColorPicker"));
8
+ var _utils = require("../utils");
9
+ var _jsxRuntime = require("react/jsx-runtime");
10
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
11
+ function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
12
+ 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."); }
13
+ 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; } }
14
+ 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; }
15
+ 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; } }
16
+ function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
17
+ 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); }
18
+ 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); }); }; }
19
+ var FloatingLayerController = (0, _FloatingLayer.FloatingLayerDecorator)('div');
20
+ var changeSliderValueByKey = /*#__PURE__*/function () {
21
+ var _ref = _asyncToGenerator(function* (element, steps, decrease) {
22
+ var keyCode = decrease ? 37 : 39;
23
+ yield _react.fireEvent.mouseOver(element);
24
+ for (var i = 0; i < steps; i++) {
25
+ yield _react.fireEvent.keyDown(element, {
26
+ keyCode: keyCode
27
+ });
28
+ }
29
+ });
30
+ return function changeSliderValueByKey(_x, _x2, _x3) {
31
+ return _ref.apply(this, arguments);
32
+ };
33
+ }();
34
+ var sliderValues = function sliderValues(elements) {
35
+ var values = [];
36
+ elements.forEach(function (element) {
37
+ values.push(element.getAttribute('aria-valuetext'));
38
+ });
39
+ return values;
40
+ };
41
+ describe('ColorPicker', function () {
42
+ afterEach(function () {
43
+ jest.clearAllMocks();
44
+ });
45
+ test('should open and close ColorPicker popup', /*#__PURE__*/_asyncToGenerator(function* () {
46
+ var closeButtonText = '󯿵';
47
+ var user = _userEvent["default"].setup();
48
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(FloatingLayerController, {
49
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_ColorPicker["default"], {})
50
+ }));
51
+ var colorPickerButton = _react.screen.getByRole('button');
52
+ yield user.click(colorPickerButton);
53
+ var closeButton = _react.screen.queryByText(closeButtonText);
54
+ expect(closeButton).not.toBeNull();
55
+ yield user.click(closeButton);
56
+ expect(_react.screen.queryByText(closeButtonText)).toBeNull();
57
+ }));
58
+ test('should not open ColorPicker popup if disabled is set to true', /*#__PURE__*/_asyncToGenerator(function* () {
59
+ var closeButtonText = '󯿵';
60
+ var user = _userEvent["default"].setup();
61
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(FloatingLayerController, {
62
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_ColorPicker["default"], {
63
+ disabled: true
64
+ })
65
+ }));
66
+ var colorPickerButton = _react.screen.getByRole('button');
67
+ yield user.click(colorPickerButton);
68
+ var closeButton = _react.screen.queryByText(closeButtonText);
69
+ expect(closeButton).toBeNull();
70
+ }));
71
+ test('should have the text set', /*#__PURE__*/_asyncToGenerator(function* () {
72
+ var text = 'Color Picker';
73
+ var user = _userEvent["default"].setup();
74
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(FloatingLayerController, {
75
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_ColorPicker["default"], {
76
+ text: text
77
+ })
78
+ }));
79
+ var colorPickerText = _react.screen.queryByText(text);
80
+ expect(colorPickerText).not.toBeNull();
81
+ yield user.click(colorPickerText);
82
+ var popupText = _react.screen.queryAllByText(text)[1];
83
+ expect(popupText).not.toBeUndefined();
84
+ }));
85
+ test('should have the color set', /*#__PURE__*/_asyncToGenerator(function* () {
86
+ var color = '#00FF00';
87
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(FloatingLayerController, {
88
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_ColorPicker["default"], {
89
+ color: color
90
+ })
91
+ }));
92
+ var expected = "background-image: ".concat(color);
93
+ var colorPickerButton = _react.screen.getByRole('button');
94
+ expect(colorPickerButton).toHaveStyle(expected);
95
+ }));
96
+ test('should have the presetColors', /*#__PURE__*/_asyncToGenerator(function* () {
97
+ var presetColors = ['#FF0000', '#00FF00', '#0000FF'];
98
+ var presetColorsRGB = ['rgb(255, 0, 0)', 'rgb(0, 255, 0)', 'rgb(0, 0, 255)'];
99
+ var user = _userEvent["default"].setup();
100
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(FloatingLayerController, {
101
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_ColorPicker["default"], {
102
+ presetColors: presetColors
103
+ })
104
+ }));
105
+ var colorPickerButton = _react.screen.getByRole('button');
106
+ yield user.click(colorPickerButton);
107
+ var buttons = _react.screen.getAllByRole('button');
108
+ var buttonsWithSpecificStyle = buttons.filter(function (element) {
109
+ var compoundStyle = window.getComputedStyle(element);
110
+ return presetColorsRGB.find(function (color) {
111
+ return color === compoundStyle.getPropertyValue('background-color');
112
+ });
113
+ });
114
+ expect(buttonsWithSpecificStyle.length).toEqual(presetColors.length);
115
+ }));
116
+ test('should emit an colorHandler event when select color from presetColors', /*#__PURE__*/_asyncToGenerator(function* () {
117
+ var color = '#FFFFFF';
118
+ var colorHandler = jest.fn();
119
+ var presetColors = ['#FF0000'];
120
+ var user = _userEvent["default"].setup();
121
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(FloatingLayerController, {
122
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_ColorPicker["default"], {
123
+ color: color,
124
+ colorHandler: colorHandler,
125
+ presetColors: presetColors
126
+ })
127
+ }));
128
+ var colorPickerButton = _react.screen.getByRole('button');
129
+ yield user.click(colorPickerButton);
130
+ var button = _react.screen.getAllByRole('button')[2];
131
+ Object.defineProperty(button, 'offsetParent', {
132
+ value: {
133
+ id: presetColors[0]
134
+ }
135
+ });
136
+ yield user.click(button);
137
+ expect(colorHandler).toHaveBeenCalled();
138
+ }));
139
+ test('should change color when hue, saturation and lightness sliders values changed', /*#__PURE__*/_asyncToGenerator(function* () {
140
+ var color = '#00FF00';
141
+ var colorHandler = jest.fn();
142
+ var user = _userEvent["default"].setup();
143
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(FloatingLayerController, {
144
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_ColorPicker["default"], {
145
+ color: color,
146
+ colorHandler: colorHandler
147
+ })
148
+ }));
149
+ var colorPickerButton = _react.screen.getByRole('button');
150
+ yield user.click(colorPickerButton);
151
+ var sliders = _react.screen.getAllByRole('slider');
152
+ var _sliderValues = sliderValues(sliders),
153
+ _sliderValues2 = _slicedToArray(_sliderValues, 3),
154
+ hue = _sliderValues2[0],
155
+ saturation = _sliderValues2[1],
156
+ lightness = _sliderValues2[2];
157
+ yield changeSliderValueByKey(sliders[0], 30);
158
+ _react.fireEvent.blur(sliders[0]);
159
+ yield changeSliderValueByKey(sliders[1], 30, true);
160
+ _react.fireEvent.blur(sliders[1]);
161
+ yield changeSliderValueByKey(sliders[2], 30, true);
162
+ _react.fireEvent.blur(sliders[2]);
163
+ var _sliderValues3 = sliderValues(sliders),
164
+ _sliderValues4 = _slicedToArray(_sliderValues3, 3),
165
+ changedHue = _sliderValues4[0],
166
+ changedSaturation = _sliderValues4[1],
167
+ changedLightness = _sliderValues4[2];
168
+ expect(hue).not.toEqual(changedHue);
169
+ expect(saturation).not.toEqual(changedSaturation);
170
+ expect(lightness).not.toEqual(changedLightness);
171
+ }));
172
+
173
+ // Utility functions
174
+ test('should return hsl from hex color if length is 4', function () {
175
+ var hexBlueColor = '#00F';
176
+ var hexGreenColor = '#0F0';
177
+ var hexPinkColor = '#F9A';
178
+ var hexRedColor = '#F00';
179
+ var hslBlueColor = (0, _utils.hexToHSL)(hexBlueColor);
180
+ var hslGreenColor = (0, _utils.hexToHSL)(hexGreenColor);
181
+ var hslPinkColor = (0, _utils.hexToHSL)(hexPinkColor);
182
+ var hslRedColor = (0, _utils.hexToHSL)(hexRedColor);
183
+ var expectedBlue = {
184
+ h: 240,
185
+ s: 100,
186
+ l: 50
187
+ };
188
+ var expectedGreen = {
189
+ h: 120,
190
+ s: 100,
191
+ l: 50
192
+ };
193
+ var expectedPink = {
194
+ h: 350,
195
+ s: 100,
196
+ l: 80
197
+ };
198
+ var expectedRed = {
199
+ h: 0,
200
+ s: 100,
201
+ l: 50
202
+ };
203
+ expect(hslBlueColor).toEqual(expectedBlue);
204
+ expect(hslGreenColor).toEqual(expectedGreen);
205
+ expect(hslPinkColor).toEqual(expectedPink);
206
+ expect(hslRedColor).toEqual(expectedRed);
207
+ });
208
+ test('should return hex from hsl color', function () {
209
+ var hslAquaColor = (0, _utils.HSLToHex)(180, 100, 50);
210
+ var hslBlueColor = (0, _utils.HSLToHex)(240, 100, 50);
211
+ var hslFuchsiaColor = (0, _utils.HSLToHex)(300, 100, 50);
212
+ var hslRedColor = (0, _utils.HSLToHex)(0, 100, 50);
213
+ var hslYellowColor = (0, _utils.HSLToHex)(60, 100, 50);
214
+ var hexAquaColor = '#00ffff';
215
+ var hexBlueColor = '#0000ff';
216
+ var hexFuchsiaColor = '#ff00ff';
217
+ var hexRedColor = '#ff0000';
218
+ var hexYellowColor = '#ffff00';
219
+ expect(hslAquaColor).toEqual(hexAquaColor);
220
+ expect(hslBlueColor).toEqual(hexBlueColor);
221
+ expect(hslFuchsiaColor).toEqual(hexFuchsiaColor);
222
+ expect(hslRedColor).toEqual(hexRedColor);
223
+ expect(hslYellowColor).toEqual(hexYellowColor);
224
+ });
225
+ });
@@ -0,0 +1,135 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.hexToHSL = exports.HSLToHex = void 0;
7
+ /**
8
+ * Checks for valid hex color, otherwise returns the black color.
9
+ *
10
+ * @param {String} hex Hex color
11
+ * @returns {String} Valid hex color
12
+ * @private
13
+ */
14
+ var checkHex = function checkHex(hex) {
15
+ if (/^#[0-9A-F]{3,6}$/i.test(hex)) return hex;
16
+ return '#000000';
17
+ };
18
+
19
+ /**
20
+ * Converts hex color to hue, saturation, and lightness values.
21
+ *
22
+ * @param {String} hexColor
23
+ * @returns {{s: number, h: number, l: number}} HSL values
24
+ * @private
25
+ */
26
+ var hexToHSL = exports.hexToHSL = function hexToHSL(hexColor) {
27
+ var hex = checkHex(hexColor);
28
+ // Convert hex to RGB first
29
+ var r = 0,
30
+ g = 0,
31
+ b = 0;
32
+ if (hex.length === 4) {
33
+ r = parseInt(hex[1] + hex[1], 16);
34
+ g = parseInt(hex[2] + hex[2], 16);
35
+ b = parseInt(hex[3] + hex[3], 16);
36
+ } else if (hex.length === 7) {
37
+ r = parseInt(hex.slice(1, 3), 16);
38
+ g = parseInt(hex.slice(3, 5), 16);
39
+ b = parseInt(hex.slice(5), 16);
40
+ }
41
+
42
+ // Then convert RGB to HSL
43
+ r /= 255;
44
+ g /= 255;
45
+ b /= 255;
46
+ var cmin = Math.min(r, g, b),
47
+ cmax = Math.max(r, g, b),
48
+ delta = cmax - cmin,
49
+ h,
50
+ s,
51
+ l;
52
+ if (delta === 0) {
53
+ h = 0;
54
+ } else if (cmax === r) {
55
+ h = (g - b) / delta % 6;
56
+ } else if (cmax === g) {
57
+ h = (b - r) / delta + 2;
58
+ } else {
59
+ h = (r - g) / delta + 4;
60
+ }
61
+ h = Math.round(h * 60);
62
+ if (h < 0) {
63
+ h += 360;
64
+ }
65
+ l = (cmax + cmin) / 2;
66
+ s = delta === 0 ? 0 : delta / (1 - Math.abs(2 * l - 1));
67
+ s = +(s * 100).toFixed(1);
68
+ l = +(l * 100).toFixed(1);
69
+ return {
70
+ h: Math.round(h),
71
+ s: Math.round(s),
72
+ l: Math.round(l)
73
+ };
74
+ };
75
+
76
+ /**
77
+ * Converts hue, saturation, and lightness values to hex color.
78
+ *
79
+ * @param {Number} h Hue value
80
+ * @param {Number} s Saturation value
81
+ * @param {Number} l Lightness value
82
+ * @returns {string} 6-digit hex color
83
+ * @private
84
+ */
85
+ var HSLToHex = exports.HSLToHex = function HSLToHex(h, s, l) {
86
+ s /= 100;
87
+ l /= 100;
88
+ var c = (1 - Math.abs(2 * l - 1)) * s,
89
+ x = c * (1 - Math.abs(h / 60 % 2 - 1)),
90
+ m = l - c / 2,
91
+ r = 0,
92
+ g = 0,
93
+ b = 0;
94
+ if (0 <= h && h < 60) {
95
+ r = c;
96
+ g = x;
97
+ b = 0;
98
+ } else if (60 <= h && h < 120) {
99
+ r = x;
100
+ g = c;
101
+ b = 0;
102
+ } else if (120 <= h && h < 180) {
103
+ r = 0;
104
+ g = c;
105
+ b = x;
106
+ } else if (180 <= h && h < 240) {
107
+ r = 0;
108
+ g = x;
109
+ b = c;
110
+ } else if (240 <= h && h < 300) {
111
+ r = x;
112
+ g = 0;
113
+ b = c;
114
+ } else if (300 <= h && h < 360) {
115
+ r = c;
116
+ g = 0;
117
+ b = x;
118
+ }
119
+ // Having obtained RGB, convert channels to hex
120
+ r = Math.round((r + m) * 255).toString(16);
121
+ g = Math.round((g + m) * 255).toString(16);
122
+ b = Math.round((b + m) * 255).toString(16);
123
+
124
+ // Prepend 0s, if necessary
125
+ if (r.length === 1) {
126
+ r = "0" + r;
127
+ }
128
+ if (g.length === 1) {
129
+ g = "0" + g;
130
+ }
131
+ if (b.length === 1) {
132
+ b = "0" + b;
133
+ }
134
+ return "#" + r + g + b;
135
+ };
@@ -0,0 +1,106 @@
1
+ // Type definitions for limestone/ContextualMenuDecorator
2
+
3
+ import { ToggleableProps as ui_Toggleable_ToggleableProps } from "@enact/ui/Toggleable";
4
+ import { SkinnableProps as limestone_Skinnable_SkinnableProps } from "limestone/Skinnable";
5
+ import { ContextualPopupDecoratorProps as limestone_ContextualPopupDecorator_ContextualPopupDecoratorProps } from "limestone/ContextualPopupDecorator";
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 ContextualMenuDecoratorConfig extends Object {
11
+ /**
12
+ * Disables passing the `skin` prop to the wrapped component.
13
+ */
14
+ noSkin?: boolean;
15
+ /**
16
+ * The prop in which to pass the value of `open` state of ContextualMenuDecorator to the
17
+ wrapped component.
18
+ */
19
+ openProp?: string;
20
+ }
21
+ export interface ContextualMenuDecoratorProps
22
+ extends Merge<
23
+ Merge<ui_Toggleable_ToggleableProps, limestone_Skinnable_SkinnableProps>,
24
+ limestone_ContextualPopupDecorator_ContextualPopupDecoratorProps
25
+ > {
26
+ /**
27
+ * Direction of popup with respect to the wrapped component.
28
+ */
29
+ direction?:
30
+ | "above"
31
+ | "above center"
32
+ | "above left"
33
+ | "above right"
34
+ | "below"
35
+ | "below center"
36
+ | "below left"
37
+ | "below right"
38
+ | "left middle"
39
+ | "left top"
40
+ | "left bottom"
41
+ | "right middle"
42
+ | "right top"
43
+ | "right bottom";
44
+ /**
45
+ * The items to be displayed in the `ContextualMenuDecorator` when `open` .
46
+ *
47
+ * Takes either an array of strings or an array of objects. When strings, the values will be
48
+ used in the generated components as the readable text. When objects, the properties will
49
+ be passed onto an `Item` component and `children` as well as a unique `key` property are
50
+ required.
51
+ */
52
+ menuItems?:
53
+ | string[]
54
+ | {
55
+ key: number | string;
56
+ children: string | React.ComponentType;
57
+ [propName: string]: any;
58
+ }[];
59
+ /**
60
+ * Offset from the activator to apply to the position of the popup.
61
+ */
62
+ offset?: "none" | "overlap" | "small" | "large";
63
+ /**
64
+ * Called when the user has attempted to close the popup.
65
+ *
66
+ * This may occur either when the close button is clicked or when spotlight focus
67
+ moves outside the boundary of the popup. Setting `spotlightRestrict` to `'self-only'`
68
+ will prevent Spotlight focus from leaving the popup.
69
+ */
70
+ onClose?: Function;
71
+ /**
72
+ * Called when the popup is opened.
73
+ */
74
+ onOpen?: Function;
75
+ /**
76
+ * CSS class name to pass to the
77
+ .
78
+ *
79
+ * This is commonly used to set width and height of the popup.
80
+ */
81
+ popupClassName?: string;
82
+ /**
83
+ * An object containing properties to be passed to popup component.
84
+ */
85
+ popupProps?: object;
86
+ /**
87
+ * Restricts or prioritizes spotlight navigation.
88
+ *
89
+ * Allowed values are:
90
+ * * `'none'` - Spotlight can move freely within and beyond the popup
91
+ * * `'self-first'` - Spotlight should prefer components within the popup over
92
+ components beyond the popup, or
93
+ * * `'self-only'` - Spotlight can only be set within the popup
94
+ */
95
+ spotlightRestrict?: "none" | "self-first" | "self-only";
96
+ }
97
+ export function ContextualMenuDecorator<P>(
98
+ config: ContextualMenuDecoratorConfig,
99
+ Component: React.ComponentType<P> | string,
100
+ ): React.ComponentType<P & ContextualMenuDecoratorProps>;
101
+
102
+ export function ContextualMenuDecorator<P>(
103
+ Component: React.ComponentType<P> | string,
104
+ ): React.ComponentType<P & ContextualMenuDecoratorProps>;
105
+
106
+ export default ContextualMenuDecorator;