@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,599 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports["default"] = exports.HeaderBase = exports.Header = void 0;
7
+ var _handle = require("@enact/core/handle");
8
+ var _propTypes = _interopRequireDefault(require("@enact/core/internal/prop-types"));
9
+ var _kind = _interopRequireDefault(require("@enact/core/kind"));
10
+ var _util = require("@enact/i18n/util");
11
+ var _SpotlightContainerDecorator = _interopRequireDefault(require("@enact/spotlight/SpotlightContainerDecorator"));
12
+ var _Layout = require("@enact/ui/Layout");
13
+ var _Measurable = require("@enact/ui/Measurable");
14
+ var _resolution = require("@enact/ui/resolution");
15
+ var _Slottable = _interopRequireDefault(require("@enact/ui/Slottable"));
16
+ var _ViewManager = _interopRequireWildcard(require("@enact/ui/ViewManager"));
17
+ var _propTypes2 = _interopRequireDefault(require("prop-types"));
18
+ var _compose = _interopRequireDefault(require("ramda/src/compose"));
19
+ var _react = require("react");
20
+ var _$L = _interopRequireDefault(require("../internal/$L"));
21
+ var _Button = _interopRequireDefault(require("../Button"));
22
+ var _Heading = _interopRequireDefault(require("../Heading"));
23
+ var _Skinnable = _interopRequireDefault(require("../Skinnable"));
24
+ var _Panels = require("../internal/Panels");
25
+ var _util2 = require("../internal/Panels/util");
26
+ var _HeaderModule = _interopRequireDefault(require("./Header.module.css"));
27
+ var _jsxRuntime = require("react/jsx-runtime");
28
+ var _excluded = ["backButtonAriaLabel", "backButtonAvailable", "backButtonBackgroundOpacity", "centered", "children", "closeButtonAriaLabel", "closeButtonBackgroundOpacity", "css", "noBackButton", "noCloseButton", "onBack", "onClose", "shadowed", "slotAbove", "slotAfter", "slotAfterRef", "slotBefore", "slotBeforeRef", "slotSize", "titleCell", "type"];
29
+ 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); }
30
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
31
+ function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
32
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
33
+ 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; } }
34
+ 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; }
35
+ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
36
+ function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
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
+ 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; }
40
+ 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; }
41
+ 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; }
42
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
43
+ 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); }
44
+ var hasChildren = function hasChildren(children) {
45
+ return _react.Children.toArray(children).filter(Boolean).length > 0;
46
+ };
47
+
48
+ /**
49
+ * A header component for a Panel with a `title` and `subtitle`, supporting several configurable
50
+ * {@link ui/Slottable.Slottable|slots} for components.
51
+ *
52
+ * @class Header
53
+ * @memberof limestone/Panels
54
+ * @ui
55
+ * @public
56
+ */
57
+ var HeaderBase = exports.HeaderBase = (0, _kind["default"])({
58
+ name: 'Header',
59
+ propTypes: /** @lends limestone/Panels.Header.prototype */{
60
+ /**
61
+ * The animation arranger used to transition title and subtitle changes.
62
+ *
63
+ * Only supported when `type="wizard"`.
64
+ *
65
+ * @type {ui/ViewManager.Arranger}
66
+ * @private
67
+ */
68
+ arranger: _ViewManager.shape,
69
+ /**
70
+ * Sets the hint string read when focusing the back button.
71
+ *
72
+ * @type {String}
73
+ * @default 'go to previous'
74
+ * @public
75
+ */
76
+ backButtonAriaLabel: _propTypes2["default"].string,
77
+ /**
78
+ * Informs Header that the back button as allowed to be shown.
79
+ *
80
+ * This does not represent whether it is showing, just whether it can or not.
81
+ *
82
+ * @type {Boolean}
83
+ * @default false
84
+ * @private
85
+ */
86
+ backButtonAvailable: _propTypes2["default"].bool,
87
+ /**
88
+ * Background opacity of the application back button.
89
+ *
90
+ * @type {('opaque'|'transparent')}
91
+ * @default 'transparent'
92
+ * @public
93
+ */
94
+ backButtonBackgroundOpacity: _propTypes2["default"].oneOf(['opaque', 'transparent']),
95
+ /**
96
+ * Centers the contents of the Header.
97
+ *
98
+ * This setting does not affect `slotBefore` or `slotAfter`.
99
+ *
100
+ * @type {Boolean}
101
+ * @default false
102
+ * @public
103
+ */
104
+ centered: _propTypes2["default"].bool,
105
+ /**
106
+ * Children provided are added to the header-components area.
107
+ *
108
+ * A space for controls which live in the header, apart from the body of the panel view.
109
+ *
110
+ * @type {Element|Element[]}
111
+ */
112
+ children: _propTypes2["default"].oneOfType([_propTypes2["default"].element, _propTypes2["default"].arrayOf(_propTypes2["default"].element)]),
113
+ /**
114
+ * Hint string read when focusing the application close button.
115
+ *
116
+ * @type {String}
117
+ * @default 'Exit app'
118
+ * @public
119
+ */
120
+ closeButtonAriaLabel: _propTypes2["default"].string,
121
+ /**
122
+ * Background opacity of the application close button.
123
+ *
124
+ * @type {('opaque'|'transparent')}
125
+ * @default 'transparent'
126
+ * @public
127
+ */
128
+ closeButtonBackgroundOpacity: _propTypes2["default"].oneOf(['opaque', 'transparent']),
129
+ /**
130
+ * Customizes the component by mapping the supplied collection of CSS class names to the
131
+ * corresponding internal elements and states of this component.
132
+ *
133
+ * The following classes are supported:
134
+ *
135
+ * * `header` - The root class name
136
+ *
137
+ * @type {Object}
138
+ * @public
139
+ */
140
+ css: _propTypes2["default"].object,
141
+ /**
142
+ * Determines what triggers the header content to start its animation.
143
+ *
144
+ * @type {('focus'|'hover'|'render')}
145
+ * @default 'render'
146
+ * @public
147
+ */
148
+ marqueeOn: _propTypes2["default"].oneOf(['focus', 'hover', 'render']),
149
+ /**
150
+ * Omits the back button.
151
+ *
152
+ * @type {Boolean}
153
+ * @default false
154
+ * @public
155
+ */
156
+ noBackButton: _propTypes2["default"].bool,
157
+ /**
158
+ * Omits the close button.
159
+ *
160
+ * @type {Boolean}
161
+ * @default false
162
+ * @public
163
+ */
164
+ noCloseButton: _propTypes2["default"].bool,
165
+ /**
166
+ * Omits the subtitle area.
167
+ *
168
+ * @type {Boolean}
169
+ * @default false
170
+ * @public
171
+ */
172
+ noSubtitle: _propTypes2["default"].bool,
173
+ /**
174
+ * Called with cancel/back key events.
175
+ *
176
+ * @type {Function}
177
+ * @public
178
+ */
179
+ onBack: _propTypes2["default"].func,
180
+ /**
181
+ * Called when the app close button is clicked.
182
+ *
183
+ * @type {Function}
184
+ * @public
185
+ */
186
+ onClose: _propTypes2["default"].func,
187
+ /**
188
+ * Adds shadow to the text contents.
189
+ *
190
+ * @type {Boolean}
191
+ * @public
192
+ */
193
+ shadowed: _propTypes2["default"].bool,
194
+ /**
195
+ * A location for arbitrary elements to be placed above the title
196
+ *
197
+ * This is a {@link ui/Slottable.Slottable|slot}, so it can be used as a tag-name inside
198
+ * this component.
199
+ *
200
+ * ```
201
+ * <Header>
202
+ * <slotAbove><Button /></slotAbove>
203
+ * <title>My Title</title>
204
+ * </Header>
205
+ * ```
206
+ *
207
+ * @type {Node}
208
+ * @public
209
+ */
210
+ slotAbove: _propTypes2["default"].node,
211
+ /**
212
+ * A location for arbitrary elements to be placed to the right the title in LTR locales and
213
+ * to the left in RTL locales
214
+ *
215
+ * This is a {@link ui/Slottable.Slottable|slot}, so it can be used as a tag-name inside
216
+ * this component.
217
+ *
218
+ * ```
219
+ * <Header>
220
+ * <title>My Title</title>
221
+ * <slotAfter><Button /></slotAfter>
222
+ * </Header>
223
+ * ```
224
+ *
225
+ * @type {Node}
226
+ * @public
227
+ */
228
+ slotAfter: _propTypes2["default"].node,
229
+ /**
230
+ * The method which receives the reference node to the slotAfter element, used to determine
231
+ * the `slotSize`.
232
+ *
233
+ * @type {Function|Object}
234
+ * @private
235
+ */
236
+ slotAfterRef: _propTypes["default"].ref,
237
+ /**
238
+ * A location for arbitrary elements to be placed to the left the title in LTR locales and
239
+ * to the right in RTL locales
240
+ *
241
+ * This is a {@link ui/Slottable.Slottable|slot}, so it can be used as a tag-name inside
242
+ * this component.
243
+ *
244
+ * ```
245
+ * <Header>
246
+ * <slotBefore><Button /></slotBefore>
247
+ * <title>My Title</title>
248
+ * </Header>
249
+ * ```
250
+ *
251
+ * @type {Node}
252
+ * @public
253
+ */
254
+ slotBefore: _propTypes2["default"].node,
255
+ /**
256
+ * The method which receives the reference node to the slotBefore element, used to determine
257
+ * the `slotSize`.
258
+ *
259
+ * @type {Function|Object}
260
+ * @private
261
+ */
262
+ slotBeforeRef: _propTypes["default"].ref,
263
+ /**
264
+ * The size for slotBefore and slotAfter.
265
+ * This size is set by HeaderMeasurementDecorator for consistent title centering.
266
+ *
267
+ * @type {String}
268
+ * @private
269
+ */
270
+ slotSize: _propTypes2["default"].string,
271
+ /**
272
+ * Text displayed below the title.
273
+ *
274
+ * This is a {@link ui/Slottable.Slottable|slot}, so it can be used as a tag-name inside
275
+ * this component.
276
+ * If {@link limestone/Panels.Header.noSubtitle|noSubtitle} is `true`, this prop is ignored.
277
+ *
278
+ * @type {String|String[]}
279
+ */
280
+ subtitle: _propTypes2["default"].oneOfType([_propTypes2["default"].string, _propTypes2["default"].arrayOf(_propTypes2["default"].string)]),
281
+ /**
282
+ * Subtitle id of the header.
283
+ *
284
+ * @type {String}
285
+ * @private
286
+ */
287
+ subtitleId: _propTypes2["default"].string,
288
+ /**
289
+ * Title of the header.
290
+ *
291
+ * This is a {@link ui/Slottable.Slottable|slot}, so it can be used as a tag-name inside
292
+ * this component.
293
+ *
294
+ * Example:
295
+ * ```
296
+ * <Header>
297
+ * <title>Example Header Title</title>
298
+ * <subtitle>The Adventure Continues</subtitle>
299
+ * </Header>
300
+ * ```
301
+ *
302
+ * @type {String|String[]}
303
+ */
304
+ title: _propTypes2["default"].oneOfType([_propTypes2["default"].string, _propTypes2["default"].arrayOf(_propTypes2["default"].string)]),
305
+ /**
306
+ * Title id of the header.
307
+ *
308
+ * @type {String}
309
+ * @private
310
+ */
311
+ titleId: _propTypes2["default"].string,
312
+ /**
313
+ * Set the type of header to be used.
314
+ *
315
+ * @type {('compact'|'mini'|'standard'|'wizard')}
316
+ * @default 'standard'
317
+ */
318
+ type: _propTypes2["default"].oneOf(['compact', 'mini', 'standard', 'wizard'])
319
+ },
320
+ defaultProps: {
321
+ backButtonBackgroundOpacity: 'transparent',
322
+ closeButtonBackgroundOpacity: 'transparent',
323
+ marqueeOn: 'render',
324
+ noSubtitle: false,
325
+ type: 'standard'
326
+ },
327
+ styles: {
328
+ css: _HeaderModule["default"],
329
+ className: 'header',
330
+ publicClassNames: ['header']
331
+ },
332
+ computed: {
333
+ className: function className(_ref) {
334
+ var backButtonAvailable = _ref.backButtonAvailable,
335
+ centered = _ref.centered,
336
+ children = _ref.children,
337
+ noBackButton = _ref.noBackButton,
338
+ noCloseButton = _ref.noCloseButton,
339
+ noSubtitle = _ref.noSubtitle,
340
+ type = _ref.type,
341
+ shadowed = _ref.shadowed,
342
+ slotAfter = _ref.slotAfter,
343
+ slotBefore = _ref.slotBefore,
344
+ styler = _ref.styler,
345
+ subtitle = _ref.subtitle;
346
+ return styler.append({
347
+ centered: centered,
348
+ noSubtitle: noSubtitle,
349
+ shadowed: shadowed,
350
+ slotAfter: slotAfter || !noCloseButton,
351
+ slotBefore: slotBefore || backButtonAvailable && !noBackButton,
352
+ // This likely doesn't need to be as verbose as it is, with the first 2 conditionals
353
+ withChildren: hasChildren(children),
354
+ withSubtitle: subtitle
355
+ }, type);
356
+ },
357
+ titleCell: function titleCell(_ref2) {
358
+ var arranger = _ref2.arranger,
359
+ centered = _ref2.centered,
360
+ css = _ref2.css,
361
+ marqueeOn = _ref2.marqueeOn,
362
+ noSubtitle = _ref2.noSubtitle,
363
+ slotSize = _ref2.slotSize,
364
+ subtitle = _ref2.subtitle,
365
+ subtitleId = _ref2.subtitleId,
366
+ title = _ref2.title,
367
+ titleId = _ref2.titleId,
368
+ type = _ref2.type;
369
+ var direction = (0, _util.isRtlText)(title) || (0, _util.isRtlText)(subtitle) ? 'rtl' : 'ltr';
370
+ var titleHeading = /*#__PURE__*/(0, _jsxRuntime.jsx)(_Heading["default"], _objectSpread(_objectSpread({}, centered ? {
371
+ slotSize: slotSize
372
+ } : {}), {}, {
373
+ id: titleId,
374
+ size: "title",
375
+ spacing: "auto",
376
+ marqueeOn: marqueeOn,
377
+ forceDirection: direction,
378
+ alignment: centered ? 'center' : null,
379
+ className: css.title,
380
+ children: title
381
+ }));
382
+ var subtitleHeading = /*#__PURE__*/(0, _jsxRuntime.jsx)(_Heading["default"], _objectSpread(_objectSpread({}, centered ? {
383
+ slotSize: slotSize
384
+ } : {}), {}, {
385
+ id: subtitleId,
386
+ size: "subtitle",
387
+ spacing: "auto",
388
+ marqueeOn: marqueeOn,
389
+ forceDirection: direction,
390
+ alignment: centered ? 'center' : null,
391
+ className: css.subtitle,
392
+ children: subtitle
393
+ }));
394
+
395
+ // WizardPanels uses an animated title but that isn't supported for other types
396
+ if (arranger && type === 'wizard') {
397
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Layout.Cell, {
398
+ className: css.titleCell,
399
+ component: _ViewManager["default"],
400
+ arranger: arranger,
401
+ duration: 500,
402
+ index: 0,
403
+ children: /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
404
+ className: css.titleContainer,
405
+ children: [titleHeading, noSubtitle ? null : subtitleHeading]
406
+ }, title + subtitle)
407
+ });
408
+ }
409
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Layout.Cell, {
410
+ className: css.titleCell,
411
+ children: [titleHeading, noSubtitle ? null : subtitleHeading]
412
+ });
413
+ }
414
+ },
415
+ handlers: {
416
+ onBack: (0, _handle.forwardCustom)('onBack'),
417
+ onClose: (0, _handle.forwardCustom)('onClose')
418
+ },
419
+ render: function render(_ref3) {
420
+ var _slotBefore$props, _slotAfter$props;
421
+ var backButtonAriaLabel = _ref3.backButtonAriaLabel,
422
+ backButtonAvailable = _ref3.backButtonAvailable,
423
+ backButtonBackgroundOpacity = _ref3.backButtonBackgroundOpacity,
424
+ centered = _ref3.centered,
425
+ children = _ref3.children,
426
+ closeButtonAriaLabel = _ref3.closeButtonAriaLabel,
427
+ closeButtonBackgroundOpacity = _ref3.closeButtonBackgroundOpacity,
428
+ css = _ref3.css,
429
+ noBackButton = _ref3.noBackButton,
430
+ noCloseButton = _ref3.noCloseButton,
431
+ onBack = _ref3.onBack,
432
+ onClose = _ref3.onClose,
433
+ shadowed = _ref3.shadowed,
434
+ slotAbove = _ref3.slotAbove,
435
+ slotAfter = _ref3.slotAfter,
436
+ slotAfterRef = _ref3.slotAfterRef,
437
+ slotBefore = _ref3.slotBefore,
438
+ slotBeforeRef = _ref3.slotBeforeRef,
439
+ slotSize = _ref3.slotSize,
440
+ titleCell = _ref3.titleCell,
441
+ type = _ref3.type,
442
+ rest = _objectWithoutProperties(_ref3, _excluded);
443
+ delete rest.arranger;
444
+ delete rest.marqueeOn;
445
+ delete rest.noSubtitle;
446
+ delete rest.subtitle;
447
+ delete rest.subtitleId;
448
+ delete rest.title;
449
+ delete rest.titleId;
450
+
451
+ // Set up the back button
452
+ var backButton = backButtonAvailable && !noBackButton ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_Button["default"], {
453
+ "aria-label": backButtonAriaLabel == null ? (0, _$L["default"])('go to previous') : backButtonAriaLabel,
454
+ backgroundOpacity: backButtonBackgroundOpacity,
455
+ className: css.back,
456
+ icon: "arrowhookleft",
457
+ iconFlip: "auto",
458
+ onClick: onBack,
459
+ shadowed: shadowed
460
+ }) : null;
461
+
462
+ // Set up the close button
463
+ var closeButton = !noCloseButton ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_Button["default"], {
464
+ "aria-label": closeButtonAriaLabel == null ? (0, _$L["default"])('Exit app') : closeButtonAriaLabel,
465
+ backgroundOpacity: closeButtonBackgroundOpacity,
466
+ className: css.close,
467
+ icon: "closex",
468
+ onClick: onClose,
469
+ shadowed: shadowed
470
+ }) : null;
471
+
472
+ // Only provide the synced cell size if the title should be centered, beyond that case,
473
+ // the cell sizes don't need to be synced.
474
+ var syncCellSize = centered ? slotSize : null;
475
+
476
+ // Hide slots for the first render to avoid unexpected positioning when 'centered' is given.
477
+ // After the first render, HeaderMeasurementDecorator measures widths of slots and set right 'slotSize'.
478
+ var hideSlots = {
479
+ opacity: centered && slotSize === '0rem' ? '0' : null
480
+ };
481
+
482
+ // The side Cells are always present, even if empty, to support the measurement ref.
483
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)("header", _objectSpread(_objectSpread({}, rest), {}, {
484
+ children: [slotAbove ? /*#__PURE__*/(0, _jsxRuntime.jsx)("nav", {
485
+ className: css.slotAbove,
486
+ children: slotAbove
487
+ }) : null, /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Layout.Row, {
488
+ className: css.titlesRow,
489
+ align: "center",
490
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Layout.Cell, {
491
+ className: css.slotBefore,
492
+ shrink: !syncCellSize,
493
+ size: syncCellSize,
494
+ style: hideSlots,
495
+ children: /*#__PURE__*/(0, _jsxRuntime.jsxs)("span", {
496
+ ref: slotBeforeRef,
497
+ className: css.slotSizer,
498
+ children: [backButton, slotBefore]
499
+ })
500
+ }), type === 'wizard' && (slotBefore !== null && slotBefore !== void 0 && (_slotBefore$props = slotBefore.props) !== null && _slotBefore$props !== void 0 && _slotBefore$props.visible || slotAfter !== null && slotAfter !== void 0 && (_slotAfter$props = slotAfter.props) !== null && _slotAfter$props !== void 0 && _slotAfter$props.visible) && slotSize === '0rem' ? null : titleCell, /*#__PURE__*/(0, _jsxRuntime.jsx)(_Layout.Cell, {
501
+ className: css.slotAfter,
502
+ shrink: !syncCellSize,
503
+ size: syncCellSize,
504
+ style: hideSlots,
505
+ children: /*#__PURE__*/(0, _jsxRuntime.jsxs)("span", {
506
+ ref: slotAfterRef,
507
+ className: css.slotSizer,
508
+ children: [slotAfter, closeButton]
509
+ })
510
+ })]
511
+ }), hasChildren(children) ? /*#__PURE__*/(0, _jsxRuntime.jsx)("nav", {
512
+ className: css.slotBelow,
513
+ children: children
514
+ }) : null]
515
+ }));
516
+ }
517
+ });
518
+
519
+ // Customized ContextAsDefaults HOC to incorporate the backButtonAvailable prop feature
520
+ var ContextAsDefaultsHeader = function ContextAsDefaultsHeader(Wrapped) {
521
+ // eslint-disable-next-line no-shadow
522
+ function ContextAsDefaultsHeader(props) {
523
+ var _useContextAsDefaults = (0, _util2.useContextAsDefaults)(props),
524
+ contextProps = _useContextAsDefaults.contextProps,
525
+ provideContextAsDefaults = _useContextAsDefaults.provideContextAsDefaults;
526
+ var _use = (0, _react.use)(_Panels.PanelsStateContext),
527
+ panelsType = _use.type;
528
+ var index = props['data-index'];
529
+ var backButtonAvailable = index > 0 && panelsType !== 'wizard' || panelsType === 'flexiblePopup';
530
+ return provideContextAsDefaults(/*#__PURE__*/(0, _jsxRuntime.jsx)(Wrapped, _objectSpread(_objectSpread(_objectSpread({}, contextProps), props), {}, {
531
+ backButtonAvailable: backButtonAvailable
532
+ })));
533
+ }
534
+ ContextAsDefaultsHeader.propTypes = {
535
+ /**
536
+ * Used internally to render back button.
537
+ *
538
+ * @type {Number}
539
+ * @private
540
+ */
541
+ 'data-index': _propTypes2["default"].number
542
+ };
543
+ return ContextAsDefaultsHeader;
544
+ };
545
+ var HeaderMeasurementDecorator = function HeaderMeasurementDecorator(Wrapped) {
546
+ return function HeaderMeasurementDecorator(props) {
547
+ // eslint-disable-line no-shadow
548
+ var _ref4 = (0, _Measurable.useMeasurable)() || {},
549
+ slotBeforeRef = _ref4.ref,
550
+ _ref4$measurement = _ref4.measurement,
551
+ _ref4$measurement2 = _ref4$measurement === void 0 ? {} : _ref4$measurement,
552
+ _ref4$measurement2$wi = _ref4$measurement2.width,
553
+ slotBeforeWidth = _ref4$measurement2$wi === void 0 ? 0 : _ref4$measurement2$wi;
554
+ var _ref5 = (0, _Measurable.useMeasurable)() || {},
555
+ slotAfterRef = _ref5.ref,
556
+ _ref5$measurement = _ref5.measurement,
557
+ _ref5$measurement2 = _ref5$measurement === void 0 ? {} : _ref5$measurement,
558
+ _ref5$measurement2$wi = _ref5$measurement2.width,
559
+ slotAfterWidth = _ref5$measurement2$wi === void 0 ? 0 : _ref5$measurement2$wi;
560
+ var _useState = (0, _react.useState)({}),
561
+ _useState2 = _slicedToArray(_useState, 2),
562
+ _useState2$ = _useState2[0],
563
+ slotSize = _useState2$.slotSize,
564
+ prevSlotBeforeWidth = _useState2$.prevSlotBeforeWidth,
565
+ prevSlotAfterWidth = _useState2$.prevSlotAfterWidth,
566
+ setSlotSize = _useState2[1];
567
+
568
+ // If the slot width has changed, re-run this.
569
+ if (slotBeforeWidth !== prevSlotBeforeWidth || slotAfterWidth !== prevSlotAfterWidth) {
570
+ var largestSlotSize = Math.max(slotBeforeWidth, slotAfterWidth);
571
+
572
+ // And only do this the largest slot is a different value this time around.
573
+ if (slotSize !== largestSlotSize) {
574
+ setSlotSize({
575
+ slotSize: largestSlotSize,
576
+ prevSlotBeforeWidth: slotBeforeWidth,
577
+ prevSlotAfterWidth: slotAfterWidth
578
+ });
579
+ }
580
+ }
581
+ var measurableProps = {
582
+ slotBeforeRef: slotBeforeRef,
583
+ slotAfterRef: slotAfterRef,
584
+ slotSize: (0, _resolution.unit)(slotSize, 'rem')
585
+ };
586
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(Wrapped, _objectSpread(_objectSpread({}, props), measurableProps));
587
+ };
588
+ };
589
+ var HeaderDecorator = (0, _compose["default"])(_SpotlightContainerDecorator["default"], (0, _Slottable["default"])({
590
+ slots: ['title', 'subtitle', 'slotAbove', 'slotAfter', 'slotBefore']
591
+ }), ContextAsDefaultsHeader, HeaderMeasurementDecorator, _Skinnable["default"]);
592
+
593
+ // Note that we only export this (even as HeaderBase). HeaderBase is not useful on its own.
594
+ var Header = exports.Header = HeaderDecorator(HeaderBase);
595
+
596
+ // Set up Header so when it's used in a slottable layout (like Panel), it is automatically
597
+ // recognized as this specific slot.
598
+ Header.defaultSlot = 'header';
599
+ var _default = exports["default"] = Header;