@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,292 @@
1
+ "use strict";
2
+
3
+ var _spotlight = _interopRequireDefault(require("@enact/spotlight"));
4
+ require("@testing-library/jest-dom");
5
+ var _react = require("@testing-library/react");
6
+ var _userEvent = _interopRequireDefault(require("@testing-library/user-event"));
7
+ var _ = require("../");
8
+ var _jsxRuntime = require("react/jsx-runtime");
9
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
10
+ function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }
11
+ function _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; }
12
+ var isPaused = function isPaused() {
13
+ return _spotlight["default"].isPaused() ? 'paused' : 'not paused';
14
+ };
15
+ describe('InputField Specs', function () {
16
+ test('should have an input element', function () {
17
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_.InputField, {}));
18
+ var inputField = _react.screen.getByLabelText('Input field');
19
+ expect(inputField).toBeInTheDocument();
20
+ });
21
+ test('should include a placeholder if specified', function () {
22
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_.InputField, {
23
+ placeholder: "hello"
24
+ }));
25
+ var inputField = _react.screen.getByLabelText('hello Input field');
26
+ var expected = 'hello';
27
+ var actual = inputField.textContent;
28
+ expect(actual).toBe(expected);
29
+ });
30
+ test('should callback onChange with `onChange` type when the text changes', /*#__PURE__*/_asyncToGenerator(function* () {
31
+ var handleChange = jest.fn();
32
+ var value = 'blah';
33
+ var user = _userEvent["default"].setup();
34
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_.InputField, {
35
+ onChange: handleChange
36
+ }));
37
+ var inputField = _react.screen.getByPlaceholderText('');
38
+ yield user.type(inputField, value);
39
+ var expected = {
40
+ type: 'onChange'
41
+ };
42
+ var actual = handleChange.mock.calls.length && handleChange.mock.calls[0][0];
43
+ expect(handleChange).toHaveBeenCalled();
44
+ expect(actual).toMatchObject(expected);
45
+ }));
46
+ test('should forward an event with a stopPropagation method from onChange handler', function () {
47
+ var handleChange = jest.fn();
48
+ var value = 'blah';
49
+ var evt = {
50
+ target: {
51
+ value: value
52
+ },
53
+ stopPropagation: jest.fn()
54
+ };
55
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_.InputField, {
56
+ onChange: handleChange
57
+ }));
58
+ var inputField = _react.screen.getByPlaceholderText('');
59
+ _react.fireEvent.change(inputField, evt);
60
+ var actual = typeof handleChange.mock.calls[0][0].stopPropagation === 'function';
61
+ expect(actual).toBeTruthy();
62
+ });
63
+ test('should not bubble the native event when stopPropagation from onChange is called', /*#__PURE__*/_asyncToGenerator(function* () {
64
+ var handleChange = jest.fn();
65
+ var value = 'smt';
66
+ function stop(ev) {
67
+ ev.stopPropagation();
68
+ }
69
+ var user = _userEvent["default"].setup();
70
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
71
+ onChange: handleChange,
72
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_.InputField, {
73
+ onChange: stop
74
+ })
75
+ }));
76
+ var inputField = _react.screen.getByPlaceholderText('');
77
+ yield user.type(inputField, value);
78
+ expect(handleChange).not.toHaveBeenCalled();
79
+ }));
80
+ test('should callback onBeforeChange with `onBeforeChange` type before the text changes', /*#__PURE__*/_asyncToGenerator(function* () {
81
+ var handleBeforeChange = jest.fn();
82
+ var value = 'blah';
83
+ var user = _userEvent["default"].setup();
84
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_.InputField, {
85
+ onBeforeChange: handleBeforeChange
86
+ }));
87
+ var inputField = _react.screen.getByPlaceholderText('');
88
+ yield user.type(inputField, value);
89
+ var expected = {
90
+ type: 'onBeforeChange'
91
+ };
92
+ var actual = handleBeforeChange.mock.calls.length && handleBeforeChange.mock.calls[0][0];
93
+ expect(handleBeforeChange).toHaveBeenCalled();
94
+ expect(actual).toMatchObject(expected);
95
+ }));
96
+ test('should prevent onChange if onBeforeChange prevents', /*#__PURE__*/_asyncToGenerator(function* () {
97
+ var handleBeforeChange = jest.fn(function (ev) {
98
+ return ev.preventDefault();
99
+ });
100
+ var handleChange = jest.fn();
101
+ var value = 'blah';
102
+ var user = _userEvent["default"].setup();
103
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_.InputField, {
104
+ onBeforeChange: handleBeforeChange,
105
+ onChange: handleChange
106
+ }));
107
+ var inputField = _react.screen.getByPlaceholderText('');
108
+ yield user.type(inputField, value);
109
+ expect(handleChange).not.toHaveBeenCalled();
110
+ }));
111
+ test('should blur input on enter if dismissOnEnter', function () {
112
+ var handleChange = jest.fn();
113
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_.InputField, {
114
+ onBlur: handleChange,
115
+ dismissOnEnter: true
116
+ }));
117
+ var inputField = _react.screen.getByPlaceholderText('');
118
+ _react.fireEvent.mouseDown(inputField);
119
+ _react.fireEvent.keyUp(inputField, {
120
+ which: 13,
121
+ keyCode: 13,
122
+ code: 13
123
+ });
124
+ expect(handleChange).toHaveBeenCalled();
125
+ });
126
+ test('should activate input on enter', function () {
127
+ var handleChange = jest.fn();
128
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_.InputField, {
129
+ onActivate: handleChange
130
+ }));
131
+ var inputField = _react.screen.getByPlaceholderText('');
132
+ _react.fireEvent.keyDown(inputField, {
133
+ which: 13,
134
+ keyCode: 13,
135
+ code: 13
136
+ });
137
+ _react.fireEvent.keyUp(inputField, {
138
+ which: 13,
139
+ keyCode: 13,
140
+ code: 13
141
+ });
142
+ expect(handleChange).toHaveBeenCalled();
143
+ });
144
+ test('should not activate input on enter when disabled', function () {
145
+ var handleChange = jest.fn();
146
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_.InputField, {
147
+ disabled: true,
148
+ onActivate: handleChange
149
+ }));
150
+ var inputField = _react.screen.getByPlaceholderText('');
151
+ _react.fireEvent.keyDown(inputField, {
152
+ which: 13,
153
+ keyCode: 13,
154
+ code: 13
155
+ });
156
+ _react.fireEvent.keyUp(inputField, {
157
+ which: 13,
158
+ keyCode: 13,
159
+ code: 13
160
+ });
161
+ expect(handleChange).not.toHaveBeenCalled();
162
+ });
163
+ test('should be able to be disabled', function () {
164
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_.InputField, {
165
+ disabled: true
166
+ }));
167
+ var actual = _react.screen.getByLabelText('Input field');
168
+ var expected = 'disabled';
169
+ expect(actual).toHaveAttribute(expected);
170
+ });
171
+ test('should reflect the value if specified', function () {
172
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_.InputField, {
173
+ value: "hello"
174
+ }));
175
+ var inputField = _react.screen.getByLabelText('hello Input field');
176
+ var actual = inputField.textContent;
177
+ var expected = 'hello';
178
+ expect(actual).toBe(expected);
179
+ });
180
+ test('should have dir equal to rtl when there is rtl text', function () {
181
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_.InputField, {
182
+ value: "\u05E9\u05D5\u05E2\u05DC \u05D4\u05D7\u05D5\u05DD \u05D4\u05D6\u05E8\u05D9\u05D6 \u05E7\u05E4\u05E5 \u05DE\u05E2\u05DC \u05D4\u05DB\u05DC\u05D1 \u05D4\u05E2\u05E6\u05DC\u05DF.\u05E6\u05D9\u05E4\u05D5\u05E8 \u05E2\u05E4\u05D4 \u05D4\u05E9\u05E2\u05D5\u05E2\u05D9\u05EA \u05E2\u05DD \u05E9\u05E7\u05D9"
183
+ }));
184
+ var inputField = _react.screen.getByLabelText('שועל החום הזריז קפץ מעל הכלב העצלן.ציפור עפה השעועית עם שקי' + ' Input field').children.item(2);
185
+ var expectedAttribute = 'dir';
186
+ var expectedValue = 'rtl';
187
+ expect(inputField).toHaveAttribute(expectedAttribute, expectedValue);
188
+ });
189
+ test('should have dir equal to ltr when there is ltr text', function () {
190
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_.InputField, {
191
+ value: "content"
192
+ }));
193
+ var inputField = _react.screen.getByPlaceholderText('');
194
+ var expectedAttribute = 'dir';
195
+ var expectedValue = 'ltr';
196
+ expect(inputField).toHaveAttribute(expectedAttribute, expectedValue);
197
+ });
198
+ test('should have dir equal to rtl when there is rtl text in the placeholder', function () {
199
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_.InputField, {
200
+ placeholder: "\u05E9\u05D5\u05E2\u05DC \u05D4\u05D7\u05D5\u05DD \u05D4\u05D6\u05E8\u05D9\u05D6 \u05E7\u05E4\u05E5 \u05DE\u05E2\u05DC \u05D4\u05DB\u05DC\u05D1 \u05D4\u05E2\u05E6\u05DC\u05DF.\u05E6\u05D9\u05E4\u05D5\u05E8 \u05E2\u05E4\u05D4 \u05D4\u05E9\u05E2\u05D5\u05E2\u05D9\u05EA \u05E2\u05DD \u05E9\u05E7\u05D9"
201
+ }));
202
+ var inputField = _react.screen.getByPlaceholderText('שועל החום הזריז קפץ מעל הכלב העצלן.ציפור עפה השעועית עם שקי');
203
+ var expectedAttribute = 'dir';
204
+ var expectedValue = 'rtl';
205
+ expect(inputField).toHaveAttribute(expectedAttribute, expectedValue);
206
+ });
207
+ test('should have dir equal to ltr when there is ltr text in the placeholder', function () {
208
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_.InputField, {
209
+ placeholder: "content"
210
+ }));
211
+ var inputField = _react.screen.getByPlaceholderText('content');
212
+ var expectedAttribute = 'dir';
213
+ var expectedValue = 'ltr';
214
+ expect(inputField).toHaveAttribute(expectedAttribute, expectedValue);
215
+ });
216
+ test('should have dir equal to rtl when there is ltr text in the placeholder, but rtl text in value', function () {
217
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_.InputField, {
218
+ placeholder: "content",
219
+ value: "\u05E9\u05D5\u05E2\u05DC \u05D4\u05D7\u05D5\u05DD \u05D4\u05D6\u05E8\u05D9\u05D6 \u05E7\u05E4\u05E5 \u05DE\u05E2\u05DC \u05D4\u05DB\u05DC\u05D1 \u05D4\u05E2\u05E6\u05DC\u05DF.\u05E6\u05D9\u05E4\u05D5\u05E8 \u05E2\u05E4\u05D4 \u05D4\u05E9\u05E2\u05D5\u05E2\u05D9\u05EA \u05E2\u05DD \u05E9\u05E7\u05D9"
220
+ }));
221
+ var inputField = _react.screen.getByPlaceholderText('content');
222
+ var expectedAttribute = 'dir';
223
+ var expectedValue = 'rtl';
224
+ expect(inputField).toHaveAttribute(expectedAttribute, expectedValue);
225
+ });
226
+ test('should have dir equal to ltr when there is rtl text in the placeholder, but ltr text in value', function () {
227
+ var placeholder = 'שועל החום הזריז קפץ מעל הכלב העצלן.ציפור עפה השעועית עם שקי';
228
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_.InputField, {
229
+ placeholder: placeholder,
230
+ value: "content"
231
+ }));
232
+ var inputField = _react.screen.getByPlaceholderText(placeholder);
233
+ var expectedAttribute = 'dir';
234
+ var expectedValue = 'ltr';
235
+ expect(inputField).toHaveAttribute(expectedAttribute, expectedValue);
236
+ });
237
+ test('should pause spotlight when input has focus', function () {
238
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_.InputField, {}));
239
+ var inputField = _react.screen.getByPlaceholderText('');
240
+ _react.fireEvent.mouseDown(inputField);
241
+ var expected = 'paused';
242
+ var actual = isPaused();
243
+ _spotlight["default"].resume();
244
+ expect(actual).toBe(expected);
245
+ });
246
+ test('should resume spotlight on unmount', function () {
247
+ var _render = (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_.InputField, {})),
248
+ unmount = _render.unmount;
249
+ var inputField = _react.screen.getByPlaceholderText('');
250
+ _react.fireEvent.mouseDown(inputField);
251
+ unmount();
252
+ var expected = 'not paused';
253
+ var actual = isPaused();
254
+ _spotlight["default"].resume();
255
+ expect(actual).toBe(expected);
256
+ });
257
+ test('should display invalid message if it invalid and invalid message exists', function () {
258
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_.InputField, {
259
+ invalid: true,
260
+ invalidMessage: "invalid message"
261
+ }));
262
+ var invalidText = _react.screen.getByText('invalid message').parentElement.parentElement;
263
+ var expected = 'tooltipLabel';
264
+ expect(invalidText).toBeInTheDocument();
265
+ expect(invalidText).toHaveClass(expected);
266
+ });
267
+ test('should not display invalid message if it is valid', function () {
268
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_.InputField, {
269
+ invalidMessage: "invalid message"
270
+ }));
271
+ var actual = _react.screen.queryByText('invalid message');
272
+ expect(actual).toBeNull();
273
+ });
274
+ test('should set voice intent if specified', function () {
275
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_.InputField, {
276
+ "data-webos-voice-intent": "Select"
277
+ }));
278
+ var inputField = _react.screen.getByPlaceholderText('');
279
+ var expectedAttribute = 'data-webos-voice-intent';
280
+ var expectedValue = 'Select';
281
+ expect(inputField).toHaveAttribute(expectedAttribute, expectedValue);
282
+ });
283
+ test('should set voice label if specified', function () {
284
+ var customLabel = 'input label';
285
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_.InputField, {
286
+ "data-webos-voice-label": customLabel
287
+ }));
288
+ var inputField = _react.screen.getByPlaceholderText('');
289
+ var expectedAttribute = 'data-webos-voice-label';
290
+ expect(inputField).toHaveAttribute(expectedAttribute, customLabel);
291
+ });
292
+ });
@@ -0,0 +1,56 @@
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 _Input = require("../Input");
7
+ var _jsxRuntime = require("react/jsx-runtime");
8
+ var FloatingLayerController = (0, _FloatingLayer.FloatingLayerDecorator)('div');
9
+ describe('InputPopup Specs', function () {
10
+ test('should be rendered opened if open is set to true', function () {
11
+ var placeholder = 'InputPopup Placeholder';
12
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(FloatingLayerController, {
13
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Input.InputPopup, {
14
+ open: true,
15
+ placeholder: placeholder
16
+ })
17
+ }));
18
+ var actual = _react.screen.getByPlaceholderText(placeholder);
19
+ expect(actual).toBeTruthy();
20
+ });
21
+ test('should set the input default value', function () {
22
+ var str = 'This is the default value';
23
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(FloatingLayerController, {
24
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Input.InputPopup, {
25
+ defaultValue: str,
26
+ open: true
27
+ })
28
+ }));
29
+ var actual = _react.screen.getByDisplayValue(str);
30
+ expect(actual).toBeTruthy();
31
+ });
32
+ test('should set the input value', function () {
33
+ var str = 'This is the value';
34
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(FloatingLayerController, {
35
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Input.InputPopup, {
36
+ open: true,
37
+ value: str
38
+ })
39
+ }));
40
+ var actual = _react.screen.getByDisplayValue(str);
41
+ expect(actual).toBeTruthy();
42
+ });
43
+ test('should set value instead defaultValue when both values are set', function () {
44
+ var strDefaultValue = 'This is the default value';
45
+ var strValue = 'This is the value';
46
+ (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(FloatingLayerController, {
47
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Input.InputPopup, {
48
+ defaultValue: strDefaultValue,
49
+ open: true,
50
+ value: strValue
51
+ })
52
+ }));
53
+ var actual = _react.screen.getByDisplayValue(strValue);
54
+ expect(actual).toBeTruthy();
55
+ });
56
+ });
package/Input/util.js ADDED
@@ -0,0 +1,130 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.limitNumberLength = exports.extractInputProps = exports.extractInputFieldProps = exports.convertToPasswordFormat = exports.calcAriaLabel = exports.SEPARATE_DIGITS_LIMIT = exports.OVERLAY_JOINED_DIGITS_LIMIT = exports.FULLSCREEN_JOINED_DIGITS_LIMIT = exports.DEFAULT_LENGTH = void 0;
7
+ var _$L = _interopRequireDefault(require("../internal/$L"));
8
+ var _warning = _interopRequireDefault(require("warning"));
9
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
10
+ // A default value for the numeric field length. Used by maxLength and minLength.
11
+ var DEFAULT_LENGTH = exports.DEFAULT_LENGTH = 4;
12
+
13
+ // The cutoff length, at which point the numeric field switches from separated boxes to one box
14
+ var SEPARATE_DIGITS_LIMIT = exports.SEPARATE_DIGITS_LIMIT = 6;
15
+ var OVERLAY_JOINED_DIGITS_LIMIT = exports.OVERLAY_JOINED_DIGITS_LIMIT = 10;
16
+ var FULLSCREEN_JOINED_DIGITS_LIMIT = exports.FULLSCREEN_JOINED_DIGITS_LIMIT = 25;
17
+
18
+ /**
19
+ * Determines the `aria-label` for an Input
20
+ *
21
+ * @method
22
+ * @memberof limestone/Input
23
+ * @param {String} prefix Text to precede the value in the aria-label
24
+ * @param {String} type `type` of the Input
25
+ * @param {String} [value] Current value of the input
26
+ * @returns {String} `aria-label` value
27
+ * @private
28
+ */
29
+ var calcAriaLabel = exports.calcAriaLabel = function calcAriaLabel(prefix, type) {
30
+ var value = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';
31
+ var hint = (0, _$L["default"])('Input field');
32
+ if ((type === 'password' || type === 'passwordtel') && value) {
33
+ var character = value.length > 1 ? (0, _$L["default"])('characters') : (0, _$L["default"])('character');
34
+ value = "".concat(value.length, " ").concat(character);
35
+ }
36
+ return "".concat(prefix, " ").concat(value, " ").concat(hint);
37
+ };
38
+ var convertToPasswordFormat = exports.convertToPasswordFormat = function convertToPasswordFormat(value) {
39
+ var replacement = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '*';
40
+ return replacement.repeat(value && value.length);
41
+ };
42
+
43
+ /**
44
+ * Removes `<InputField>` related props from `props` and returns them in a new object.
45
+ *
46
+ * Useful when redirecting `<InputField>` related props from a non-input root element to the
47
+ * `<InputField>` component.
48
+ *
49
+ * @method
50
+ * @memberof limestone/Input
51
+ * @param {Object} props Props object
52
+ * @returns {Object} input related props
53
+ * @private
54
+ */
55
+ var extractInputFieldProps = exports.extractInputFieldProps = function extractInputFieldProps(props) {
56
+ var inputProps = {};
57
+ Object.keys(props).forEach(function (key) {
58
+ switch (key) {
59
+ case 'autoComplete':
60
+ case 'data-webos-voice-group-label':
61
+ case 'data-webos-voice-intent':
62
+ case 'data-webos-voice-label':
63
+ case 'disabled':
64
+ case 'dismissOnEnter':
65
+ case 'iconAfter':
66
+ case 'iconBefore':
67
+ case 'invalid':
68
+ case 'invalidMessage':
69
+ case 'list':
70
+ case 'maxLength':
71
+ case 'minLength':
72
+ case 'onActivate':
73
+ case 'onChange':
74
+ case 'onBlur':
75
+ case 'onDeactivate':
76
+ case 'pattern':
77
+ case 'required':
78
+ case 'size':
79
+ case 'value':
80
+ inputProps[key] = props[key];
81
+ delete props[key];
82
+ }
83
+ });
84
+ return inputProps;
85
+ };
86
+
87
+ /**
88
+ * Removes `<input>` related props from `props` and returns them in a new object.
89
+ *
90
+ * Useful when redirecting `<input>` related props from a non-input root element to the `<input>`
91
+ * element.
92
+ *
93
+ * @method
94
+ * @memberof limestone/Input
95
+ * @param {Object} props Props object
96
+ * @returns {Object} input related props
97
+ * @private
98
+ */
99
+ var extractInputProps = exports.extractInputProps = function extractInputProps(props) {
100
+ var inputProps = {};
101
+ Object.keys(props).forEach(function (key) {
102
+ switch (key) {
103
+ case 'autoComplete':
104
+ case 'list':
105
+ case 'maxLength':
106
+ case 'minLength':
107
+ case 'pattern':
108
+ case 'required':
109
+ case 'size':
110
+ inputProps[key] = props[key];
111
+ delete props[key];
112
+ }
113
+ });
114
+ return inputProps;
115
+ };
116
+ var limitNumberLength = exports.limitNumberLength = function limitNumberLength(popupType, length) {
117
+ var limitedLength = length;
118
+ if (popupType === 'fullscreen') {
119
+ if (length > FULLSCREEN_JOINED_DIGITS_LIMIT) {
120
+ limitedLength = FULLSCREEN_JOINED_DIGITS_LIMIT;
121
+ process.env.NODE_ENV !== "production" ? (0, _warning["default"])(false, "Max length of fullscreen type input must not exceed ".concat(FULLSCREEN_JOINED_DIGITS_LIMIT, " digits.")) : void 0;
122
+ }
123
+ } else if (popupType === 'overlay') {
124
+ if (length > OVERLAY_JOINED_DIGITS_LIMIT) {
125
+ limitedLength = OVERLAY_JOINED_DIGITS_LIMIT;
126
+ process.env.NODE_ENV !== "production" ? (0, _warning["default"])(false, "Max length of overlay type input must not exceed ".concat(OVERLAY_JOINED_DIGITS_LIMIT, " digits.")) : void 0;
127
+ }
128
+ }
129
+ return limitedLength;
130
+ };
package/Item/Item.d.ts ADDED
@@ -0,0 +1,108 @@
1
+ // Type definitions for limestone/Item
2
+
3
+ import { ItemDecoratorProps as ui_Item_ItemDecoratorProps } from "@enact/ui/Item";
4
+ import { SlottableProps as ui_Slottable_SlottableProps } from "@enact/ui/Slottable";
5
+ import { SpottableProps as spotlight_Spottable_SpottableProps } from "@enact/spotlight/Spottable";
6
+ import { MarqueeControllerProps as limestone_Marquee_MarqueeControllerProps } from "limestone/Marquee";
7
+ import { SkinnableProps as limestone_Skinnable_SkinnableProps } from "limestone/Skinnable";
8
+ import { ItemBaseProps as ui_Item_ItemBaseProps } from "@enact/ui/Item";
9
+ import * as React from "react";
10
+
11
+ type Omit<T, K extends keyof T> = Pick<T, Exclude<keyof T, K>>;
12
+ type Merge<M, N> = Omit<M, Extract<keyof M, keyof N>> & N;
13
+
14
+ export interface ItemBaseProps extends ui_Item_ItemBaseProps {
15
+ /**
16
+ * Centers the slots and content.
17
+ */
18
+ centered?: boolean;
19
+ /**
20
+ * Called with a reference to the root component.
21
+ */
22
+ componentRef?: object | Function;
23
+ /**
24
+ * Customizes the component by mapping the supplied collection of CSS class names to the
25
+ corresponding internal elements and states of this component.
26
+ *
27
+ * The following classes are supported:
28
+ * * `item` - The root class name
29
+ * * `slotBefore` - The slot (container) preceding the text of this component
30
+ * * `slotAfter` - The slot (container) following the text of this component
31
+ * * `selected` - Applied to a `selected` button
32
+ */
33
+ css?: object;
34
+ /**
35
+ * Applies a disabled style and the control becomes non-interactive.
36
+ */
37
+ disabled?: boolean;
38
+ /**
39
+ * Applies inline styling to the item.
40
+ */
41
+ inline?: boolean;
42
+ /**
43
+ * The label to be displayed along with the text.
44
+ */
45
+ label?: React.ReactNode;
46
+ /**
47
+ * The position of the label relative to the primary content, `children` .
48
+ */
49
+ labelPosition?: "above" | "after" | "before" | "below";
50
+ /**
51
+ * Determines what triggers the marquee to start its animation.
52
+ */
53
+ marqueeOn?: "focus" | "hover" | "render";
54
+ /**
55
+ * Nodes to be inserted after `children` .
56
+ *
57
+ * For LTR locales, the nodes are inserted to the right of the primary content. For RTL
58
+ locales, the nodes are inserted to the left. If nothing is specified, nothing, not even
59
+ an empty container, is rendered in this place.
60
+ */
61
+ slotAfter?: React.ReactNode;
62
+ /**
63
+ * Nodes to be inserted before `children` and `label` .
64
+ *
65
+ * For LTR locales, the nodes are inserted to the left of the primary content. For RTL
66
+ locales, the nodes are inserted to the right. If nothing is specified, nothing, not even
67
+ an empty container, is rendered in this place.
68
+ */
69
+ slotBefore?: React.ReactNode;
70
+ }
71
+ /**
72
+ * A Limestone styled item without any behavior.
73
+ */
74
+
75
+ export class ItemBase extends React.Component<
76
+ Merge<React.HTMLProps<HTMLElement>, ItemBaseProps>
77
+ > {}
78
+
79
+ export interface ItemDecoratorProps
80
+ extends Merge<
81
+ Merge<
82
+ Merge<
83
+ Merge<ui_Item_ItemDecoratorProps, ui_Slottable_SlottableProps>,
84
+ spotlight_Spottable_SpottableProps
85
+ >,
86
+ limestone_Marquee_MarqueeControllerProps
87
+ >,
88
+ limestone_Skinnable_SkinnableProps
89
+ > {}
90
+ export function ItemDecorator<P>(
91
+ Component: React.ComponentType<P> | string,
92
+ ): React.ComponentType<P & ItemDecoratorProps>;
93
+
94
+ export interface ItemProps extends Merge<ItemBaseProps, ItemDecoratorProps> {}
95
+ /**
96
+ * A Limestone styled item with built-in support for marqueed text, and Spotlight focus.
97
+ *
98
+ * Usage:
99
+ * ```
100
+ <Item>Item Content</Item>
101
+ ```
102
+ */
103
+
104
+ export class Item extends React.Component<
105
+ Merge<React.HTMLProps<HTMLElement>, ItemProps>
106
+ > {}
107
+
108
+ export default Item;