@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,301 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports["default"] = exports.DaySelectorDecorator = void 0;
7
+ exports.getSelectedDayString = getSelectedDayString;
8
+ var _handle = require("@enact/core/handle");
9
+ var _hoc = _interopRequireDefault(require("@enact/core/hoc"));
10
+ var _util = require("@enact/core/util");
11
+ var _i18n = _interopRequireDefault(require("@enact/i18n"));
12
+ var _DateFmt = _interopRequireDefault(require("ilib/lib/DateFmt"));
13
+ var _LocaleInfo = _interopRequireDefault(require("ilib/lib/LocaleInfo"));
14
+ var _propTypes = _interopRequireDefault(require("prop-types"));
15
+ var _react = require("react");
16
+ var _$L = _interopRequireDefault(require("../internal/$L"));
17
+ var _jsxRuntime = require("react/jsx-runtime");
18
+ var _excluded = ["dayNameLength", "locale", "selected"];
19
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
20
+ 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; }
21
+ 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; }
22
+ 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; }
23
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
24
+ 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); }
25
+ 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; }
26
+ 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; }
27
+ var SELECTED_DAY_TYPES = {
28
+ EVERY_DAY: 0,
29
+ EVERY_WEEKDAY: 1,
30
+ EVERY_WEEKEND: 2,
31
+ SELECTED_DAYS: 3,
32
+ SELECTED_NONE: 4
33
+ };
34
+ function localizeDay(day, firstDayOfWeek) {
35
+ return (day - firstDayOfWeek + 7) % 7;
36
+ }
37
+ function generalizeDay(day, firstDayOfWeek) {
38
+ return (day + firstDayOfWeek) % 7;
39
+ }
40
+
41
+ // Accepts a localized array with "firstDayOfWeek" at index 0 and returns a
42
+ // "Sunday at index 0" array.
43
+ function generalizeSelected(selected, state) {
44
+ if (state.firstDayOfWeek === 0 || !selected) {
45
+ return selected;
46
+ }
47
+ return selected.map(function (v) {
48
+ return generalizeDay(v, state.firstDayOfWeek);
49
+ }).sort();
50
+ }
51
+
52
+ // Accepts a "Sunday at index 0" selected array or number and returns a
53
+ // localized array or number.
54
+ function localizeSelected(selected, state) {
55
+ if (state.firstDayOfWeek === 0 || selected == null) {
56
+ return selected;
57
+ }
58
+ if (typeof selected === 'number') {
59
+ return localizeDay(selected, state.firstDayOfWeek);
60
+ }
61
+ return selected.map(function (v) {
62
+ return localizeDay(v, state.firstDayOfWeek);
63
+ });
64
+ }
65
+ var memoLocaleState = (0, _util.memoize)(function (key, dayNameLength) {
66
+ var df = new _DateFmt["default"]({
67
+ length: 'full'
68
+ });
69
+ var sdf = new _DateFmt["default"]({
70
+ length: dayNameLength
71
+ });
72
+ var li = new _LocaleInfo["default"](_i18n["default"].getLocale());
73
+ var daysOfWeek = df.getDaysOfWeek();
74
+ var days = sdf.getDaysOfWeek();
75
+ var firstDayOfWeek = li.getFirstDayOfWeek();
76
+ var state = {
77
+ abbreviatedDayNames: days,
78
+ firstDayOfWeek: firstDayOfWeek,
79
+ fullDayNames: daysOfWeek,
80
+ weekendEnd: 0,
81
+ weekendStart: 6
82
+ };
83
+ if (li.getWeekEndStart) {
84
+ state.weekendStart = li.getWeekEndStart();
85
+ }
86
+ if (li.getWeekEndEnd) {
87
+ state.weekendEnd = li.getWeekEndEnd();
88
+ }
89
+ return state;
90
+ });
91
+
92
+ // Accepts an array of names in "sunday at index 0" and returns a localized array
93
+ function orderDays(names, state) {
94
+ var result = [];
95
+ for (var i = 0; i < 7; i++) {
96
+ var index = generalizeDay(i, state.firstDayOfWeek);
97
+ result[i] = names[index];
98
+ }
99
+ return result;
100
+ }
101
+ function getLocaleState(dayNameLength, locale) {
102
+ if (typeof window === 'undefined') {
103
+ return {
104
+ abbreviatedDayNames: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],
105
+ firstDayOfWeek: 0,
106
+ fullDayNames: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],
107
+ weekendEnd: 0,
108
+ weekendStart: 6
109
+ };
110
+ }
111
+ return memoLocaleState(dayNameLength + locale, dayNameLength);
112
+ }
113
+
114
+ /*
115
+ * Determines which day type should be returned, based on the selected indices.
116
+ *
117
+ * @param {Number[]} [selected] Array of day indexes
118
+ * @param {String[]} [dayNameLength] The format for names of days
119
+ * @param {String[]} [locale]
120
+ *
121
+ * @returns {Number}
122
+ */
123
+ function calcSelectedDayType(selected, state) {
124
+ if (selected == null || !Array.isArray(selected)) return SELECTED_DAY_TYPES.SELECTED_NONE;
125
+ var weekendStart = false,
126
+ weekendEnd = false,
127
+ index;
128
+ var length = selected.length,
129
+ weekendLength = state.weekendStart === state.weekendEnd ? 1 : 2;
130
+ if (length === 0) return SELECTED_DAY_TYPES.SELECTED_NONE;
131
+ if (length === 7) return SELECTED_DAY_TYPES.EVERY_DAY;
132
+ for (var i = 0; i < length; i++) {
133
+ index = selected[i];
134
+ weekendStart = weekendStart || state.weekendStart === index;
135
+ weekendEnd = weekendEnd || state.weekendEnd === index;
136
+ }
137
+ if (weekendStart && weekendEnd && length === weekendLength) {
138
+ return SELECTED_DAY_TYPES.EVERY_WEEKEND;
139
+ } else if (!weekendStart && !weekendEnd && length === 7 - weekendLength) {
140
+ return SELECTED_DAY_TYPES.EVERY_WEEKDAY;
141
+ } else {
142
+ return SELECTED_DAY_TYPES.SELECTED_DAYS;
143
+ }
144
+ }
145
+
146
+ /**
147
+ * Determines whether it should return "Every Day", "Every Weekend", "Every Weekday" or list of
148
+ * days for a given selected day type.
149
+ *
150
+ * @memberof limestone/DayPicker
151
+ * @param {(Number|Number[])?} selected Selected day(s)
152
+ * @param {String} [noneText] String to be returned when no days are selected
153
+ * @param {String} [dayNameLength] The format for names of days
154
+ *
155
+ * @returns {String} "Every Day", "Every Weekend", "Every Week", list of days or `noneText`
156
+ */
157
+ function getSelectedDayString(selected) {
158
+ var noneText = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
159
+ var dayNameLength = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'long';
160
+ var everyDayText = (0, _$L["default"])('Every Day'),
161
+ everyWeekdayText = (0, _$L["default"])('Every Weekday'),
162
+ everyWeekendText = (0, _$L["default"])('Every Weekend'),
163
+ locale = _i18n["default"].getLocale();
164
+ var state = getLocaleState(dayNameLength, locale);
165
+ if (selected != null) {
166
+ selected = (0, _util.coerceArray)(selected);
167
+ }
168
+ var type = calcSelectedDayType(selected, state);
169
+ var format = function format(list) {
170
+ var separator = locale === 'fa-IR' ? '، ' : ', ';
171
+
172
+ // sort the selected array with firstDayOfWeek first before mapping to text
173
+ return list.slice().sort(function (a, b) {
174
+ return localizeDay(a, state.firstDayOfWeek) - localizeDay(b, state.firstDayOfWeek);
175
+ }).map(function (dayIndex) {
176
+ return state.abbreviatedDayNames[dayIndex];
177
+ }).join(separator);
178
+ };
179
+ switch (type) {
180
+ case SELECTED_DAY_TYPES.EVERY_DAY:
181
+ return everyDayText;
182
+ case SELECTED_DAY_TYPES.EVERY_WEEKEND:
183
+ return everyWeekendText;
184
+ case SELECTED_DAY_TYPES.EVERY_WEEKDAY:
185
+ return everyWeekdayText;
186
+ case SELECTED_DAY_TYPES.SELECTED_DAYS:
187
+ return format(selected);
188
+ case SELECTED_DAY_TYPES.SELECTED_NONE:
189
+ return noneText;
190
+ }
191
+ }
192
+ var daySelectorDecoratorDefaultProps = {
193
+ dayNameLength: 'long',
194
+ disabled: false
195
+ };
196
+
197
+ /**
198
+ * Applies Limestone specific behaviors to {@link limestone/DayPicker.DayPicker|DayPicker}.
199
+ *
200
+ * @hoc
201
+ * @memberof limestone/DayPicker
202
+ * @mixes ui/Changeable.Changeable
203
+ * @mixes limestone/Skinnable.Skinnable
204
+ * @omit onChange
205
+ * @omit value
206
+ * @omit defaultValue
207
+ * @private
208
+ */
209
+ var DaySelectorDecorator = exports.DaySelectorDecorator = (0, _hoc["default"])(function (config, Wrapped) {
210
+ var DaySelector = function DaySelector(props) {
211
+ var daySelectorDecoratorProps = (0, _util.setDefaultProps)(props, daySelectorDecoratorDefaultProps);
212
+ var dayNameLength = daySelectorDecoratorProps.dayNameLength,
213
+ locale = daySelectorDecoratorProps.locale,
214
+ selected = daySelectorDecoratorProps.selected,
215
+ rest = _objectWithoutProperties(daySelectorDecoratorProps, _excluded);
216
+ var state = getLocaleState(dayNameLength, locale);
217
+ var localSelected = localizeSelected(selected, state);
218
+ var abbreviatedDayNames = orderDays(state.abbreviatedDayNames, state);
219
+ var fullDayNames = orderDays(state.fullDayNames, state);
220
+ var handleSelect = (0, _react.useCallback)(function (_ref) {
221
+ var selectedDay = _ref.selected;
222
+ // adjust the selected value beforehand so getSelectedDayString always operates on the
223
+ // standard, "Sunday as index 0" format
224
+ var generalSelected = generalizeSelected(selectedDay, state);
225
+ var content = getSelectedDayString(generalSelected, '', dayNameLength);
226
+ (0, _handle.forwardCustom)('onSelect', function () {
227
+ return {
228
+ selected: generalSelected,
229
+ content: content
230
+ };
231
+ })(null, daySelectorDecoratorProps);
232
+ }, [dayNameLength, daySelectorDecoratorProps, state]);
233
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(Wrapped, _objectSpread(_objectSpread({}, rest), {}, {
234
+ onSelect: handleSelect,
235
+ selected: localSelected,
236
+ children: abbreviatedDayNames.map(function (children, index) {
237
+ return {
238
+ children: children,
239
+ // "short" dayNameLength can result in the same name so adding index
240
+ key: "".concat(index, " ").concat(children),
241
+ 'aria-label': fullDayNames[index]
242
+ };
243
+ })
244
+ }));
245
+ };
246
+ DaySelector.displayName = 'DaySelectorDecorator';
247
+ DaySelector.propTypes = /** @lends limestone/DayPicker.DaySelectorDecorator.prototype */{
248
+ /**
249
+ * The "aria-label" for the selector.
250
+ *
251
+ * @memberof limestone/DayPicker.DaySelectorDecorator.prototype
252
+ * @type {String}
253
+ * @private
254
+ */
255
+ 'aria-label': _propTypes["default"].string,
256
+ /**
257
+ * The format for names of days.
258
+ *
259
+ * @type {('short'|'medium'|'long'|'full')}
260
+ * @default 'long'
261
+ * @public
262
+ */
263
+ dayNameLength: _propTypes["default"].oneOf(['short', 'medium', 'long', 'full']),
264
+ /**
265
+ * Applies a disabled style and prevents interacting with the component.
266
+ *
267
+ * @type {Boolean}
268
+ * @default false
269
+ * @public
270
+ */
271
+ disabled: _propTypes["default"].bool,
272
+ /**
273
+ * Current locale.
274
+ *
275
+ * @type {String}
276
+ * @public
277
+ */
278
+ locale: _propTypes["default"].string,
279
+ /**
280
+ * Called when a day is selected or unselected.
281
+ *
282
+ * The event payload will be an object with the following members:
283
+ * * `selected` - An array of numbers representing the selected days, 0 indexed
284
+ * * `content` - Localized string representing the selected days
285
+ *
286
+ * @type {Function}
287
+ * @public
288
+ */
289
+ onSelect: _propTypes["default"].func,
290
+ /**
291
+ * An array of numbers (0-indexed) representing the selected days of the week.
292
+ *
293
+ * @type {Number|Number[]}
294
+ * @public
295
+ */
296
+ selected: _propTypes["default"].oneOfType([_propTypes["default"].number, _propTypes["default"].arrayOf(_propTypes["default"].number)])
297
+ };
298
+ DaySelector.defaultPropValues = daySelectorDecoratorDefaultProps;
299
+ return DaySelector;
300
+ });
301
+ var _default = exports["default"] = DaySelectorDecorator;
@@ -0,0 +1,3 @@
1
+ {
2
+ "main": "DayPicker.js"
3
+ }
@@ -0,0 +1,138 @@
1
+ "use strict";
2
+
3
+ var _i18n = _interopRequireDefault(require("@enact/i18n"));
4
+ require("@testing-library/jest-dom");
5
+ var _react = require("@testing-library/react");
6
+ var _userEvent = _interopRequireDefault(require("@testing-library/user-event"));
7
+ var _DayPicker = _interopRequireWildcard(require("../DayPicker"));
8
+ var _jsxRuntime = require("react/jsx-runtime");
9
+ 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); }
10
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
11
+ function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }
12
+ function _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; }
13
+ function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
14
+ 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; } }
15
+ 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; }
16
+ describe('DayPicker', function () {
17
+ test('should not select any item when there is no passed prop `selected`', function () {
18
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_DayPicker["default"], {}));
19
+ var allDays = _react.screen.getAllByRole('checkbox');
20
+ var _iterator = _createForOfIteratorHelper(allDays),
21
+ _step;
22
+ try {
23
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
24
+ var day = _step.value;
25
+ expect(day).toHaveAttribute('aria-checked', 'false');
26
+ }
27
+ } catch (err) {
28
+ _iterator.e(err);
29
+ } finally {
30
+ _iterator.f();
31
+ }
32
+ });
33
+ test('should select day when passed prop \'selected\'', function () {
34
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_DayPicker["default"], {
35
+ selected: [1]
36
+ }));
37
+ var selectedDay = _react.screen.getAllByRole('checkbox')[2];
38
+ var expected = 'selected';
39
+ expect(selectedDay).toHaveClass(expected);
40
+ });
41
+ test('should select day when passed prop \'selected\' as a number', function () {
42
+ // We need to change the locale to firstDayOfWeek !== 0.
43
+ // If firstDayOfWeek === 0, the number type check conditional statement
44
+ // is skipped due to the fast execution path of localizeSelected(), which
45
+ // reduces code coverage.
46
+ _i18n["default"].setLocale('es-ES');
47
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_DayPicker["default"], {
48
+ locale: "es-ES",
49
+ selected: 1
50
+ }));
51
+ var selectedDay = _react.screen.getAllByRole('checkbox')[1];
52
+ var expected = 'selected';
53
+ expect(selectedDay).toHaveClass(expected);
54
+ });
55
+ test('should emit an onSelect event with \'onSelect\' type when selecting days', /*#__PURE__*/_asyncToGenerator(function* () {
56
+ _i18n["default"].setLocale('en-US');
57
+ var handleSelect = jest.fn();
58
+ var user = _userEvent["default"].setup();
59
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_DayPicker["default"], {
60
+ onSelect: handleSelect
61
+ }));
62
+ var item = _react.screen.getAllByRole('checkbox')[2];
63
+ yield user.click(item);
64
+ expect(handleSelect).toHaveBeenCalledWith({
65
+ content: 'Mon',
66
+ selected: [1],
67
+ type: 'onSelect'
68
+ });
69
+ }));
70
+ test('should include \'content\' in onSelect event payload which respects dayNameLength', /*#__PURE__*/_asyncToGenerator(function* () {
71
+ var handleSelect = jest.fn();
72
+ var user = _userEvent["default"].setup();
73
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_DayPicker["default"], {
74
+ onSelect: handleSelect,
75
+ dayNameLength: "short"
76
+ }));
77
+
78
+ // select Monday
79
+ var item = _react.screen.getByText('Monday');
80
+ yield user.click(item);
81
+ var expected = {
82
+ // M is the "short" value from ilib for Monday
83
+ content: 'M'
84
+ };
85
+ var actual = handleSelect.mock.calls[0][0];
86
+ expect(actual).toMatchObject(expected);
87
+ }));
88
+ test('should return \'None\' when selected is null', function () {
89
+ var label = (0, _DayPicker.getSelectedDayString)(null, 'None');
90
+ var expected = 'None';
91
+ expect(label).toBe(expected);
92
+ });
93
+ test('should return \'None\' when selected is empty', function () {
94
+ var label = (0, _DayPicker.getSelectedDayString)([], 'None');
95
+ var expected = 'None';
96
+ expect(label).toBe(expected);
97
+ });
98
+ test('should return \'Every Weekend\' when all selected', function () {
99
+ var selected = [0, 6];
100
+ var label = (0, _DayPicker.getSelectedDayString)(selected);
101
+ var expected = 'Every Weekend';
102
+ expect(label).toBe(expected);
103
+ });
104
+ test('should return \'Every Weekday\' when all selected', function () {
105
+ var selected = [1, 2, 3, 4, 5];
106
+ var label = (0, _DayPicker.getSelectedDayString)(selected);
107
+ var expected = 'Every Weekday';
108
+ expect(label).toBe(expected);
109
+ });
110
+ test('should return \'Every Day\' when all selected', function () {
111
+ var selected = [0, 1, 2, 3, 4, 5, 6];
112
+ var label = (0, _DayPicker.getSelectedDayString)(selected);
113
+ var expected = 'Every Day';
114
+ expect(label).toBe(expected);
115
+ });
116
+ describe('with alternate first day of week', function () {
117
+ test('should accept and emit a generalized selected array', /*#__PURE__*/_asyncToGenerator(function* () {
118
+ _i18n["default"].setLocale('es-ES');
119
+ var handleSelect = jest.fn();
120
+ var user = _userEvent["default"].setup();
121
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_DayPicker["default"], {
122
+ defaultSelected: [0],
123
+ locale: "es-ES",
124
+ onSelect: handleSelect
125
+ }));
126
+
127
+ // select Lunes (Monday) which is the first day of the week for es-ES
128
+ var item = _react.screen.getAllByRole('checkbox')[0];
129
+ yield user.click(item);
130
+ var expected = {
131
+ // Expect Sunday (0) and Monday (1) to be selected
132
+ selected: [0, 1]
133
+ };
134
+ var actual = handleSelect.mock.calls[0][0];
135
+ expect(actual).toMatchObject(expected);
136
+ }));
137
+ });
138
+ });
@@ -0,0 +1,135 @@
1
+ // Type definitions for limestone/Dropdown
2
+
3
+ import * as React from "react";
4
+ import { ChangeableProps as ui_Changeable_ChangeableProps } from "@enact/ui/Changeable";
5
+ import { ToggleableProps as ui_Toggleable_ToggleableProps } from "@enact/ui/Toggleable";
6
+ import { SpotlightContainerDecoratorProps as spotlight_SpotlightContainerDecorator_SpotlightContainerDecoratorProps } from "@enact/spotlight/SpotlightContainerDecorator";
7
+ import { ButtonProps as limestone_Button_ButtonProps } from "limestone/Button";
8
+ import { ContextualPopupDecoratorProps as limestone_ContextualPopupDecorator_ContextualPopupDecoratorProps } from "limestone/ContextualPopupDecorator";
9
+
10
+ type Omit<T, K extends keyof T> = Pick<T, Exclude<keyof T, K>>;
11
+ type Merge<M, N> = Omit<M, Extract<keyof M, keyof N>> & N;
12
+
13
+ export interface DropdownBaseProps
14
+ extends Omit<
15
+ Merge<
16
+ limestone_Button_ButtonProps,
17
+ limestone_ContextualPopupDecorator_ContextualPopupDecoratorProps
18
+ >,
19
+ "popupComponent"
20
+ > {
21
+ /**
22
+ * The "aria-label" for the Dropdown.
23
+ */
24
+ "aria-label"?: string;
25
+ /**
26
+ * Items to be displayed in the `Dropdown` when `open` .
27
+ *
28
+ * Takes either an array of strings or an array of objects. When strings, the values will be
29
+ used in the generated components as the readable text. When objects, the properties will
30
+ be passed onto an `Item` component; `children` as well as a unique `key` properties are
31
+ required.
32
+ */
33
+ children?:
34
+ | string[]
35
+ | {
36
+ key: number | string;
37
+ children: string | React.ComponentType;
38
+ [propName: string]: any;
39
+ }[];
40
+ /**
41
+ * Placement of the Dropdown.
42
+ */
43
+ direction?: "above" | "below";
44
+ /**
45
+ * Disables Dropdown, making it non-interactive.
46
+ */
47
+ disabled?: boolean;
48
+ /**
49
+ * Called when the Dropdown is closing.
50
+ */
51
+ onClose?: Function;
52
+ /**
53
+ * Called when the Dropdown is opening.
54
+ */
55
+ onOpen?: Function;
56
+ /**
57
+ * Called when an item is selected.
58
+ *
59
+ * The event payload will be an object with the following members:
60
+ * * `data` - The value for the option as received in the `children` prop
61
+ * * `selected` - Number representing the selected option, 0 indexed
62
+ */
63
+ onSelect?: Function;
64
+ /**
65
+ * Displays the items.
66
+ */
67
+ open?: boolean;
68
+ /**
69
+ * Text displayed in the Dropdown when nothing is selected.
70
+ *
71
+ * The placeholder will be replaced by the selected item.
72
+ */
73
+ placeholder?: string;
74
+ /**
75
+ * Index of the selected item.
76
+ */
77
+ selected?: number;
78
+ /**
79
+ * The size of the Dropdown's component.
80
+ */
81
+ size?: "large" | "small";
82
+ /**
83
+ * Primary title text of the Dropdown.
84
+ */
85
+ title?: string;
86
+ /**
87
+ * Width of the Dropdown.
88
+ */
89
+ width?: "huge" | "large" | "x-large" | "medium" | "small" | "tiny" | number;
90
+ }
91
+ /**
92
+ * A stateless Dropdown component.
93
+ */
94
+
95
+ export class DropdownBase extends React.Component<
96
+ Merge<React.HTMLProps<HTMLElement>, DropdownBaseProps>
97
+ > {}
98
+
99
+ export interface DropdownDecoratorProps
100
+ extends Merge<
101
+ Merge<ui_Changeable_ChangeableProps, ui_Toggleable_ToggleableProps>,
102
+ spotlight_SpotlightContainerDecorator_SpotlightContainerDecoratorProps
103
+ > {
104
+ /**
105
+ * Displays the items.
106
+ */
107
+ open?: boolean;
108
+ /**
109
+ * Index of the selected item.
110
+ */
111
+ selected?: number;
112
+ /**
113
+ * The initial selected index when `selected` is not defined.
114
+ */
115
+ defaultSelected?: number;
116
+ }
117
+ export function DropdownDecorator<P>(
118
+ Component: React.ComponentType<P> | string,
119
+ ): React.ComponentType<P & DropdownDecoratorProps>;
120
+
121
+ export interface DropdownProps extends DropdownBaseProps {}
122
+ /**
123
+ * A Limestone Dropdown component.
124
+ *
125
+ * By default, `Dropdown` maintains the state of its `selected` property. Supply the
126
+ `defaultSelected` property to control its initial value. If you wish to directly control updates
127
+ to the component, supply a value to `selected` at creation time and update it in response to
128
+ `onSelect` events.
129
+ */
130
+
131
+ export class Dropdown extends React.Component<
132
+ Merge<React.HTMLProps<HTMLElement>, DropdownProps>
133
+ > {}
134
+
135
+ export default Dropdown;