@finsemble/finsemble-ui 7.0.0 → 7.1.0-beta.2

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 (787) hide show
  1. package/package.json +13 -11
  2. package/react/actions/favoriteActions.d.ts +1 -0
  3. package/react/actions/favoriteActions.js +1 -0
  4. package/react/actions/favoriteActions.js.map +1 -1
  5. package/react/actions/menuActions.d.ts +1 -0
  6. package/react/actions/menuActions.js +1 -0
  7. package/react/actions/menuActions.js.map +1 -1
  8. package/react/actions/rootActions.d.ts +1 -0
  9. package/react/actions/rootActions.js +1 -0
  10. package/react/actions/rootActions.js.map +1 -1
  11. package/react/actions/searchActions.d.ts +1 -0
  12. package/react/actions/searchActions.js +1 -0
  13. package/react/actions/searchActions.js.map +1 -1
  14. package/react/actions/toolbarActions.d.ts +34 -0
  15. package/react/actions/toolbarActions.js +17 -0
  16. package/react/actions/toolbarActions.js.map +1 -1
  17. package/react/actions/workspaceActions.d.ts +1 -0
  18. package/react/actions/workspaceActions.js +1 -0
  19. package/react/actions/workspaceActions.js.map +1 -1
  20. package/react/assets/css/advancedAppLauncher.css +22 -19
  21. package/react/assets/css/appCatalog.css +67 -72
  22. package/react/assets/css/authentication.css +4 -3
  23. package/react/assets/css/button.css +3 -10
  24. package/react/assets/css/core/formElements.css +1 -1
  25. package/react/assets/css/core/icons.css +3 -2
  26. package/react/assets/css/core/notifications.css +2 -2
  27. package/react/assets/css/core/windowFrame.css +9 -9
  28. package/react/assets/css/dashbar.css +1 -1
  29. package/react/assets/css/defaultTheme.css +9 -53
  30. package/react/assets/css/dialogs.css +13 -11
  31. package/react/assets/css/favorites.css +3 -1
  32. package/react/assets/css/finsemble.css +3 -2
  33. package/react/assets/css/font-finance.css +233 -120
  34. package/react/assets/css/fonts/Open_Sans/OpenSans-Definition.css +10 -10
  35. package/react/assets/css/linkerWindow.css +2 -2
  36. package/react/assets/css/menus.css +10 -10
  37. package/react/assets/css/notificationsCenter.css +16 -31
  38. package/react/assets/css/processMonitor.css +7 -4
  39. package/react/assets/css/search.css +1 -1
  40. package/react/assets/css/shared/animations.css +10 -4
  41. package/react/assets/css/shared/common.css +2 -2
  42. package/react/assets/css/tags.css +10 -10
  43. package/react/assets/css/toolbar.css +22 -19
  44. package/react/assets/css/userPreferences.css +12 -14
  45. package/react/assets/css/windowTitleBar.css +75 -36
  46. package/react/componentTemplateGenerator.js +3 -2
  47. package/react/componentTemplateGenerator.js.map +1 -1
  48. package/react/components/FinsembleProvider.d.ts +7 -0
  49. package/react/components/FinsembleProvider.js +2 -0
  50. package/react/components/FinsembleProvider.js.map +1 -1
  51. package/react/components/appCatalog/AppCatalog.d.ts +4 -0
  52. package/react/components/appCatalog/AppCatalog.js +4 -0
  53. package/react/components/appCatalog/AppCatalog.js.map +1 -1
  54. package/react/components/appCatalog/AppCatalogComponent.d.ts +58 -0
  55. package/react/components/appCatalog/AppCatalogComponent.js +70 -1
  56. package/react/components/appCatalog/AppCatalogComponent.js.map +1 -1
  57. package/react/components/appCatalog/components/AppCard.d.ts +35 -0
  58. package/react/components/appCatalog/components/AppCard.js +42 -0
  59. package/react/components/appCatalog/components/AppCard.js.map +1 -1
  60. package/react/components/appCatalog/components/AppResults.d.ts +10 -0
  61. package/react/components/appCatalog/components/AppResults.js +24 -0
  62. package/react/components/appCatalog/components/AppResults.js.map +1 -1
  63. package/react/components/appCatalog/components/Carousel.d.ts +26 -0
  64. package/react/components/appCatalog/components/Carousel.js +34 -0
  65. package/react/components/appCatalog/components/Carousel.js.map +1 -1
  66. package/react/components/appCatalog/components/EmptyResults.d.ts +4 -0
  67. package/react/components/appCatalog/components/EmptyResults.js +8 -0
  68. package/react/components/appCatalog/components/EmptyResults.js.map +1 -1
  69. package/react/components/appCatalog/components/Hero.d.ts +15 -0
  70. package/react/components/appCatalog/components/Hero.js +15 -0
  71. package/react/components/appCatalog/components/Hero.js.map +1 -1
  72. package/react/components/appCatalog/components/Home.d.ts +6 -4
  73. package/react/components/appCatalog/components/Home.js +10 -0
  74. package/react/components/appCatalog/components/Home.js.map +1 -1
  75. package/react/components/appCatalog/components/SearchBar.d.ts +31 -0
  76. package/react/components/appCatalog/components/SearchBar.js +33 -0
  77. package/react/components/appCatalog/components/SearchBar.js.map +1 -1
  78. package/react/components/appCatalog/components/Showcase/AppDescription.d.ts +5 -0
  79. package/react/components/appCatalog/components/Showcase/AppDescription.js +9 -0
  80. package/react/components/appCatalog/components/Showcase/AppDescription.js.map +1 -1
  81. package/react/components/appCatalog/components/Showcase/AppDevNotes.d.ts +7 -0
  82. package/react/components/appCatalog/components/Showcase/AppDevNotes.js +15 -0
  83. package/react/components/appCatalog/components/Showcase/AppDevNotes.js.map +1 -1
  84. package/react/components/appCatalog/components/Showcase/AppShowcase.d.ts +17 -0
  85. package/react/components/appCatalog/components/Showcase/AppShowcase.js +25 -0
  86. package/react/components/appCatalog/components/Showcase/AppShowcase.js.map +1 -1
  87. package/react/components/appCatalog/components/Showcase/Header.d.ts +7 -0
  88. package/react/components/appCatalog/components/Showcase/Header.js +12 -0
  89. package/react/components/appCatalog/components/Showcase/Header.js.map +1 -1
  90. package/react/components/appCatalog/components/Showcase/ImageCarousel.d.ts +7 -0
  91. package/react/components/appCatalog/components/Showcase/ImageCarousel.js +11 -0
  92. package/react/components/appCatalog/components/Showcase/ImageCarousel.js.map +1 -1
  93. package/react/components/appCatalog/components/Showcase/Modal.d.ts +10 -0
  94. package/react/components/appCatalog/components/Showcase/Modal.js +10 -0
  95. package/react/components/appCatalog/components/Showcase/Modal.js.map +1 -1
  96. package/react/components/appCatalog/components/Showcase/ReleaseNotes.d.ts +5 -0
  97. package/react/components/appCatalog/components/Showcase/ReleaseNotes.js +9 -0
  98. package/react/components/appCatalog/components/Showcase/ReleaseNotes.js.map +1 -1
  99. package/react/components/appCatalog/components/Showcase/SupportNotes.d.ts +6 -0
  100. package/react/components/appCatalog/components/Showcase/SupportNotes.js +11 -0
  101. package/react/components/appCatalog/components/Showcase/SupportNotes.js.map +1 -1
  102. package/react/components/appCatalog/components/Showcase/VersionNotes.d.ts +5 -0
  103. package/react/components/appCatalog/components/Showcase/VersionNotes.js +9 -0
  104. package/react/components/appCatalog/components/Showcase/VersionNotes.js.map +1 -1
  105. package/react/components/appCatalog/components/Tag.d.ts +6 -0
  106. package/react/components/appCatalog/components/Tag.js +10 -0
  107. package/react/components/appCatalog/components/Tag.js.map +1 -1
  108. package/react/components/appCatalog/components/Toast.d.ts +5 -0
  109. package/react/components/appCatalog/components/Toast.js +9 -0
  110. package/react/components/appCatalog/components/Toast.js.map +1 -1
  111. package/react/components/appCatalog/components/helpers.js +1 -0
  112. package/react/components/appCatalog/components/helpers.js.map +1 -1
  113. package/react/components/appCatalog/modules/AppDirectory.d.ts +5 -0
  114. package/react/components/appCatalog/modules/AppDirectory.js +5 -0
  115. package/react/components/appCatalog/modules/AppDirectory.js.map +1 -1
  116. package/react/components/appCatalog/modules/FDC3.d.ts +37 -0
  117. package/react/components/appCatalog/modules/FDC3.js +40 -0
  118. package/react/components/appCatalog/modules/FDC3.js.map +1 -1
  119. package/react/components/appCatalog/stores/appStore.js +1 -0
  120. package/react/components/appCatalog/stores/appStore.js.map +1 -1
  121. package/react/components/appCatalog/stores/storeActions.d.ts +91 -0
  122. package/react/components/appCatalog/stores/storeActions.js +116 -1
  123. package/react/components/appCatalog/stores/storeActions.js.map +1 -1
  124. package/react/components/common/Checkbox.d.ts +1 -0
  125. package/react/components/common/Checkbox.js +2 -2
  126. package/react/components/common/Checkbox.js.map +1 -1
  127. package/react/components/common/ColorPicker.d.ts +5 -0
  128. package/react/components/common/ColorPicker.js +40 -0
  129. package/react/components/common/ColorPicker.js.map +1 -1
  130. package/react/components/common/DropZone.d.ts +11 -0
  131. package/react/components/common/DropZone.js +21 -1
  132. package/react/components/common/DropZone.js.map +1 -1
  133. package/react/components/common/DropdownButton.d.ts +4 -0
  134. package/react/components/common/DropdownButton.js +4 -0
  135. package/react/components/common/DropdownButton.js.map +1 -1
  136. package/react/components/common/ErrorBoundary.d.ts +18 -0
  137. package/react/components/common/ErrorBoundary.js +21 -0
  138. package/react/components/common/ErrorBoundary.js.map +1 -1
  139. package/react/components/common/FileInput.d.ts +8 -1
  140. package/react/components/common/FileInput.js +19 -4
  141. package/react/components/common/FileInput.js.map +1 -1
  142. package/react/components/common/FinsembleIcon.d.ts +10 -0
  143. package/react/components/common/FinsembleIcon.js +51 -2
  144. package/react/components/common/FinsembleIcon.js.map +1 -1
  145. package/react/components/common/FinsembleSelect.js +5 -1
  146. package/react/components/common/FinsembleSelect.js.map +1 -1
  147. package/react/components/common/FinsembleToggleButtonBar.js +1 -1
  148. package/react/components/common/FinsembleToggleButtonBar.js.map +1 -1
  149. package/react/components/common/InputTable.d.ts +7 -0
  150. package/react/components/common/InputTable.js +7 -0
  151. package/react/components/common/InputTable.js.map +1 -1
  152. package/react/components/common/Tab.js +3 -0
  153. package/react/components/common/Tab.js.map +1 -1
  154. package/react/components/common/TimeSelect.js +24 -0
  155. package/react/components/common/TimeSelect.js.map +1 -1
  156. package/react/components/common/Tooltip.js +2 -0
  157. package/react/components/common/Tooltip.js.map +1 -1
  158. package/react/components/common/css/accordion.css +9 -6
  159. package/react/components/common/css/application-edit-page.css +39 -44
  160. package/react/components/common/css/button.css +10 -5
  161. package/react/components/common/css/color-picker.css +3 -3
  162. package/react/components/common/css/drop-zone.css +2 -6
  163. package/react/components/common/css/file-input.css +5 -5
  164. package/react/components/common/css/header.css +3 -2
  165. package/react/components/common/css/icon.css +1 -1
  166. package/react/components/common/css/loading-spinner.css +7 -12
  167. package/react/components/common/css/selector.css +4 -4
  168. package/react/components/common/css/styles.css +22 -16
  169. package/react/components/common/css/tab.css +8 -8
  170. package/react/components/common/css/time-select.css +1 -0
  171. package/react/components/common/css/toggle.css +4 -4
  172. package/react/components/common/css/tooltip.css +2 -3
  173. package/react/components/common/file_helpers.js +2 -0
  174. package/react/components/common/file_helpers.js.map +1 -1
  175. package/react/components/common/helpers.js +1 -0
  176. package/react/components/common/helpers.js.map +1 -1
  177. package/react/components/common/stories/ColorPicker.stories.js +3 -0
  178. package/react/components/common/stories/ColorPicker.stories.js.map +1 -1
  179. package/react/components/common/stories/FileInput.stories.d.ts +3 -1
  180. package/react/components/common/stories/FileInput.stories.js +12 -0
  181. package/react/components/common/stories/FileInput.stories.js.map +1 -1
  182. package/react/components/common/tests/Accordion.spec.js +6 -0
  183. package/react/components/common/tests/Accordion.spec.js.map +1 -1
  184. package/react/components/common/tests/Checkbox.spec.js +1 -0
  185. package/react/components/common/tests/Checkbox.spec.js.map +1 -1
  186. package/react/components/common/tests/ColorPicker.spec.js +6 -0
  187. package/react/components/common/tests/ColorPicker.spec.js.map +1 -1
  188. package/react/components/common/tests/DropZone.spec.js +1 -0
  189. package/react/components/common/tests/DropZone.spec.js.map +1 -1
  190. package/react/components/common/tests/FileInput.spec.js +22 -0
  191. package/react/components/common/tests/FileInput.spec.js.map +1 -1
  192. package/react/components/common/tests/FinsembleSelect.spec.js +1 -0
  193. package/react/components/common/tests/FinsembleSelect.spec.js.map +1 -1
  194. package/react/components/common/tests/FinsembleToggle.spec.js +1 -0
  195. package/react/components/common/tests/FinsembleToggle.spec.js.map +1 -1
  196. package/react/components/common/tests/FinsembleToggleButtonBar.spec.js +1 -0
  197. package/react/components/common/tests/FinsembleToggleButtonBar.spec.js.map +1 -1
  198. package/react/components/common/tests/TimeSelect.spec.js +4 -0
  199. package/react/components/common/tests/TimeSelect.spec.js.map +1 -1
  200. package/react/components/common/tests/Tooltip.spec.js +16 -0
  201. package/react/components/common/tests/Tooltip.spec.js.map +1 -1
  202. package/react/components/favorites/FavoriteMaker.d.ts +8 -0
  203. package/react/components/favorites/FavoriteMaker.js +9 -0
  204. package/react/components/favorites/FavoriteMaker.js.map +1 -1
  205. package/react/components/favorites/FavoritesShell.d.ts +4 -0
  206. package/react/components/favorites/FavoritesShell.js +13 -1
  207. package/react/components/favorites/FavoritesShell.js.map +1 -1
  208. package/react/components/favorites/FavoritesShell.spec.js +3 -0
  209. package/react/components/favorites/FavoritesShell.spec.js.map +1 -1
  210. package/react/components/fdc3Resolver/ResolverContainer.js +8 -0
  211. package/react/components/fdc3Resolver/ResolverContainer.js.map +1 -1
  212. package/react/components/fdc3Resolver/ResolverDialog.css +16 -3
  213. package/react/components/fdc3Resolver/ResolverDialog.js +7 -2
  214. package/react/components/fdc3Resolver/ResolverDialog.js.map +1 -1
  215. package/react/components/fdc3Resolver/ResolverDialog.spec.js +3 -2
  216. package/react/components/fdc3Resolver/ResolverDialog.spec.js.map +1 -1
  217. package/react/components/fdc3Resolver/ResolverDialog.stories.js +2 -0
  218. package/react/components/fdc3Resolver/ResolverDialog.stories.js.map +1 -1
  219. package/react/components/icon/Icon.d.ts +13 -0
  220. package/react/components/icon/Icon.js +34 -0
  221. package/react/components/icon/Icon.js.map +1 -1
  222. package/react/components/legacyControls/FinsembleDialog.d.ts +4 -0
  223. package/react/components/legacyControls/FinsembleDialog.js +15 -0
  224. package/react/components/legacyControls/FinsembleDialog.js.map +1 -1
  225. package/react/components/legacyControls/FinsembleDialogButton.d.ts +3 -0
  226. package/react/components/legacyControls/FinsembleDialogButton.js +6 -1
  227. package/react/components/legacyControls/FinsembleDialogButton.js.map +1 -1
  228. package/react/components/legacyControls/FinsembleDialogQuestion.d.ts +7 -0
  229. package/react/components/legacyControls/FinsembleDialogQuestion.js +7 -0
  230. package/react/components/legacyControls/FinsembleDialogQuestion.js.map +1 -1
  231. package/react/components/legacyControls/FinsembleDialogTextInput.d.ts +3 -0
  232. package/react/components/legacyControls/FinsembleDialogTextInput.js +14 -0
  233. package/react/components/legacyControls/FinsembleDialogTextInput.js.map +1 -1
  234. package/react/components/legacyControls/FinsembleDnDContext.d.ts +19 -0
  235. package/react/components/legacyControls/FinsembleDnDContext.js +126 -1
  236. package/react/components/legacyControls/FinsembleDnDContext.js.map +1 -1
  237. package/react/components/legacyControls/FinsembleDraggable.d.ts +3 -0
  238. package/react/components/legacyControls/FinsembleDraggable.js +3 -0
  239. package/react/components/legacyControls/FinsembleDraggable.js.map +1 -1
  240. package/react/components/legacyControls/FinsembleHoverDetector.d.ts +15 -0
  241. package/react/components/legacyControls/FinsembleHoverDetector.js +26 -1
  242. package/react/components/legacyControls/FinsembleHoverDetector.js.map +1 -1
  243. package/react/components/legacyControls/FinsembleMenuSection.d.ts +4 -0
  244. package/react/components/legacyControls/FinsembleMenuSection.js +38 -0
  245. package/react/components/legacyControls/FinsembleMenuSection.js.map +1 -1
  246. package/react/components/legacyControls/tests/FinsembleDialogButton.spec.js +1 -0
  247. package/react/components/legacyControls/tests/FinsembleDialogButton.spec.js.map +1 -1
  248. package/react/components/legacyControls/tests/FinsembleDialogTextInput.spec.js +1 -0
  249. package/react/components/legacyControls/tests/FinsembleDialogTextInput.spec.js.map +1 -1
  250. package/react/components/linker/LinkerMenu.d.ts +3 -0
  251. package/react/components/linker/LinkerMenu.js +21 -0
  252. package/react/components/linker/LinkerMenu.js.map +1 -1
  253. package/react/components/linker/LinkerMenuDeprecated.d.ts +3 -0
  254. package/react/components/linker/LinkerMenuDeprecated.js +9 -0
  255. package/react/components/linker/LinkerMenuDeprecated.js.map +1 -1
  256. package/react/components/menu/Menu.d.ts +15 -0
  257. package/react/components/menu/Menu.js +15 -0
  258. package/react/components/menu/Menu.js.map +1 -1
  259. package/react/components/menu/MenuAutoResizer.d.ts +7 -0
  260. package/react/components/menu/MenuAutoResizer.js +27 -0
  261. package/react/components/menu/MenuAutoResizer.js.map +1 -1
  262. package/react/components/menu/MenuContent.d.ts +4 -0
  263. package/react/components/menu/MenuContent.js +4 -0
  264. package/react/components/menu/MenuContent.js.map +1 -1
  265. package/react/components/menu/MenuHotKey.d.ts +14 -0
  266. package/react/components/menu/MenuHotKey.js +15 -0
  267. package/react/components/menu/MenuHotKey.js.map +1 -1
  268. package/react/components/menu/MenuItem.d.ts +8 -0
  269. package/react/components/menu/MenuItem.js +13 -2
  270. package/react/components/menu/MenuItem.js.map +1 -1
  271. package/react/components/menu/MenuPortal.js +112 -2
  272. package/react/components/menu/MenuPortal.js.map +1 -1
  273. package/react/components/menu/MenuShell.d.ts +16 -0
  274. package/react/components/menu/MenuShell.js +26 -0
  275. package/react/components/menu/MenuShell.js.map +1 -1
  276. package/react/components/menu/MenuToggle.d.ts +3 -0
  277. package/react/components/menu/MenuToggle.js +3 -0
  278. package/react/components/menu/MenuToggle.js.map +1 -1
  279. package/react/components/menu/keyboardNavigation.d.ts +12 -0
  280. package/react/components/menu/keyboardNavigation.js +55 -0
  281. package/react/components/menu/keyboardNavigation.js.map +1 -1
  282. package/react/components/menu/menuContext.d.ts +6 -0
  283. package/react/components/menu/menuContext.js +6 -0
  284. package/react/components/menu/menuContext.js.map +1 -1
  285. package/react/components/menu/menuHelpers.d.ts +22 -0
  286. package/react/components/menu/menuHelpers.js +58 -1
  287. package/react/components/menu/menuHelpers.js.map +1 -1
  288. package/react/components/notifications/components/drawer/DrawerControls.js +8 -0
  289. package/react/components/notifications/components/drawer/DrawerControls.js.map +1 -1
  290. package/react/components/notifications/components/drawer/DrawerHeader.js +5 -0
  291. package/react/components/notifications/components/drawer/DrawerHeader.js.map +1 -1
  292. package/react/components/notifications/components/notificationsCenter/NotificationsCenter.js +18 -0
  293. package/react/components/notifications/components/notificationsCenter/NotificationsCenter.js.map +1 -1
  294. package/react/components/notifications/components/notificationsToasts/NotificationsToasts.js +3 -0
  295. package/react/components/notifications/components/notificationsToasts/NotificationsToasts.js.map +1 -1
  296. package/react/components/notifications/components/shared/CheckButton.js +1 -1
  297. package/react/components/notifications/components/shared/CheckButton.js.map +1 -1
  298. package/react/components/notifications/components/shared/NotificationCardShell.d.ts +9 -0
  299. package/react/components/notifications/components/shared/NotificationCardShell.js +13 -6
  300. package/react/components/notifications/components/shared/NotificationCardShell.js.map +1 -1
  301. package/react/components/notifications/components/shared/OverflowMenu.d.ts +4 -0
  302. package/react/components/notifications/components/shared/OverflowMenu.js +16 -2
  303. package/react/components/notifications/components/shared/OverflowMenu.js.map +1 -1
  304. package/react/components/notifications/components/views/CardView.js +3 -0
  305. package/react/components/notifications/components/views/CardView.js.map +1 -1
  306. package/react/components/notifications/components/views/ListView.js +8 -0
  307. package/react/components/notifications/components/views/ListView.js.map +1 -1
  308. package/react/components/notifications/notificationsContext.d.ts +4 -0
  309. package/react/components/notifications/notificationsContext.js +4 -0
  310. package/react/components/notifications/notificationsContext.js.map +1 -1
  311. package/react/components/notifications/types.d.ts +3 -0
  312. package/react/components/notifications/utils.d.ts +4 -0
  313. package/react/components/notifications/utils.js +4 -0
  314. package/react/components/notifications/utils.js.map +1 -1
  315. package/react/components/processMonitor/ProcessMonitor.d.ts +3 -0
  316. package/react/components/processMonitor/ProcessMonitor.js +17 -2
  317. package/react/components/processMonitor/ProcessMonitor.js.map +1 -1
  318. package/react/components/processMonitor/components/ChildWindow.d.ts +3 -0
  319. package/react/components/processMonitor/components/ChildWindow.js +5 -0
  320. package/react/components/processMonitor/components/ChildWindow.js.map +1 -1
  321. package/react/components/processMonitor/components/ListHeader.d.ts +5 -0
  322. package/react/components/processMonitor/components/ListHeader.js +7 -0
  323. package/react/components/processMonitor/components/ListHeader.js.map +1 -1
  324. package/react/components/processMonitor/components/ProcessStatistics.js +12 -1
  325. package/react/components/processMonitor/components/ProcessStatistics.js.map +1 -1
  326. package/react/components/processMonitor/constants.js +6 -0
  327. package/react/components/processMonitor/constants.js.map +1 -1
  328. package/react/components/processMonitor/helpers.d.ts +13 -0
  329. package/react/components/processMonitor/helpers.js +23 -3
  330. package/react/components/processMonitor/helpers.js.map +1 -1
  331. package/react/components/processMonitor/stores/ProcessMonitorStore.d.ts +39 -0
  332. package/react/components/processMonitor/stores/ProcessMonitorStore.js +50 -0
  333. package/react/components/processMonitor/stores/ProcessMonitorStore.js.map +1 -1
  334. package/react/components/quickComponentForm/QuickComponentForm.d.ts +3 -0
  335. package/react/components/quickComponentForm/QuickComponentForm.js +20 -0
  336. package/react/components/quickComponentForm/QuickComponentForm.js.map +1 -1
  337. package/react/components/quickComponentForm/quickComponent.css +1 -1
  338. package/react/components/sdd/AddApp.d.ts +4 -2
  339. package/react/components/sdd/AddApp.js +57 -49
  340. package/react/components/sdd/AddApp.js.map +1 -1
  341. package/react/components/sdd/AppEditAccess.js +8 -0
  342. package/react/components/sdd/AppEditAccess.js.map +1 -1
  343. package/react/components/sdd/AppEditPage.d.ts +2 -1
  344. package/react/components/sdd/AppEditPage.js +148 -361
  345. package/react/components/sdd/AppEditPage.js.map +1 -1
  346. package/react/components/sdd/Appearance.css +1 -1
  347. package/react/components/sdd/Appearance.js +3 -0
  348. package/react/components/sdd/Appearance.js.map +1 -1
  349. package/react/components/sdd/Application.js +39 -7
  350. package/react/components/sdd/Application.js.map +1 -1
  351. package/react/components/sdd/Applications.js +89 -13
  352. package/react/components/sdd/Applications.js.map +1 -1
  353. package/react/components/sdd/AssetsPage.css +3 -3
  354. package/react/components/sdd/EditPreload.js +10 -0
  355. package/react/components/sdd/EditPreload.js.map +1 -1
  356. package/react/components/sdd/ExportCloud.js +4 -0
  357. package/react/components/sdd/ExportCloud.js.map +1 -1
  358. package/react/components/sdd/Publish.js +2 -0
  359. package/react/components/sdd/Publish.js.map +1 -1
  360. package/react/components/sdd/PublishProgress.js +11 -1
  361. package/react/components/sdd/PublishProgress.js.map +1 -1
  362. package/react/components/sdd/SmartDesktopDesigner.js +17 -0
  363. package/react/components/sdd/SmartDesktopDesigner.js.map +1 -1
  364. package/react/components/sdd/ThemePage.css +6 -23
  365. package/react/components/sdd/ThemePage.js +1 -1
  366. package/react/components/sdd/ThemePage.js.map +1 -1
  367. package/react/components/sdd/Themes.js +2 -0
  368. package/react/components/sdd/Themes.js.map +1 -1
  369. package/react/components/sdd/Toolbar.js +7 -0
  370. package/react/components/sdd/Toolbar.js.map +1 -1
  371. package/react/components/sdd/appEditPage/Behavior.d.ts +34 -0
  372. package/react/components/sdd/appEditPage/Behavior.js +134 -0
  373. package/react/components/sdd/appEditPage/Behavior.js.map +1 -0
  374. package/react/components/sdd/appEditPage/Component.d.ts +22 -0
  375. package/react/components/sdd/appEditPage/Component.js +76 -0
  376. package/react/components/sdd/appEditPage/Component.js.map +1 -0
  377. package/react/components/sdd/appEditPage/DebugToolkit.d.ts +9 -0
  378. package/react/components/sdd/appEditPage/DebugToolkit.js +20 -0
  379. package/react/components/sdd/appEditPage/DebugToolkit.js.map +1 -0
  380. package/react/components/sdd/appEditPage/Interop.d.ts +10 -0
  381. package/react/components/sdd/appEditPage/Interop.js +40 -0
  382. package/react/components/sdd/appEditPage/Interop.js.map +1 -0
  383. package/react/components/sdd/appEditPage/Position.d.ts +18 -0
  384. package/react/components/sdd/appEditPage/Position.js +72 -0
  385. package/react/components/sdd/appEditPage/Position.js.map +1 -0
  386. package/react/components/sdd/appEditPage/Preloads.d.ts +9 -0
  387. package/react/components/sdd/appEditPage/Preloads.js +16 -0
  388. package/react/components/sdd/appEditPage/Preloads.js.map +1 -0
  389. package/react/components/sdd/appEditPage/SelectConnect.d.ts +15 -0
  390. package/react/components/sdd/appEditPage/SelectConnect.js +28 -0
  391. package/react/components/sdd/appEditPage/SelectConnect.js.map +1 -0
  392. package/react/components/sdd/appEditPage/Workspace.d.ts +12 -0
  393. package/react/components/sdd/appEditPage/Workspace.js +30 -0
  394. package/react/components/sdd/appEditPage/Workspace.js.map +1 -0
  395. package/react/components/sdd/common/getCSSVars.js +7 -2
  396. package/react/components/sdd/common/getCSSVars.js.map +1 -1
  397. package/react/components/sdd/common/setPreloadDefaults.js +4 -0
  398. package/react/components/sdd/common/setPreloadDefaults.js.map +1 -1
  399. package/react/components/sdd/css/addApp.css +18 -5
  400. package/react/components/sdd/css/appearance.css +6 -0
  401. package/react/components/sdd/css/applications.css +27 -14
  402. package/react/components/sdd/css/authentication.css +7 -6
  403. package/react/components/sdd/css/buttons.css +1 -1
  404. package/react/components/sdd/css/export.css +5 -3
  405. package/react/components/sdd/css/getting-started.css +2 -2
  406. package/react/components/sdd/css/nav.css +8 -11
  407. package/react/components/sdd/css/project-header.css +5 -7
  408. package/react/components/sdd/css/styles.css +29 -23
  409. package/react/components/sdd/css/views.css +4 -3
  410. package/react/components/sdd/fixtures/apps.js +12 -0
  411. package/react/components/sdd/fixtures/apps.js.map +1 -1
  412. package/react/components/sdd/fixtures/configTemplate.js +1 -0
  413. package/react/components/sdd/fixtures/configTemplate.js.map +1 -1
  414. package/react/components/sdd/fixtures/publishProgress.js +40 -0
  415. package/react/components/sdd/fixtures/publishProgress.js.map +1 -1
  416. package/react/components/sdd/sdd_helpers.d.ts +6 -0
  417. package/react/components/sdd/sdd_helpers.js +6 -0
  418. package/react/components/sdd/sdd_helpers.js.map +1 -1
  419. package/react/components/sdd/smartDesktopClient.d.ts +303 -0
  420. package/react/components/sdd/smartDesktopClient.js +334 -1
  421. package/react/components/sdd/smartDesktopClient.js.map +1 -1
  422. package/react/components/sdd/smartDesktopClient.spec.js +5 -2
  423. package/react/components/sdd/smartDesktopClient.spec.js.map +1 -1
  424. package/react/components/sdd/stories/AddApp.stories.d.ts +2 -1
  425. package/react/components/sdd/stories/AddApp.stories.js +8 -0
  426. package/react/components/sdd/stories/AddApp.stories.js.map +1 -1
  427. package/react/components/sdd/stories/AppEditPage.stories.d.ts +3 -1
  428. package/react/components/sdd/stories/AppEditPage.stories.js +3 -0
  429. package/react/components/sdd/stories/AppEditPage.stories.js.map +1 -1
  430. package/react/components/sdd/stories/Appearance.stories.js +1 -0
  431. package/react/components/sdd/stories/Appearance.stories.js.map +1 -1
  432. package/react/components/sdd/tests/AddApp.spec.js +40 -3
  433. package/react/components/sdd/tests/AddApp.spec.js.map +1 -1
  434. package/react/components/sdd/tests/AppEditPage.spec.js +16 -0
  435. package/react/components/sdd/tests/AppEditPage.spec.js.map +1 -1
  436. package/react/components/sdd/tests/Application.spec.js +33 -438
  437. package/react/components/sdd/tests/Application.spec.js.map +1 -1
  438. package/react/components/sdd/tests/Applications.spec.d.ts +1 -1
  439. package/react/components/sdd/tests/Applications.spec.js +29 -5
  440. package/react/components/sdd/tests/Applications.spec.js.map +1 -1
  441. package/react/components/sdd/tests/Authentication.spec.js +7 -0
  442. package/react/components/sdd/tests/Authentication.spec.js.map +1 -1
  443. package/react/components/sdd/tests/ContentHeader.spec.js +2 -0
  444. package/react/components/sdd/tests/ContentHeader.spec.js.map +1 -1
  445. package/react/components/sdd/tests/EditPreload.spec.js +13 -0
  446. package/react/components/sdd/tests/EditPreload.spec.js.map +1 -1
  447. package/react/components/sdd/tests/Export.spec.js +2 -1
  448. package/react/components/sdd/tests/Export.spec.js.map +1 -1
  449. package/react/components/sdd/tests/ItemList.spec.js +4 -0
  450. package/react/components/sdd/tests/ItemList.spec.js.map +1 -1
  451. package/react/components/sdd/tests/OptionalSettingsView.spec.js +29 -0
  452. package/react/components/sdd/tests/OptionalSettingsView.spec.js.map +1 -1
  453. package/react/components/sdd/tests/ProjectErrors.spec.js +2 -0
  454. package/react/components/sdd/tests/ProjectErrors.spec.js.map +1 -1
  455. package/react/components/sdd/tests/Themes.spec.js +1 -1
  456. package/react/components/sdd/tests/Themes.spec.js.map +1 -1
  457. package/react/components/sdd/tests/Toolbar.spec.js +53 -0
  458. package/react/components/sdd/tests/Toolbar.spec.js.map +1 -1
  459. package/react/components/sdd/tests/a11y_helper.js +8 -0
  460. package/react/components/sdd/tests/a11y_helper.js.map +1 -1
  461. package/react/components/search/Highlight.d.ts +6 -0
  462. package/react/components/search/Highlight.js +19 -0
  463. package/react/components/search/Highlight.js.map +1 -1
  464. package/react/components/search/SearchBestMatch.d.ts +4 -0
  465. package/react/components/search/SearchBestMatch.js +11 -0
  466. package/react/components/search/SearchBestMatch.js.map +1 -1
  467. package/react/components/search/SearchInput.d.ts +5 -0
  468. package/react/components/search/SearchInput.js +6 -0
  469. package/react/components/search/SearchInput.js.map +1 -1
  470. package/react/components/search/SearchProviderResults.js +2 -0
  471. package/react/components/search/SearchProviderResults.js.map +1 -1
  472. package/react/components/search/SearchResult.js +6 -0
  473. package/react/components/search/SearchResult.js.map +1 -1
  474. package/react/components/search/SearchResult.spec.js +7 -0
  475. package/react/components/search/SearchResult.spec.js.map +1 -1
  476. package/react/components/search/SearchResult.stories.js +4 -0
  477. package/react/components/search/SearchResult.stories.js.map +1 -1
  478. package/react/components/search/SearchResults.js +5 -1
  479. package/react/components/search/SearchResults.js.map +1 -1
  480. package/react/components/search/SearchResults.spec.js +7 -0
  481. package/react/components/search/SearchResults.spec.js.map +1 -1
  482. package/react/components/shared/Animate.d.ts +5 -0
  483. package/react/components/shared/Animate.js +12 -1
  484. package/react/components/shared/Animate.js.map +1 -1
  485. package/react/components/shared/DefaultDropdownButton.js +9 -0
  486. package/react/components/shared/DefaultDropdownButton.js.map +1 -1
  487. package/react/components/shared/Tag.d.ts +0 -4
  488. package/react/components/shared/Tag.js +4 -0
  489. package/react/components/shared/Tag.js.map +1 -1
  490. package/react/components/shared/TagsMenu.d.ts +6 -0
  491. package/react/components/shared/TagsMenu.js +7 -0
  492. package/react/components/shared/TagsMenu.js.map +1 -1
  493. package/react/components/shared/addProtocolToValidURL.d.ts +6 -0
  494. package/react/components/shared/addProtocolToValidURL.js +6 -0
  495. package/react/components/shared/addProtocolToValidURL.js.map +1 -1
  496. package/react/components/shared/openQuitConfirmationDialog.d.ts +1 -1
  497. package/react/components/shared/openQuitConfirmationDialog.js +4 -4
  498. package/react/components/shared/openQuitConfirmationDialog.js.map +1 -1
  499. package/react/components/shared/tests/addProtocolToValidURL.spec.js +1 -0
  500. package/react/components/shared/tests/addProtocolToValidURL.spec.js.map +1 -1
  501. package/react/components/shared/validateURL.d.ts +18 -0
  502. package/react/components/shared/validateURL.js +24 -5
  503. package/react/components/shared/validateURL.js.map +1 -1
  504. package/react/components/singleInputDialog/SingleInputDialog.css +1 -1
  505. package/react/components/singleInputDialog/SingleInputDialog.d.ts +3 -0
  506. package/react/components/singleInputDialog/SingleInputDialog.js +44 -0
  507. package/react/components/singleInputDialog/SingleInputDialog.js.map +1 -1
  508. package/react/components/smartDesktopDesigner/SmartDesktopDesigner.js +6 -0
  509. package/react/components/smartDesktopDesigner/SmartDesktopDesigner.js.map +1 -1
  510. package/react/components/system/System.d.ts +22 -0
  511. package/react/components/system/System.js +23 -1
  512. package/react/components/system/System.js.map +1 -1
  513. package/react/components/system/System.stories.js +1 -0
  514. package/react/components/system/System.stories.js.map +1 -1
  515. package/react/components/system/SystemTrayComponentShell.d.ts +6 -0
  516. package/react/components/system/SystemTrayComponentShell.js +9 -0
  517. package/react/components/system/SystemTrayComponentShell.js.map +1 -1
  518. package/react/components/toolbar/AutoArrange.d.ts +5 -0
  519. package/react/components/toolbar/AutoArrange.js +8 -1
  520. package/react/components/toolbar/AutoArrange.js.map +1 -1
  521. package/react/components/toolbar/AutoArrange.spec.js +1 -0
  522. package/react/components/toolbar/AutoArrange.spec.js.map +1 -1
  523. package/react/components/toolbar/AutoArrange.stories.js +1 -0
  524. package/react/components/toolbar/AutoArrange.stories.js.map +1 -1
  525. package/react/components/toolbar/DragHandle.d.ts +4 -0
  526. package/react/components/toolbar/DragHandle.js +11 -0
  527. package/react/components/toolbar/DragHandle.js.map +1 -1
  528. package/react/components/toolbar/DragHandle.spec.js +1 -0
  529. package/react/components/toolbar/DragHandle.spec.js.map +1 -1
  530. package/react/components/toolbar/DragHandle.stories.js +1 -0
  531. package/react/components/toolbar/DragHandle.stories.js.map +1 -1
  532. package/react/components/toolbar/MinimizeAll.d.ts +4 -0
  533. package/react/components/toolbar/MinimizeAll.js +7 -1
  534. package/react/components/toolbar/MinimizeAll.js.map +1 -1
  535. package/react/components/toolbar/MinimizeAll.spec.js +1 -0
  536. package/react/components/toolbar/MinimizeAll.spec.js.map +1 -1
  537. package/react/components/toolbar/MinimizeAll.stories.js +1 -0
  538. package/react/components/toolbar/MinimizeAll.stories.js.map +1 -1
  539. package/react/components/toolbar/NotificationControl.d.ts +5 -0
  540. package/react/components/toolbar/NotificationControl.js +8 -1
  541. package/react/components/toolbar/NotificationControl.js.map +1 -1
  542. package/react/components/toolbar/RevealAll.d.ts +4 -0
  543. package/react/components/toolbar/RevealAll.js +7 -1
  544. package/react/components/toolbar/RevealAll.js.map +1 -1
  545. package/react/components/toolbar/RevealAll.spec.js +1 -0
  546. package/react/components/toolbar/RevealAll.spec.js.map +1 -1
  547. package/react/components/toolbar/RevealAll.stories.js +1 -0
  548. package/react/components/toolbar/RevealAll.stories.js.map +1 -1
  549. package/react/components/toolbar/SddButton.d.ts +4 -0
  550. package/react/components/toolbar/SddButton.js +4 -0
  551. package/react/components/toolbar/SddButton.js.map +1 -1
  552. package/react/components/toolbar/ToolbarIcon.d.ts +4 -0
  553. package/react/components/toolbar/ToolbarIcon.js +4 -0
  554. package/react/components/toolbar/ToolbarIcon.js.map +1 -1
  555. package/react/components/toolbar/ToolbarSection.d.ts +7 -0
  556. package/react/components/toolbar/ToolbarSection.js +19 -1
  557. package/react/components/toolbar/ToolbarSection.js.map +1 -1
  558. package/react/components/toolbar/ToolbarShell.d.ts +5 -0
  559. package/react/components/toolbar/ToolbarShell.js +7 -0
  560. package/react/components/toolbar/ToolbarShell.js.map +1 -1
  561. package/react/components/toolbar/advancedAppLauncher/AdvancedAppLauncher.d.ts +16 -0
  562. package/react/components/toolbar/advancedAppLauncher/AdvancedAppLauncher.js +20 -0
  563. package/react/components/toolbar/advancedAppLauncher/AdvancedAppLauncher.js.map +1 -1
  564. package/react/components/toolbar/advancedAppLauncher/components/AddNewAppForm.d.ts +52 -0
  565. package/react/components/toolbar/advancedAppLauncher/components/AddNewAppForm.js +58 -0
  566. package/react/components/toolbar/advancedAppLauncher/components/AddNewAppForm.js.map +1 -1
  567. package/react/components/toolbar/advancedAppLauncher/components/AddNewFolder.d.ts +5 -0
  568. package/react/components/toolbar/advancedAppLauncher/components/AddNewFolder.js +5 -0
  569. package/react/components/toolbar/advancedAppLauncher/components/AddNewFolder.js.map +1 -1
  570. package/react/components/toolbar/advancedAppLauncher/components/AppActionsMenu.d.ts +27 -0
  571. package/react/components/toolbar/advancedAppLauncher/components/AppActionsMenu.js +49 -0
  572. package/react/components/toolbar/advancedAppLauncher/components/AppActionsMenu.js.map +1 -1
  573. package/react/components/toolbar/advancedAppLauncher/components/AppDefinition.d.ts +13 -0
  574. package/react/components/toolbar/advancedAppLauncher/components/AppDefinition.js +14 -0
  575. package/react/components/toolbar/advancedAppLauncher/components/AppDefinition.js.map +1 -1
  576. package/react/components/toolbar/advancedAppLauncher/components/Content.d.ts +5 -0
  577. package/react/components/toolbar/advancedAppLauncher/components/Content.js +19 -0
  578. package/react/components/toolbar/advancedAppLauncher/components/Content.js.map +1 -1
  579. package/react/components/toolbar/advancedAppLauncher/components/FilterSort.d.ts +4 -0
  580. package/react/components/toolbar/advancedAppLauncher/components/FilterSort.js +4 -0
  581. package/react/components/toolbar/advancedAppLauncher/components/FilterSort.js.map +1 -1
  582. package/react/components/toolbar/advancedAppLauncher/components/FoldersList.d.ts +16 -0
  583. package/react/components/toolbar/advancedAppLauncher/components/FoldersList.js +39 -0
  584. package/react/components/toolbar/advancedAppLauncher/components/FoldersList.js.map +1 -1
  585. package/react/components/toolbar/advancedAppLauncher/components/LeftNavBottomLinks.d.ts +4 -0
  586. package/react/components/toolbar/advancedAppLauncher/components/LeftNavBottomLinks.js +9 -0
  587. package/react/components/toolbar/advancedAppLauncher/components/LeftNavBottomLinks.js.map +1 -1
  588. package/react/components/toolbar/advancedAppLauncher/components/SearchBox.js +3 -0
  589. package/react/components/toolbar/advancedAppLauncher/components/SearchBox.js.map +1 -1
  590. package/react/components/toolbar/advancedAppLauncher/components/TagsMenu.d.ts +6 -0
  591. package/react/components/toolbar/advancedAppLauncher/components/TagsMenu.js +7 -0
  592. package/react/components/toolbar/advancedAppLauncher/components/TagsMenu.js.map +1 -1
  593. package/react/components/toolbar/advancedAppLauncher/components/ToggleFavoriteDropdown.d.ts +5 -0
  594. package/react/components/toolbar/advancedAppLauncher/components/ToggleFavoriteDropdown.js +5 -0
  595. package/react/components/toolbar/advancedAppLauncher/components/ToggleFavoriteDropdown.js.map +1 -1
  596. package/react/components/toolbar/advancedAppLauncher/modules/AppDirectory.d.ts +5 -0
  597. package/react/components/toolbar/advancedAppLauncher/modules/AppDirectory.js +5 -0
  598. package/react/components/toolbar/advancedAppLauncher/modules/AppDirectory.js.map +1 -1
  599. package/react/components/toolbar/advancedAppLauncher/modules/FDC3.d.ts +37 -0
  600. package/react/components/toolbar/advancedAppLauncher/modules/FDC3.js +40 -0
  601. package/react/components/toolbar/advancedAppLauncher/modules/FDC3.js.map +1 -1
  602. package/react/components/toolbar/advancedAppLauncher/stores/StoreActions.d.ts +3 -0
  603. package/react/components/toolbar/advancedAppLauncher/stores/StoreActions.js +82 -0
  604. package/react/components/toolbar/advancedAppLauncher/stores/StoreActions.js.map +1 -1
  605. package/react/components/toolbar/advancedAppLauncher/utils/sort-functions.d.ts +10 -0
  606. package/react/components/toolbar/advancedAppLauncher/utils/sort-functions.js +11 -0
  607. package/react/components/toolbar/advancedAppLauncher/utils/sort-functions.js.map +1 -1
  608. package/react/components/toolbar/appLauncher/AppLauncherMenu.d.ts +18 -0
  609. package/react/components/toolbar/appLauncher/AppLauncherMenu.js +20 -0
  610. package/react/components/toolbar/appLauncher/AppLauncherMenu.js.map +1 -1
  611. package/react/components/toolbar/appLauncher/StaticAppLauncherMenu.d.ts +9 -0
  612. package/react/components/toolbar/appLauncher/StaticAppLauncherMenu.js +12 -0
  613. package/react/components/toolbar/appLauncher/StaticAppLauncherMenu.js.map +1 -1
  614. package/react/components/toolbar/appLauncher/appLauncher.css +1 -1
  615. package/react/components/toolbar/appLauncher/components/componentList.d.ts +3 -0
  616. package/react/components/toolbar/appLauncher/components/componentList.js +17 -3
  617. package/react/components/toolbar/appLauncher/components/componentList.js.map +1 -1
  618. package/react/components/toolbar/appLauncher/stores/appLauncherStore.d.ts +6 -0
  619. package/react/components/toolbar/appLauncher/stores/appLauncherStore.js +26 -0
  620. package/react/components/toolbar/appLauncher/stores/appLauncherStore.js.map +1 -1
  621. package/react/components/toolbar/dashbar/Dashbar.js +70 -3
  622. package/react/components/toolbar/dashbar/Dashbar.js.map +1 -1
  623. package/react/components/toolbar/dashbar/DashbarItem.js +5 -0
  624. package/react/components/toolbar/dashbar/DashbarItem.js.map +1 -1
  625. package/react/components/toolbar/workspaceManagementMenu/WorkspaceManagementMenu.d.ts +7 -0
  626. package/react/components/toolbar/workspaceManagementMenu/WorkspaceManagementMenu.js +7 -0
  627. package/react/components/toolbar/workspaceManagementMenu/WorkspaceManagementMenu.js.map +1 -1
  628. package/react/components/toolbar/workspaceManagementMenu/components/Workspace.d.ts +16 -0
  629. package/react/components/toolbar/workspaceManagementMenu/components/Workspace.js +20 -0
  630. package/react/components/toolbar/workspaceManagementMenu/components/Workspace.js.map +1 -1
  631. package/react/components/toolbar/workspaceManagementMenu/components/WorkspaceActions.d.ts +26 -0
  632. package/react/components/toolbar/workspaceManagementMenu/components/WorkspaceActions.js +29 -0
  633. package/react/components/toolbar/workspaceManagementMenu/components/WorkspaceActions.js.map +1 -1
  634. package/react/components/toolbar/workspaceManagementMenu/components/WorkspaceList.d.ts +5 -0
  635. package/react/components/toolbar/workspaceManagementMenu/components/WorkspaceList.js +6 -0
  636. package/react/components/toolbar/workspaceManagementMenu/components/WorkspaceList.js.map +1 -1
  637. package/react/components/toolbar/workspaceManagementMenu/stores/workspaceManagementMenuStore.d.ts +76 -0
  638. package/react/components/toolbar/workspaceManagementMenu/stores/workspaceManagementMenuStore.js +140 -1
  639. package/react/components/toolbar/workspaceManagementMenu/stores/workspaceManagementMenuStore.js.map +1 -1
  640. package/react/components/toolbar/workspaceManagementMenu/workspaceManagementMenu.css +8 -18
  641. package/react/components/userPreferences/NotificationsPreferencesContext.d.ts +4 -0
  642. package/react/components/userPreferences/NotificationsPreferencesContext.js +4 -0
  643. package/react/components/userPreferences/NotificationsPreferencesContext.js.map +1 -1
  644. package/react/components/userPreferences/UserPreferenceTypes.d.ts +3 -0
  645. package/react/components/userPreferences/UserPreferences.d.ts +8 -0
  646. package/react/components/userPreferences/UserPreferences.js +8 -0
  647. package/react/components/userPreferences/UserPreferences.js.map +1 -1
  648. package/react/components/userPreferences/UserPreferencesBase.js +4 -0
  649. package/react/components/userPreferences/UserPreferencesBase.js.map +1 -1
  650. package/react/components/userPreferences/components/ContentSection.d.ts +5 -0
  651. package/react/components/userPreferences/components/LeftNav.d.ts +4 -0
  652. package/react/components/userPreferences/components/content/DashbarEditor.js +3 -0
  653. package/react/components/userPreferences/components/content/DashbarEditor.js.map +1 -1
  654. package/react/components/userPreferences/components/content/Notifications.js +3 -0
  655. package/react/components/userPreferences/components/content/Notifications.js.map +1 -1
  656. package/react/components/userPreferences/components/content/Workspaces.d.ts +12 -0
  657. package/react/components/userPreferences/components/content/Workspaces.js +33 -1
  658. package/react/components/userPreferences/components/content/Workspaces.js.map +1 -1
  659. package/react/components/userPreferences/components/content/notificationViews/NotificationsPreferencesHome.js +3 -0
  660. package/react/components/userPreferences/components/content/notificationViews/NotificationsPreferencesHome.js.map +1 -1
  661. package/react/components/userPreferences/components/content/notificationViews/NotificationsSourceTypes.js +3 -0
  662. package/react/components/userPreferences/components/content/notificationViews/NotificationsSourceTypes.js.map +1 -1
  663. package/react/components/userPreferences/components/content/notificationViews/NotificationsSourcesPreferences.js +3 -0
  664. package/react/components/userPreferences/components/content/notificationViews/NotificationsSourcesPreferences.js.map +1 -1
  665. package/react/components/userPreferences/components/general/ScheduledClose.js +11 -0
  666. package/react/components/userPreferences/components/general/ScheduledClose.js.map +1 -1
  667. package/react/components/userPreferences/components/workspaces/WorkspaceItem.js +3 -0
  668. package/react/components/userPreferences/components/workspaces/WorkspaceItem.js.map +1 -1
  669. package/react/components/userPreferences/stores/UserPreferencesStore.d.ts +17 -0
  670. package/react/components/userPreferences/stores/UserPreferencesStore.js +27 -0
  671. package/react/components/userPreferences/stores/UserPreferencesStore.js.map +1 -1
  672. package/react/components/userPreferences/tests/NotificationsPreferencesHome.spec.js +1 -0
  673. package/react/components/userPreferences/tests/NotificationsPreferencesHome.spec.js.map +1 -1
  674. package/react/components/userPreferences/tests/Workspace.spec.js +20 -0
  675. package/react/components/userPreferences/tests/Workspace.spec.js.map +1 -1
  676. package/react/components/windowTitleBar/WindowTitleBarShell.d.ts +124 -0
  677. package/react/components/windowTitleBar/WindowTitleBarShell.js +284 -35
  678. package/react/components/windowTitleBar/WindowTitleBarShell.js.map +1 -1
  679. package/react/components/windowTitleBar/components/center/Tab.d.ts +3 -0
  680. package/react/components/windowTitleBar/components/center/Tab.js +3 -0
  681. package/react/components/windowTitleBar/components/center/Tab.js.map +1 -1
  682. package/react/components/windowTitleBar/components/center/TabList.d.ts +90 -0
  683. package/react/components/windowTitleBar/components/center/TabList.js +170 -4
  684. package/react/components/windowTitleBar/components/center/TabList.js.map +1 -1
  685. package/react/components/windowTitleBar/components/left/LinkerButton.d.ts +9 -1
  686. package/react/components/windowTitleBar/components/left/LinkerButton.js +25 -9
  687. package/react/components/windowTitleBar/components/left/LinkerButton.js.map +1 -1
  688. package/react/components/windowTitleBar/components/left/LinkerButtonDeprecated.d.ts +47 -0
  689. package/react/components/windowTitleBar/components/left/LinkerButtonDeprecated.js +76 -1
  690. package/react/components/windowTitleBar/components/left/LinkerButtonDeprecated.js.map +1 -1
  691. package/react/components/windowTitleBar/components/left/LinkerGroups.d.ts +4 -0
  692. package/react/components/windowTitleBar/components/left/LinkerGroups.js +5 -0
  693. package/react/components/windowTitleBar/components/left/LinkerGroups.js.map +1 -1
  694. package/react/components/windowTitleBar/components/left/LinkerGroupsDeprecated.d.ts +18 -0
  695. package/react/components/windowTitleBar/components/left/LinkerGroupsDeprecated.js +49 -0
  696. package/react/components/windowTitleBar/components/left/LinkerGroupsDeprecated.js.map +1 -1
  697. package/react/components/windowTitleBar/components/left/ShareButton.d.ts +17 -0
  698. package/react/components/windowTitleBar/components/left/ShareButton.js +39 -0
  699. package/react/components/windowTitleBar/components/left/ShareButton.js.map +1 -1
  700. package/react/components/windowTitleBar/components/right/AlwaysOnTopButton.js +4 -0
  701. package/react/components/windowTitleBar/components/right/AlwaysOnTopButton.js.map +1 -1
  702. package/react/components/windowTitleBar/components/right/CloseButton.d.ts +27 -0
  703. package/react/components/windowTitleBar/components/right/CloseButton.js +27 -0
  704. package/react/components/windowTitleBar/components/right/CloseButton.js.map +1 -1
  705. package/react/components/windowTitleBar/components/right/GroupingButton.d.ts +37 -0
  706. package/react/components/windowTitleBar/components/right/GroupingButton.js +40 -0
  707. package/react/components/windowTitleBar/components/right/GroupingButton.js.map +1 -1
  708. package/react/components/windowTitleBar/components/right/MaximizeButton.d.ts +46 -0
  709. package/react/components/windowTitleBar/components/right/MaximizeButton.js +54 -0
  710. package/react/components/windowTitleBar/components/right/MaximizeButton.js.map +1 -1
  711. package/react/components/windowTitleBar/components/right/MinimizeButton.d.ts +26 -0
  712. package/react/components/windowTitleBar/components/right/MinimizeButton.js +26 -0
  713. package/react/components/windowTitleBar/components/right/MinimizeButton.js.map +1 -1
  714. package/react/components/windowTitleBar/components/windowTitle.d.ts +40 -0
  715. package/react/components/windowTitleBar/components/windowTitle.js +172 -10
  716. package/react/components/windowTitleBar/components/windowTitle.js.map +1 -1
  717. package/react/components/windowTitleBar/stores/windowTitleBarStore.d.ts +5 -0
  718. package/react/components/windowTitleBar/stores/windowTitleBarStore.js +72 -1
  719. package/react/components/windowTitleBar/stores/windowTitleBarStore.js.map +1 -1
  720. package/react/components/yesNoDialog/YesNoDialog.css +1 -1
  721. package/react/components/yesNoDialog/YesNoDialog.d.ts +3 -0
  722. package/react/components/yesNoDialog/YesNoDialog.js +63 -0
  723. package/react/components/yesNoDialog/YesNoDialog.js.map +1 -1
  724. package/react/components/yesNoDialog/YesNoDialog.spec.js +4 -0
  725. package/react/components/yesNoDialog/YesNoDialog.spec.js.map +1 -1
  726. package/react/components/yesNoDialog/timer.js +2 -0
  727. package/react/components/yesNoDialog/timer.js.map +1 -1
  728. package/react/enzymeSetup.js +5 -0
  729. package/react/enzymeSetup.js.map +1 -1
  730. package/react/hooks/useDashbar.js +10 -0
  731. package/react/hooks/useDashbar.js.map +1 -1
  732. package/react/hooks/useDeepEffect.d.ts +4 -0
  733. package/react/hooks/useDeepEffect.js +21 -0
  734. package/react/hooks/useDeepEffect.js.map +1 -1
  735. package/react/hooks/useFavorites.d.ts +15 -0
  736. package/react/hooks/useFavorites.js +3 -0
  737. package/react/hooks/useFavorites.js.map +1 -1
  738. package/react/hooks/useFavoritesShell.d.ts +4 -0
  739. package/react/hooks/useFavoritesShell.js +23 -0
  740. package/react/hooks/useFavoritesShell.js.map +1 -1
  741. package/react/hooks/useHotkey.d.ts +6 -0
  742. package/react/hooks/useHotkey.js +9 -0
  743. package/react/hooks/useHotkey.js.map +1 -1
  744. package/react/hooks/useLinker.js +14 -0
  745. package/react/hooks/useLinker.js.map +1 -1
  746. package/react/hooks/useMenu.d.ts +29 -0
  747. package/react/hooks/useMenu.js +12 -1
  748. package/react/hooks/useMenu.js.map +1 -1
  749. package/react/hooks/useNotifications.d.ts +44 -0
  750. package/react/hooks/useNotifications.js +90 -0
  751. package/react/hooks/useNotifications.js.map +1 -1
  752. package/react/hooks/useOutsideClickDetector.d.ts +3 -0
  753. package/react/hooks/useOutsideClickDetector.js +3 -0
  754. package/react/hooks/useOutsideClickDetector.js.map +1 -1
  755. package/react/hooks/usePubSub.d.ts +17 -0
  756. package/react/hooks/usePubSub.js +18 -0
  757. package/react/hooks/usePubSub.js.map +1 -1
  758. package/react/hooks/useSearch.d.ts +5 -0
  759. package/react/hooks/useSearch.js +30 -0
  760. package/react/hooks/useSearch.js.map +1 -1
  761. package/react/hooks/useToolbar.js +52 -0
  762. package/react/hooks/useToolbar.js.map +1 -1
  763. package/react/reducers/favoriteReducer.d.ts +3 -0
  764. package/react/reducers/linkerReducer.d.ts +3 -0
  765. package/react/reducers/linkerReducer.js +4 -0
  766. package/react/reducers/linkerReducer.js.map +1 -1
  767. package/react/reducers/menuReducer.d.ts +28 -0
  768. package/react/reducers/menuReducer.js +34 -0
  769. package/react/reducers/menuReducer.js.map +1 -1
  770. package/react/reducers/rootReducer.js +3 -0
  771. package/react/reducers/rootReducer.js.map +1 -1
  772. package/react/reducers/searchReducer.d.ts +7 -0
  773. package/react/reducers/searchReducer.js +6 -0
  774. package/react/reducers/searchReducer.js.map +1 -1
  775. package/react/reducers/workspaceReducer.js +1 -0
  776. package/react/reducers/workspaceReducer.js.map +1 -1
  777. package/react/store.d.ts +4 -0
  778. package/react/store.js +11 -0
  779. package/react/store.js.map +1 -1
  780. package/react/tsconfig.tsbuildinfo +1 -1
  781. package/react/types/fdc3.d.ts +2 -0
  782. package/react/types/linkerTypes.d.ts +13 -0
  783. package/react/types/linkerTypes.js +1 -0
  784. package/react/types/linkerTypes.js.map +1 -1
  785. package/react/types/smartDesktopDesignerTypes.d.ts +5 -0
  786. package/react/types/smartDesktopDesignerTypes.js.map +1 -1
  787. package/react/types/workspaceTypes.d.ts +8 -0
