@ohos-ports/sprucelabs-react-heartwood-components 9.1.0-beta.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 (616) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +59 -0
  3. package/lib/__mocks__/stubs/events.js +166 -0
  4. package/lib/__mocks__/stubs/events.js.map +1 -0
  5. package/lib/__mocks__/stubs/location.js +34 -0
  6. package/lib/__mocks__/stubs/location.js.map +1 -0
  7. package/lib/__mocks__/stubs/users.js +225 -0
  8. package/lib/__mocks__/stubs/users.js.map +1 -0
  9. package/lib/__tests__/components/Pagination/Pagination.test.js +127 -0
  10. package/lib/__tests__/components/Pagination/Pagination.test.js.map +1 -0
  11. package/lib/components/Avatar/Avatar-story.js +34 -0
  12. package/lib/components/Avatar/Avatar-story.js.map +1 -0
  13. package/lib/components/Avatar/Avatar.d.ts +40 -0
  14. package/lib/components/Avatar/Avatar.d.ts.map +1 -0
  15. package/lib/components/Avatar/Avatar.js +91 -0
  16. package/lib/components/Avatar/Avatar.js.map +1 -0
  17. package/lib/components/Avatar/UserAvatar.js +45 -0
  18. package/lib/components/Avatar/UserAvatar.js.map +1 -0
  19. package/lib/components/BotText/BotText-story.d.ts +2 -0
  20. package/lib/components/BotText/BotText-story.d.ts.map +1 -0
  21. package/lib/components/BotText/BotText-story.js +21 -0
  22. package/lib/components/BotText/BotText-story.js.map +1 -0
  23. package/lib/components/BotText/BotText.d.ts +12 -0
  24. package/lib/components/BotText/BotText.d.ts.map +1 -0
  25. package/lib/components/BotText/BotText.js +52 -0
  26. package/lib/components/BotText/BotText.js.map +1 -0
  27. package/lib/components/Button/Button-story.js +109 -0
  28. package/lib/components/Button/Button-story.js.map +1 -0
  29. package/lib/components/Button/Button.d.ts +47 -0
  30. package/lib/components/Button/Button.d.ts.map +1 -0
  31. package/lib/components/Button/Button.js +155 -0
  32. package/lib/components/Button/Button.js.map +1 -0
  33. package/lib/components/ButtonGroup/ButtonGroup-story.js +27 -0
  34. package/lib/components/ButtonGroup/ButtonGroup-story.js.map +1 -0
  35. package/lib/components/ButtonGroup/ButtonGroup.d.ts +19 -0
  36. package/lib/components/ButtonGroup/ButtonGroup.d.ts.map +1 -0
  37. package/lib/components/ButtonGroup/ButtonGroup.js +64 -0
  38. package/lib/components/ButtonGroup/ButtonGroup.js.map +1 -0
  39. package/lib/components/Card/Card-story.d.ts +2 -0
  40. package/lib/components/Card/Card-story.d.ts.map +1 -0
  41. package/lib/components/Card/Card-story.js +389 -0
  42. package/lib/components/Card/Card-story.js.map +1 -0
  43. package/lib/components/Card/Card.d.ts +69 -0
  44. package/lib/components/Card/Card.d.ts.map +1 -0
  45. package/lib/components/Card/Card.js +113 -0
  46. package/lib/components/Card/Card.js.map +1 -0
  47. package/lib/components/Card/components/CardBody.d.ts +27 -0
  48. package/lib/components/Card/components/CardBody.d.ts.map +1 -0
  49. package/lib/components/Card/components/CardBody.js +45 -0
  50. package/lib/components/Card/components/CardBody.js.map +1 -0
  51. package/lib/components/Card/components/CardBuilder.d.ts +50 -0
  52. package/lib/components/Card/components/CardBuilder.d.ts.map +1 -0
  53. package/lib/components/Card/components/CardBuilder.js +139 -0
  54. package/lib/components/Card/components/CardBuilder.js.map +1 -0
  55. package/lib/components/Card/components/CardFooter.d.ts +11 -0
  56. package/lib/components/Card/components/CardFooter.d.ts.map +1 -0
  57. package/lib/components/Card/components/CardFooter.js +22 -0
  58. package/lib/components/Card/components/CardFooter.js.map +1 -0
  59. package/lib/components/Card/components/CardHeader.d.ts +28 -0
  60. package/lib/components/Card/components/CardHeader.d.ts.map +1 -0
  61. package/lib/components/Card/components/CardHeader.js +70 -0
  62. package/lib/components/Card/components/CardHeader.js.map +1 -0
  63. package/lib/components/Card/components/CardSection.d.ts +10 -0
  64. package/lib/components/Card/components/CardSection.d.ts.map +1 -0
  65. package/lib/components/Card/components/CardSection.js +27 -0
  66. package/lib/components/Card/components/CardSection.js.map +1 -0
  67. package/lib/components/Card/components/OnboardingCard.d.ts +27 -0
  68. package/lib/components/Card/components/OnboardingCard.d.ts.map +1 -0
  69. package/lib/components/Card/components/OnboardingCard.js +129 -0
  70. package/lib/components/Card/components/OnboardingCard.js.map +1 -0
  71. package/lib/components/Card/components/Scores.d.ts +15 -0
  72. package/lib/components/Card/components/Scores.d.ts.map +1 -0
  73. package/lib/components/Card/components/Scores.js +39 -0
  74. package/lib/components/Card/components/Scores.js.map +1 -0
  75. package/lib/components/Card/index.d.ts +11 -0
  76. package/lib/components/Card/index.d.ts.map +1 -0
  77. package/lib/components/Card/index.js +120 -0
  78. package/lib/components/Card/index.js.map +1 -0
  79. package/lib/components/CircleLoader/CircleLoader-story.d.ts +2 -0
  80. package/lib/components/CircleLoader/CircleLoader-story.d.ts.map +1 -0
  81. package/lib/components/CircleLoader/CircleLoader-story.js +20 -0
  82. package/lib/components/CircleLoader/CircleLoader-story.js.map +1 -0
  83. package/lib/components/CircleLoader/CircleLoader.d.ts +13 -0
  84. package/lib/components/CircleLoader/CircleLoader.d.ts.map +1 -0
  85. package/lib/components/CircleLoader/CircleLoader.js +28 -0
  86. package/lib/components/CircleLoader/CircleLoader.js.map +1 -0
  87. package/lib/components/ContextMenu/ContextMenu-story.js +31 -0
  88. package/lib/components/ContextMenu/ContextMenu-story.js.map +1 -0
  89. package/lib/components/ContextMenu/ContextMenu.d.ts +70 -0
  90. package/lib/components/ContextMenu/ContextMenu.d.ts.map +1 -0
  91. package/lib/components/ContextMenu/ContextMenu.js +315 -0
  92. package/lib/components/ContextMenu/ContextMenu.js.map +1 -0
  93. package/lib/components/Core/components/FeedBuilder/FeedBuilder-story.js +101 -0
  94. package/lib/components/Core/components/FeedBuilder/FeedBuilder-story.js.map +1 -0
  95. package/lib/components/Core/components/FeedBuilder/FeedBuilder.js +290 -0
  96. package/lib/components/Core/components/FeedBuilder/FeedBuilder.js.map +1 -0
  97. package/lib/components/Core/components/FooterPrimary/FooterPrimary.js +20 -0
  98. package/lib/components/Core/components/FooterPrimary/FooterPrimary.js.map +1 -0
  99. package/lib/components/Core/components/FooterPrimary/components/HelpButton/HelpButton.js +52 -0
  100. package/lib/components/Core/components/FooterPrimary/components/HelpButton/HelpButton.js.map +1 -0
  101. package/lib/components/Core/components/FooterPrimary/components/Legal/Legal.js +38 -0
  102. package/lib/components/Core/components/FooterPrimary/components/Legal/Legal.js.map +1 -0
  103. package/lib/components/Core/components/FooterPrimary/index.js +30 -0
  104. package/lib/components/Core/components/FooterPrimary/index.js.map +1 -0
  105. package/lib/components/Core/components/HeaderPrimary/HeaderPrimary-story.js +134 -0
  106. package/lib/components/Core/components/HeaderPrimary/HeaderPrimary-story.js.map +1 -0
  107. package/lib/components/Core/components/HeaderPrimary/HeaderPrimary.js +238 -0
  108. package/lib/components/Core/components/HeaderPrimary/HeaderPrimary.js.map +1 -0
  109. package/lib/components/Core/components/HeaderPrimary/components/DefaultLockup/DefaultLockup.js +32 -0
  110. package/lib/components/Core/components/HeaderPrimary/components/DefaultLockup/DefaultLockup.js.map +1 -0
  111. package/lib/components/Core/components/HeaderPrimary/components/Hamburger/Hamburger.js +58 -0
  112. package/lib/components/Core/components/HeaderPrimary/components/Hamburger/Hamburger.js.map +1 -0
  113. package/lib/components/Core/components/HeaderPrimary/components/LocationMenu/LocationMenu.js +169 -0
  114. package/lib/components/Core/components/HeaderPrimary/components/LocationMenu/LocationMenu.js.map +1 -0
  115. package/lib/components/Core/components/HeaderPrimary/components/UserMenu/UserMenu.js +56 -0
  116. package/lib/components/Core/components/HeaderPrimary/components/UserMenu/UserMenu.js.map +1 -0
  117. package/lib/components/Core/components/ProfileSummary/ProfileSummary-story.js +26 -0
  118. package/lib/components/Core/components/ProfileSummary/ProfileSummary-story.js.map +1 -0
  119. package/lib/components/Core/components/ProfileSummary/ProfileSummary.js +46 -0
  120. package/lib/components/Core/components/ProfileSummary/ProfileSummary.js.map +1 -0
  121. package/lib/components/Core/components/SaveBar/SaveBar-story.js +68 -0
  122. package/lib/components/Core/components/SaveBar/SaveBar-story.js.map +1 -0
  123. package/lib/components/Core/components/SaveBar/SaveBar.js +127 -0
  124. package/lib/components/Core/components/SaveBar/SaveBar.js.map +1 -0
  125. package/lib/components/Core/components/Sidebar/Sidebar-story.js +204 -0
  126. package/lib/components/Core/components/Sidebar/Sidebar-story.js.map +1 -0
  127. package/lib/components/Core/components/Sidebar/Sidebar.js +87 -0
  128. package/lib/components/Core/components/Sidebar/Sidebar.js.map +1 -0
  129. package/lib/components/Core/components/Sidebar/components/SidebarExpander/SidebarExpander.js +48 -0
  130. package/lib/components/Core/components/Sidebar/components/SidebarExpander/SidebarExpander.js.map +1 -0
  131. package/lib/components/Core/components/Sidebar/components/SidebarFooter/SidebarFooter.js +25 -0
  132. package/lib/components/Core/components/Sidebar/components/SidebarFooter/SidebarFooter.js.map +1 -0
  133. package/lib/components/Core/components/Sidebar/components/SidebarHeader/SidebarHeader.d.ts +12 -0
  134. package/lib/components/Core/components/Sidebar/components/SidebarHeader/SidebarHeader.d.ts.map +1 -0
  135. package/lib/components/Core/components/Sidebar/components/SidebarHeader/SidebarHeader.js +47 -0
  136. package/lib/components/Core/components/Sidebar/components/SidebarHeader/SidebarHeader.js.map +1 -0
  137. package/lib/components/Core/components/Sidebar/components/SidebarItem/SidebarItem.js +115 -0
  138. package/lib/components/Core/components/Sidebar/components/SidebarItem/SidebarItem.js.map +1 -0
  139. package/lib/components/Core/components/Sidebar/components/SidebarSection/SidebarSection.js +38 -0
  140. package/lib/components/Core/components/Sidebar/components/SidebarSection/SidebarSection.js.map +1 -0
  141. package/lib/components/Core/index.js +80 -0
  142. package/lib/components/Core/index.js.map +1 -0
  143. package/lib/components/Dropzone/Dropzone-story.js +119 -0
  144. package/lib/components/Dropzone/Dropzone-story.js.map +1 -0
  145. package/lib/components/Dropzone/Dropzone.js +317 -0
  146. package/lib/components/Dropzone/Dropzone.js.map +1 -0
  147. package/lib/components/EmptyState/EmptyState-story.d.ts +2 -0
  148. package/lib/components/EmptyState/EmptyState-story.d.ts.map +1 -0
  149. package/lib/components/EmptyState/EmptyState-story.js +60 -0
  150. package/lib/components/EmptyState/EmptyState-story.js.map +1 -0
  151. package/lib/components/EmptyState/EmptyState.d.ts +28 -0
  152. package/lib/components/EmptyState/EmptyState.d.ts.map +1 -0
  153. package/lib/components/EmptyState/EmptyState.js +54 -0
  154. package/lib/components/EmptyState/EmptyState.js.map +1 -0
  155. package/lib/components/EventDetails/EventDetails-story.d.ts +2 -0
  156. package/lib/components/EventDetails/EventDetails-story.d.ts.map +1 -0
  157. package/lib/components/EventDetails/EventDetails-story.js +112 -0
  158. package/lib/components/EventDetails/EventDetails-story.js.map +1 -0
  159. package/lib/components/EventDetails/EventDetails.d.ts +18 -0
  160. package/lib/components/EventDetails/EventDetails.d.ts.map +1 -0
  161. package/lib/components/EventDetails/EventDetails.js +75 -0
  162. package/lib/components/EventDetails/EventDetails.js.map +1 -0
  163. package/lib/components/EventDetails/EventDetailsUtilities.d.ts +11 -0
  164. package/lib/components/EventDetails/EventDetailsUtilities.d.ts.map +1 -0
  165. package/lib/components/EventDetails/EventDetailsUtilities.js +56 -0
  166. package/lib/components/EventDetails/EventDetailsUtilities.js.map +1 -0
  167. package/lib/components/EventDetails/components/EventDetailsItem/EventDetailsItem.d.ts +18 -0
  168. package/lib/components/EventDetails/components/EventDetailsItem/EventDetailsItem.d.ts.map +1 -0
  169. package/lib/components/EventDetails/components/EventDetailsItem/EventDetailsItem.js +111 -0
  170. package/lib/components/EventDetails/components/EventDetailsItem/EventDetailsItem.js.map +1 -0
  171. package/lib/components/EventDetails/eventDetailsMock.d.ts +10 -0
  172. package/lib/components/EventDetails/eventDetailsMock.d.ts.map +1 -0
  173. package/lib/components/EventDetails/eventDetailsMock.js +840 -0
  174. package/lib/components/EventDetails/eventDetailsMock.js.map +1 -0
  175. package/lib/components/FontLoader/FontLoader-story.js +16 -0
  176. package/lib/components/FontLoader/FontLoader-story.js.map +1 -0
  177. package/lib/components/FontLoader/FontLoader.js +148 -0
  178. package/lib/components/FontLoader/FontLoader.js.map +1 -0
  179. package/lib/components/Forms/FormPartials.js +70 -0
  180. package/lib/components/Forms/FormPartials.js.map +1 -0
  181. package/lib/components/Forms/Forms-story.js +297 -0
  182. package/lib/components/Forms/Forms-story.js.map +1 -0
  183. package/lib/components/Forms/components/Autosuggest/Autosuggest.d.ts +71 -0
  184. package/lib/components/Forms/components/Autosuggest/Autosuggest.d.ts.map +1 -0
  185. package/lib/components/Forms/components/Autosuggest/Autosuggest.js +372 -0
  186. package/lib/components/Forms/components/Autosuggest/Autosuggest.js.map +1 -0
  187. package/lib/components/Forms/components/Checkbox/Checkbox.d.ts +23 -0
  188. package/lib/components/Forms/components/Checkbox/Checkbox.d.ts.map +1 -0
  189. package/lib/components/Forms/components/Checkbox/Checkbox.js +162 -0
  190. package/lib/components/Forms/components/Checkbox/Checkbox.js.map +1 -0
  191. package/lib/components/Forms/components/DatePicker/DatePicker.js +236 -0
  192. package/lib/components/Forms/components/DatePicker/DatePicker.js.map +1 -0
  193. package/lib/components/Forms/components/DomainInput/DomainInput.js +29 -0
  194. package/lib/components/Forms/components/DomainInput/DomainInput.js.map +1 -0
  195. package/lib/components/Forms/components/DurationInput/DurationInput.js +270 -0
  196. package/lib/components/Forms/components/DurationInput/DurationInput.js.map +1 -0
  197. package/lib/components/Forms/components/FormBuilder/FormBuilder-story.js +357 -0
  198. package/lib/components/Forms/components/FormBuilder/FormBuilder-story.js.map +1 -0
  199. package/lib/components/Forms/components/FormBuilder/FormBuilder.js +121 -0
  200. package/lib/components/Forms/components/FormBuilder/FormBuilder.js.map +1 -0
  201. package/lib/components/Forms/components/FormBuilder/components/FormInner/FormInner.js +201 -0
  202. package/lib/components/Forms/components/FormBuilder/components/FormInner/FormInner.js.map +1 -0
  203. package/lib/components/Forms/components/FormLayout/FormLayout.js +35 -0
  204. package/lib/components/Forms/components/FormLayout/FormLayout.js.map +1 -0
  205. package/lib/components/Forms/components/FormLayout/components/FormLayoutGroup/FormLayoutGroup.js +30 -0
  206. package/lib/components/Forms/components/FormLayout/components/FormLayoutGroup/FormLayoutGroup.js.map +1 -0
  207. package/lib/components/Forms/components/FormLayout/components/FormLayoutItem/FormLayoutItem.js +32 -0
  208. package/lib/components/Forms/components/FormLayout/components/FormLayoutItem/FormLayoutItem.js.map +1 -0
  209. package/lib/components/Forms/components/FormLayout/index.js +32 -0
  210. package/lib/components/Forms/components/FormLayout/index.js.map +1 -0
  211. package/lib/components/Forms/components/PhoneInput/PhoneInput.d.ts +30 -0
  212. package/lib/components/Forms/components/PhoneInput/PhoneInput.d.ts.map +1 -0
  213. package/lib/components/Forms/components/PhoneInput/PhoneInput.js +119 -0
  214. package/lib/components/Forms/components/PhoneInput/PhoneInput.js.map +1 -0
  215. package/lib/components/Forms/components/Radio/Radio.d.ts +15 -0
  216. package/lib/components/Forms/components/Radio/Radio.d.ts.map +1 -0
  217. package/lib/components/Forms/components/Radio/Radio.js +92 -0
  218. package/lib/components/Forms/components/Radio/Radio.js.map +1 -0
  219. package/lib/components/Forms/components/Search/Search.js +96 -0
  220. package/lib/components/Forms/components/Search/Search.js.map +1 -0
  221. package/lib/components/Forms/components/Select/Select.js +95 -0
  222. package/lib/components/Forms/components/Select/Select.js.map +1 -0
  223. package/lib/components/Forms/components/Slider/Slider.js +100 -0
  224. package/lib/components/Forms/components/Slider/Slider.js.map +1 -0
  225. package/lib/components/Forms/components/Stars/Stars.js +101 -0
  226. package/lib/components/Forms/components/Stars/Stars.js.map +1 -0
  227. package/lib/components/Forms/components/Tag/Tag.js +60 -0
  228. package/lib/components/Forms/components/Tag/Tag.js.map +1 -0
  229. package/lib/components/Forms/components/TextArea/TextArea.js +55 -0
  230. package/lib/components/Forms/components/TextArea/TextArea.js.map +1 -0
  231. package/lib/components/Forms/components/TextInput/TextInput.d.ts +28 -0
  232. package/lib/components/Forms/components/TextInput/TextInput.d.ts.map +1 -0
  233. package/lib/components/Forms/components/TextInput/TextInput.js +57 -0
  234. package/lib/components/Forms/components/TextInput/TextInput.js.map +1 -0
  235. package/lib/components/Forms/components/Toggle/Toggle.d.ts +9 -0
  236. package/lib/components/Forms/components/Toggle/Toggle.d.ts.map +1 -0
  237. package/lib/components/Forms/components/Toggle/Toggle.js +43 -0
  238. package/lib/components/Forms/components/Toggle/Toggle.js.map +1 -0
  239. package/lib/components/Forms/index.d.ts +18 -0
  240. package/lib/components/Forms/index.d.ts.map +1 -0
  241. package/lib/components/Forms/index.js +182 -0
  242. package/lib/components/Forms/index.js.map +1 -0
  243. package/lib/components/Heading/Heading-story.js +18 -0
  244. package/lib/components/Heading/Heading-story.js.map +1 -0
  245. package/lib/components/Heading/Heading.d.ts +13 -0
  246. package/lib/components/Heading/Heading.d.ts.map +1 -0
  247. package/lib/components/Heading/Heading.js +32 -0
  248. package/lib/components/Heading/Heading.js.map +1 -0
  249. package/lib/components/Icon/Icon-story.d.ts +2 -0
  250. package/lib/components/Icon/Icon-story.d.ts.map +1 -0
  251. package/lib/components/Icon/Icon-story.js +44 -0
  252. package/lib/components/Icon/Icon-story.js.map +1 -0
  253. package/lib/components/Icon/Icon.d.ts +13 -0
  254. package/lib/components/Icon/Icon.d.ts.map +1 -0
  255. package/lib/components/Icon/Icon.js +52 -0
  256. package/lib/components/Icon/Icon.js.map +1 -0
  257. package/lib/components/Image/Image.d.ts +11 -0
  258. package/lib/components/Image/Image.d.ts.map +1 -0
  259. package/lib/components/Image/Image.js +32 -0
  260. package/lib/components/Image/Image.js.map +1 -0
  261. package/lib/components/ImageCropper/ImageCropper-story.js +219 -0
  262. package/lib/components/ImageCropper/ImageCropper-story.js.map +1 -0
  263. package/lib/components/ImageCropper/ImageCropper.js +256 -0
  264. package/lib/components/ImageCropper/ImageCropper.js.map +1 -0
  265. package/lib/components/ImageSSR/ImageSSR.js +32 -0
  266. package/lib/components/ImageSSR/ImageSSR.js.map +1 -0
  267. package/lib/components/Layout/Layout-story.js +128 -0
  268. package/lib/components/Layout/Layout-story.js.map +1 -0
  269. package/lib/components/Layout/Layout.js +43 -0
  270. package/lib/components/Layout/Layout.js.map +1 -0
  271. package/lib/components/Layout/components/LayoutSection/LayoutSection.js +38 -0
  272. package/lib/components/Layout/components/LayoutSection/LayoutSection.js.map +1 -0
  273. package/lib/components/Layout/index.js +24 -0
  274. package/lib/components/Layout/index.js.map +1 -0
  275. package/lib/components/List/List-story.d.ts +2 -0
  276. package/lib/components/List/List-story.d.ts.map +1 -0
  277. package/lib/components/List/List-story.js +241 -0
  278. package/lib/components/List/List-story.js.map +1 -0
  279. package/lib/components/List/List.d.ts +34 -0
  280. package/lib/components/List/List.d.ts.map +1 -0
  281. package/lib/components/List/List.js +83 -0
  282. package/lib/components/List/List.js.map +1 -0
  283. package/lib/components/List/components/ExpandableListItem/ExpandableListItem.d.ts +27 -0
  284. package/lib/components/List/components/ExpandableListItem/ExpandableListItem.d.ts.map +1 -0
  285. package/lib/components/List/components/ExpandableListItem/ExpandableListItem.js +93 -0
  286. package/lib/components/List/components/ExpandableListItem/ExpandableListItem.js.map +1 -0
  287. package/lib/components/List/components/ListHeader/ListHeader.d.ts +16 -0
  288. package/lib/components/List/components/ListHeader/ListHeader.d.ts.map +1 -0
  289. package/lib/components/List/components/ListHeader/ListHeader.js +51 -0
  290. package/lib/components/List/components/ListHeader/ListHeader.js.map +1 -0
  291. package/lib/components/List/components/ListItem/ListItem.d.ts +67 -0
  292. package/lib/components/List/components/ListItem/ListItem.d.ts.map +1 -0
  293. package/lib/components/List/components/ListItem/ListItem.js +206 -0
  294. package/lib/components/List/components/ListItem/ListItem.js.map +1 -0
  295. package/lib/components/List/components/SortableList/SortableList.d.ts +35 -0
  296. package/lib/components/List/components/SortableList/SortableList.d.ts.map +1 -0
  297. package/lib/components/List/components/SortableList/SortableList.js +180 -0
  298. package/lib/components/List/components/SortableList/SortableList.js.map +1 -0
  299. package/lib/components/List/index.d.ts +6 -0
  300. package/lib/components/List/index.d.ts.map +1 -0
  301. package/lib/components/List/index.js +74 -0
  302. package/lib/components/List/index.js.map +1 -0
  303. package/lib/components/Loader/Loader-story.js +30 -0
  304. package/lib/components/Loader/Loader-story.js.map +1 -0
  305. package/lib/components/Loader/Loader.js +36 -0
  306. package/lib/components/Loader/Loader.js.map +1 -0
  307. package/lib/components/Loader/Loader.test.js +17 -0
  308. package/lib/components/Loader/Loader.test.js.map +1 -0
  309. package/lib/components/MarkdownText/MarkdownText.d.ts +8 -0
  310. package/lib/components/MarkdownText/MarkdownText.d.ts.map +1 -0
  311. package/lib/components/MarkdownText/MarkdownText.js +26 -0
  312. package/lib/components/MarkdownText/MarkdownText.js.map +1 -0
  313. package/lib/components/Message/Message-story.js +135 -0
  314. package/lib/components/Message/Message-story.js.map +1 -0
  315. package/lib/components/Message/Message.js +147 -0
  316. package/lib/components/Message/Message.js.map +1 -0
  317. package/lib/components/Message/components/MessageBuilder.js +132 -0
  318. package/lib/components/Message/components/MessageBuilder.js.map +1 -0
  319. package/lib/components/Message/index.js +24 -0
  320. package/lib/components/Message/index.js.map +1 -0
  321. package/lib/components/Modal/Modal-story.js +239 -0
  322. package/lib/components/Modal/Modal-story.js.map +1 -0
  323. package/lib/components/Modal/Modal.js +86 -0
  324. package/lib/components/Modal/Modal.js.map +1 -0
  325. package/lib/components/Modal/components/ModalBody/ModalBody.js +30 -0
  326. package/lib/components/Modal/components/ModalBody/ModalBody.js.map +1 -0
  327. package/lib/components/Modal/components/ModalFooter/ModalFooter.js +31 -0
  328. package/lib/components/Modal/components/ModalFooter/ModalFooter.js.map +1 -0
  329. package/lib/components/Modal/components/ModalHeader/ModalHeader.js +84 -0
  330. package/lib/components/Modal/components/ModalHeader/ModalHeader.js.map +1 -0
  331. package/lib/components/Page/Page-story.js +115 -0
  332. package/lib/components/Page/Page-story.js.map +1 -0
  333. package/lib/components/Page/Page.js +55 -0
  334. package/lib/components/Page/Page.js.map +1 -0
  335. package/lib/components/Page/components/PageContent/PageContent.js +22 -0
  336. package/lib/components/Page/components/PageContent/PageContent.js.map +1 -0
  337. package/lib/components/Page/components/PageHeader/PageHeader.js +127 -0
  338. package/lib/components/Page/components/PageHeader/PageHeader.js.map +1 -0
  339. package/lib/components/Page/index.js +32 -0
  340. package/lib/components/Page/index.js.map +1 -0
  341. package/lib/components/PagedModal/PagedModal-story.js +121 -0
  342. package/lib/components/PagedModal/PagedModal-story.js.map +1 -0
  343. package/lib/components/PagedModal/PagedModal.js +84 -0
  344. package/lib/components/PagedModal/PagedModal.js.map +1 -0
  345. package/lib/components/Pagination/Pagination-story.js +35 -0
  346. package/lib/components/Pagination/Pagination-story.js.map +1 -0
  347. package/lib/components/Pagination/Pagination.js +157 -0
  348. package/lib/components/Pagination/Pagination.js.map +1 -0
  349. package/lib/components/RecordSelectionList/RecordSelectList-story.js +491 -0
  350. package/lib/components/RecordSelectionList/RecordSelectList-story.js.map +1 -0
  351. package/lib/components/RecordSelectionList/RecordSelectionList.d.ts +112 -0
  352. package/lib/components/RecordSelectionList/RecordSelectionList.d.ts.map +1 -0
  353. package/lib/components/RecordSelectionList/RecordSelectionList.js +702 -0
  354. package/lib/components/RecordSelectionList/RecordSelectionList.js.map +1 -0
  355. package/lib/components/RecordSelectionList/RecordSelectionListItem.d.ts +5 -0
  356. package/lib/components/RecordSelectionList/RecordSelectionListItem.d.ts.map +1 -0
  357. package/lib/components/RecordSelectionList/RecordSelectionListItem.js +20 -0
  358. package/lib/components/RecordSelectionList/RecordSelectionListItem.js.map +1 -0
  359. package/lib/components/RecordTable/RecordTable-story.d.ts +2 -0
  360. package/lib/components/RecordTable/RecordTable-story.d.ts.map +1 -0
  361. package/lib/components/RecordTable/RecordTable-story.js +242 -0
  362. package/lib/components/RecordTable/RecordTable-story.js.map +1 -0
  363. package/lib/components/RecordTable/RecordTable.d.ts +133 -0
  364. package/lib/components/RecordTable/RecordTable.d.ts.map +1 -0
  365. package/lib/components/RecordTable/RecordTable.js +523 -0
  366. package/lib/components/RecordTable/RecordTable.js.map +1 -0
  367. package/lib/components/SplitButton/SplitButton-story.js +60 -0
  368. package/lib/components/SplitButton/SplitButton-story.js.map +1 -0
  369. package/lib/components/SplitButton/SplitButton.d.ts +47 -0
  370. package/lib/components/SplitButton/SplitButton.d.ts.map +1 -0
  371. package/lib/components/SplitButton/SplitButton.js +296 -0
  372. package/lib/components/SplitButton/SplitButton.js.map +1 -0
  373. package/lib/components/Subheading/Subheading-story.js +18 -0
  374. package/lib/components/Subheading/Subheading-story.js.map +1 -0
  375. package/lib/components/Subheading/Subheading.js +40 -0
  376. package/lib/components/Subheading/Subheading.js.map +1 -0
  377. package/lib/components/Table/Table-story.js +428 -0
  378. package/lib/components/Table/Table-story.js.map +1 -0
  379. package/lib/components/Table/Table.d.ts +63 -0
  380. package/lib/components/Table/Table.d.ts.map +1 -0
  381. package/lib/components/Table/Table.js +395 -0
  382. package/lib/components/Table/Table.js.map +1 -0
  383. package/lib/components/Table/components/TableFilters/TableFilters.js +31 -0
  384. package/lib/components/Table/components/TableFilters/TableFilters.js.map +1 -0
  385. package/lib/components/Table/components/TableSearch/TableSearch.d.ts +7 -0
  386. package/lib/components/Table/components/TableSearch/TableSearch.d.ts.map +1 -0
  387. package/lib/components/Table/components/TableSearch/TableSearch.js +30 -0
  388. package/lib/components/Table/components/TableSearch/TableSearch.js.map +1 -0
  389. package/lib/components/Table/index.d.ts +4 -0
  390. package/lib/components/Table/index.d.ts.map +1 -0
  391. package/lib/components/Table/index.js +40 -0
  392. package/lib/components/Table/index.js.map +1 -0
  393. package/lib/components/Tabs/Tabs-story.d.ts +2 -0
  394. package/lib/components/Tabs/Tabs-story.d.ts.map +1 -0
  395. package/lib/components/Tabs/Tabs-story.js +36 -0
  396. package/lib/components/Tabs/Tabs-story.js.map +1 -0
  397. package/lib/components/Tabs/Tabs.d.ts +40 -0
  398. package/lib/components/Tabs/Tabs.d.ts.map +1 -0
  399. package/lib/components/Tabs/Tabs.js +244 -0
  400. package/lib/components/Tabs/Tabs.js.map +1 -0
  401. package/lib/components/Tabs/components/Tab/Tab.d.ts +26 -0
  402. package/lib/components/Tabs/components/Tab/Tab.d.ts.map +1 -0
  403. package/lib/components/Tabs/components/Tab/Tab.js +46 -0
  404. package/lib/components/Tabs/components/Tab/Tab.js.map +1 -0
  405. package/lib/components/Text/Text-story.d.ts +2 -0
  406. package/lib/components/Text/Text-story.d.ts.map +1 -0
  407. package/lib/components/Text/Text-story.js +51 -0
  408. package/lib/components/Text/Text-story.js.map +1 -0
  409. package/lib/components/Text/Text.d.ts +18 -0
  410. package/lib/components/Text/Text.d.ts.map +1 -0
  411. package/lib/components/Text/Text.js +123 -0
  412. package/lib/components/Text/Text.js.map +1 -0
  413. package/lib/components/TextContainer/TextContainer-story.js +32 -0
  414. package/lib/components/TextContainer/TextContainer-story.js.map +1 -0
  415. package/lib/components/TextContainer/TextContainer.js +33 -0
  416. package/lib/components/TextContainer/TextContainer.js.map +1 -0
  417. package/lib/components/TextStyle/TextStyle-story.js +28 -0
  418. package/lib/components/TextStyle/TextStyle-story.js.map +1 -0
  419. package/lib/components/TextStyle/TextStyle.js +41 -0
  420. package/lib/components/TextStyle/TextStyle.js.map +1 -0
  421. package/lib/components/Toast/Toast-story.d.ts +2 -0
  422. package/lib/components/Toast/Toast-story.d.ts.map +1 -0
  423. package/lib/components/Toast/Toast-story.js +210 -0
  424. package/lib/components/Toast/Toast-story.js.map +1 -0
  425. package/lib/components/Toast/Toast.d.ts +24 -0
  426. package/lib/components/Toast/Toast.d.ts.map +1 -0
  427. package/lib/components/Toast/Toast.js +76 -0
  428. package/lib/components/Toast/Toast.js.map +1 -0
  429. package/lib/components/Toast/components/ToastWrapper/ToastWrapper.d.ts +24 -0
  430. package/lib/components/Toast/components/ToastWrapper/ToastWrapper.d.ts.map +1 -0
  431. package/lib/components/Toast/components/ToastWrapper/ToastWrapper.js +131 -0
  432. package/lib/components/Toast/components/ToastWrapper/ToastWrapper.js.map +1 -0
  433. package/lib/components/TruncatedList/TruncatedList-story.js +222 -0
  434. package/lib/components/TruncatedList/TruncatedList-story.js.map +1 -0
  435. package/lib/components/TruncatedList/TruncatedList.d.ts +49 -0
  436. package/lib/components/TruncatedList/TruncatedList.d.ts.map +1 -0
  437. package/lib/components/TruncatedList/TruncatedList.js +188 -0
  438. package/lib/components/TruncatedList/TruncatedList.js.map +1 -0
  439. package/lib/components/View/View-story.js +485 -0
  440. package/lib/components/View/View-story.js.map +1 -0
  441. package/lib/components/View/View.d.ts +26 -0
  442. package/lib/components/View/View.d.ts.map +1 -0
  443. package/lib/components/View/View.js +91 -0
  444. package/lib/components/View/View.js.map +1 -0
  445. package/lib/components/_utilities/Anchor.js +28 -0
  446. package/lib/components/_utilities/Anchor.js.map +1 -0
  447. package/lib/custom-types.d.js +2 -0
  448. package/lib/custom-types.d.js.map +1 -0
  449. package/lib/icons.js +3328 -0
  450. package/lib/icons.js.map +1 -0
  451. package/lib/index.d.ts +46 -0
  452. package/lib/index.d.ts.map +1 -0
  453. package/lib/index.js +707 -0
  454. package/lib/index.js.map +1 -0
  455. package/lib/stubs/events.js +166 -0
  456. package/lib/stubs/events.js.map +1 -0
  457. package/lib/stubs/location.js +34 -0
  458. package/lib/stubs/location.js.map +1 -0
  459. package/lib/stubs/users.js +225 -0
  460. package/lib/stubs/users.js.map +1 -0
  461. package/lib/utilities.js +23 -0
  462. package/lib/utilities.js.map +1 -0
  463. package/package.json +174 -0
  464. package/static/android-chrome-192x192.png +0 -0
  465. package/static/android-chrome-256x256.png +0 -0
  466. package/static/apple-touch-icon.png +0 -0
  467. package/static/assets/bg.jpeg +0 -0
  468. package/static/assets/icons/Design/Rotate/rotate-back.svg +9 -0
  469. package/static/assets/icons/Design/Rotate/rotate-forward.svg +9 -0
  470. package/static/assets/icons/Interface-Essential/Alerts/alert-triangle--16w.svg +3 -0
  471. package/static/assets/icons/Interface-Essential/Alerts/alert-triangle--56w.svg +5 -0
  472. package/static/assets/icons/Interface-Essential/Alerts/alert-triangle.svg +3 -0
  473. package/static/assets/icons/Interface-Essential/Dashboard/gauge-dashboard-1.svg +11 -0
  474. package/static/assets/icons/Interface-Essential/Date/Calendar/calendar-3.svg +12 -0
  475. package/static/assets/icons/Interface-Essential/Date/Calendar/calendar-date.svg +9 -0
  476. package/static/assets/icons/Interface-Essential/Delete/bin.svg +7 -0
  477. package/static/assets/icons/Interface-Essential/Edit/pencil-write.svg +5 -0
  478. package/static/assets/icons/Interface-Essential/Form-Edition/paper-write.svg +8 -0
  479. package/static/assets/icons/Interface-Essential/Form-Validation/check-circle-1.svg +4 -0
  480. package/static/assets/icons/Interface-Essential/Help/question-help-square--16w.svg +5 -0
  481. package/static/assets/icons/Interface-Essential/Help/question-help-square.svg +5 -0
  482. package/static/assets/icons/Interface-Essential/Home/house-1--16w.svg +4 -0
  483. package/static/assets/icons/Interface-Essential/Home/house-1.svg +4 -0
  484. package/static/assets/icons/Interface-Essential/Lists/list-bullets-1.svg +8 -0
  485. package/static/assets/icons/Interface-Essential/Lock/Unlock/Lock/Unlock-4.svg +5 -0
  486. package/static/assets/icons/Interface-Essential/Lock/Unlock/lock-6--16w.svg +3 -0
  487. package/static/assets/icons/Interface-Essential/Lock/Unlock/lock-6.svg +5 -0
  488. package/static/assets/icons/Interface-Essential/Login/Logout/logout.svg +5 -0
  489. package/static/assets/icons/Interface-Essential/Menu/navigation-menu-horizontal.svg +5 -0
  490. package/static/assets/icons/Interface-Essential/Select/cursor-select-4.svg +14 -0
  491. package/static/assets/icons/Interface-Essential/Time/stopwatch.svg +8 -0
  492. package/static/assets/icons/Interface-Essential/Time-Files/time-clock-file-check.svg +7 -0
  493. package/static/assets/icons/Interface-Essential/Time-Files/time-clock-file-upload.svg +9 -0
  494. package/static/assets/icons/Maps-Navigation/Pins/pin-2.svg +4 -0
  495. package/static/assets/icons/Maps-Navigation/Pins/pin.svg +4 -0
  496. package/static/assets/icons/Messages-Chat-Smileys/Conversation/conversation-text--16w.svg +8 -0
  497. package/static/assets/icons/Messages-Chat-Smileys/Conversation/conversation-text.svg +8 -0
  498. package/static/assets/icons/Messages-Chat-Smileys/Messages-Speech-Bubbles/messages-bubble-square-text.svg +5 -0
  499. package/static/assets/icons/Phones-Mobile-Devices/Phone/phone-retro-1.svg +7 -0
  500. package/static/assets/icons/Programming-Apps-Websites/Plugins/Modules/module-puzzle.svg +3 -0
  501. package/static/assets/icons/Shopping-E-Commerce/Shops/shop-1--56w.svg +6 -0
  502. package/static/assets/icons/Shopping-E-Commerce/Shops/shop-1.svg +7 -0
  503. package/static/assets/icons/Social-Medias-Rewards-Rating/Rating/rating-star-1-1.svg +3 -0
  504. package/static/assets/icons/Social-Medias-Rewards-Rating/Rating/rating-star-1.svg +3 -0
  505. package/static/assets/icons/Transportation/Aircraft/aircraft-military-plane.svg +18 -0
  506. package/static/assets/icons/Users/Geometric-Close-Up-Single-User-Actions-Neutral/single-neutral-actions-image--56w.svg +7 -0
  507. package/static/assets/icons/Users/Geometric-Close-Up-Single-User-Actions-Neutral/single-neutral-actions-up-down.svg +8 -0
  508. package/static/assets/icons/Users/Geometric-Close-Up-Single-User-Neutral/single-neutral-id-card-3.svg +8 -0
  509. package/static/assets/icons/Users/Geometric-Full-Body-Multiple-Users/multiple-users-1.svg +8 -0
  510. package/static/assets/icons/Work-Office-Companies/Human-Resources/human-resources-search-team--16w.svg +8 -0
  511. package/static/assets/icons/Work-Office-Companies/Human-Resources/human-resources-search-team.svg +8 -0
  512. package/static/assets/icons/ic_add.svg +5 -0
  513. package/static/assets/icons/ic_add_circle_outline.svg +3 -0
  514. package/static/assets/icons/ic_arrow_back.svg +3 -0
  515. package/static/assets/icons/ic_arrow_drop_down.svg +3 -0
  516. package/static/assets/icons/ic_arrow_forward.svg +3 -0
  517. package/static/assets/icons/ic_button.svg +3 -0
  518. package/static/assets/icons/ic_calendar.svg +12 -0
  519. package/static/assets/icons/ic_cancel.svg +8 -0
  520. package/static/assets/icons/ic_caution.svg +3 -0
  521. package/static/assets/icons/ic_caution_light_large.svg +5 -0
  522. package/static/assets/icons/ic_check_box.svg +3 -0
  523. package/static/assets/icons/ic_check_box_outline_blank.svg +3 -0
  524. package/static/assets/icons/ic_check_circle.svg +3 -0
  525. package/static/assets/icons/ic_close.svg +3 -0
  526. package/static/assets/icons/ic_colors.svg +8 -0
  527. package/static/assets/icons/ic_complete.svg +4 -0
  528. package/static/assets/icons/ic_css.svg +7 -0
  529. package/static/assets/icons/ic_dashboard.svg +11 -0
  530. package/static/assets/icons/ic_date.svg +9 -0
  531. package/static/assets/icons/ic_date_disable.svg +8 -0
  532. package/static/assets/icons/ic_delete.svg +7 -0
  533. package/static/assets/icons/ic_disable.svg +3 -0
  534. package/static/assets/icons/ic_drag_handle.svg +3 -0
  535. package/static/assets/icons/ic_drop_light_large.svg +14 -0
  536. package/static/assets/icons/ic_edit.svg +5 -0
  537. package/static/assets/icons/ic_email.svg +6 -0
  538. package/static/assets/icons/ic_fonts.svg +6 -0
  539. package/static/assets/icons/ic_fullscreen.svg +3 -0
  540. package/static/assets/icons/ic_fullscreen_exit.svg +3 -0
  541. package/static/assets/icons/ic_guests.svg +8 -0
  542. package/static/assets/icons/ic_help.svg +5 -0
  543. package/static/assets/icons/ic_home.svg +4 -0
  544. package/static/assets/icons/ic_indeterminate_check_box.svg +3 -0
  545. package/static/assets/icons/ic_keyboard_arrow_left.svg +3 -0
  546. package/static/assets/icons/ic_keyboard_arrow_right.svg +3 -0
  547. package/static/assets/icons/ic_late.svg +5 -0
  548. package/static/assets/icons/ic_launch.svg +18 -0
  549. package/static/assets/icons/ic_location.svg +4 -0
  550. package/static/assets/icons/ic_logout.svg +5 -0
  551. package/static/assets/icons/ic_menu.svg +3 -0
  552. package/static/assets/icons/ic_message.svg +5 -0
  553. package/static/assets/icons/ic_message_failed.svg +7 -0
  554. package/static/assets/icons/ic_messages.svg +8 -0
  555. package/static/assets/icons/ic_more.svg +5 -0
  556. package/static/assets/icons/ic_new_tab.svg +3 -0
  557. package/static/assets/icons/ic_note.svg +8 -0
  558. package/static/assets/icons/ic_payment_failed_solid.svg +5 -0
  559. package/static/assets/icons/ic_payment_success_solid.svg +5 -0
  560. package/static/assets/icons/ic_phone.svg +7 -0
  561. package/static/assets/icons/ic_pin.svg +4 -0
  562. package/static/assets/icons/ic_pin_outline.svg +4 -0
  563. package/static/assets/icons/ic_power.svg +4 -0
  564. package/static/assets/icons/ic_private.svg +5 -0
  565. package/static/assets/icons/ic_profile_image_light_large.svg +7 -0
  566. package/static/assets/icons/ic_public.svg +5 -0
  567. package/static/assets/icons/ic_radio_button_checked.svg +3 -0
  568. package/static/assets/icons/ic_radio_button_unchecked.svg +3 -0
  569. package/static/assets/icons/ic_rotate_left.svg +9 -0
  570. package/static/assets/icons/ic_rotate_right.svg +9 -0
  571. package/static/assets/icons/ic_search.svg +3 -0
  572. package/static/assets/icons/ic_settings.svg +4 -0
  573. package/static/assets/icons/ic_shop_light_large.svg +6 -0
  574. package/static/assets/icons/ic_show.svg +4 -0
  575. package/static/assets/icons/ic_skill.svg +3 -0
  576. package/static/assets/icons/ic_star_outline.svg +3 -0
  577. package/static/assets/icons/ic_star_solid.svg +3 -0
  578. package/static/assets/icons/ic_status.svg +8 -0
  579. package/static/assets/icons/ic_store.svg +7 -0
  580. package/static/assets/icons/ic_switch_users.svg +8 -0
  581. package/static/assets/icons/ic_team.svg +8 -0
  582. package/static/assets/icons/ic_teammates.svg +8 -0
  583. package/static/assets/icons/ic_unordered_list.svg +8 -0
  584. package/static/assets/icons/ic_upload.svg +8 -0
  585. package/static/assets/icons/ic_upload_file_light_large.svg +9 -0
  586. package/static/assets/icons/ic_upload_file_success_light_large.svg +7 -0
  587. package/static/assets/icons/ic_user_avatar.svg +3 -0
  588. package/static/assets/icons/ic_wifi.svg +9 -0
  589. package/static/assets/icons/s-ic_spruce-logo-02.svg +3 -0
  590. package/static/assets/icons/s-ic_spruce-logo.svg +3 -0
  591. package/static/assets/logo.png +0 -0
  592. package/static/assets/users/user-01--96w.png +0 -0
  593. package/static/assets/users/user-01.png +0 -0
  594. package/static/assets/users/user-02--96w.png +0 -0
  595. package/static/assets/users/user-03--96w.png +0 -0
  596. package/static/assets/users/user-04--96w.png +0 -0
  597. package/static/assets/users/user-04.png +0 -0
  598. package/static/assets/users/user-05--96w.png +0 -0
  599. package/static/assets/users/user-05.png +0 -0
  600. package/static/assets/users/user-06--96w.png +0 -0
  601. package/static/assets/users/user-06.png +0 -0
  602. package/static/assets/users/user-07--96w.png +0 -0
  603. package/static/assets/users/user-07.png +0 -0
  604. package/static/assets/users/user-08--96w.png +0 -0
  605. package/static/assets/users/user-08.png +0 -0
  606. package/static/assets/users/user-09--96w.png +0 -0
  607. package/static/assets/users/user-09.png +0 -0
  608. package/static/assets/users/user-placeholder--96w.png +0 -0
  609. package/static/assets/users/user-placeholder.png +0 -0
  610. package/static/browserconfig.xml +9 -0
  611. package/static/favicon-16x16.png +0 -0
  612. package/static/favicon-32x32.png +0 -0
  613. package/static/favicon.ico +0 -0
  614. package/static/mstile-150x150.png +0 -0
  615. package/static/safari-pinned-tab.svg +26 -0
  616. package/static/site.webmanifest +19 -0
