@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
package/Chips/Chip.js ADDED
@@ -0,0 +1,252 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports["default"] = exports.chipDeleteButtonShape = exports.ChipDecorator = exports.ChipBase = exports.Chip = void 0;
7
+ var _util = require("@enact/core/util");
8
+ var _spotlight = _interopRequireWildcard(require("@enact/spotlight"));
9
+ var _target = require("@enact/spotlight/src/target");
10
+ var _classnames = _interopRequireDefault(require("classnames"));
11
+ var _propTypes = _interopRequireDefault(require("prop-types"));
12
+ var _compose = _interopRequireDefault(require("ramda/src/compose"));
13
+ var _react = require("react");
14
+ var _Button = _interopRequireDefault(require("../Button"));
15
+ var _Skinnable = _interopRequireDefault(require("../Skinnable"));
16
+ var _Chips = require("./Chips");
17
+ var _ChipModule = _interopRequireDefault(require("./Chip.module.css"));
18
+ var _jsxRuntime = require("react/jsx-runtime");
19
+ var _excluded = ["children", "className", "deleteButton", "disabled", "icon", "id", "onClick", "ref"];
20
+ /**
21
+ * The shape of the chip delete button for {@link limestone/Chips.Chip|Chip}.
22
+ *
23
+ * @typedef {Object} chipDeleteButtonShape
24
+ * @memberof limestone/Chips
25
+ * @property {String|Object} icon The icon to display in the delete button.
26
+ * @property {Function} onDelete The function to call when the delete button is clicked.
27
+ * @property {('top'|'bottom'|'right')} position The position of the delete button relative to the chip.
28
+ * @public
29
+ */
30
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
31
+ 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); }
32
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
33
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
34
+ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
35
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
36
+ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
37
+ function _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }
38
+ function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }
39
+ var chipDeleteButtonShape = exports.chipDeleteButtonShape = _propTypes["default"].shape({
40
+ icon: _propTypes["default"].oneOfType([_propTypes["default"].string, _propTypes["default"].object]),
41
+ onDelete: _propTypes["default"].func,
42
+ position: _propTypes["default"].oneOf(['top', 'bottom', 'right'])
43
+ });
44
+ var ChipDefaultProps = {
45
+ disabled: false
46
+ };
47
+
48
+ /**
49
+ * Provides Limestone styled Chip component and behaviors.
50
+ *
51
+ * Usage:
52
+ * ```
53
+ * <Chip
54
+ * deleteButton={{
55
+ * icon: 'closex',
56
+ * position: 'right'
57
+ * }}
58
+ * icon="check"
59
+ * >
60
+ * Label
61
+ * </Chip>
62
+ * ```
63
+ *
64
+ * @class Chip
65
+ * @memberof limestone/Chips
66
+ * @ui
67
+ * @public
68
+ */
69
+ var ChipBase = exports.ChipBase = function ChipBase(props) {
70
+ var _use = (0, _react.use)(_Chips.ChipsContext),
71
+ handleChipDelete = _use.handleChipDelete,
72
+ getNextTargetFromDeleteButton = _use.getNextTargetFromDeleteButton,
73
+ registerChild = _use.registerChild;
74
+ var chipProps = (0, _util.setDefaultProps)(props, ChipDefaultProps);
75
+ var children = chipProps.children,
76
+ className = chipProps.className,
77
+ deleteButton = chipProps.deleteButton,
78
+ disabled = chipProps.disabled,
79
+ icon = chipProps.icon,
80
+ id = chipProps.id,
81
+ onClick = chipProps.onClick,
82
+ ref = chipProps.ref,
83
+ rest = _objectWithoutProperties(chipProps, _excluded);
84
+ var chipClassName = (0, _classnames["default"])(className, deleteButton === null || deleteButton === void 0 ? void 0 : deleteButton.position);
85
+ var buttonClassName = (0, _classnames["default"])(_ChipModule["default"].deleteButtonContainer, _ChipModule["default"][(deleteButton === null || deleteButton === void 0 ? void 0 : deleteButton.position) || 'right']);
86
+ var containerRef = (0, _react.useRef)(null);
87
+ var clientRef = (0, _react.useRef)(null);
88
+ var deleteButtonRef = (0, _react.useRef)(null);
89
+ var chipRef = clientRef || ref;
90
+ var isHovering = (0, _react.useRef)(false);
91
+ (0, _react.useEffect)(function () {
92
+ if (chipRef.current && registerChild) {
93
+ registerChild(chipRef, id);
94
+ }
95
+ }, [chipRef, registerChild, id]);
96
+ (0, _react.useEffect)(function () {
97
+ var handleDocumentClick = function handleDocumentClick(ev) {
98
+ if (containerRef.current && !containerRef.current.contains(ev.target)) {
99
+ var _deleteButtonRef$curr;
100
+ (_deleteButtonRef$curr = deleteButtonRef.current) === null || _deleteButtonRef$curr === void 0 || _deleteButtonRef$curr.classList.remove(_ChipModule["default"].focused);
101
+ }
102
+ };
103
+ document.addEventListener('click', handleDocumentClick, true);
104
+ return function () {
105
+ document.removeEventListener('click', handleDocumentClick, true);
106
+ };
107
+ }, []);
108
+ var handleKeyDown = (0, _react.useCallback)(function (ev) {
109
+ var keyCode = ev.keyCode,
110
+ target = ev.target;
111
+ var direction = (0, _spotlight.getDirection)(keyCode);
112
+ if (direction) {
113
+ var nextTarget = null;
114
+ if (target === deleteButtonRef.current.firstChild && getNextTargetFromDeleteButton) {
115
+ nextTarget = getNextTargetFromDeleteButton(direction, id);
116
+ }
117
+ if (nextTarget === null) {
118
+ nextTarget = (0, _target.getTargetByDirectionFromElement)(direction, target);
119
+ }
120
+ if (nextTarget === null) {
121
+ return;
122
+ }
123
+ _spotlight["default"].focus(nextTarget);
124
+ ev.stopPropagation();
125
+ if (nextTarget !== null && nextTarget !== deleteButtonRef.current.firstChild && nextTarget !== chipRef.current) {
126
+ var _deleteButtonRef$curr2;
127
+ (_deleteButtonRef$curr2 = deleteButtonRef.current) === null || _deleteButtonRef$curr2 === void 0 || _deleteButtonRef$curr2.classList.remove(_ChipModule["default"].focused);
128
+ }
129
+ }
130
+ }, [chipRef, getNextTargetFromDeleteButton, id]);
131
+ var handleMouseLeave = (0, _react.useCallback)(function (ev) {
132
+ if (containerRef.current.contains(ev.target)) {
133
+ var _deleteButtonRef$curr3;
134
+ (_deleteButtonRef$curr3 = deleteButtonRef.current) === null || _deleteButtonRef$curr3 === void 0 || _deleteButtonRef$curr3.classList.remove(_ChipModule["default"].focused);
135
+ }
136
+ }, []);
137
+ var handleFocus = (0, _react.useCallback)(function (ev) {
138
+ if (ev.target === chipRef.current) {
139
+ var _deleteButtonRef$curr4;
140
+ (_deleteButtonRef$curr4 = deleteButtonRef.current) === null || _deleteButtonRef$curr4 === void 0 || _deleteButtonRef$curr4.classList.add(_ChipModule["default"].focused);
141
+ }
142
+ }, [chipRef]);
143
+ var handleBlur = (0, _react.useCallback)(function () {
144
+ if (_spotlight["default"].getPointerMode() && !isHovering.current) {
145
+ var _deleteButtonRef$curr5;
146
+ (_deleteButtonRef$curr5 = deleteButtonRef.current) === null || _deleteButtonRef$curr5 === void 0 || _deleteButtonRef$curr5.classList.remove(_ChipModule["default"].focused);
147
+ }
148
+ }, []);
149
+ var handleMouseOver = (0, _react.useCallback)(function () {
150
+ isHovering.current = true;
151
+ }, []);
152
+ var handleMouseOut = (0, _react.useCallback)(function () {
153
+ isHovering.current = false;
154
+ }, []);
155
+ var handleDelete = (0, _react.useCallback)(function (ev) {
156
+ if (handleChipDelete) {
157
+ handleChipDelete(ev, id);
158
+ }
159
+ if (deleteButton !== null && deleteButton !== void 0 && deleteButton.onDelete) {
160
+ deleteButton.onDelete(ev);
161
+ }
162
+ }, [deleteButton, handleChipDelete, id]);
163
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", _objectSpread(_objectSpread({}, rest), {}, {
164
+ className: _ChipModule["default"].chip,
165
+ onMouseLeave: handleMouseLeave,
166
+ onBlur: handleBlur,
167
+ onMouseOver: handleMouseOver,
168
+ onMouseOut: handleMouseOut,
169
+ onKeyDown: handleKeyDown,
170
+ ref: containerRef,
171
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Button["default"], {
172
+ css: _ChipModule["default"],
173
+ className: chipClassName,
174
+ "data-chip-index": id,
175
+ disabled: disabled,
176
+ focusEffect: "static",
177
+ icon: icon ? icon : null,
178
+ size: "small",
179
+ onFocus: handleFocus,
180
+ onClick: onClick,
181
+ ref: chipRef,
182
+ roundBorder: true,
183
+ children: children
184
+ }), deleteButton && /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
185
+ className: buttonClassName,
186
+ ref: deleteButtonRef,
187
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Button["default"], {
188
+ css: _ChipModule["default"],
189
+ backgroundOpacity: "transparent",
190
+ disabled: disabled,
191
+ icon: (deleteButton === null || deleteButton === void 0 ? void 0 : deleteButton.icon) || 'closex',
192
+ size: "small",
193
+ onClick: handleDelete,
194
+ roundBorder: true
195
+ })
196
+ })]
197
+ }));
198
+ };
199
+ ChipBase.displayName = 'Chip';
200
+ ChipBase.propTypes = /** @lends limestone/Chips.Chip.prototype */{
201
+ /**
202
+ * A label displayed in the chip content.
203
+ *
204
+ * @type {String}
205
+ * @required
206
+ * @public
207
+ */
208
+ children: _propTypes["default"].string.isRequired,
209
+ /**
210
+ * Unique identifier for the chip.
211
+ *
212
+ * @type {String}
213
+ * @required
214
+ * @public
215
+ */
216
+ id: _propTypes["default"].string.isRequired,
217
+ /**
218
+ * Define the icon, delete handler, and position for the delete button.
219
+ *
220
+ * @type {limestone/Chips.chipDeleteButtonShape|Boolean}
221
+ * @public
222
+ */
223
+ deleteButton: _propTypes["default"].oneOfType([chipDeleteButtonShape, _propTypes["default"].bool]),
224
+ /**
225
+ * Disables Chip and becomes non-interactive.
226
+ *
227
+ * @type {Boolean}
228
+ * @public
229
+ */
230
+ disabled: _propTypes["default"].bool,
231
+ /**
232
+ * The icon content in the chip content.
233
+ * If this is specified, {@link limestone/Icon.Icon|Icon} will be shown as the content.
234
+ *
235
+ * @see {@link ui/Icon.Icon.children}
236
+ * @type {String|Object}
237
+ * @public
238
+ */
239
+ icon: _propTypes["default"].oneOfType([_propTypes["default"].string, _propTypes["default"].object])
240
+ };
241
+
242
+ /**
243
+ * Limestone-specific Chip behaviors to apply to {@link limestone/Chips.Chip|Chip}.
244
+ *
245
+ * @hoc
246
+ * @memberof limestone/Chips
247
+ * @mixes limestone/Skinnable.Skinnable
248
+ * @public
249
+ */
250
+ var ChipDecorator = exports.ChipDecorator = (0, _compose["default"])(_Skinnable["default"]);
251
+ var Chip = exports.Chip = ChipDecorator(ChipBase);
252
+ var _default = exports["default"] = Chip;
@@ -0,0 +1,30 @@
1
+ .chip {
2
+ position: relative;
3
+ display: inline-block;
4
+ }
5
+ .chip .button.small {
6
+ margin: 0;
7
+ min-width: 2.25rem;
8
+ }
9
+ .chip .deleteButtonContainer {
10
+ position: absolute;
11
+ display: none;
12
+ }
13
+ .chip .deleteButtonContainer.right {
14
+ top: 50%;
15
+ right: 0;
16
+ transform: translateY(-50%) translateX(calc(100% + 0.25rem ));
17
+ }
18
+ .chip .deleteButtonContainer.bottom {
19
+ bottom: -0.25rem;
20
+ left: 50%;
21
+ transform: translate(-50%, 100%);
22
+ }
23
+ .chip .deleteButtonContainer.top {
24
+ top: calc(-100% - 0.25rem );
25
+ left: 50%;
26
+ transform: translateX(-50%);
27
+ }
28
+ .chip .focused {
29
+ display: block;
30
+ }
package/Chips/Chips.js ADDED
@@ -0,0 +1,215 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports["default"] = exports.ChipsDecorator = exports.ChipsContext = exports.ChipsBase = exports.Chips = void 0;
7
+ var _util = require("@enact/core/util");
8
+ var _spotlight = _interopRequireDefault(require("@enact/spotlight"));
9
+ var _SpotlightContainerDecorator = require("@enact/spotlight/SpotlightContainerDecorator");
10
+ var _container = require("@enact/spotlight/src/container");
11
+ var _target = require("@enact/spotlight/src/target");
12
+ var _classnames = _interopRequireDefault(require("classnames"));
13
+ var _propTypes = _interopRequireDefault(require("prop-types"));
14
+ var _compose = _interopRequireDefault(require("ramda/src/compose"));
15
+ var _react = require("react");
16
+ var _ChipsModule = _interopRequireDefault(require("./Chips.module.css"));
17
+ var _jsxRuntime = require("react/jsx-runtime");
18
+ var _excluded = ["children", "className", "orientation"];
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 _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; } } }; }
26
+ 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; } }
27
+ 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; }
28
+ 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; }
29
+ 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; }
30
+ var ChipsContext = exports.ChipsContext = /*#__PURE__*/(0, _react.createContext)({});
31
+ var ChipsDefaultProps = {
32
+ orientation: 'vertical'
33
+ };
34
+
35
+ /**
36
+ * A container that surrounds the chips.
37
+ *
38
+ * Usage:
39
+ * ```
40
+ * <Chips>
41
+ * {chips.map(({id, icon, children}) => {
42
+ * return (
43
+ * <Chip key={id} icon={icon} onClick={onClick}>
44
+ * {children}
45
+ * </Chip>
46
+ * );
47
+ * })}
48
+ * </Chips>
49
+ * ```
50
+ *
51
+ * @class ChipsBase
52
+ * @memberof limestone/Chips
53
+ * @ui
54
+ * @public
55
+ */
56
+ var ChipsBase = exports.ChipsBase = function ChipsBase(props) {
57
+ var chipsProps = (0, _util.setDefaultProps)(props, ChipsDefaultProps);
58
+ var children = chipsProps.children,
59
+ className = chipsProps.className,
60
+ orientation = chipsProps.orientation,
61
+ rest = _objectWithoutProperties(chipsProps, _excluded);
62
+ var chipsClassName = (0, _classnames["default"])(_ChipsModule["default"].chips, _ChipsModule["default"][orientation], className);
63
+ var childRefs = (0, _react.useRef)([]);
64
+ var containerRef = (0, _react.useRef)(null);
65
+ var getPreviousChip = (0, _react.useCallback)(function (id) {
66
+ var currentIndex = childRefs.current.findIndex(function (child) {
67
+ return child.id === id;
68
+ });
69
+ return currentIndex > 0 ? childRefs.current[currentIndex - 1] : null;
70
+ }, []);
71
+ var getNextChip = (0, _react.useCallback)(function (id) {
72
+ var currentIndex = childRefs.current.findIndex(function (child) {
73
+ return child.id === id;
74
+ });
75
+ return currentIndex >= 0 && currentIndex < childRefs.current.length - 1 ? childRefs.current[currentIndex + 1] : null;
76
+ }, []);
77
+ var handleChipDelete = function handleChipDelete(ev, id) {
78
+ var prevNode = getPreviousChip(id);
79
+ var nextNode = getNextChip(id);
80
+ if (prevNode) {
81
+ _spotlight["default"].focus(prevNode.chipRef.current);
82
+ } else if (nextNode) {
83
+ _spotlight["default"].focus(nextNode.chipRef.current);
84
+ } else {
85
+ var rect = ev.target.getBoundingClientRect();
86
+ var position = {
87
+ x: rect.left + rect.width / 2,
88
+ y: rect.top + rect.height / 2
89
+ };
90
+ var containerIds = (0, _container.getAllContainerIds)();
91
+ containerRef.current.dataset.spotlightContainerDisabled = true;
92
+ var _iterator = _createForOfIteratorHelper(containerIds),
93
+ _step;
94
+ try {
95
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
96
+ var containerId = _step.value;
97
+ var nearestTarget = (0, _target.getNearestTargetFromPosition)(position, containerId);
98
+ if (nearestTarget) {
99
+ _spotlight["default"].focus(nearestTarget);
100
+ break;
101
+ }
102
+ }
103
+ } catch (err) {
104
+ _iterator.e(err);
105
+ } finally {
106
+ _iterator.f();
107
+ }
108
+ containerRef.current.dataset.spotlightContainerDisabled = false;
109
+ }
110
+ childRefs.current = childRefs.current.filter(function (child) {
111
+ return child.id !== id;
112
+ });
113
+ };
114
+ var getNextTargetFromDeleteButton = (0, _react.useCallback)(function (direction, id) {
115
+ var nextTarget = null;
116
+ if (orientation === 'vertical' && direction === 'up' || orientation === 'horizontal' && direction === 'left') {
117
+ var prevChip = getPreviousChip(id);
118
+ nextTarget = prevChip ? prevChip.chipRef.current : null;
119
+ } else if (orientation === 'vertical' && direction === 'down' || orientation === 'horizontal' && direction === 'right') {
120
+ var nextChip = getNextChip(id);
121
+ nextTarget = nextChip ? nextChip.chipRef.current : null;
122
+ }
123
+ return nextTarget;
124
+ }, [getNextChip, getPreviousChip, orientation]);
125
+ var registerChild = (0, _react.useCallback)(function (chipRef, id) {
126
+ if (!childRefs.current.some(function (child) {
127
+ return child.id === id;
128
+ })) {
129
+ childRefs.current.push({
130
+ chipRef: chipRef,
131
+ id: id
132
+ });
133
+
134
+ // Sort childRefs to match the order of children array
135
+ var childrenArray = Array.isArray(children) ? children : [];
136
+ var childrenIdOrder = childrenArray.map(function (child) {
137
+ return child && child.props && child.props.id;
138
+ }).filter(Boolean); // Remove null, undefined
139
+
140
+ childRefs.current.sort(function (a, b) {
141
+ var indexA = childrenIdOrder.indexOf(a.id);
142
+ var indexB = childrenIdOrder.indexOf(b.id);
143
+
144
+ // IDs not in children array go to the end
145
+ if (indexA === -1 && indexB === -1) return 0;
146
+ if (indexA === -1) return 1;
147
+ if (indexB === -1) return -1;
148
+ return indexA - indexB;
149
+ });
150
+ }
151
+ }, [children]);
152
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)("div", _objectSpread(_objectSpread({}, rest), {}, {
153
+ className: chipsClassName,
154
+ ref: containerRef,
155
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(ChipsContext, {
156
+ value: {
157
+ getNextTargetFromDeleteButton: getNextTargetFromDeleteButton,
158
+ handleChipDelete: handleChipDelete,
159
+ registerChild: registerChild
160
+ },
161
+ children: children
162
+ })
163
+ }));
164
+ };
165
+ ChipsBase.displayName = 'Chips';
166
+ ChipsBase.propTypes = /** @lends limestone/Chips.Chips.prototype */{
167
+ /**
168
+ * {@link limestone/Chips.Chip|Chip} to be rendered
169
+ *
170
+ * @type {Node}
171
+ * @public
172
+ */
173
+ children: _propTypes["default"].node,
174
+ /**
175
+ * The layout orientation of the component.
176
+ *
177
+ * @type {('horizontal'|'vertical')}
178
+ * @default 'vertical'
179
+ * @public
180
+ */
181
+ orientation: _propTypes["default"].oneOf(['horizontal', 'vertical'])
182
+ };
183
+
184
+ /**
185
+ * Applies Limestone specific behaviors to {@link limestone/Chips.Chips|Chips} components.
186
+ *
187
+ * @hoc
188
+ * @memberof limestone/Chips
189
+ * @mixes spotlight/SpotlightContainerDecorator.SpotlightContainerDecorator
190
+ * @public
191
+ */
192
+ var ChipsDecorator = exports.ChipsDecorator = (0, _compose["default"])((0, _SpotlightContainerDecorator.SpotlightContainerDecorator)({
193
+ enterTo: 'default-element',
194
+ leaveFor: {
195
+ up: '#right'
196
+ },
197
+ navigableFilter: function navigableFilter(node) {
198
+ if (!node) return false;
199
+ var rects = node.getBoundingClientRect();
200
+ return rects.width !== 0 && rects.height !== 0;
201
+ }
202
+ }));
203
+
204
+ /**
205
+ * A container that contains the basic behavior of {@link limestone/Chips.Chips|ChipsBase}.
206
+ * @class Chips
207
+ * @memberof limestone/Chips
208
+ * @extends limestone/Chips.ChipsBase
209
+ * @mixes spotlight/SpotlightContainerDecorator.SpotlightContainerDecorator
210
+ * @see {@link limestone/Chips.Chips}
211
+ * @ui
212
+ * @public
213
+ */
214
+ var Chips = exports.Chips = ChipsDecorator(ChipsBase);
215
+ var _default = exports["default"] = Chips;
@@ -0,0 +1,8 @@
1
+ .chips {
2
+ display: inline-flex;
3
+ gap: 0.75rem;
4
+ }
5
+ .chips.vertical {
6
+ flex-direction: column;
7
+ align-items: flex-start;
8
+ }
package/Chips/index.js ADDED
@@ -0,0 +1,86 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "Chip", {
7
+ enumerable: true,
8
+ get: function get() {
9
+ return _Chip["default"];
10
+ }
11
+ });
12
+ Object.defineProperty(exports, "ChipBase", {
13
+ enumerable: true,
14
+ get: function get() {
15
+ return _Chip.ChipBase;
16
+ }
17
+ });
18
+ Object.defineProperty(exports, "ChipDecorator", {
19
+ enumerable: true,
20
+ get: function get() {
21
+ return _Chip.ChipDecorator;
22
+ }
23
+ });
24
+ Object.defineProperty(exports, "Chips", {
25
+ enumerable: true,
26
+ get: function get() {
27
+ return _Chips["default"];
28
+ }
29
+ });
30
+ Object.defineProperty(exports, "ChipsBase", {
31
+ enumerable: true,
32
+ get: function get() {
33
+ return _Chips.ChipsBase;
34
+ }
35
+ });
36
+ Object.defineProperty(exports, "ChipsDecorator", {
37
+ enumerable: true,
38
+ get: function get() {
39
+ return _Chips.ChipsDecorator;
40
+ }
41
+ });
42
+ Object.defineProperty(exports, "chipDeleteButtonShape", {
43
+ enumerable: true,
44
+ get: function get() {
45
+ return _Chip.chipDeleteButtonShape;
46
+ }
47
+ });
48
+ exports["default"] = void 0;
49
+ var _Chip = _interopRequireWildcard(require("./Chip"));
50
+ var _Chips = _interopRequireWildcard(require("./Chips"));
51
+ 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); }
52
+ /**
53
+ * Provides Limestone styled Chips and Chip comoponents and behaviors.
54
+ *
55
+ * @example
56
+ * <Chips orientation="horizontal">
57
+ * <Chip key="key1">
58
+ * Chip 1
59
+ * </Chip>
60
+ * <Chip key="key2" icon="check" deleteButton={{position: 'bottom'}}>
61
+ * Chip 2
62
+ * </Chip>
63
+ * <Chip key="key3" icon="heart" deleteButton={{position: 'right'}}>
64
+ * Chip 3
65
+ * </Chip>
66
+ * </Chips>
67
+ *
68
+ * @module limestone/Chips
69
+ * @exports Chip
70
+ * @exports ChipBase
71
+ * @exports ChipDecorator
72
+ * @exports chipDeleteButtonShape
73
+ * @exports Chips
74
+ * @exports ChipsBase
75
+ * @exports ChipsDecorator
76
+ */
77
+
78
+ /**
79
+ * A shortcut to access {@link limestone/Chips.Chip}
80
+ *
81
+ * @name Chip
82
+ * @static
83
+ * @memberof limestone/Chips.Chips
84
+ */
85
+ _Chips["default"].Chip = _Chip["default"];
86
+ var _default = exports["default"] = _Chips["default"];