@@ -1,8 +1,10 @@
1
1
  import React from "react";
2
+ // components
2
3
  import SearchBar from "./components/SearchBar";
3
4
  import Home from "./components/Home";
4
5
  import AppResults from "./components/AppResults";
5
6
  import AppShowcase from "./components/Showcase/AppShowcase";
7
+ // data
6
8
  import { getStore } from "./stores/appStore";
7
9
  import storeActions from "./stores/storeActions";
8
10
  import "../../assets/css/appCatalog.css";
@@ -15,7 +17,7 @@ export class AppCatalogComponent extends React.Component {
15
17
  serverError: false,
16
18
  installed: [],
17
19
  tags: [],
18
- installationActionTaken: null,
20
+ installationActionTaken: null, // type: string | null
19
21
  };
20
22
  this.bindCorrectContext();
21
23
  }
@@ -36,7 +38,10 @@ export class AppCatalogComponent extends React.Component {
36
38
  this.isActiveApp = this.isActiveApp.bind(this);
37
39
  this.getActiveTags = this.getActiveTags.bind(this);
38
40
  }
41
+ // eslint-disable-next-line react/no-deprecated
39
42
  UNSAFE_componentWillMount() {
43
+ // For more information on async react rendering, see here
44
+ // https://reactjs.org/blog/2018/03/27/update-on-async-rendering.html
40
45
  this.setState({
41
46
  isLoading: true,
42
47
  }, () => {
@@ -76,6 +81,7 @@ export class AppCatalogComponent extends React.Component {
76
81
  getStore().addListener({ field: "filteredApps" }, this.update);
77
82
  getStore().addListener({ field: "activeTags" }, this.update);
78
83
  getStore().addListener({ field: "activeApp" }, this.openAppShowcase);
84
+ // Get notified when user wants to view an app
79
85
  FSBL.Clients.RouterClient.addListener("viewApp", this.viewApp);
80
86
  let installed = storeActions.getInstalledApps();
81
87
  this.setState({
@@ -87,7 +93,9 @@ export class AppCatalogComponent extends React.Component {
87
93
  getStore().removeListener({ field: "filteredApps" }, this.update);
88
94
  getStore().removeListener({ field: "activeTags" }, this.update);
89
95
  getStore().removeListener({ field: "activeApp" }, this.openAppShowcase);
96
+ // Get notified when user wants to view an app
90
97
  FSBL.Clients.RouterClient.removeListener("viewApp", this.viewApp);
98
+ // Make sure async requests have finished.
91
99
  if (this._asyncAppRequest && this._asyncAppRequest.cancel) {
92
100
  this._asyncAppRequest.cancel();
93
101
  }
@@ -101,9 +109,11 @@ export class AppCatalogComponent extends React.Component {
101
109
  addedAppsChanged() {
102
110
  let action;
103
111
  if (this.state.installed.length > Object.keys(storeActions.getInstalledApps()).length) {
112
+ // If the components installed apps is greater than that of the store, that means an app was removed
104
113
  action = "remove";
105
114
  }
106
115
  else if (this.state.installed.length < Object.keys(storeActions.getInstalledApps()).length) {
116
+ // If the component's installed apps is less than that of the store, that means an app was added
107
117
  action = "add";
108
118
  }
109
119
  if (action) {
@@ -116,9 +126,17 @@ export class AppCatalogComponent extends React.Component {
116
126
  });
117
127
  }
118
128
  }
129
+ /**
130
+ * Force an update. Used to update from store listeners.
131
+ *
132
+ * @memberof AppMarket
133
+ */
119
134
  update() {
120
135
  this.forceUpdate();
121
136
  }
137
+ /**
138
+ * Determines the apps page based on the state of the activeTags, search text, etc
139
+ */
122
140
  determineActivePage() {
123
141
  const activeTags = this.getActiveTags();
124
142
  const filteredApps = this.getFilteredApps();
@@ -136,30 +154,72 @@ export class AppCatalogComponent extends React.Component {
136
154
  }
137
155
  return page;
138
156
  }
157
+ /**
158
+ * Returns the activeApp from the Store
159
+ *
160
+ * @returns {string} activeApp
161
+ * @memberof AppMarket
162
+ */
139
163
  getActiveApp() {
140
164
  return storeActions.getActiveApp();
141
165
  }
166
+ /**
167
+ * Checks if we have an activeApp defined
168
+ *
169
+ * @returns {boolean}
170
+ * @memberof AppMarket
171
+ */
142
172
  isActiveApp() {
143
173
  return storeActions.getActiveApp() !== null;
144
174
  }
175
+ /**
176
+ * Returns the active tags from the store
177
+ *
178
+ * @returns {array} activeTags
179
+ * @memberof AppMarket
180
+ */
145
181
  getActiveTags() {
146
182
  return storeActions.getActiveTags();
147
183
  }
184
+ /**
185
+ * Returns the filtered list of apps from search
186
+ *
187
+ * @returns {object} filteredApps
188
+ * @memberof AppMarket
189
+ */
148
190
  getFilteredApps() {
149
191
  return storeActions.getFilteredApps();
150
192
  }
193
+ /**
194
+ * Calls the store to add a tag to the activeTag list. Also updates the app view to switch to the AppResults page (since adding a tag implies filtering has begun)
195
+ * @param {string} tag The name of the tag to add
196
+ */
151
197
  addTag(tag) {
152
198
  storeActions.addTag(tag);
153
199
  }
200
+ /**
201
+ * Calls the store to remove a tag from the activeTag list. Also updates the app view to switch to the homepage if all tags have been removed
202
+ * @param {string} tag The name of the tag to add
203
+ */
154
204
  removeTag(tag) {
155
205
  storeActions.removeTag(tag);
156
206
  }
207
+ /**
208
+ * Action to take when the back button is clicked (which just goes home)
209
+ */
157
210
  goHome() {
158
211
  storeActions.goHome();
159
212
  }
213
+ /**
214
+ * Performs a search through the catalog
215
+ * @param {string} search The text to search the catalog with
216
+ */
160
217
  changeSearch(search) {
161
218
  storeActions.searchApps(search);
162
219
  }
220
+ /**
221
+ * When the notification for installing/removing an app is shown a timeout is set to call this function to cease showing the notification
222
+ */
163
223
  stopShowingInstalledNotification() {
164
224
  this.setState({
165
225
  installationActionTaken: null,
@@ -168,6 +228,9 @@ export class AppCatalogComponent extends React.Component {
168
228
  navigateToShowcase(id) {
169
229
  storeActions.openApp(id);
170
230
  }
231
+ /**
232
+ * Opens the AppShowcase page for the app supplied
233
+ */
171
234
  openAppShowcase() {
172
235
  let app = storeActions.getActiveApp();
173
236
  if (app !== null) {
@@ -177,6 +240,11 @@ export class AppCatalogComponent extends React.Component {
177
240
  }
178
241
  this.forceUpdate();
179
242
  }
243
+ /**
244
+ * Compiles a list of apps that are installed from the information received back from appd
245
+ * and the information contained on the system
246
+ * @param {boolean} filtered If true, uses the filtered apps array. Otherwise uses all apps
247
+ */
180
248
  compileAddedInfo(filtered) {
181
249
  const { installed } = this.state;
182
250
  const forceSearch = storeActions.getForceSearch();
@@ -196,6 +264,7 @@ export class AppCatalogComponent extends React.Component {
196
264
  const activeTags = this.getActiveTags();
197
265
  const activePage = this.determineActivePage();
198
266
  const apps = this.compileAddedInfo(filteredApps.length > 0);
267
+ // Force default case if activepage isn't search and apps.length is 0
199
268
  if (apps.length === 0 && activePage !== "appSearch")
200
269
  activePage = -1;
201
270
  const theApp = this.compileAddedInfo(false).find((app) => this.getActiveApp() === app.appId);
@@ -1 +1 @@
1
- {"version":3,"file":"AppCatalogComponent.js","sourceRoot":"","sources":["../../../src/components/appCatalog/AppCatalogComponent.jsx"],"names":[],"mappings":"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","sourcesContent":["import React from \"react\";\n// components\nimport SearchBar from \"./components/SearchBar\";\nimport Home from \"./components/Home\";\nimport AppResults from \"./components/AppResults\";\nimport AppShowcase from \"./components/Showcase/AppShowcase\";\n\n// data\nimport { getStore } from \"./stores/appStore\";\nimport storeActions from \"./stores/storeActions\";\n\nimport \"../../assets/css/appCatalog.css\";\n\nexport class AppCatalogComponent extends React.Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.state = {\n\t\t\tapps: [], // type: AppMetadata (from \"../../../types/fdc3\")\n\t\t\tisLoading: false,\n\t\t\tserverError: false,\n\t\t\tinstalled: [],\n\t\t\ttags: [], // type: string[]\n\t\t\tinstallationActionTaken: null, // type: string | null\n\t\t};\n\t\tthis.bindCorrectContext();\n\t}\n\n\tbindCorrectContext() {\n\t\tthis.addedAppsChanged = this.addedAppsChanged.bind(this);\n\t\tthis.update = this.update.bind(this);\n\t\tthis.goHome = this.goHome.bind(this);\n\t\tthis.addTag = this.addTag.bind(this);\n\t\tthis.removeTag = this.removeTag.bind(this);\n\t\tthis.changeSearch = this.changeSearch.bind(this);\n\t\tthis.openAppShowcase = this.openAppShowcase.bind(this);\n\t\tthis.stopShowingInstalledNotification = this.stopShowingInstalledNotification.bind(this);\n\t\tthis.compileAddedInfo = this.compileAddedInfo.bind(this);\n\t\tthis.getPageContents = this.getPageContents.bind(this);\n\t\tthis.determineActivePage = this.determineActivePage.bind(this);\n\t\tthis.navigateToShowcase = this.navigateToShowcase.bind(this);\n\t\tthis.viewApp = this.viewApp.bind(this);\n\t\tthis.isActiveApp = this.isActiveApp.bind(this);\n\t\tthis.getActiveTags = this.getActiveTags.bind(this);\n\t}\n\n\t// eslint-disable-next-line react/no-deprecated\n\tUNSAFE_componentWillMount() {\n\t\t// For more information on async react rendering, see here\n\t\t// https://reactjs.org/blog/2018/03/27/update-on-async-rendering.html\n\n\t\tthis.setState(\n\t\t\t{\n\t\t\t\tisLoading: true,\n\t\t\t},\n\t\t\t() => {\n\t\t\t\tthis._asyncAppRequest = storeActions\n\t\t\t\t\t.getApps()\n\t\t\t\t\t.then((apps) => {\n\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\tapps,\n\t\t\t\t\t\t\tisLoading: false,\n\t\t\t\t\t\t});\n\t\t\t\t\t})\n\t\t\t\t\t.catch((err) => {\n\t\t\t\t\t\tthis.setState(\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tserverError: true,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t() => {\n\t\t\t\t\t\t\t\tFSBL.Clients.Logger.error(\"Error connecting to FDC3 AppD server.\", err);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t);\n\t\t\t\t\t});\n\t\t\t}\n\t\t);\n\n\t\tthis._asyncTagsRequest = storeActions\n\t\t\t.getTags()\n\t\t\t.then((tags) => {\n\t\t\t\tthis.setState({\n\t\t\t\t\ttags,\n\t\t\t\t});\n\t\t\t})\n\t\t\t.catch((err) => {\n\t\t\t\tthis.setState(\n\t\t\t\t\t{\n\t\t\t\t\t\tserverError: true,\n\t\t\t\t\t},\n\t\t\t\t\t() => {\n\t\t\t\t\t\tFSBL.Clients.Logger.error(\"Error retrieving tags from FDC3 AppD server.\", err);\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t});\n\t}\n\n\tcomponentDidMount() {\n\t\tgetStore().addListener({ field: \"appDefinitions\" }, this.addedAppsChanged);\n\t\tgetStore().addListener({ field: \"filteredApps\" }, this.update);\n\t\tgetStore().addListener({ field: \"activeTags\" }, this.update);\n\t\tgetStore().addListener({ field: \"activeApp\" }, this.openAppShowcase);\n\t\t// Get notified when user wants to view an app\n\t\tFSBL.Clients.RouterClient.addListener(\"viewApp\", this.viewApp);\n\t\tlet installed = storeActions.getInstalledApps();\n\n\t\tthis.setState({\n\t\t\tinstalled: Object.keys(installed),\n\t\t});\n\t}\n\n\tcomponentWillUnmount() {\n\t\tgetStore().removeListener({ field: \"appDefinitions\" }, this.addedAppsChanged);\n\t\tgetStore().removeListener({ field: \"filteredApps\" }, this.update);\n\t\tgetStore().removeListener({ field: \"activeTags\" }, this.update);\n\t\tgetStore().removeListener({ field: \"activeApp\" }, this.openAppShowcase);\n\t\t// Get notified when user wants to view an app\n\t\tFSBL.Clients.RouterClient.removeListener(\"viewApp\", this.viewApp);\n\n\t\t// Make sure async requests have finished.\n\t\tif (this._asyncAppRequest && this._asyncAppRequest.cancel) {\n\t\t\tthis._asyncAppRequest.cancel();\n\t\t}\n\n\t\tif (this._asyncTagsRequest && this._asyncTagsRequest.cancel) {\n\t\t\tthis._asyncTagsRequest.cancel();\n\t\t}\n\t}\n\n\tviewApp(error, event) {\n\t\t!error && this.navigateToShowcase(event.data.app.appID);\n\t}\n\n\taddedAppsChanged() {\n\t\tlet action;\n\t\tif (this.state.installed.length > Object.keys(storeActions.getInstalledApps()).length) {\n\t\t\t// If the components installed apps is greater than that of the store, that means an app was removed\n\t\t\taction = \"remove\";\n\t\t} else if (this.state.installed.length < Object.keys(storeActions.getInstalledApps()).length) {\n\t\t\t// If the component's installed apps is less than that of the store, that means an app was added\n\t\t\taction = \"add\";\n\t\t}\n\n\t\tif (action) {\n\t\t\tthis.setState(\n\t\t\t\t{\n\t\t\t\t\tinstallationActionTaken: action,\n\t\t\t\t\tinstalled: Object.keys(storeActions.getInstalledApps()),\n\t\t\t\t},\n\t\t\t\t() => {\n\t\t\t\t\tsetTimeout(this.stopShowingInstalledNotification, 1500);\n\t\t\t\t\tthis.update();\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\t}\n\n\t/**\n\t * Force an update. Used to update from store listeners.\n\t *\n\t * @memberof AppMarket\n\t */\n\tupdate() {\n\t\tthis.forceUpdate();\n\t}\n\n\t/**\n\t * Determines the apps page based on the state of the activeTags, search text, etc\n\t */\n\tdetermineActivePage() {\n\t\tconst activeTags = this.getActiveTags();\n\t\tconst filteredApps = this.getFilteredApps();\n\t\tconst activeApp = this.getActiveApp();\n\t\tconst forceSearch = storeActions.getForceSearch();\n\t\tlet page;\n\n\t\tif (activeApp && !forceSearch) {\n\t\t\tpage = \"showcase\";\n\t\t} else if (filteredApps.length > 0 || forceSearch) {\n\t\t\tpage = \"appSearch\";\n\t\t} else if (filteredApps.length === 0 && activeTags.length === 0) {\n\t\t\tpage = \"home\";\n\t\t}\n\n\t\treturn page;\n\t}\n\n\t/**\n\t * Returns the activeApp from the Store\n\t *\n\t * @returns {string} activeApp\n\t * @memberof AppMarket\n\t */\n\tgetActiveApp() {\n\t\treturn storeActions.getActiveApp();\n\t}\n\n\t/**\n\t * Checks if we have an activeApp defined\n\t *\n\t * @returns {boolean}\n\t * @memberof AppMarket\n\t */\n\tisActiveApp() {\n\t\treturn storeActions.getActiveApp() !== null;\n\t}\n\n\t/**\n\t * Returns the active tags from the store\n\t *\n\t * @returns {array} activeTags\n\t * @memberof AppMarket\n\t */\n\tgetActiveTags() {\n\t\treturn storeActions.getActiveTags();\n\t}\n\n\t/**\n\t * Returns the filtered list of apps from search\n\t *\n\t * @returns {object} filteredApps\n\t * @memberof AppMarket\n\t */\n\tgetFilteredApps() {\n\t\treturn storeActions.getFilteredApps();\n\t}\n\n\t/**\n\t * Calls the store to add a tag to the activeTag list. Also updates the app view to switch to the AppResults page (since adding a tag implies filtering has begun)\n\t * @param {string} tag The name of the tag to add\n\t */\n\taddTag(tag) {\n\t\tstoreActions.addTag(tag);\n\t}\n\n\t/**\n\t * Calls the store to remove a tag from the activeTag list. Also updates the app view to switch to the homepage if all tags have been removed\n\t * @param {string} tag The name of the tag to add\n\t */\n\tremoveTag(tag) {\n\t\tstoreActions.removeTag(tag);\n\t}\n\n\t/**\n\t * Action to take when the back button is clicked (which just goes home)\n\t */\n\tgoHome() {\n\t\tstoreActions.goHome();\n\t}\n\n\t/**\n\t * Performs a search through the catalog\n\t * @param {string} search The text to search the catalog with\n\t */\n\tchangeSearch(search) {\n\t\tstoreActions.searchApps(search);\n\t}\n\n\t/**\n\t * When the notification for installing/removing an app is shown a timeout is set to call this function to cease showing the notification\n\t */\n\tstopShowingInstalledNotification() {\n\t\tthis.setState({\n\t\t\tinstallationActionTaken: null,\n\t\t});\n\t}\n\n\tnavigateToShowcase(id) {\n\t\tstoreActions.openApp(id);\n\t}\n\n\t/**\n\t * Opens the AppShowcase page for the app supplied\n\t */\n\topenAppShowcase() {\n\t\tlet app = storeActions.getActiveApp();\n\n\t\tif (app !== null) {\n\t\t\tstoreActions.setForceSearch(false);\n\t\t\tstoreActions.clearTags();\n\t\t\tstoreActions.clearFilteredApps();\n\t\t}\n\n\t\tthis.forceUpdate();\n\t}\n\n\t/**\n\t * Compiles a list of apps that are installed from the information received back from appd\n\t * and the information contained on the system\n\t * @param {boolean} filtered If true, uses the filtered apps array. Otherwise uses all apps\n\t */\n\tcompileAddedInfo(filtered) {\n\t\tconst { installed } = this.state;\n\t\tconst forceSearch = storeActions.getForceSearch();\n\t\tconst apps = filtered || forceSearch ? storeActions.getFilteredApps() : this.state.apps;\n\n\t\treturn apps.map((app) => {\n\t\t\tif (installed.includes(app.appId)) {\n\t\t\t\tapp.installed = true;\n\t\t\t} else {\n\t\t\t\tapp.installed = false;\n\t\t\t}\n\n\t\t\treturn app;\n\t\t});\n\t}\n\n\tgetPageContents() {\n\t\tconst filteredApps = this.getFilteredApps();\n\t\tconst activeTags = this.getActiveTags();\n\t\tconst activePage = this.determineActivePage();\n\t\tconst apps = this.compileAddedInfo(filteredApps.length > 0);\n\t\t// Force default case if activepage isn't search and apps.length is 0\n\t\tif (apps.length === 0 && activePage !== \"appSearch\") activePage = -1;\n\t\tconst theApp = this.compileAddedInfo(false).find((app) => this.getActiveApp() === app.appId);\n\t\tswitch (activePage) {\n\t\t\tcase \"home\":\n\t\t\t\treturn (\n\t\t\t\t\t<Home\n\t\t\t\t\t\ttags={this.state.tags}\n\t\t\t\t\t\tcards={apps}\n\t\t\t\t\t\tseeMore={this.addTag}\n\t\t\t\t\t\taddApp={this.addApp}\n\t\t\t\t\t\tremoveApp={this.removeApp}\n\t\t\t\t\t\taddTag={this.addTag}\n\t\t\t\t\t\tviewAppShowcase={this.navigateToShowcase}\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\tcase \"appSearch\":\n\t\t\t\treturn (\n\t\t\t\t\t<AppResults\n\t\t\t\t\t\tcards={apps}\n\t\t\t\t\t\ttags={activeTags}\n\t\t\t\t\t\taddApp={this.addApp}\n\t\t\t\t\t\tremoveApp={this.removeApp}\n\t\t\t\t\t\tviewAppShowcase={this.navigateToShowcase}\n\t\t\t\t\t\taddTag={this.addTag}\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\tcase \"showcase\":\n\t\t\t\treturn <AppShowcase app={theApp} addApp={this.addApp} removeApp={this.removeApp} addTag={this.addTag} />;\n\t\t\tdefault:\n\t\t\t\treturn <div></div>;\n\t\t}\n\t}\n\n\trender() {\n\t\tlet { tags } = this.state;\n\t\tlet page = this.determineActivePage();\n\t\tlet pageContents = this.getPageContents();\n\n\t\treturn (\n\t\t\t<div className=\"app-catalog\">\n\t\t\t\t{this.state.serverError && (\n\t\t\t\t\t<div className=\"server-error\">\n\t\t\t\t\t\t<br />\n\t\t\t\t\t\t<br />\n\t\t\t\t\t\t<span>Catalog contents are currently unavailable.</span>\n\t\t\t\t\t\t<br />\n\t\t\t\t\t\t<span>Please check your connection or consult your System Admin.</span>\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t\t{this.state.apps.length === 0 && !this.state.isLoading && (\n\t\t\t\t\t<div className=\"server-error\">\n\t\t\t\t\t\t<br />\n\t\t\t\t\t\t<br />\n\t\t\t\t\t\t<span>There are no apps available in this catalog.</span>\n\t\t\t\t\t\t<br />\n\t\t\t\t\t\t<span>Please contact your System Admin.</span>\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t\t{this.state.apps.length > 0 && (\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<SearchBar\n\t\t\t\t\t\t\thidden={page === \"showcase\"}\n\t\t\t\t\t\t\tbackButton={page !== \"home\"}\n\t\t\t\t\t\t\ttags={tags}\n\t\t\t\t\t\t\tactiveTags={this.getActiveTags}\n\t\t\t\t\t\t\ttagSelected={this.addTag}\n\t\t\t\t\t\t\tremoveTag={this.removeTag}\n\t\t\t\t\t\t\tgoHome={this.goHome}\n\t\t\t\t\t\t\tinstallationActionTaken={this.state.installationActionTaken}\n\t\t\t\t\t\t\tsearch={this.changeSearch}\n\t\t\t\t\t\t\tisViewingApp={this.isActiveApp}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<div className=\"market_content\">{pageContents}</div>\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t);\n\t}\n}\n"]}
1
+ {"version":3,"file":"AppCatalogComponent.js","sourceRoot":"","sources":["../../../src/components/appCatalog/AppCatalogComponent.jsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,aAAa;AACb,OAAO,SAAS,MAAM,wBAAwB,CAAC;AAC/C,OAAO,IAAI,MAAM,mBAAmB,CAAC;AACrC,OAAO,UAAU,MAAM,yBAAyB,CAAC;AACjD,OAAO,WAAW,MAAM,mCAAmC,CAAC;AAE5D,OAAO;AACP,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,YAAY,MAAM,uBAAuB,CAAC;AAEjD,OAAO,iCAAiC,CAAC;AAEzC,MAAM,OAAO,mBAAoB,SAAQ,KAAK,CAAC,SAAS;IACvD,YAAY,KAAK;QAChB,KAAK,CAAC,KAAK,CAAC,CAAC;QACb,IAAI,CAAC,KAAK,GAAG;YACZ,IAAI,EAAE,EAAE;YACR,SAAS,EAAE,KAAK;YAChB,WAAW,EAAE,KAAK;YAClB,SAAS,EAAE,EAAE;YACb,IAAI,EAAE,EAAE;YACR,uBAAuB,EAAE,IAAI,EAAE,sBAAsB;SACrD,CAAC;QACF,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAC3B,CAAC;IAED,kBAAkB;QACjB,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3C,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjD,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvD,IAAI,CAAC,gCAAgC,GAAG,IAAI,CAAC,gCAAgC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzF,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzD,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvD,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/D,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7D,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/C,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpD,CAAC;IAED,+CAA+C;IAC/C,yBAAyB;QACxB,0DAA0D;QAC1D,qEAAqE;QAErE,IAAI,CAAC,QAAQ,CACZ;YACC,SAAS,EAAE,IAAI;SACf,EACD,GAAG,EAAE;YACJ,IAAI,CAAC,gBAAgB,GAAG,YAAY;iBAClC,OAAO,EAAE;iBACT,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;gBACd,IAAI,CAAC,QAAQ,CAAC;oBACb,IAAI;oBACJ,SAAS,EAAE,KAAK;iBAChB,CAAC,CAAC;YACJ,CAAC,CAAC;iBACD,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;gBACd,IAAI,CAAC,QAAQ,CACZ;oBACC,WAAW,EAAE,IAAI;iBACjB,EACD,GAAG,EAAE;oBACJ,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,uCAAuC,EAAE,GAAG,CAAC,CAAC;gBACzE,CAAC,CACD,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CACD,CAAC;QAEF,IAAI,CAAC,iBAAiB,GAAG,YAAY;aACnC,OAAO,EAAE;aACT,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;YACd,IAAI,CAAC,QAAQ,CAAC;gBACb,IAAI;aACJ,CAAC,CAAC;QACJ,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;YACd,IAAI,CAAC,QAAQ,CACZ;gBACC,WAAW,EAAE,IAAI;aACjB,EACD,GAAG,EAAE;gBACJ,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,8CAA8C,EAAE,GAAG,CAAC,CAAC;YAChF,CAAC,CACD,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,iBAAiB;QAChB,QAAQ,EAAE,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,gBAAgB,EAAE,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC3E,QAAQ,EAAE,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAC/D,QAAQ,EAAE,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAC7D,QAAQ,EAAE,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;QACrE,8CAA8C;QAC9C,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,WAAW,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAC/D,IAAI,SAAS,GAAG,YAAY,CAAC,gBAAgB,EAAE,CAAC;QAEhD,IAAI,CAAC,QAAQ,CAAC;YACb,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;SACjC,CAAC,CAAC;IACJ,CAAC;IAED,oBAAoB;QACnB,QAAQ,EAAE,CAAC,cAAc,CAAC,EAAE,KAAK,EAAE,gBAAgB,EAAE,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC9E,QAAQ,EAAE,CAAC,cAAc,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAClE,QAAQ,EAAE,CAAC,cAAc,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAChE,QAAQ,EAAE,CAAC,cAAc,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;QACxE,8CAA8C;QAC9C,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,cAAc,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAElE,0CAA0C;QAC1C,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE;YAC1D,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC;SAC/B;QAED,IAAI,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE;YAC5D,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,CAAC;SAChC;IACF,CAAC;IAED,OAAO,CAAC,KAAK,EAAE,KAAK;QACnB,CAAC,KAAK,IAAI,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACzD,CAAC;IAED,gBAAgB;QACf,IAAI,MAAM,CAAC;QACX,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE;YACtF,oGAAoG;YACpG,MAAM,GAAG,QAAQ,CAAC;SAClB;aAAM,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE;YAC7F,gGAAgG;YAChG,MAAM,GAAG,KAAK,CAAC;SACf;QAED,IAAI,MAAM,EAAE;YACX,IAAI,CAAC,QAAQ,CACZ;gBACC,uBAAuB,EAAE,MAAM;gBAC/B,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,gBAAgB,EAAE,CAAC;aACvD,EACD,GAAG,EAAE;gBACJ,UAAU,CAAC,IAAI,CAAC,gCAAgC,EAAE,IAAI,CAAC,CAAC;gBACxD,IAAI,CAAC,MAAM,EAAE,CAAC;YACf,CAAC,CACD,CAAC;SACF;IACF,CAAC;IAED;;;;OAIG;IACH,MAAM;QACL,IAAI,CAAC,WAAW,EAAE,CAAC;IACpB,CAAC;IAED;;OAEG;IACH,mBAAmB;QAClB,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QACxC,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QAC5C,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QACtC,MAAM,WAAW,GAAG,YAAY,CAAC,cAAc,EAAE,CAAC;QAClD,IAAI,IAAI,CAAC;QAET,IAAI,SAAS,IAAI,CAAC,WAAW,EAAE;YAC9B,IAAI,GAAG,UAAU,CAAC;SAClB;aAAM,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,IAAI,WAAW,EAAE;YAClD,IAAI,GAAG,WAAW,CAAC;SACnB;aAAM,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;YAChE,IAAI,GAAG,MAAM,CAAC;SACd;QAED,OAAO,IAAI,CAAC;IACb,CAAC;IAED;;;;;OAKG;IACH,YAAY;QACX,OAAO,YAAY,CAAC,YAAY,EAAE,CAAC;IACpC,CAAC;IAED;;;;;OAKG;IACH,WAAW;QACV,OAAO,YAAY,CAAC,YAAY,EAAE,KAAK,IAAI,CAAC;IAC7C,CAAC;IAED;;;;;OAKG;IACH,aAAa;QACZ,OAAO,YAAY,CAAC,aAAa,EAAE,CAAC;IACrC,CAAC;IAED;;;;;OAKG;IACH,eAAe;QACd,OAAO,YAAY,CAAC,eAAe,EAAE,CAAC;IACvC,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,GAAG;QACT,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;IAED;;;OAGG;IACH,SAAS,CAAC,GAAG;QACZ,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC;IAED;;OAEG;IACH,MAAM;QACL,YAAY,CAAC,MAAM,EAAE,CAAC;IACvB,CAAC;IAED;;;OAGG;IACH,YAAY,CAAC,MAAM;QAClB,YAAY,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IACjC,CAAC;IAED;;OAEG;IACH,gCAAgC;QAC/B,IAAI,CAAC,QAAQ,CAAC;YACb,uBAAuB,EAAE,IAAI;SAC7B,CAAC,CAAC;IACJ,CAAC;IAED,kBAAkB,CAAC,EAAE;QACpB,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC1B,CAAC;IAED;;OAEG;IACH,eAAe;QACd,IAAI,GAAG,GAAG,YAAY,CAAC,YAAY,EAAE,CAAC;QAEtC,IAAI,GAAG,KAAK,IAAI,EAAE;YACjB,YAAY,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;YACnC,YAAY,CAAC,SAAS,EAAE,CAAC;YACzB,YAAY,CAAC,iBAAiB,EAAE,CAAC;SACjC;QAED,IAAI,CAAC,WAAW,EAAE,CAAC;IACpB,CAAC;IAED;;;;OAIG;IACH,gBAAgB,CAAC,QAAQ;QACxB,MAAM,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;QACjC,MAAM,WAAW,GAAG,YAAY,CAAC,cAAc,EAAE,CAAC;QAClD,MAAM,IAAI,GAAG,QAAQ,IAAI,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;QAExF,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;YACvB,IAAI,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;gBAClC,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC;aACrB;iBAAM;gBACN,GAAG,CAAC,SAAS,GAAG,KAAK,CAAC;aACtB;YAED,OAAO,GAAG,CAAC;QACZ,CAAC,CAAC,CAAC;IACJ,CAAC;IAED,eAAe;QACd,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QAC5C,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QACxC,MAAM,UAAU,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC9C,MAAM,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAC5D,qEAAqE;QACrE,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,UAAU,KAAK,WAAW;YAAE,UAAU,GAAG,CAAC,CAAC,CAAC;QACrE,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC;QAC7F,QAAQ,UAAU,EAAE;YACnB,KAAK,MAAM;gBACV,OAAO,CACN,oBAAC,IAAI,IACJ,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,EACrB,KAAK,EAAE,IAAI,EACX,OAAO,EAAE,IAAI,CAAC,MAAM,EACpB,MAAM,EAAE,IAAI,CAAC,MAAM,EACnB,SAAS,EAAE,IAAI,CAAC,SAAS,EACzB,MAAM,EAAE,IAAI,CAAC,MAAM,EACnB,eAAe,EAAE,IAAI,CAAC,kBAAkB,GACvC,CACF,CAAC;YACH,KAAK,WAAW;gBACf,OAAO,CACN,oBAAC,UAAU,IACV,KAAK,EAAE,IAAI,EACX,IAAI,EAAE,UAAU,EAChB,MAAM,EAAE,IAAI,CAAC,MAAM,EACnB,SAAS,EAAE,IAAI,CAAC,SAAS,EACzB,eAAe,EAAE,IAAI,CAAC,kBAAkB,EACxC,MAAM,EAAE,IAAI,CAAC,MAAM,GAClB,CACF,CAAC;YACH,KAAK,UAAU;gBACd,OAAO,oBAAC,WAAW,IAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,GAAI,CAAC;YAC1G;gBACC,OAAO,gCAAW,CAAC;SACpB;IACF,CAAC;IAED,MAAM;QACL,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;QAC1B,IAAI,IAAI,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;QACtC,IAAI,YAAY,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QAE1C,OAAO,CACN,6BAAK,SAAS,EAAC,aAAa;YAC1B,IAAI,CAAC,KAAK,CAAC,WAAW,IAAI,CAC1B,6BAAK,SAAS,EAAC,cAAc;gBAC5B,+BAAM;gBACN,+BAAM;gBACN,gFAAwD;gBACxD,+BAAM;gBACN,+FAAuE,CAClE,CACN;YACA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,CACzD,6BAAK,SAAS,EAAC,cAAc;gBAC5B,+BAAM;gBACN,+BAAM;gBACN,iFAAyD;gBACzD,+BAAM;gBACN,sEAA8C,CACzC,CACN;YACA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAC9B;gBACC,oBAAC,SAAS,IACT,MAAM,EAAE,IAAI,KAAK,UAAU,EAC3B,UAAU,EAAE,IAAI,KAAK,MAAM,EAC3B,IAAI,EAAE,IAAI,EACV,UAAU,EAAE,IAAI,CAAC,aAAa,EAC9B,WAAW,EAAE,IAAI,CAAC,MAAM,EACxB,SAAS,EAAE,IAAI,CAAC,SAAS,EACzB,MAAM,EAAE,IAAI,CAAC,MAAM,EACnB,uBAAuB,EAAE,IAAI,CAAC,KAAK,CAAC,uBAAuB,EAC3D,MAAM,EAAE,IAAI,CAAC,YAAY,EACzB,YAAY,EAAE,IAAI,CAAC,WAAW,GAC7B;gBACF,6BAAK,SAAS,EAAC,gBAAgB,IAAE,YAAY,CAAO,CAC/C,CACN,CACI,CACN,CAAC;IACH,CAAC;CACD","sourcesContent":["import React from \"react\";\n// components\nimport SearchBar from \"./components/SearchBar\";\nimport Home from \"./components/Home\";\nimport AppResults from \"./components/AppResults\";\nimport AppShowcase from \"./components/Showcase/AppShowcase\";\n\n// data\nimport { getStore } from \"./stores/appStore\";\nimport storeActions from \"./stores/storeActions\";\n\nimport \"../../assets/css/appCatalog.css\";\n\nexport class AppCatalogComponent extends React.Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.state = {\n\t\t\tapps: [], // type: AppMetadata (from \"../../../types/fdc3\")\n\t\t\tisLoading: false,\n\t\t\tserverError: false,\n\t\t\tinstalled: [],\n\t\t\ttags: [], // type: string[]\n\t\t\tinstallationActionTaken: null, // type: string | null\n\t\t};\n\t\tthis.bindCorrectContext();\n\t}\n\n\tbindCorrectContext() {\n\t\tthis.addedAppsChanged = this.addedAppsChanged.bind(this);\n\t\tthis.update = this.update.bind(this);\n\t\tthis.goHome = this.goHome.bind(this);\n\t\tthis.addTag = this.addTag.bind(this);\n\t\tthis.removeTag = this.removeTag.bind(this);\n\t\tthis.changeSearch = this.changeSearch.bind(this);\n\t\tthis.openAppShowcase = this.openAppShowcase.bind(this);\n\t\tthis.stopShowingInstalledNotification = this.stopShowingInstalledNotification.bind(this);\n\t\tthis.compileAddedInfo = this.compileAddedInfo.bind(this);\n\t\tthis.getPageContents = this.getPageContents.bind(this);\n\t\tthis.determineActivePage = this.determineActivePage.bind(this);\n\t\tthis.navigateToShowcase = this.navigateToShowcase.bind(this);\n\t\tthis.viewApp = this.viewApp.bind(this);\n\t\tthis.isActiveApp = this.isActiveApp.bind(this);\n\t\tthis.getActiveTags = this.getActiveTags.bind(this);\n\t}\n\n\t// eslint-disable-next-line react/no-deprecated\n\tUNSAFE_componentWillMount() {\n\t\t// For more information on async react rendering, see here\n\t\t// https://reactjs.org/blog/2018/03/27/update-on-async-rendering.html\n\n\t\tthis.setState(\n\t\t\t{\n\t\t\t\tisLoading: true,\n\t\t\t},\n\t\t\t() => {\n\t\t\t\tthis._asyncAppRequest = storeActions\n\t\t\t\t\t.getApps()\n\t\t\t\t\t.then((apps) => {\n\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\tapps,\n\t\t\t\t\t\t\tisLoading: false,\n\t\t\t\t\t\t});\n\t\t\t\t\t})\n\t\t\t\t\t.catch((err) => {\n\t\t\t\t\t\tthis.setState(\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tserverError: true,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t() => {\n\t\t\t\t\t\t\t\tFSBL.Clients.Logger.error(\"Error connecting to FDC3 AppD server.\", err);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t);\n\t\t\t\t\t});\n\t\t\t}\n\t\t);\n\n\t\tthis._asyncTagsRequest = storeActions\n\t\t\t.getTags()\n\t\t\t.then((tags) => {\n\t\t\t\tthis.setState({\n\t\t\t\t\ttags,\n\t\t\t\t});\n\t\t\t})\n\t\t\t.catch((err) => {\n\t\t\t\tthis.setState(\n\t\t\t\t\t{\n\t\t\t\t\t\tserverError: true,\n\t\t\t\t\t},\n\t\t\t\t\t() => {\n\t\t\t\t\t\tFSBL.Clients.Logger.error(\"Error retrieving tags from FDC3 AppD server.\", err);\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t});\n\t}\n\n\tcomponentDidMount() {\n\t\tgetStore().addListener({ field: \"appDefinitions\" }, this.addedAppsChanged);\n\t\tgetStore().addListener({ field: \"filteredApps\" }, this.update);\n\t\tgetStore().addListener({ field: \"activeTags\" }, this.update);\n\t\tgetStore().addListener({ field: \"activeApp\" }, this.openAppShowcase);\n\t\t// Get notified when user wants to view an app\n\t\tFSBL.Clients.RouterClient.addListener(\"viewApp\", this.viewApp);\n\t\tlet installed = storeActions.getInstalledApps();\n\n\t\tthis.setState({\n\t\t\tinstalled: Object.keys(installed),\n\t\t});\n\t}\n\n\tcomponentWillUnmount() {\n\t\tgetStore().removeListener({ field: \"appDefinitions\" }, this.addedAppsChanged);\n\t\tgetStore().removeListener({ field: \"filteredApps\" }, this.update);\n\t\tgetStore().removeListener({ field: \"activeTags\" }, this.update);\n\t\tgetStore().removeListener({ field: \"activeApp\" }, this.openAppShowcase);\n\t\t// Get notified when user wants to view an app\n\t\tFSBL.Clients.RouterClient.removeListener(\"viewApp\", this.viewApp);\n\n\t\t// Make sure async requests have finished.\n\t\tif (this._asyncAppRequest && this._asyncAppRequest.cancel) {\n\t\t\tthis._asyncAppRequest.cancel();\n\t\t}\n\n\t\tif (this._asyncTagsRequest && this._asyncTagsRequest.cancel) {\n\t\t\tthis._asyncTagsRequest.cancel();\n\t\t}\n\t}\n\n\tviewApp(error, event) {\n\t\t!error && this.navigateToShowcase(event.data.app.appID);\n\t}\n\n\taddedAppsChanged() {\n\t\tlet action;\n\t\tif (this.state.installed.length > Object.keys(storeActions.getInstalledApps()).length) {\n\t\t\t// If the components installed apps is greater than that of the store, that means an app was removed\n\t\t\taction = \"remove\";\n\t\t} else if (this.state.installed.length < Object.keys(storeActions.getInstalledApps()).length) {\n\t\t\t// If the component's installed apps is less than that of the store, that means an app was added\n\t\t\taction = \"add\";\n\t\t}\n\n\t\tif (action) {\n\t\t\tthis.setState(\n\t\t\t\t{\n\t\t\t\t\tinstallationActionTaken: action,\n\t\t\t\t\tinstalled: Object.keys(storeActions.getInstalledApps()),\n\t\t\t\t},\n\t\t\t\t() => {\n\t\t\t\t\tsetTimeout(this.stopShowingInstalledNotification, 1500);\n\t\t\t\t\tthis.update();\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\t}\n\n\t/**\n\t * Force an update. Used to update from store listeners.\n\t *\n\t * @memberof AppMarket\n\t */\n\tupdate() {\n\t\tthis.forceUpdate();\n\t}\n\n\t/**\n\t * Determines the apps page based on the state of the activeTags, search text, etc\n\t */\n\tdetermineActivePage() {\n\t\tconst activeTags = this.getActiveTags();\n\t\tconst filteredApps = this.getFilteredApps();\n\t\tconst activeApp = this.getActiveApp();\n\t\tconst forceSearch = storeActions.getForceSearch();\n\t\tlet page;\n\n\t\tif (activeApp && !forceSearch) {\n\t\t\tpage = \"showcase\";\n\t\t} else if (filteredApps.length > 0 || forceSearch) {\n\t\t\tpage = \"appSearch\";\n\t\t} else if (filteredApps.length === 0 && activeTags.length === 0) {\n\t\t\tpage = \"home\";\n\t\t}\n\n\t\treturn page;\n\t}\n\n\t/**\n\t * Returns the activeApp from the Store\n\t *\n\t * @returns {string} activeApp\n\t * @memberof AppMarket\n\t */\n\tgetActiveApp() {\n\t\treturn storeActions.getActiveApp();\n\t}\n\n\t/**\n\t * Checks if we have an activeApp defined\n\t *\n\t * @returns {boolean}\n\t * @memberof AppMarket\n\t */\n\tisActiveApp() {\n\t\treturn storeActions.getActiveApp() !== null;\n\t}\n\n\t/**\n\t * Returns the active tags from the store\n\t *\n\t * @returns {array} activeTags\n\t * @memberof AppMarket\n\t */\n\tgetActiveTags() {\n\t\treturn storeActions.getActiveTags();\n\t}\n\n\t/**\n\t * Returns the filtered list of apps from search\n\t *\n\t * @returns {object} filteredApps\n\t * @memberof AppMarket\n\t */\n\tgetFilteredApps() {\n\t\treturn storeActions.getFilteredApps();\n\t}\n\n\t/**\n\t * Calls the store to add a tag to the activeTag list. Also updates the app view to switch to the AppResults page (since adding a tag implies filtering has begun)\n\t * @param {string} tag The name of the tag to add\n\t */\n\taddTag(tag) {\n\t\tstoreActions.addTag(tag);\n\t}\n\n\t/**\n\t * Calls the store to remove a tag from the activeTag list. Also updates the app view to switch to the homepage if all tags have been removed\n\t * @param {string} tag The name of the tag to add\n\t */\n\tremoveTag(tag) {\n\t\tstoreActions.removeTag(tag);\n\t}\n\n\t/**\n\t * Action to take when the back button is clicked (which just goes home)\n\t */\n\tgoHome() {\n\t\tstoreActions.goHome();\n\t}\n\n\t/**\n\t * Performs a search through the catalog\n\t * @param {string} search The text to search the catalog with\n\t */\n\tchangeSearch(search) {\n\t\tstoreActions.searchApps(search);\n\t}\n\n\t/**\n\t * When the notification for installing/removing an app is shown a timeout is set to call this function to cease showing the notification\n\t */\n\tstopShowingInstalledNotification() {\n\t\tthis.setState({\n\t\t\tinstallationActionTaken: null,\n\t\t});\n\t}\n\n\tnavigateToShowcase(id) {\n\t\tstoreActions.openApp(id);\n\t}\n\n\t/**\n\t * Opens the AppShowcase page for the app supplied\n\t */\n\topenAppShowcase() {\n\t\tlet app = storeActions.getActiveApp();\n\n\t\tif (app !== null) {\n\t\t\tstoreActions.setForceSearch(false);\n\t\t\tstoreActions.clearTags();\n\t\t\tstoreActions.clearFilteredApps();\n\t\t}\n\n\t\tthis.forceUpdate();\n\t}\n\n\t/**\n\t * Compiles a list of apps that are installed from the information received back from appd\n\t * and the information contained on the system\n\t * @param {boolean} filtered If true, uses the filtered apps array. Otherwise uses all apps\n\t */\n\tcompileAddedInfo(filtered) {\n\t\tconst { installed } = this.state;\n\t\tconst forceSearch = storeActions.getForceSearch();\n\t\tconst apps = filtered || forceSearch ? storeActions.getFilteredApps() : this.state.apps;\n\n\t\treturn apps.map((app) => {\n\t\t\tif (installed.includes(app.appId)) {\n\t\t\t\tapp.installed = true;\n\t\t\t} else {\n\t\t\t\tapp.installed = false;\n\t\t\t}\n\n\t\t\treturn app;\n\t\t});\n\t}\n\n\tgetPageContents() {\n\t\tconst filteredApps = this.getFilteredApps();\n\t\tconst activeTags = this.getActiveTags();\n\t\tconst activePage = this.determineActivePage();\n\t\tconst apps = this.compileAddedInfo(filteredApps.length > 0);\n\t\t// Force default case if activepage isn't search and apps.length is 0\n\t\tif (apps.length === 0 && activePage !== \"appSearch\") activePage = -1;\n\t\tconst theApp = this.compileAddedInfo(false).find((app) => this.getActiveApp() === app.appId);\n\t\tswitch (activePage) {\n\t\t\tcase \"home\":\n\t\t\t\treturn (\n\t\t\t\t\t<Home\n\t\t\t\t\t\ttags={this.state.tags}\n\t\t\t\t\t\tcards={apps}\n\t\t\t\t\t\tseeMore={this.addTag}\n\t\t\t\t\t\taddApp={this.addApp}\n\t\t\t\t\t\tremoveApp={this.removeApp}\n\t\t\t\t\t\taddTag={this.addTag}\n\t\t\t\t\t\tviewAppShowcase={this.navigateToShowcase}\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\tcase \"appSearch\":\n\t\t\t\treturn (\n\t\t\t\t\t<AppResults\n\t\t\t\t\t\tcards={apps}\n\t\t\t\t\t\ttags={activeTags}\n\t\t\t\t\t\taddApp={this.addApp}\n\t\t\t\t\t\tremoveApp={this.removeApp}\n\t\t\t\t\t\tviewAppShowcase={this.navigateToShowcase}\n\t\t\t\t\t\taddTag={this.addTag}\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\tcase \"showcase\":\n\t\t\t\treturn <AppShowcase app={theApp} addApp={this.addApp} removeApp={this.removeApp} addTag={this.addTag} />;\n\t\t\tdefault:\n\t\t\t\treturn <div></div>;\n\t\t}\n\t}\n\n\trender() {\n\t\tlet { tags } = this.state;\n\t\tlet page = this.determineActivePage();\n\t\tlet pageContents = this.getPageContents();\n\n\t\treturn (\n\t\t\t<div className=\"app-catalog\">\n\t\t\t\t{this.state.serverError && (\n\t\t\t\t\t<div className=\"server-error\">\n\t\t\t\t\t\t<br />\n\t\t\t\t\t\t<br />\n\t\t\t\t\t\t<span>Catalog contents are currently unavailable.</span>\n\t\t\t\t\t\t<br />\n\t\t\t\t\t\t<span>Please check your connection or consult your System Admin.</span>\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t\t{this.state.apps.length === 0 && !this.state.isLoading && (\n\t\t\t\t\t<div className=\"server-error\">\n\t\t\t\t\t\t<br />\n\t\t\t\t\t\t<br />\n\t\t\t\t\t\t<span>There are no apps available in this catalog.</span>\n\t\t\t\t\t\t<br />\n\t\t\t\t\t\t<span>Please contact your System Admin.</span>\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t\t{this.state.apps.length > 0 && (\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<SearchBar\n\t\t\t\t\t\t\thidden={page === \"showcase\"}\n\t\t\t\t\t\t\tbackButton={page !== \"home\"}\n\t\t\t\t\t\t\ttags={tags}\n\t\t\t\t\t\t\tactiveTags={this.getActiveTags}\n\t\t\t\t\t\t\ttagSelected={this.addTag}\n\t\t\t\t\t\t\tremoveTag={this.removeTag}\n\t\t\t\t\t\t\tgoHome={this.goHome}\n\t\t\t\t\t\t\tinstallationActionTaken={this.state.installationActionTaken}\n\t\t\t\t\t\t\tsearch={this.changeSearch}\n\t\t\t\t\t\t\tisViewingApp={this.isActiveApp}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<div className=\"market_content\">{pageContents}</div>\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t);\n\t}\n}\n"]}
@@ -1,14 +1,49 @@
1
1
  export default AppCard;
2
+ /**
3
+ * The card that displays on any page with information about an app. Clicking on it will lead to the AppShowcase or install (if the check is clicked)
4
+ * @param {object} props Component props
5
+ * @param {object} props...card The entire object that belongs to a single app. See FDC app directory.
6
+ * @param {boolean} props.entitled If true, the app cannot be installed by this user, only viewed
7
+ * @param {boolean} props.installed If true the app is installed on this local fsbl
8
+ */
2
9
  declare class AppCard extends React.Component<any, any, any> {
3
10
  constructor(props: any);
4
11
  bindCorrectContext(): void;
12
+ /**
13
+ * Toggles the highlight state of the check mark for installing an app
14
+ */
5
15
  toggleHighlight(): void;
16
+ /**
17
+ * Toggles the 'highlight' state of the app title. On mouse over, the title is underlined to show that its a link
18
+ */
6
19
  toggleTitleUnderline(): void;
20
+ /**
21
+ * Shows the check mark for adding/removing an app
22
+ */
7
23
  showCheck(): void;
24
+ /**
25
+ * Hides the check mark for adding/removing an app
26
+ */
8
27
  hideCheck(): void;
28
+ /**
29
+ * Calls parent passed function to open the app showcase for the supplied app
30
+ */
9
31
  openAppShowcase(): void;
32
+ /**
33
+ * Prevents bubbling (which would open the app showcase), then calls to add an app
34
+ * @param {object} e React Synthetic event
35
+ */
10
36
  addApp(e: object): void;
37
+ /**
38
+ * Prevents bubbling (which would open the app showcase), then calls to remove an app
39
+ * @param {object} e React Synthetic event
40
+ */
11
41
  removeApp(e: object): void;
42
+ /**
43
+ * Prevents bubbling (which would open the app showcase), then calls to add a filtering tag
44
+ * @param {string} name The tag name to add
45
+ * @param {object} e React Synthetic event
46
+ */
12
47
  addTag(name: string, e: object): void;
13
48
  footer: HTMLDivElement | null | undefined;
14
49
  tagNamesList: HTMLDivElement | null | undefined;
@@ -1,6 +1,18 @@
1
+ /*!
2
+ * Copyright 2017 by ChartIQ, Inc.
3
+ * All rights reserved.
4
+ */
1
5
  import React, { Component } from "react";
2
6
  import { getAppNameIconWhenNoImage, getTruncatedStringWithEllipses } from "./helpers";
7
+ // data
3
8
  import storeActions from "../stores/storeActions";
9
+ /**
10
+ * The card that displays on any page with information about an app. Clicking on it will lead to the AppShowcase or install (if the check is clicked)
11
+ * @param {object} props Component props
12
+ * @param {object} props...card The entire object that belongs to a single app. See FDC app directory.
13
+ * @param {boolean} props.entitled If true, the app cannot be installed by this user, only viewed
14
+ * @param {boolean} props.installed If true the app is installed on this local fsbl
15
+ */
4
16
  class AppCard extends Component {
5
17
  constructor(props) {
6
18
  super(props);
@@ -39,28 +51,42 @@ class AppCard extends Component {
39
51
  });
40
52
  }
41
53
  }
54
+ /**
55
+ * Toggles the highlight state of the check mark for installing an app
56
+ */
42
57
  toggleHighlight() {
43
58
  this.setState({
44
59
  checkHighlighted: !this.state.checkHighlighted,
45
60
  });
46
61
  }
62
+ /**
63
+ * Toggles the 'highlight' state of the app title. On mouse over, the title is underlined to show that its a link
64
+ */
47
65
  toggleTitleUnderline() {
48
66
  this.setState({
49
67
  titleUnderlined: !this.state.titleUnderlined,
50
68
  });
51
69
  }
70
+ /**
71
+ * Shows the check mark for adding/removing an app
72
+ */
52
73
  showCheck() {
53
74
  this.setState({
54
75
  checkShown: true,
55
76
  });
56
77
  }
78
+ /**
79
+ * Hides the check mark for adding/removing an app
80
+ */
57
81
  hideCheck() {
58
82
  if (this.state.awaitingInstall) {
83
+ // If an add/remove is taking place and this is called, toggle the check after the action completes
59
84
  this.setState({
60
85
  toggleCheckAfterAction: true,
61
86
  });
62
87
  }
63
88
  else {
89
+ // Don't hide if installed. Stay green and showing
64
90
  if (!this.props.installed) {
65
91
  this.setState({
66
92
  checkShown: false,
@@ -68,9 +94,16 @@ class AppCard extends Component {
68
94
  }
69
95
  }
70
96
  }
97
+ /**
98
+ * Calls parent passed function to open the app showcase for the supplied app
99
+ */
71
100
  openAppShowcase() {
72
101
  this.props.viewAppShowcase(this.state.id);
73
102
  }
103
+ /**
104
+ * Prevents bubbling (which would open the app showcase), then calls to add an app
105
+ * @param {object} e React Synthetic event
106
+ */
74
107
  addApp(e) {
75
108
  e.preventDefault();
76
109
  e.stopPropagation();
@@ -84,6 +117,10 @@ class AppCard extends Component {
84
117
  });
85
118
  });
86
119
  }
120
+ /**
121
+ * Prevents bubbling (which would open the app showcase), then calls to remove an app
122
+ * @param {object} e React Synthetic event
123
+ */
87
124
  removeApp(e) {
88
125
  e.preventDefault();
89
126
  e.stopPropagation();
@@ -106,6 +143,11 @@ class AppCard extends Component {
106
143
  });
107
144
  });
108
145
  }
146
+ /**
147
+ * Prevents bubbling (which would open the app showcase), then calls to add a filtering tag
148
+ * @param {string} name The tag name to add
149
+ * @param {object} e React Synthetic event
150
+ */
109
151
  addTag(name, e) {
110
152
  e.preventDefault();
111
153
  e.stopPropagation();
@@ -1 +1 @@
1
- {"version":3,"file":"AppCard.js","sourceRoot":"","sources":["../../../../src/components/appCatalog/components/AppCard.jsx"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright 2017 by ChartIQ, Inc.\n * All rights reserved.\n */\nimport React, { Component } from \"react\";\nimport { getAppNameIconWhenNoImage, getTruncatedStringWithEllipses } from \"./helpers\";\n\n// data\nimport storeActions from \"../stores/storeActions\";\n\n/**\n * The card that displays on any page with information about an app. Clicking on it will lead to the AppShowcase or install (if the check is clicked)\n * @param {object} props Component props\n * @param {object} props...card The entire object that belongs to a single app. See FDC app directory.\n * @param {boolean} props.entitled If true, the app cannot be installed by this user, only viewed\n * @param {boolean} props.installed If true the app is installed on this local fsbl\n */\nclass AppCard extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.state = {\n\t\t\tcheckShown: this.props.installed === true,\n\t\t\tcheckHighlighted: false,\n\t\t\tawaitingInstall: false,\n\t\t\ttoggleCheckAfterAction: false,\n\t\t\ttitleUnderlined: false,\n\t\t\tappName: this.props.title || this.props.name,\n\t\t\tid: this.props.appId,\n\t\t\tentitled: this.props.entitled ? this.props.entitled : false,\n\t\t\ttags: this.props.tags || [],\n\t\t};\n\t\tthis.bindCorrectContext();\n\t}\n\n\tbindCorrectContext() {\n\t\tthis.toggleHighlight = this.toggleHighlight.bind(this);\n\t\tthis.toggleTitleUnderline = this.toggleTitleUnderline.bind(this);\n\t\tthis.showCheck = this.showCheck.bind(this);\n\t\tthis.hideCheck = this.hideCheck.bind(this);\n\t\tthis.openAppShowcase = this.openAppShowcase.bind(this);\n\t\tthis.addApp = this.addApp.bind(this);\n\t\tthis.removeApp = this.removeApp.bind(this);\n\t\tthis.addTag = this.addTag.bind(this);\n\t}\n\n\tcomponentDidMount() {\n\t\tif (!this.props.tags || this.props.tags.length === 0) return;\n\t\tconst list = this.tagNamesList;\n\t\tconst { footer } = this;\n\t\tif (list.offsetHeight >= footer.scrollHeight + 5) {\n\t\t\tlet newTags = this.state.tags.slice(0, 2);\n\t\t\tthis.setState({\n\t\t\t\ttags: newTags,\n\t\t\t});\n\t\t}\n\t}\n\n\t/**\n\t * Toggles the highlight state of the check mark for installing an app\n\t */\n\ttoggleHighlight() {\n\t\tthis.setState({\n\t\t\tcheckHighlighted: !this.state.checkHighlighted,\n\t\t});\n\t}\n\n\t/**\n\t * Toggles the 'highlight' state of the app title. On mouse over, the title is underlined to show that its a link\n\t */\n\ttoggleTitleUnderline() {\n\t\tthis.setState({\n\t\t\ttitleUnderlined: !this.state.titleUnderlined,\n\t\t});\n\t}\n\n\t/**\n\t * Shows the check mark for adding/removing an app\n\t */\n\tshowCheck() {\n\t\tthis.setState({\n\t\t\tcheckShown: true,\n\t\t});\n\t}\n\n\t/**\n\t * Hides the check mark for adding/removing an app\n\t */\n\thideCheck() {\n\t\tif (this.state.awaitingInstall) {\n\t\t\t// If an add/remove is taking place and this is called, toggle the check after the action completes\n\t\t\tthis.setState({\n\t\t\t\ttoggleCheckAfterAction: true,\n\t\t\t});\n\t\t} else {\n\t\t\t// Don't hide if installed. Stay green and showing\n\t\t\tif (!this.props.installed) {\n\t\t\t\tthis.setState({\n\t\t\t\t\tcheckShown: false,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Calls parent passed function to open the app showcase for the supplied app\n\t */\n\topenAppShowcase() {\n\t\tthis.props.viewAppShowcase(this.state.id);\n\t}\n\n\t/**\n\t * Prevents bubbling (which would open the app showcase), then calls to add an app\n\t * @param {object} e React Synthetic event\n\t */\n\taddApp(e) {\n\t\te.preventDefault();\n\t\te.stopPropagation();\n\t\tthis.setState(\n\t\t\t{\n\t\t\t\tawaitingInstall: true,\n\t\t\t},\n\t\t\t() => {\n\t\t\t\tstoreActions.addApp(this.state.id, (err) => {\n\t\t\t\t\tthis.setState({\n\t\t\t\t\t\tawaitingInstall: false,\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t}\n\t\t);\n\t}\n\n\t/**\n\t * Prevents bubbling (which would open the app showcase), then calls to remove an app\n\t * @param {object} e React Synthetic event\n\t */\n\tremoveApp(e) {\n\t\te.preventDefault();\n\t\te.stopPropagation();\n\t\tthis.setState(\n\t\t\t{\n\t\t\t\tawaitingInstall: true,\n\t\t\t},\n\t\t\t() => {\n\t\t\t\tstoreActions.removeApp(this.state.id, (err) => {\n\t\t\t\t\tif (this.state.toggleCheckAfterAction) {\n\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\tawaitingInstall: false,\n\t\t\t\t\t\t\ttoggleCheckAfterAction: false,\n\t\t\t\t\t\t\tcheckShown: !this.state.checkShown,\n\t\t\t\t\t\t});\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\tawaitingInstall: false,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t);\n\t}\n\n\t/**\n\t * Prevents bubbling (which would open the app showcase), then calls to add a filtering tag\n\t * @param {string} name The tag name to add\n\t * @param {object} e React Synthetic event\n\t */\n\taddTag(name, e) {\n\t\te.preventDefault();\n\t\te.stopPropagation();\n\n\t\tstoreActions.addTag(name);\n\t}\n\n\trender() {\n\t\tlet imageUrl = this.props.icons !== undefined ? this.props.icons[0].url : null;\n\n\t\tlet { appName, checkShown, checkHighlighted } = this.state;\n\n\t\tlet imageIconClasses = \"ff-check-mark-2\";\n\t\tif (this.props.installed && checkHighlighted) imageIconClasses = `${imageIconClasses} highlighted added`;\n\t\telse if (this.props.installed || checkHighlighted) imageIconClasses = `${imageIconClasses} highlighted`;\n\t\telse imageIconClasses = `${imageIconClasses} faded`;\n\n\t\tlet titleClass = this.state.titleUnderlined ? \"app-title highlighted\" : \"app-title\";\n\n\t\tlet entitled = this.state.entitled ? \" entitled\" : \"\";\n\n\t\tlet imageStyle = `app-image ${entitled}`;\n\n\t\tif (!imageUrl) {\n\t\t\timageUrl = this.props.images !== undefined ? this.props.images[0].url : null;\n\t\t\timageStyle = `${imageStyle} noIcon`;\n\t\t}\n\n\t\tif (!imageUrl) {\n\t\t\timageStyle = `${imageStyle} noImg`;\n\t\t}\n\n\t\tlet cardStyle = this.state.tags.length > 0 ? \"app-card\" : \"app-card no-tags\";\n\n\t\tlet appAction = this.props.installed ? this.removeApp : this.addApp;\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={cardStyle}\n\t\t\t\tonClick={this.openAppShowcase}\n\t\t\t\tonMouseEnter={this.showCheck}\n\t\t\t\tonMouseLeave={this.hideCheck}\n\t\t\t>\n\t\t\t\t<div className=\"app-image-container\">\n\t\t\t\t\t{imageUrl ? (\n\t\t\t\t\t\t<img className={imageStyle} src={imageUrl} />\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<div className={imageStyle}>\n\t\t\t\t\t\t\t<span>{getAppNameIconWhenNoImage(appName)}</span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName={titleClass}\n\t\t\t\t\t\tonMouseEnter={this.toggleTitleUnderline}\n\t\t\t\t\t\tonMouseLeave={this.toggleTitleUnderline}\n\t\t\t\t\t\ttitle={appName}\n\t\t\t\t\t>\n\t\t\t\t\t\t{appName}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div className=\"row_description\">\n\t\t\t\t\t<div className=\"status-indicator\">\n\t\t\t\t\t\t{!entitled || !checkShown ? (\n\t\t\t\t\t\t\t<i>&nbsp;</i>\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<i\n\t\t\t\t\t\t\t\tclassName={imageIconClasses}\n\t\t\t\t\t\t\t\tonMouseEnter={this.toggleHighlight}\n\t\t\t\t\t\t\t\tonMouseLeave={this.toggleHighlight}\n\t\t\t\t\t\t\t\tonClick={appAction}\n\t\t\t\t\t\t\t></i>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\t\t\t\t\t<div className=\"app-description\">{this.props.description ? this.props.description : \"\"}</div>\n\t\t\t\t</div>\n\t\t\t\t{this.state.tags.length > 0 && (\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName=\"app-tags\"\n\t\t\t\t\t\tref={(el) => {\n\t\t\t\t\t\t\tthis.footer = el;\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t<i className=\"ff-tag\"></i>\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclassName=\"app-tag-names\"\n\t\t\t\t\t\t\tref={(el) => {\n\t\t\t\t\t\t\t\tthis.tagNamesList = el;\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{this.state.tags.map((tag, i) => {\n\t\t\t\t\t\t\t\tconst tagName = tag;\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t<span key={i} className=\"tag-name\" onClick={this.addTag.bind(this, tag)} title={tagName}>\n\t\t\t\t\t\t\t\t\t\t{getTruncatedStringWithEllipses(tagName)}\n\t\t\t\t\t\t\t\t\t\t{i !== this.props.tags.length - 1 ? \", \" : null}\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t);\n\t}\n}\n\nexport default AppCard;\n"]}
1
+ {"version":3,"file":"AppCard.js","sourceRoot":"","sources":["../../../../src/components/appCatalog/components/AppCard.jsx"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright 2017 by ChartIQ, Inc.\n * All rights reserved.\n */\nimport React, { Component } from \"react\";\nimport { getAppNameIconWhenNoImage, getTruncatedStringWithEllipses } from \"./helpers\";\n\n// data\nimport storeActions from \"../stores/storeActions\";\n\n/**\n * The card that displays on any page with information about an app. Clicking on it will lead to the AppShowcase or install (if the check is clicked)\n * @param {object} props Component props\n * @param {object} props...card The entire object that belongs to a single app. See FDC app directory.\n * @param {boolean} props.entitled If true, the app cannot be installed by this user, only viewed\n * @param {boolean} props.installed If true the app is installed on this local fsbl\n */\nclass AppCard extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.state = {\n\t\t\tcheckShown: this.props.installed === true,\n\t\t\tcheckHighlighted: false,\n\t\t\tawaitingInstall: false,\n\t\t\ttoggleCheckAfterAction: false,\n\t\t\ttitleUnderlined: false,\n\t\t\tappName: this.props.title || this.props.name,\n\t\t\tid: this.props.appId,\n\t\t\tentitled: this.props.entitled ? this.props.entitled : false,\n\t\t\ttags: this.props.tags || [],\n\t\t};\n\t\tthis.bindCorrectContext();\n\t}\n\n\tbindCorrectContext() {\n\t\tthis.toggleHighlight = this.toggleHighlight.bind(this);\n\t\tthis.toggleTitleUnderline = this.toggleTitleUnderline.bind(this);\n\t\tthis.showCheck = this.showCheck.bind(this);\n\t\tthis.hideCheck = this.hideCheck.bind(this);\n\t\tthis.openAppShowcase = this.openAppShowcase.bind(this);\n\t\tthis.addApp = this.addApp.bind(this);\n\t\tthis.removeApp = this.removeApp.bind(this);\n\t\tthis.addTag = this.addTag.bind(this);\n\t}\n\n\tcomponentDidMount() {\n\t\tif (!this.props.tags || this.props.tags.length === 0) return;\n\t\tconst list = this.tagNamesList;\n\t\tconst { footer } = this;\n\t\tif (list.offsetHeight >= footer.scrollHeight + 5) {\n\t\t\tlet newTags = this.state.tags.slice(0, 2);\n\t\t\tthis.setState({\n\t\t\t\ttags: newTags,\n\t\t\t});\n\t\t}\n\t}\n\n\t/**\n\t * Toggles the highlight state of the check mark for installing an app\n\t */\n\ttoggleHighlight() {\n\t\tthis.setState({\n\t\t\tcheckHighlighted: !this.state.checkHighlighted,\n\t\t});\n\t}\n\n\t/**\n\t * Toggles the 'highlight' state of the app title. On mouse over, the title is underlined to show that its a link\n\t */\n\ttoggleTitleUnderline() {\n\t\tthis.setState({\n\t\t\ttitleUnderlined: !this.state.titleUnderlined,\n\t\t});\n\t}\n\n\t/**\n\t * Shows the check mark for adding/removing an app\n\t */\n\tshowCheck() {\n\t\tthis.setState({\n\t\t\tcheckShown: true,\n\t\t});\n\t}\n\n\t/**\n\t * Hides the check mark for adding/removing an app\n\t */\n\thideCheck() {\n\t\tif (this.state.awaitingInstall) {\n\t\t\t// If an add/remove is taking place and this is called, toggle the check after the action completes\n\t\t\tthis.setState({\n\t\t\t\ttoggleCheckAfterAction: true,\n\t\t\t});\n\t\t} else {\n\t\t\t// Don't hide if installed. Stay green and showing\n\t\t\tif (!this.props.installed) {\n\t\t\t\tthis.setState({\n\t\t\t\t\tcheckShown: false,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Calls parent passed function to open the app showcase for the supplied app\n\t */\n\topenAppShowcase() {\n\t\tthis.props.viewAppShowcase(this.state.id);\n\t}\n\n\t/**\n\t * Prevents bubbling (which would open the app showcase), then calls to add an app\n\t * @param {object} e React Synthetic event\n\t */\n\taddApp(e) {\n\t\te.preventDefault();\n\t\te.stopPropagation();\n\t\tthis.setState(\n\t\t\t{\n\t\t\t\tawaitingInstall: true,\n\t\t\t},\n\t\t\t() => {\n\t\t\t\tstoreActions.addApp(this.state.id, (err) => {\n\t\t\t\t\tthis.setState({\n\t\t\t\t\t\tawaitingInstall: false,\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t}\n\t\t);\n\t}\n\n\t/**\n\t * Prevents bubbling (which would open the app showcase), then calls to remove an app\n\t * @param {object} e React Synthetic event\n\t */\n\tremoveApp(e) {\n\t\te.preventDefault();\n\t\te.stopPropagation();\n\t\tthis.setState(\n\t\t\t{\n\t\t\t\tawaitingInstall: true,\n\t\t\t},\n\t\t\t() => {\n\t\t\t\tstoreActions.removeApp(this.state.id, (err) => {\n\t\t\t\t\tif (this.state.toggleCheckAfterAction) {\n\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\tawaitingInstall: false,\n\t\t\t\t\t\t\ttoggleCheckAfterAction: false,\n\t\t\t\t\t\t\tcheckShown: !this.state.checkShown,\n\t\t\t\t\t\t});\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\tawaitingInstall: false,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t);\n\t}\n\n\t/**\n\t * Prevents bubbling (which would open the app showcase), then calls to add a filtering tag\n\t * @param {string} name The tag name to add\n\t * @param {object} e React Synthetic event\n\t */\n\taddTag(name, e) {\n\t\te.preventDefault();\n\t\te.stopPropagation();\n\n\t\tstoreActions.addTag(name);\n\t}\n\n\trender() {\n\t\tlet imageUrl = this.props.icons !== undefined ? this.props.icons[0].url : null;\n\n\t\tlet { appName, checkShown, checkHighlighted } = this.state;\n\n\t\tlet imageIconClasses = \"ff-check-mark-2\";\n\t\tif (this.props.installed && checkHighlighted) imageIconClasses = `${imageIconClasses} highlighted added`;\n\t\telse if (this.props.installed || checkHighlighted) imageIconClasses = `${imageIconClasses} highlighted`;\n\t\telse imageIconClasses = `${imageIconClasses} faded`;\n\n\t\tlet titleClass = this.state.titleUnderlined ? \"app-title highlighted\" : \"app-title\";\n\n\t\tlet entitled = this.state.entitled ? \" entitled\" : \"\";\n\n\t\tlet imageStyle = `app-image ${entitled}`;\n\n\t\tif (!imageUrl) {\n\t\t\timageUrl = this.props.images !== undefined ? this.props.images[0].url : null;\n\t\t\timageStyle = `${imageStyle} noIcon`;\n\t\t}\n\n\t\tif (!imageUrl) {\n\t\t\timageStyle = `${imageStyle} noImg`;\n\t\t}\n\n\t\tlet cardStyle = this.state.tags.length > 0 ? \"app-card\" : \"app-card no-tags\";\n\n\t\tlet appAction = this.props.installed ? this.removeApp : this.addApp;\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={cardStyle}\n\t\t\t\tonClick={this.openAppShowcase}\n\t\t\t\tonMouseEnter={this.showCheck}\n\t\t\t\tonMouseLeave={this.hideCheck}\n\t\t\t>\n\t\t\t\t<div className=\"app-image-container\">\n\t\t\t\t\t{imageUrl ? (\n\t\t\t\t\t\t<img className={imageStyle} src={imageUrl} />\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<div className={imageStyle}>\n\t\t\t\t\t\t\t<span>{getAppNameIconWhenNoImage(appName)}</span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName={titleClass}\n\t\t\t\t\t\tonMouseEnter={this.toggleTitleUnderline}\n\t\t\t\t\t\tonMouseLeave={this.toggleTitleUnderline}\n\t\t\t\t\t\ttitle={appName}\n\t\t\t\t\t>\n\t\t\t\t\t\t{appName}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div className=\"row_description\">\n\t\t\t\t\t<div className=\"status-indicator\">\n\t\t\t\t\t\t{!entitled || !checkShown ? (\n\t\t\t\t\t\t\t<i>&nbsp;</i>\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<i\n\t\t\t\t\t\t\t\tclassName={imageIconClasses}\n\t\t\t\t\t\t\t\tonMouseEnter={this.toggleHighlight}\n\t\t\t\t\t\t\t\tonMouseLeave={this.toggleHighlight}\n\t\t\t\t\t\t\t\tonClick={appAction}\n\t\t\t\t\t\t\t></i>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\t\t\t\t\t<div className=\"app-description\">{this.props.description ? this.props.description : \"\"}</div>\n\t\t\t\t</div>\n\t\t\t\t{this.state.tags.length > 0 && (\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName=\"app-tags\"\n\t\t\t\t\t\tref={(el) => {\n\t\t\t\t\t\t\tthis.footer = el;\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t<i className=\"ff-tag\"></i>\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclassName=\"app-tag-names\"\n\t\t\t\t\t\t\tref={(el) => {\n\t\t\t\t\t\t\t\tthis.tagNamesList = el;\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{this.state.tags.map((tag, i) => {\n\t\t\t\t\t\t\t\tconst tagName = tag;\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t<span key={i} className=\"tag-name\" onClick={this.addTag.bind(this, tag)} title={tagName}>\n\t\t\t\t\t\t\t\t\t\t{getTruncatedStringWithEllipses(tagName)}\n\t\t\t\t\t\t\t\t\t\t{i !== this.props.tags.length - 1 ? \", \" : null}\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t);\n\t}\n}\n\nexport default AppCard;\n"]}
@@ -7,5 +7,15 @@ declare type ResultsProps = {
7
7
  })[];
8
8
  viewAppShowcase: (id: AppMetadata["appId"]) => void;
9
9
  };
10
+ /**
11
+ * The results page. Shown when filter tags are applied, search text is entered, or both.
12
+ * @param {object} props Component props
13
+ * @param {array} props.tags Array of tags that are applied for filtering
14
+ * @param {array} props.cards Array of app card objects (apps that come from FDC app directory)
15
+ * @param {func} props.addApp See AppCard.jsx
16
+ * @param {func} props.removeApp See AppCard.jsx
17
+ * @param {func} props.openAppShowcase See AppCard.jsx
18
+ * @param {func} props.addTag Parent function to add a filtering tag
19
+ */
10
20
  declare const AppResults: (props: ResultsProps) => JSX.Element;
11
21
  export default AppResults;
@@ -1,10 +1,31 @@
1
+ /*!
2
+ * Copyright 2017 by ChartIQ, Inc.
3
+ * All rights reserved.
4
+ */
1
5
  import React from "react";
6
+ //components
2
7
  import EmptyResults from "./EmptyResults";
3
8
  import AppCard from "./AppCard";
9
+ //consts
4
10
  const NUMBER_OF_CARDS_PER_ROW = 2;
11
+ /**
12
+ * The results page. Shown when filter tags are applied, search text is entered, or both.
13
+ * @param {object} props Component props
14
+ * @param {array} props.tags Array of tags that are applied for filtering
15
+ * @param {array} props.cards Array of app card objects (apps that come from FDC app directory)
16
+ * @param {func} props.addApp See AppCard.jsx
17
+ * @param {func} props.removeApp See AppCard.jsx
18
+ * @param {func} props.openAppShowcase See AppCard.jsx
19
+ * @param {func} props.addTag Parent function to add a filtering tag
20
+ */
5
21
  const AppResults = (props) => {
22
+ /**
23
+ * Function to take the incoming apps and any filtering tags and filter the list.
24
+ * If there are no tags, we'll use all of the cards supplied
25
+ */
6
26
  const buildResultCards = () => {
7
27
  let cardsForShowcase = [];
28
+ //Filter cards by tags
8
29
  if (props.tags && props.tags.length > 0) {
9
30
  cardsForShowcase = props.cards.filter((card) => {
10
31
  for (let i = 0; i < props.tags.length; i++) {
@@ -21,6 +42,9 @@ const AppResults = (props) => {
21
42
  return cardsForShowcase;
22
43
  };
23
44
  let cardsForShowcase = buildResultCards();
45
+ /**
46
+ * Function to build the table of cards based on filtered information
47
+ */
24
48
  const getCardRows = () => {
25
49
  let cardRows = [];
26
50
  let cardsInRow = [];
@@ -1 +1 @@
1
- {"version":3,"file":"AppResults.js","sourceRoot":"","sources":["../../../../src/components/appCatalog/components/AppResults.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAC1C,OAAO,OAAO,MAAM,WAAW,CAAC;AAIhC,MAAM,uBAAuB,GAAG,CAAC,CAAC;AAkBlC,MAAM,UAAU,GAAG,CAAC,KAAmB,EAAE,EAAE;IAK1C,MAAM,gBAAgB,GAAG,GAAG,EAAE;QAC7B,IAAI,gBAAgB,GAAG,EAAE,CAAC;QAG1B,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;YACxC,gBAAgB,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;gBAC9C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBAC3C,IAAI,cAAc,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;oBACnC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC;wBAAE,OAAO,KAAK,CAAC;iBACtD;gBACD,OAAO,IAAI,CAAC;YACb,CAAC,CAAC,CAAC;SACH;aAAM;YACN,gBAAgB,GAAG,KAAK,CAAC,KAAK,CAAC;SAC/B;QAED,OAAO,gBAAgB,CAAC;IACzB,CAAC,CAAC;IAEF,IAAI,gBAAgB,GAAG,gBAAgB,EAAE,CAAC;IAK1C,MAAM,WAAW,GAAG,GAAG,EAAE;QACxB,IAAI,QAAQ,GAAG,EAAE,CAAC;QAClB,IAAI,UAAU,GAAG,EAAE,CAAC;QACpB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,gBAAgB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACjD,IAAI,IAAI,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;YAC/B,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC;YAEnC,IAAI,GAAG,GAAG,QAAQ,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;YAE5C,UAAU,CAAC,IAAI,CACd,4BAAI,GAAG,EAAE,GAAG;gBACX,oBAAC,OAAO,oBAAK,IAAI,IAAE,eAAe,EAAE,KAAK,CAAC,eAAe,IAAI,CACzD,CACL,CAAC;YAEF,IAAI,UAAU,CAAC,MAAM,KAAK,uBAAuB,IAAI,CAAC,KAAK,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE;gBACvF,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAC1B,UAAU,GAAG,EAAE,CAAC;aAChB;SACD;QAED,OAAO,QAAQ,CAAC;IACjB,CAAC,CAAC;IAEF,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,oBAAC,YAAY,OAAG,CAAC;IAE3D,IAAI,QAAQ,GAAG,WAAW,EAAE,CAAC;IAE7B,OAAO,CACN,6BAAK,SAAS,EAAC,aAAa;QAC3B,+BAAO,SAAS,EAAC,mBAAmB;YACnC,mCACE,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CACzB,4BAAI,GAAG,EAAE,YAAY,CAAC,EAAE,IAAG,GAAG,CAAM,CACpC,CAAC,CACK,CACD,CACH,CACN,CAAC;AACH,CAAC,CAAC;AAEF,eAAe,UAAU,CAAC","sourcesContent":["/*!\n * Copyright 2017 by ChartIQ, Inc.\n * All rights reserved.\n */\nimport React from \"react\";\n\n//components\nimport EmptyResults from \"./EmptyResults\";\nimport AppCard from \"./AppCard\";\nimport { AppMetadata } from \"../../../types/fdc3\";\n\n//consts\nconst NUMBER_OF_CARDS_PER_ROW = 2;\n\ntype ResultsProps = {\n\ttags: string[];\n\tcards: (AppMetadata & { tags: string[] })[];\n\tviewAppShowcase: (id: AppMetadata[\"appId\"]) => void;\n};\n\n/**\n * The results page. Shown when filter tags are applied, search text is entered, or both.\n * @param {object} props Component props\n * @param {array} props.tags Array of tags that are applied for filtering\n * @param {array} props.cards Array of app card objects (apps that come from FDC app directory)\n * @param {func} props.addApp See AppCard.jsx\n * @param {func} props.removeApp See AppCard.jsx\n * @param {func} props.openAppShowcase See AppCard.jsx\n * @param {func} props.addTag Parent function to add a filtering tag\n */\nconst AppResults = (props: ResultsProps) => {\n\t/**\n\t * Function to take the incoming apps and any filtering tags and filter the list.\n\t * If there are no tags, we'll use all of the cards supplied\n\t */\n\tconst buildResultCards = () => {\n\t\tlet cardsForShowcase = [];\n\n\t\t//Filter cards by tags\n\t\tif (props.tags && props.tags.length > 0) {\n\t\t\tcardsForShowcase = props.cards.filter((card) => {\n\t\t\t\tfor (let i = 0; i < props.tags.length; i++) {\n\t\t\t\t\tlet tagToSearchFor = props.tags[i];\n\t\t\t\t\tif (!card.tags.includes(tagToSearchFor)) return false;\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t});\n\t\t} else {\n\t\t\tcardsForShowcase = props.cards;\n\t\t}\n\n\t\treturn cardsForShowcase;\n\t};\n\n\tlet cardsForShowcase = buildResultCards();\n\n\t/**\n\t * Function to build the table of cards based on filtered information\n\t */\n\tconst getCardRows = () => {\n\t\tlet cardRows = [];\n\t\tlet cardsInRow = [];\n\t\tfor (let i = 0; i < cardsForShowcase.length; i++) {\n\t\t\tlet card = cardsForShowcase[i];\n\t\t\tlet name = card.title || card.name;\n\n\t\t\tlet key = `card-${i}-${name.toLowerCase()}`;\n\n\t\t\tcardsInRow.push(\n\t\t\t\t<td key={key}>\n\t\t\t\t\t<AppCard {...card} viewAppShowcase={props.viewAppShowcase} />\n\t\t\t\t</td>\n\t\t\t);\n\n\t\t\tif (cardsInRow.length === NUMBER_OF_CARDS_PER_ROW || i === cardsForShowcase.length - 1) {\n\t\t\t\tcardRows.push(cardsInRow);\n\t\t\t\tcardsInRow = [];\n\t\t\t}\n\t\t}\n\n\t\treturn cardRows;\n\t};\n\n\tif (cardsForShowcase.length === 0) return <EmptyResults />;\n\n\tlet cardRows = getCardRows();\n\n\treturn (\n\t\t<div className=\"app-results\">\n\t\t\t<table className=\"app-results-table\">\n\t\t\t\t<tbody>\n\t\t\t\t\t{cardRows.map((row, i) => (\n\t\t\t\t\t\t<tr key={`tablerow-${i}`}>{row}</tr>\n\t\t\t\t\t))}\n\t\t\t\t</tbody>\n\t\t\t</table>\n\t\t</div>\n\t);\n};\n\nexport default AppResults;\n"]}
1
+ {"version":3,"file":"AppResults.js","sourceRoot":"","sources":["../../../../src/components/appCatalog/components/AppResults.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,YAAY;AACZ,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAC1C,OAAO,OAAO,MAAM,WAAW,CAAC;AAGhC,QAAQ;AACR,MAAM,uBAAuB,GAAG,CAAC,CAAC;AAQlC;;;;;;;;;GASG;AACH,MAAM,UAAU,GAAG,CAAC,KAAmB,EAAE,EAAE;IAC1C;;;OAGG;IACH,MAAM,gBAAgB,GAAG,GAAG,EAAE;QAC7B,IAAI,gBAAgB,GAAG,EAAE,CAAC;QAE1B,sBAAsB;QACtB,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;YACxC,gBAAgB,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;gBAC9C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBAC3C,IAAI,cAAc,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;oBACnC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC;wBAAE,OAAO,KAAK,CAAC;iBACtD;gBACD,OAAO,IAAI,CAAC;YACb,CAAC,CAAC,CAAC;SACH;aAAM;YACN,gBAAgB,GAAG,KAAK,CAAC,KAAK,CAAC;SAC/B;QAED,OAAO,gBAAgB,CAAC;IACzB,CAAC,CAAC;IAEF,IAAI,gBAAgB,GAAG,gBAAgB,EAAE,CAAC;IAE1C;;OAEG;IACH,MAAM,WAAW,GAAG,GAAG,EAAE;QACxB,IAAI,QAAQ,GAAG,EAAE,CAAC;QAClB,IAAI,UAAU,GAAG,EAAE,CAAC;QACpB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,gBAAgB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACjD,IAAI,IAAI,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;YAC/B,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC;YAEnC,IAAI,GAAG,GAAG,QAAQ,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;YAE5C,UAAU,CAAC,IAAI,CACd,4BAAI,GAAG,EAAE,GAAG;gBACX,oBAAC,OAAO,oBAAK,IAAI,IAAE,eAAe,EAAE,KAAK,CAAC,eAAe,IAAI,CACzD,CACL,CAAC;YAEF,IAAI,UAAU,CAAC,MAAM,KAAK,uBAAuB,IAAI,CAAC,KAAK,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE;gBACvF,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAC1B,UAAU,GAAG,EAAE,CAAC;aAChB;SACD;QAED,OAAO,QAAQ,CAAC;IACjB,CAAC,CAAC;IAEF,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,oBAAC,YAAY,OAAG,CAAC;IAE3D,IAAI,QAAQ,GAAG,WAAW,EAAE,CAAC;IAE7B,OAAO,CACN,6BAAK,SAAS,EAAC,aAAa;QAC3B,+BAAO,SAAS,EAAC,mBAAmB;YACnC,mCACE,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CACzB,4BAAI,GAAG,EAAE,YAAY,CAAC,EAAE,IAAG,GAAG,CAAM,CACpC,CAAC,CACK,CACD,CACH,CACN,CAAC;AACH,CAAC,CAAC;AAEF,eAAe,UAAU,CAAC","sourcesContent":["/*!\n * Copyright 2017 by ChartIQ, Inc.\n * All rights reserved.\n */\nimport React from \"react\";\n\n//components\nimport EmptyResults from \"./EmptyResults\";\nimport AppCard from \"./AppCard\";\nimport { AppMetadata } from \"../../../types/fdc3\";\n\n//consts\nconst NUMBER_OF_CARDS_PER_ROW = 2;\n\ntype ResultsProps = {\n\ttags: string[];\n\tcards: (AppMetadata & { tags: string[] })[];\n\tviewAppShowcase: (id: AppMetadata[\"appId\"]) => void;\n};\n\n/**\n * The results page. Shown when filter tags are applied, search text is entered, or both.\n * @param {object} props Component props\n * @param {array} props.tags Array of tags that are applied for filtering\n * @param {array} props.cards Array of app card objects (apps that come from FDC app directory)\n * @param {func} props.addApp See AppCard.jsx\n * @param {func} props.removeApp See AppCard.jsx\n * @param {func} props.openAppShowcase See AppCard.jsx\n * @param {func} props.addTag Parent function to add a filtering tag\n */\nconst AppResults = (props: ResultsProps) => {\n\t/**\n\t * Function to take the incoming apps and any filtering tags and filter the list.\n\t * If there are no tags, we'll use all of the cards supplied\n\t */\n\tconst buildResultCards = () => {\n\t\tlet cardsForShowcase = [];\n\n\t\t//Filter cards by tags\n\t\tif (props.tags && props.tags.length > 0) {\n\t\t\tcardsForShowcase = props.cards.filter((card) => {\n\t\t\t\tfor (let i = 0; i < props.tags.length; i++) {\n\t\t\t\t\tlet tagToSearchFor = props.tags[i];\n\t\t\t\t\tif (!card.tags.includes(tagToSearchFor)) return false;\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t});\n\t\t} else {\n\t\t\tcardsForShowcase = props.cards;\n\t\t}\n\n\t\treturn cardsForShowcase;\n\t};\n\n\tlet cardsForShowcase = buildResultCards();\n\n\t/**\n\t * Function to build the table of cards based on filtered information\n\t */\n\tconst getCardRows = () => {\n\t\tlet cardRows = [];\n\t\tlet cardsInRow = [];\n\t\tfor (let i = 0; i < cardsForShowcase.length; i++) {\n\t\t\tlet card = cardsForShowcase[i];\n\t\t\tlet name = card.title || card.name;\n\n\t\t\tlet key = `card-${i}-${name.toLowerCase()}`;\n\n\t\t\tcardsInRow.push(\n\t\t\t\t<td key={key}>\n\t\t\t\t\t<AppCard {...card} viewAppShowcase={props.viewAppShowcase} />\n\t\t\t\t</td>\n\t\t\t);\n\n\t\t\tif (cardsInRow.length === NUMBER_OF_CARDS_PER_ROW || i === cardsForShowcase.length - 1) {\n\t\t\t\tcardRows.push(cardsInRow);\n\t\t\t\tcardsInRow = [];\n\t\t\t}\n\t\t}\n\n\t\treturn cardRows;\n\t};\n\n\tif (cardsForShowcase.length === 0) return <EmptyResults />;\n\n\tlet cardRows = getCardRows();\n\n\treturn (\n\t\t<div className=\"app-results\">\n\t\t\t<table className=\"app-results-table\">\n\t\t\t\t<tbody>\n\t\t\t\t\t{cardRows.map((row, i) => (\n\t\t\t\t\t\t<tr key={`tablerow-${i}`}>{row}</tr>\n\t\t\t\t\t))}\n\t\t\t\t</tbody>\n\t\t\t</table>\n\t\t</div>\n\t);\n};\n\nexport default AppResults;\n"]}
@@ -1,11 +1,37 @@
1
+ /**
2
+ * A carousel of AppCards
3
+ * @param {object} props Component props
4
+ * @param {array} props.cards An array of AppCards to display in a carousel
5
+ * @param {string} props.tag The carousel's tag (title)
6
+ * @param {func} props.openAppShowcase Parent function to show the AppShowcase for the selected card
7
+ */
1
8
  export default class Carousel extends React.Component<any, any, any> {
2
9
  constructor(props: any);
3
10
  bindCorrectContext(): void;
11
+ /**
12
+ * Pages through the carousel by one card (right)
13
+ */
4
14
  pageUp(): void;
15
+ /**
16
+ * Pages through the carousel by one card (left)
17
+ */
5
18
  pageDown(): void;
19
+ /**
20
+ * Toggles the highlight on a carousel's title. When a user mouses over, we want to style it so its obvious its a link
21
+ * @param {*} highlight
22
+ */
6
23
  highlightTitle(highlight: any): void;
24
+ /**
25
+ * Calls the parents seeMore function, which will add the selected tag as a filter
26
+ */
7
27
  seeMore(): void;
28
+ /**
29
+ * Spits out a warning if the number of cards supplied to the carousel is < 3
30
+ */
8
31
  notEnoughCards(): void;
32
+ /**
33
+ * Function to build the items in the carousel
34
+ */
9
35
  buildCarousel(): any[];
10
36
  }
11
37
  import React from "react";