@@ -0,0 +1,47 @@
1
+ import { IHWAction, IHWSplitButton } from '@sprucelabs/spruce-types';
2
+ import React, { Component } from 'react';
3
+ import { IButtonProps } from '../Button/Button';
4
+ export interface ISplitButtonProps extends Omit<IHWSplitButton, 'actions' | 'defaultAction'> {
5
+ defaultAction: IButtonProps;
6
+ /** All the secondary nested actions */
7
+ actions: IButtonProps[];
8
+ /** optional, provide a handler for Actions */
9
+ onAction?: (action: IHWAction) => any;
10
+ }
11
+ interface ISplitButtonState {
12
+ /** Controls whether the actions are visible */
13
+ isVisible: boolean;
14
+ /** Where the menu should be positioned */
15
+ menuPosition: {
16
+ top: number;
17
+ left: number;
18
+ width: number;
19
+ };
20
+ /** Which suggestion is highlighted by arrow key navigation */
21
+ highlightedActionIndex: number;
22
+ }
23
+ export default class SplitButton extends Component<ISplitButtonProps, ISplitButtonState> {
24
+ private static defaultProps;
25
+ ref: React.RefObject<HTMLDivElement>;
26
+ menuRef: React.RefObject<HTMLDivElement>;
27
+ state: {
28
+ isVisible: boolean;
29
+ menuPosition: {
30
+ top: number;
31
+ left: number;
32
+ width: number;
33
+ };
34
+ highlightedActionIndex: number;
35
+ };
36
+ componentWillUnmount: () => void;
37
+ handleClickOutside: (e: any) => void;
38
+ onKeyUp: (e: any) => void;
39
+ manageListeners: () => void;
40
+ getButtonPosition: () => ClientRect | null;
41
+ getMenuPosition: () => void;
42
+ toggleActionsVisibility: () => void;
43
+ handleAction(action: IHWAction): void;
44
+ render(): React.ReactElement;
45
+ }
46
+ export {};
47
+ //# sourceMappingURL=SplitButton.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SplitButton.d.ts","sourceRoot":"","sources":["../../../src/components/SplitButton/SplitButton.tsx"],"names":[],"mappings":"AAAA,OAAO,EACN,SAAS,EAET,cAAc,EACd,MAAM,0BAA0B,CAAA;AAEjC,OAAO,KAAK,EAAE,EAAE,SAAS,EAAY,MAAM,OAAO,CAAA;AAElD,OAAe,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAGvD,MAAM,WAAW,iBAChB,SAAQ,IAAI,CAAC,cAAc,EAAE,SAAS,GAAG,eAAe,CAAC;IACzD,aAAa,EAAE,YAAY,CAAA;IAE3B,uCAAuC;IACvC,OAAO,EAAE,YAAY,EAAE,CAAA;IAEvB,8CAA8C;IAC9C,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,SAAS,KAAK,GAAG,CAAA;CACrC;AAED,UAAU,iBAAiB;IAC1B,+CAA+C;IAC/C,SAAS,EAAE,OAAO,CAAA;IAElB,0CAA0C;IAC1C,YAAY,EAAE;QACb,GAAG,EAAE,MAAM,CAAA;QACX,IAAI,EAAE,MAAM,CAAA;QACZ,KAAK,EAAE,MAAM,CAAA;KACb,CAAA;IAED,8DAA8D;IAC9D,sBAAsB,EAAE,MAAM,CAAA;CAC9B;AAED,MAAM,CAAC,OAAO,OAAO,WAAY,SAAQ,SAAS,CACjD,iBAAiB,EACjB,iBAAiB,CACjB;IACA,OAAO,CAAC,MAAM,CAAC,YAAY,CAG1B;IACM,GAAG,kCAAoC;IACvC,OAAO,kCAAoC;IAE3C,KAAK;;;;;;;;MAQX;IAEM,oBAAoB,aAK1B;IAEM,kBAAkB,mBAexB;IAEM,OAAO,mBAgDb;IAEM,eAAe,aAUrB;IAEM,iBAAiB,0BASvB;IAEM,eAAe,aAqBrB;IAEM,uBAAuB,aAW7B;IAEM,YAAY,CAAC,MAAM,EAAE,SAAS;IAY9B,MAAM,IAAI,KAAK,CAAC,YAAY;CAgGnC"}
@@ -0,0 +1,296 @@
1
+ "use strict";
2
+
3
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
4
+
5
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
6
+
7
+ Object.defineProperty(exports, "__esModule", {
8
+ value: true
9
+ });
10
+ exports["default"] = void 0;
11
+
12
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
13
+
14
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
15
+
16
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
17
+
18
+ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
19
+
20
+ var _getPrototypeOf3 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
21
+
22
+ var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
23
+
24
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
25
+
26
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
27
+
28
+ var _spruceTypes = require("@sprucelabs/spruce-types");
29
+
30
+ var _classnames = _interopRequireDefault(require("classnames"));
31
+
32
+ var _react = _interopRequireWildcard(require("react"));
33
+
34
+ var _reactDom = require("react-dom");
35
+
36
+ var _Button = _interopRequireDefault(require("../Button/Button"));
37
+
38
+ var _ButtonGroup = _interopRequireDefault(require("../ButtonGroup/ButtonGroup"));
39
+
40
+ var SplitButton =
41
+ /*#__PURE__*/
42
+ function (_Component) {
43
+ (0, _inherits2["default"])(SplitButton, _Component);
44
+
45
+ function SplitButton() {
46
+ var _getPrototypeOf2;
47
+
48
+ var _this;
49
+
50
+ (0, _classCallCheck2["default"])(this, SplitButton);
51
+
52
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
53
+ args[_key] = arguments[_key];
54
+ }
55
+
56
+ _this = (0, _possibleConstructorReturn2["default"])(this, (_getPrototypeOf2 = (0, _getPrototypeOf3["default"])(SplitButton)).call.apply(_getPrototypeOf2, [this].concat(args)));
57
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "ref", _react["default"].createRef());
58
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "menuRef", _react["default"].createRef());
59
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "state", {
60
+ isVisible: false,
61
+ menuPosition: {
62
+ top: 0,
63
+ left: 0,
64
+ width: 0
65
+ },
66
+ highlightedActionIndex: -1
67
+ });
68
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "componentWillUnmount", function () {
69
+ if (typeof document !== 'undefined') {
70
+ document.removeEventListener('click', _this.handleClickOutside, false);
71
+ document.removeEventListener('keyup', _this.onKeyUp, false);
72
+ }
73
+ });
74
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "handleClickOutside", function (e) {
75
+ if (_this.ref.current && _this.menuRef.current && !_this.ref.current.contains(e.target) && !_this.menuRef.current.contains(e.target)) {
76
+ _this.setState({
77
+ isVisible: false,
78
+ highlightedActionIndex: -1
79
+ }, function () {
80
+ return _this.manageListeners();
81
+ });
82
+ }
83
+ });
84
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onKeyUp", function (e) {
85
+ var actions = _this.props.actions;
86
+ var highlightedActionIndex = _this.state.highlightedActionIndex; // Down arrow
87
+
88
+ if (e.keyCode === 40) {
89
+ // Update the highlighted suggestion
90
+ _this.setState(function (prevState) {
91
+ return {
92
+ highlightedActionIndex: prevState.highlightedActionIndex === actions.length - 1 ? 0 : prevState.highlightedActionIndex + 1
93
+ };
94
+ });
95
+ } // Up arrow
96
+
97
+
98
+ if (e.keyCode === 38) {
99
+ // Update the highlighted suggestion
100
+ _this.setState(function (prevState) {
101
+ return {
102
+ highlightedActionIndex: prevState.highlightedActionIndex <= 0 ? actions.length - 1 : prevState.highlightedActionIndex - 1
103
+ };
104
+ });
105
+ } // Escape
106
+
107
+
108
+ if (e.key === 'Escape') {
109
+ _this.setState({
110
+ isVisible: false,
111
+ highlightedActionIndex: -1
112
+ }, function () {
113
+ return _this.manageListeners();
114
+ });
115
+ } // Enter
116
+
117
+
118
+ if (e.keyCode === 13) {
119
+ // Check if an action is highlighted
120
+ if (highlightedActionIndex > -1) {
121
+ var handler = actions[highlightedActionIndex].onClick; // Trigger it if so
122
+
123
+ if (handler) {
124
+ handler();
125
+ }
126
+
127
+ _this.toggleActionsVisibility();
128
+ }
129
+ }
130
+ });
131
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "manageListeners", function () {
132
+ if (typeof document !== 'undefined') {
133
+ if (_this.state.isVisible) {
134
+ document.addEventListener('click', _this.handleClickOutside, false);
135
+ document.addEventListener('keyup', _this.onKeyUp, false);
136
+ } else {
137
+ document.removeEventListener('click', _this.handleClickOutside, false);
138
+ document.removeEventListener('keyup', _this.onKeyUp, false);
139
+ }
140
+ }
141
+ });
142
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "getButtonPosition", function () {
143
+ var buttonPosition = _this.ref.current && _this.ref.current.getBoundingClientRect();
144
+
145
+ if (buttonPosition) {
146
+ return buttonPosition;
147
+ }
148
+
149
+ return null;
150
+ });
151
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "getMenuPosition", function () {
152
+ var buttonPosition = _this.getButtonPosition();
153
+
154
+ var scrollTop = typeof document !== 'undefined' && document.documentElement && document.documentElement.scrollTop ? document.documentElement.scrollTop : 0;
155
+
156
+ if (!buttonPosition) {
157
+ return;
158
+ }
159
+
160
+ var menuPosition = {
161
+ left: buttonPosition.left,
162
+ top: buttonPosition.bottom + scrollTop + 2,
163
+ width: buttonPosition.width
164
+ };
165
+
166
+ _this.setState({
167
+ menuPosition: menuPosition
168
+ });
169
+ });
170
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "toggleActionsVisibility", function () {
171
+ _this.getMenuPosition();
172
+
173
+ _this.setState(function (prevState) {
174
+ return {
175
+ isVisible: !prevState.isVisible,
176
+ highlightedActionIndex: prevState.isVisible ? -1 : prevState.highlightedActionIndex
177
+ };
178
+ }, function () {
179
+ return _this.manageListeners();
180
+ });
181
+ });
182
+ return _this;
183
+ }
184
+
185
+ (0, _createClass2["default"])(SplitButton, [{
186
+ key: "handleAction",
187
+ value: function handleAction(action) {
188
+ var onAction = this.props.onAction;
189
+ this.setState({
190
+ isVisible: false,
191
+ highlightedActionIndex: -1
192
+ }, function () {
193
+ return onAction && onAction(action);
194
+ });
195
+ }
196
+ }, {
197
+ key: "render",
198
+ value: function render() {
199
+ var _this2 = this;
200
+
201
+ var _this$props = this.props,
202
+ defaultAction = _this$props.defaultAction,
203
+ actions = _this$props.actions,
204
+ kind = _this$props.kind,
205
+ isFullWidth = _this$props.isFullWidth,
206
+ isSmall = _this$props.isSmall,
207
+ usePortal = _this$props.usePortal;
208
+ var _this$state = this.state,
209
+ isVisible = _this$state.isVisible,
210
+ menuPosition = _this$state.menuPosition,
211
+ highlightedActionIndex = _this$state.highlightedActionIndex;
212
+
213
+ if (!actions || actions && actions.length === 0) {
214
+ // TODO: Warn dev if not in production environment; they might wanna use a different component
215
+ return _react["default"].createElement(_Button["default"], (0, _extends2["default"])({
216
+ isFullWidth: isFullWidth,
217
+ isSmall: isSmall
218
+ }, defaultAction, {
219
+ kind: defaultAction.kind || kind,
220
+ onAction: function onAction(action) {
221
+ return _this2.handleAction(action);
222
+ }
223
+ }));
224
+ }
225
+
226
+ return _react["default"].createElement("div", {
227
+ className: (0, _classnames["default"])('split-button', {
228
+ 'split-button--is-full-width': isFullWidth
229
+ }),
230
+ ref: this.ref
231
+ }, _react["default"].createElement("div", {
232
+ className: "split-button__button"
233
+ }, _react["default"].createElement(_Button["default"], (0, _extends2["default"])({
234
+ isSmall: isSmall,
235
+ className: "split-button__default"
236
+ }, defaultAction, {
237
+ kind: defaultAction.kind || kind,
238
+ isFullWidth: false,
239
+ onAction: function onAction(action) {
240
+ return _this2.handleAction(action);
241
+ }
242
+ })), _react["default"].createElement(_Button["default"], {
243
+ isSmall: isSmall,
244
+ className: "split-button__actions",
245
+ icon: {
246
+ name: 'keyboard_arrow_down'
247
+ },
248
+ kind: kind,
249
+ onClick: this.toggleActionsVisibility,
250
+ onAction: function onAction(action) {
251
+ return _this2.handleAction(action);
252
+ }
253
+ })), isVisible && _react["default"].createElement(_react.Fragment, null, typeof document !== 'undefined' && document.body && usePortal ? (0, _reactDom.createPortal)(_react["default"].createElement("div", {
254
+ ref: this.menuRef,
255
+ style: {
256
+ position: 'absolute',
257
+ top: "".concat(menuPosition.top, "px"),
258
+ left: "".concat(menuPosition.left, "px"),
259
+ width: "".concat(menuPosition.width, "px")
260
+ }
261
+ }, _react["default"].createElement(_ButtonGroup["default"], {
262
+ kind: _spruceTypes.IHWButtonGroupKind.Floating,
263
+ isFullWidth: true,
264
+ actions: actions,
265
+ highlightedIndex: highlightedActionIndex,
266
+ onAction: function onAction(action) {
267
+ return _this2.handleAction(action);
268
+ }
269
+ })), document.body) : _react["default"].createElement("div", {
270
+ ref: this.menuRef,
271
+ style: {
272
+ position: 'relative',
273
+ top: '2px',
274
+ left: '0',
275
+ width: "".concat(menuPosition.width, "px")
276
+ }
277
+ }, _react["default"].createElement(_ButtonGroup["default"], {
278
+ kind: _spruceTypes.IHWButtonGroupKind.Floating,
279
+ isFullWidth: true,
280
+ actions: actions,
281
+ highlightedIndex: highlightedActionIndex,
282
+ onAction: function onAction(action) {
283
+ return _this2.handleAction(action);
284
+ }
285
+ }))));
286
+ }
287
+ }]);
288
+ return SplitButton;
289
+ }(_react.Component);
290
+
291
+ exports["default"] = SplitButton;
292
+ (0, _defineProperty2["default"])(SplitButton, "defaultProps", {
293
+ isFullWidth: false,
294
+ isSmall: false
295
+ });
296
+ //# sourceMappingURL=SplitButton.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/SplitButton/SplitButton.tsx"],"names":["SplitButton","React","createRef","isVisible","menuPosition","top","left","width","highlightedActionIndex","document","removeEventListener","handleClickOutside","onKeyUp","e","ref","current","menuRef","contains","target","setState","manageListeners","actions","props","state","keyCode","prevState","length","key","handler","onClick","toggleActionsVisibility","addEventListener","buttonPosition","getBoundingClientRect","getButtonPosition","scrollTop","documentElement","bottom","getMenuPosition","action","onAction","defaultAction","kind","isFullWidth","isSmall","usePortal","handleAction","name","body","position","IHWButtonGroupKind","Floating","Component"],"mappings":"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","sourcesContent":["import {\n\tIHWAction,\n\tIHWButtonGroupKind,\n\tIHWSplitButton\n} from '@sprucelabs/spruce-types'\nimport cx from 'classnames'\nimport React, { Component, Fragment } from 'react'\nimport { createPortal } from 'react-dom'\nimport Button, { IButtonProps } from '../Button/Button'\nimport ButtonGroup from '../ButtonGroup/ButtonGroup'\n\nexport interface ISplitButtonProps\n\textends Omit<IHWSplitButton, 'actions' | 'defaultAction'> {\n\tdefaultAction: IButtonProps\n\n\t/** All the secondary nested actions */\n\tactions: IButtonProps[]\n\n\t/** optional, provide a handler for Actions */\n\tonAction?: (action: IHWAction) => any\n}\n\ninterface ISplitButtonState {\n\t/** Controls whether the actions are visible */\n\tisVisible: boolean\n\n\t/** Where the menu should be positioned */\n\tmenuPosition: {\n\t\ttop: number\n\t\tleft: number\n\t\twidth: number\n\t}\n\n\t/** Which suggestion is highlighted by arrow key navigation */\n\thighlightedActionIndex: number\n}\n\nexport default class SplitButton extends Component<\n\tISplitButtonProps,\n\tISplitButtonState\n> {\n\tprivate static defaultProps = {\n\t\tisFullWidth: false,\n\t\tisSmall: false\n\t}\n\tpublic ref = React.createRef<HTMLDivElement>()\n\tpublic menuRef = React.createRef<HTMLDivElement>()\n\n\tpublic state = {\n\t\tisVisible: false,\n\t\tmenuPosition: {\n\t\t\ttop: 0,\n\t\t\tleft: 0,\n\t\t\twidth: 0\n\t\t},\n\t\thighlightedActionIndex: -1\n\t}\n\n\tpublic componentWillUnmount = () => {\n\t\tif (typeof document !== 'undefined') {\n\t\t\tdocument.removeEventListener('click', this.handleClickOutside, false)\n\t\t\tdocument.removeEventListener('keyup', this.onKeyUp, false)\n\t\t}\n\t}\n\n\tpublic handleClickOutside = (e: any) => {\n\t\tif (\n\t\t\tthis.ref.current &&\n\t\t\tthis.menuRef.current &&\n\t\t\t!this.ref.current.contains(e.target) &&\n\t\t\t!this.menuRef.current.contains(e.target)\n\t\t) {\n\t\t\tthis.setState(\n\t\t\t\t{\n\t\t\t\t\tisVisible: false,\n\t\t\t\t\thighlightedActionIndex: -1\n\t\t\t\t},\n\t\t\t\t() => this.manageListeners()\n\t\t\t)\n\t\t}\n\t}\n\n\tpublic onKeyUp = (e: any) => {\n\t\tconst { actions } = this.props\n\t\tconst { highlightedActionIndex } = this.state\n\t\t// Down arrow\n\t\tif (e.keyCode === 40) {\n\t\t\t// Update the highlighted suggestion\n\t\t\tthis.setState(prevState => ({\n\t\t\t\thighlightedActionIndex:\n\t\t\t\t\tprevState.highlightedActionIndex === actions.length - 1\n\t\t\t\t\t\t? 0\n\t\t\t\t\t\t: prevState.highlightedActionIndex + 1\n\t\t\t}))\n\t\t}\n\n\t\t// Up arrow\n\t\tif (e.keyCode === 38) {\n\t\t\t// Update the highlighted suggestion\n\t\t\tthis.setState(prevState => ({\n\t\t\t\thighlightedActionIndex:\n\t\t\t\t\tprevState.highlightedActionIndex <= 0\n\t\t\t\t\t\t? actions.length - 1\n\t\t\t\t\t\t: prevState.highlightedActionIndex - 1\n\t\t\t}))\n\t\t}\n\n\t\t// Escape\n\t\tif (e.key === 'Escape') {\n\t\t\tthis.setState(\n\t\t\t\t{\n\t\t\t\t\tisVisible: false,\n\t\t\t\t\thighlightedActionIndex: -1\n\t\t\t\t},\n\t\t\t\t() => this.manageListeners()\n\t\t\t)\n\t\t}\n\n\t\t// Enter\n\t\tif (e.keyCode === 13) {\n\t\t\t// Check if an action is highlighted\n\t\t\tif (highlightedActionIndex > -1) {\n\t\t\t\tconst handler = actions[highlightedActionIndex].onClick\n\t\t\t\t// Trigger it if so\n\t\t\t\tif (handler) {\n\t\t\t\t\thandler()\n\t\t\t\t}\n\t\t\t\tthis.toggleActionsVisibility()\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic manageListeners = () => {\n\t\tif (typeof document !== 'undefined') {\n\t\t\tif (this.state.isVisible) {\n\t\t\t\tdocument.addEventListener('click', this.handleClickOutside, false)\n\t\t\t\tdocument.addEventListener('keyup', this.onKeyUp, false)\n\t\t\t} else {\n\t\t\t\tdocument.removeEventListener('click', this.handleClickOutside, false)\n\t\t\t\tdocument.removeEventListener('keyup', this.onKeyUp, false)\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic getButtonPosition = () => {\n\t\tconst buttonPosition =\n\t\t\tthis.ref.current && this.ref.current.getBoundingClientRect()\n\n\t\tif (buttonPosition) {\n\t\t\treturn buttonPosition\n\t\t}\n\n\t\treturn null\n\t}\n\n\tpublic getMenuPosition = () => {\n\t\tconst buttonPosition = this.getButtonPosition()\n\t\tconst scrollTop =\n\t\t\ttypeof document !== 'undefined' &&\n\t\t\tdocument.documentElement &&\n\t\t\tdocument.documentElement.scrollTop\n\t\t\t\t? document.documentElement.scrollTop\n\t\t\t\t: 0\n\n\t\tif (!buttonPosition) {\n\t\t\treturn\n\t\t}\n\t\tconst menuPosition = {\n\t\t\tleft: buttonPosition.left,\n\t\t\ttop: buttonPosition.bottom + scrollTop + 2,\n\t\t\twidth: buttonPosition.width\n\t\t}\n\n\t\tthis.setState({\n\t\t\tmenuPosition\n\t\t})\n\t}\n\n\tpublic toggleActionsVisibility = () => {\n\t\tthis.getMenuPosition()\n\t\tthis.setState(\n\t\t\tprevState => ({\n\t\t\t\tisVisible: !prevState.isVisible,\n\t\t\t\thighlightedActionIndex: prevState.isVisible\n\t\t\t\t\t? -1\n\t\t\t\t\t: prevState.highlightedActionIndex\n\t\t\t}),\n\t\t\t() => this.manageListeners()\n\t\t)\n\t}\n\n\tpublic handleAction(action: IHWAction) {\n\t\tconst { onAction } = this.props\n\n\t\tthis.setState(\n\t\t\t{\n\t\t\t\tisVisible: false,\n\t\t\t\thighlightedActionIndex: -1\n\t\t\t},\n\t\t\t() => onAction && onAction(action)\n\t\t)\n\t}\n\n\tpublic render(): React.ReactElement {\n\t\tconst {\n\t\t\tdefaultAction,\n\t\t\tactions,\n\t\t\tkind,\n\t\t\tisFullWidth,\n\t\t\tisSmall,\n\t\t\tusePortal\n\t\t} = this.props\n\t\tconst { isVisible, menuPosition, highlightedActionIndex } = this.state\n\n\t\tif (!actions || (actions && actions.length === 0)) {\n\t\t\t// TODO: Warn dev if not in production environment; they might wanna use a different component\n\t\t\treturn (\n\t\t\t\t<Button\n\t\t\t\t\tisFullWidth={isFullWidth}\n\t\t\t\t\tisSmall={isSmall}\n\t\t\t\t\t{...defaultAction}\n\t\t\t\t\tkind={defaultAction.kind || kind}\n\t\t\t\t\tonAction={action => this.handleAction(action)}\n\t\t\t\t/>\n\t\t\t)\n\t\t}\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={cx('split-button', {\n\t\t\t\t\t'split-button--is-full-width': isFullWidth\n\t\t\t\t})}\n\t\t\t\tref={this.ref}\n\t\t\t>\n\t\t\t\t<div className=\"split-button__button\">\n\t\t\t\t\t<Button\n\t\t\t\t\t\tisSmall={isSmall}\n\t\t\t\t\t\tclassName=\"split-button__default\"\n\t\t\t\t\t\t{...defaultAction}\n\t\t\t\t\t\tkind={defaultAction.kind || kind}\n\t\t\t\t\t\tisFullWidth={false}\n\t\t\t\t\t\tonAction={action => this.handleAction(action)}\n\t\t\t\t\t/>\n\t\t\t\t\t<Button\n\t\t\t\t\t\tisSmall={isSmall}\n\t\t\t\t\t\tclassName=\"split-button__actions\"\n\t\t\t\t\t\ticon={{ name: 'keyboard_arrow_down' }}\n\t\t\t\t\t\tkind={kind}\n\t\t\t\t\t\tonClick={this.toggleActionsVisibility}\n\t\t\t\t\t\tonAction={action => this.handleAction(action)}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t\t{isVisible && (\n\t\t\t\t\t<Fragment>\n\t\t\t\t\t\t{typeof document !== 'undefined' && document.body && usePortal ? (\n\t\t\t\t\t\t\tcreatePortal(\n\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\tref={this.menuRef}\n\t\t\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\t\t\tposition: 'absolute',\n\t\t\t\t\t\t\t\t\t\ttop: `${menuPosition.top}px`,\n\t\t\t\t\t\t\t\t\t\tleft: `${menuPosition.left}px`,\n\t\t\t\t\t\t\t\t\t\twidth: `${menuPosition.width}px`\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<ButtonGroup\n\t\t\t\t\t\t\t\t\t\tkind={IHWButtonGroupKind.Floating}\n\t\t\t\t\t\t\t\t\t\tisFullWidth\n\t\t\t\t\t\t\t\t\t\tactions={actions}\n\t\t\t\t\t\t\t\t\t\thighlightedIndex={highlightedActionIndex}\n\t\t\t\t\t\t\t\t\t\tonAction={action => this.handleAction(action)}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</div>,\n\t\t\t\t\t\t\t\tdocument.body\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tref={this.menuRef}\n\t\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\t\tposition: 'relative',\n\t\t\t\t\t\t\t\t\ttop: '2px',\n\t\t\t\t\t\t\t\t\tleft: '0',\n\t\t\t\t\t\t\t\t\twidth: `${menuPosition.width}px`\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<ButtonGroup\n\t\t\t\t\t\t\t\t\tkind={IHWButtonGroupKind.Floating}\n\t\t\t\t\t\t\t\t\tisFullWidth\n\t\t\t\t\t\t\t\t\tactions={actions}\n\t\t\t\t\t\t\t\t\thighlightedIndex={highlightedActionIndex}\n\t\t\t\t\t\t\t\t\tonAction={action => this.handleAction(action)}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</Fragment>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t)\n\t}\n}\n"],"file":"SplitButton.js"}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ var _react = _interopRequireDefault(require("react"));
6
+
7
+ var _react2 = require("@storybook/react");
8
+
9
+ var _react3 = require("@storybook/addon-knobs/react");
10
+
11
+ var _Subheading = _interopRequireDefault(require("./Subheading"));
12
+
13
+ var stories = (0, _react2.storiesOf)('Subheading', module);
14
+ stories.addDecorator(_react3.withKnobs);
15
+ stories.add('Subheading', function () {
16
+ return _react["default"].createElement(_Subheading["default"], null, (0, _react3.text)('children', 'Hello, world'));
17
+ });
18
+ //# sourceMappingURL=Subheading-story.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/Subheading/Subheading-story.js"],"names":["stories","module","addDecorator","withKnobs","add"],"mappings":";;;;AACA;;AACA;;AACA;;AACA;;AACA,IAAMA,OAAO,GAAG,uBAAU,YAAV,EAAwBC,MAAxB,CAAhB;AAEAD,OAAO,CAACE,YAAR,CAAqBC,iBAArB;AAEAH,OAAO,CAACI,GAAR,CAAY,YAAZ,EAA0B;AAAA,SACzB,gCAAC,sBAAD,QAAa,kBAAK,UAAL,EAAiB,cAAjB,CAAb,CADyB;AAAA,CAA1B","sourcesContent":["// @flow\nimport React from 'react'\nimport { storiesOf } from '@storybook/react'\nimport { withKnobs, text } from '@storybook/addon-knobs/react'\nimport Subheading from './Subheading'\nconst stories = storiesOf('Subheading', module)\n\nstories.addDecorator(withKnobs)\n\nstories.add('Subheading', () => (\n\t<Subheading>{text('children', 'Hello, world')}</Subheading>\n))\n"],"file":"Subheading-story.js"}
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports["default"] = void 0;
9
+
10
+ var _react = _interopRequireDefault(require("react"));
11
+
12
+ var _classnames = _interopRequireDefault(require("classnames"));
13
+
14
+ var _Heading = require("../Heading/Heading");
15
+
16
+ var Subheading = function Subheading(props) {
17
+ var children = props.children,
18
+ className = props.className,
19
+ Element = props.element;
20
+
21
+ if (typeof children === 'string') {
22
+ return _react["default"].createElement(Element, {
23
+ className: (0, _classnames["default"])('subheading', className),
24
+ dangerouslySetInnerHTML: {
25
+ __html: children
26
+ }
27
+ });
28
+ }
29
+
30
+ return _react["default"].createElement(Element, {
31
+ className: (0, _classnames["default"])('subheading', className)
32
+ }, children);
33
+ };
34
+
35
+ Subheading.defaultProps = {
36
+ element: 'h2'
37
+ };
38
+ var _default = Subheading;
39
+ exports["default"] = _default;
40
+ //# sourceMappingURL=Subheading.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/Subheading/Subheading.js"],"names":["Subheading","props","children","className","Element","element","__html","defaultProps"],"mappings":";;;;;;;;;AACA;;AACA;;AACA;;AAaA,IAAMA,UAAU,GAAG,SAAbA,UAAa,CAACC,KAAD,EAAyB;AAAA,MACnCC,QADmC,GACOD,KADP,CACnCC,QADmC;AAAA,MACzBC,SADyB,GACOF,KADP,CACzBE,SADyB;AAAA,MACLC,OADK,GACOH,KADP,CACdI,OADc;;AAE3C,MAAI,OAAOH,QAAP,KAAoB,QAAxB,EAAkC;AACjC,WACC,gCAAC,OAAD;AACC,MAAA,SAAS,EAAE,4BAAG,YAAH,EAAiBC,SAAjB,CADZ;AAEC,MAAA,uBAAuB,EAAE;AAAEG,QAAAA,MAAM,EAAEJ;AAAV;AAF1B,MADD;AAMA;;AACD,SAAO,gCAAC,OAAD;AAAS,IAAA,SAAS,EAAE,4BAAG,YAAH,EAAiBC,SAAjB;AAApB,KAAkDD,QAAlD,CAAP;AACA,CAXD;;AAaAF,UAAU,CAACO,YAAX,GAA0B;AACzBF,EAAAA,OAAO,EAAE;AADgB,CAA1B;eAIeL,U","sourcesContent":["// @flow\nimport React from 'react'\nimport cx from 'classnames'\nimport { HeadingTagName } from '../Heading/Heading'\n\nexport type TextProps = {\n\t/** Contents of the component. */\n\tchildren: Node,\n\n\t/** Class name for the component */\n\tclassName?: string,\n\n\t/** Wrapping element to use for the subheading */\n\telement?: HeadingTagName\n}\n\nconst Subheading = (props: HeadingProps) => {\n\tconst { children, className, element: Element } = props\n\tif (typeof children === 'string') {\n\t\treturn (\n\t\t\t<Element\n\t\t\t\tclassName={cx('subheading', className)}\n\t\t\t\tdangerouslySetInnerHTML={{ __html: children }}\n\t\t\t/>\n\t\t)\n\t}\n\treturn <Element className={cx('subheading', className)}>{children}</Element>\n}\n\nSubheading.defaultProps = {\n\telement: 'h2'\n}\n\nexport default Subheading\n"],"file":"Subheading.js"}