@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
@@ -7,5 +7,11 @@ declare type MenuContextType = {
7
7
  menuHeight: number | undefined;
8
8
  minHeight: number;
9
9
  };
10
+ /**
11
+ * We initialize our context with an empty object because we know that MenuShell will
12
+ * properly initialize our context at runtime (during the first render). We cast () to MenuContextType
13
+ * to avoid typescript errors for any consumers of the context object. Beware that if you get a runtime error
14
+ * then someone has probably missed an initialization in MenuShell.
15
+ */
10
16
  export declare const MenuContext: import("react").Context<MenuContextType>;
11
17
  export {};
@@ -1,3 +1,9 @@
1
1
  import { createContext } from "react";
2
+ /**
3
+ * We initialize our context with an empty object because we know that MenuShell will
4
+ * properly initialize our context at runtime (during the first render). We cast () to MenuContextType
5
+ * to avoid typescript errors for any consumers of the context object. Beware that if you get a runtime error
6
+ * then someone has probably missed an initialization in MenuShell.
7
+ */
2
8
  export const MenuContext = createContext({});
3
9
  //# sourceMappingURL=menuContext.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"menuContext.js","sourceRoot":"","sources":["../../../src/components/menu/menuContext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAiBtC,MAAM,CAAC,MAAM,WAAW,GAAG,aAAa,CAAkB,EAAqB,CAAC,CAAC","sourcesContent":["import { createContext } from \"react\";\n\ntype MenuContextType = {\n\tthisMenuId: string;\n\tclassName: string | undefined;\n\tmaxHeight: number;\n\tmenuWidth: number;\n\tmenuHeight: number | undefined;\n\tminHeight: number;\n};\n\n/**\n * We initialize our context with an empty object because we know that MenuShell will\n * properly initialize our context at runtime (during the first render). We cast () to MenuContextType\n * to avoid typescript errors for any consumers of the context object. Beware that if you get a runtime error\n * then someone has probably missed an initialization in MenuShell.\n */\nexport const MenuContext = createContext<MenuContextType>({} as MenuContextType);\n"]}
1
+ {"version":3,"file":"menuContext.js","sourceRoot":"","sources":["../../../src/components/menu/menuContext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAWtC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,aAAa,CAAkB,EAAqB,CAAC,CAAC","sourcesContent":["import { createContext } from \"react\";\n\ntype MenuContextType = {\n\tthisMenuId: string;\n\tclassName: string | undefined;\n\tmaxHeight: number;\n\tmenuWidth: number;\n\tmenuHeight: number | undefined;\n\tminHeight: number;\n};\n\n/**\n * We initialize our context with an empty object because we know that MenuShell will\n * properly initialize our context at runtime (during the first render). We cast () to MenuContextType\n * to avoid typescript errors for any consumers of the context object. Beware that if you get a runtime error\n * then someone has probably missed an initialization in MenuShell.\n */\nexport const MenuContext = createContext<MenuContextType>({} as MenuContextType);\n"]}
@@ -1,10 +1,32 @@
1
+ /**
2
+ * Returns a drop down menu's position relative to the toolbar's current location and the
3
+ * MenuToggle that was pressed. The dimensions returned are relative to the toolbar's
4
+ * current monitor.
5
+ * @param menuId The shell ID (e.g. filemenu)
6
+ * @param menuContentHeight The height of menu contents.
7
+ */
1
8
  export declare const calculatePosition: (menuId: string, menuContentHeight?: number | undefined) => Promise<{
2
9
  top: number;
3
10
  left: number;
4
11
  }>;
12
+ /**
13
+ * Calculates the height and position that a window should take based on the height necessary to display
14
+ * the window's DOM contents without scrollbars, but not beyond the scope of the monitor itself.
15
+ *
16
+ * @param childWindow Window The window to calculate
17
+ * @param menuId string The id of the menu, used for a CSS selector
18
+ * @param [maxHeight] Maximum height for the window
19
+ * @param [fixedHeight] Optional fixed height
20
+ */
5
21
  export declare const calculateDimensions: (childWindow: Window, menuId: string, fixedHeight: number | undefined, maxHeight: number | undefined, minHeight: number) => Promise<{
6
22
  top: number;
7
23
  left: number;
8
24
  height: number;
9
25
  }>;
26
+ /**
27
+ * Copy CSS elements from parent to child window. Portals operate in a new window which doesn't automatically
28
+ * have access to the CSS from the main window, so we need to clone those elements into the menu's window
29
+ * when it is created.
30
+ * @param childWindow Child window reference
31
+ */
10
32
  export declare const injectCSS: (childWindow: Window) => void;
@@ -1,18 +1,46 @@
1
+ // Minimum portal height (chromium limitation)
1
2
  const MIN_HEIGHT = 100;
3
+ /**
4
+ * Returns a drop down menu's position relative to the toolbar's current location and the
5
+ * MenuToggle that was pressed. The dimensions returned are relative to the toolbar's
6
+ * current monitor.
7
+ * @param menuId The shell ID (e.g. filemenu)
8
+ * @param menuContentHeight The height of menu contents.
9
+ */
2
10
  export const calculatePosition = async (menuId, menuContentHeight) => {
11
+ var _a, _b;
12
+ // Rather than use window.innerHeight, we use the height of the document because Electron at times fails
13
+ // to resize windows across monitors with different DPI scaling. We've worked around this by calling setShape()
14
+ // to avoid a white bar at the bottom of the window, but the window DOM height is still the old height.
3
15
  const toolbarHeight = document.getElementsByClassName("finsemble-toolbar")[0].offsetHeight;
16
+ // The monitor's available height and width is found in the window.screen object (just like Electron, less the space
17
+ // taken up by the operating system toolbar)
4
18
  const { availHeight } = window.screen;
19
+ // Non-standard. Specifies the y-coordinate of the first pixel that is not allocated to permanent or semipermanent user interface features.
20
+ // https://developer.mozilla.org/en-US/docs/Web/API/Screen/availTop
21
+ const availTop = (_b = (_a = window.screen) === null || _a === void 0 ? void 0 : _a.availTop) !== null && _b !== void 0 ? _b : 0;
5
22
  const toolbarX = window.screenLeft;
6
23
  const toolbarY = window.screenTop;
7
- const spaceBelowToolbar = availHeight - toolbarY - toolbarHeight;
24
+ const spaceBelowToolbar = availHeight + availTop - toolbarY - toolbarHeight;
25
+ /*
26
+ Get a reference to the MenuToggle's element using querySelector to avoid having to pass
27
+ React ref all the way down here.
28
+ */
8
29
  const selector = `#${menuId}-menu-toggle`;
9
30
  const menuToggle = document.querySelector(selector);
10
31
  if (!menuToggle) {
11
32
  console.error(`calculatePosition() can't find selector "${selector}"`);
12
33
  }
34
+ // Get the "x" coordinate of our toggle button *within* the toolbar
35
+ // If for whatever reason the menuToggle can't be found, then default to an x coordinate of zero
13
36
  const { x: menuToggleX } = menuToggle ? menuToggle.getBoundingClientRect() : { x: 0 };
14
37
  let left = toolbarX + menuToggleX;
15
38
  let top = toolbarY + toolbarHeight;
39
+ /*
40
+ Check if we have enough space for the menu between
41
+ the toolbar and bottom edge of the screen. If not,
42
+ then reposition the menu to appear above toolbar.
43
+ */
16
44
  if (menuContentHeight) {
17
45
  const menuHeight = Math.max(menuContentHeight, MIN_HEIGHT);
18
46
  if (menuHeight > spaceBelowToolbar) {
@@ -24,12 +52,31 @@ export const calculatePosition = async (menuId, menuContentHeight) => {
24
52
  left,
25
53
  };
26
54
  };
55
+ /**
56
+ * Calculates the height and position that a window should take based on the height necessary to display
57
+ * the window's DOM contents without scrollbars, but not beyond the scope of the monitor itself.
58
+ *
59
+ * @param childWindow Window The window to calculate
60
+ * @param menuId string The id of the menu, used for a CSS selector
61
+ * @param [maxHeight] Maximum height for the window
62
+ * @param [fixedHeight] Optional fixed height
63
+ */
27
64
  export const calculateDimensions = async (childWindow, menuId, fixedHeight = 0, maxHeight = Infinity, minHeight) => {
65
+ /* Content height is essentially the offsetHeight of the window's <html> element.
66
+ This seems more reliable than summing the heights of all body children.
67
+ */
28
68
  const contentHeight = childWindow.document.documentElement.offsetHeight;
69
+ /**
70
+ * Calculate the actual menu height, constrained by maximum and minimum sizes.
71
+ * Zero, null or undefined are invalid maximum heights.
72
+ *
73
+ * Chromium imposes a 100 pixel minimum on window height.
74
+ */
29
75
  const CHROMIUM_MIN_HEIGHT = minHeight !== null && minHeight !== void 0 ? minHeight : 0;
30
76
  const minimumContentHeight = Math.max(contentHeight, CHROMIUM_MIN_HEIGHT);
31
77
  const height = fixedHeight ? fixedHeight : Math.min(minimumContentHeight, maxHeight);
32
78
  const { left, top } = await calculatePosition(menuId, height);
79
+ // Final step, make sure the menu isn't larger than the screen itself
33
80
  const { availHeight } = window.screen;
34
81
  const finalHeight = Math.min(height, availHeight);
35
82
  return {
@@ -38,10 +85,20 @@ export const calculateDimensions = async (childWindow, menuId, fixedHeight = 0,
38
85
  height: finalHeight,
39
86
  };
40
87
  };
88
+ /**
89
+ * Copy CSS elements from parent to child window. Portals operate in a new window which doesn't automatically
90
+ * have access to the CSS from the main window, so we need to clone those elements into the menu's window
91
+ * when it is created.
92
+ * @param childWindow Child window reference
93
+ */
41
94
  export const injectCSS = (childWindow) => {
42
95
  const { children } = document.head;
43
96
  const styleElements = [];
44
97
  for (const item in children) {
98
+ /**
99
+ webpack's style-loader creates <style> tags but some versions will create <link> tags if CSS source maps are
100
+ enabled (sourceMap), or if `injectType: linkTag` is configured.
101
+ */
45
102
  if (children[item].tagName === "STYLE" || children[item].tagName === "LINK") {
46
103
  const newElement = children[item].cloneNode(true);
47
104
  styleElements.push(newElement);
@@ -1 +1 @@
1
- {"version":3,"file":"menuHelpers.js","sourceRoot":"","sources":["../../../src/components/menu/menuHelpers.ts"],"names":[],"mappings":"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","sourcesContent":["// Minimum portal height (chromium limitation)\nconst MIN_HEIGHT = 100;\n\n/**\n * Returns a drop down menu's position relative to the toolbar's current location and the\n * MenuToggle that was pressed. The dimensions returned are relative to the toolbar's\n * current monitor.\n * @param menuId The shell ID (e.g. filemenu)\n * @param menuContentHeight The height of menu contents.\n */\nexport const calculatePosition = async (\n\tmenuId: string,\n\tmenuContentHeight?: number\n): Promise<{\n\ttop: number;\n\tleft: number;\n}> => {\n\t// Rather than use window.innerHeight, we use the height of the document because Electron at times fails\n\t// to resize windows across monitors with different DPI scaling. We've worked around this by calling setShape()\n\t// to avoid a white bar at the bottom of the window, but the window DOM height is still the old height.\n\tconst toolbarHeight = (<HTMLElement>document.getElementsByClassName(\"finsemble-toolbar\")[0]).offsetHeight;\n\n\t// The monitor's available height and width is found in the window.screen object (just like Electron, less the space\n\t// taken up by the operating system toolbar)\n\tconst { availHeight }: Screen = window.screen;\n\n\tconst toolbarX = window.screenLeft;\n\tconst toolbarY = window.screenTop;\n\tconst spaceBelowToolbar = availHeight - toolbarY - toolbarHeight;\n\n\t/*\n\tGet a reference to the MenuToggle's element using querySelector to avoid having to pass\n\tReact ref all the way down here.\n\t*/\n\tconst selector = `#${menuId}-menu-toggle`;\n\tconst menuToggle = document.querySelector(selector);\n\tif (!menuToggle) {\n\t\tconsole.error(`calculatePosition() can't find selector \"${selector}\"`);\n\t}\n\n\t// Get the \"x\" coordinate of our toggle button *within* the toolbar\n\t// If for whatever reason the menuToggle can't be found, then default to an x coordinate of zero\n\tconst { x: menuToggleX } = menuToggle ? menuToggle.getBoundingClientRect() : { x: 0 };\n\n\tlet left = toolbarX + menuToggleX;\n\tlet top = toolbarY + toolbarHeight;\n\t/*\n\tCheck if we have enough space for the menu between\n\tthe toolbar and bottom edge of the screen. If not,\n\tthen reposition the menu to appear above toolbar.\n\t*/\n\tif (menuContentHeight) {\n\t\tconst menuHeight = Math.max(menuContentHeight, MIN_HEIGHT);\n\t\tif (menuHeight > spaceBelowToolbar) {\n\t\t\ttop = toolbarY - menuHeight;\n\t\t}\n\t}\n\n\treturn {\n\t\ttop,\n\t\tleft,\n\t};\n};\n\n/**\n * Calculates the height and position that a window should take based on the height necessary to display\n * the window's DOM contents without scrollbars, but not beyond the scope of the monitor itself.\n *\n * @param childWindow Window The window to calculate\n * @param menuId string The id of the menu, used for a CSS selector\n * @param [maxHeight] Maximum height for the window\n * @param [fixedHeight] Optional fixed height\n */\nexport const calculateDimensions = async (\n\tchildWindow: Window,\n\tmenuId: string,\n\tfixedHeight: number = 0,\n\tmaxHeight: number = Infinity,\n\tminHeight: number\n): Promise<{\n\ttop: number;\n\tleft: number;\n\theight: number;\n}> => {\n\t/* Content height is essentially the offsetHeight of the window's <html> element.\n\tThis seems more reliable than summing the heights of all body children.\n\t*/\n\tconst contentHeight = childWindow.document.documentElement.offsetHeight;\n\n\t/**\n\t * Calculate the actual menu height, constrained by maximum and minimum sizes.\n\t * Zero, null or undefined are invalid maximum heights.\n\t *\n\t * Chromium imposes a 100 pixel minimum on window height.\n\t */\n\tconst CHROMIUM_MIN_HEIGHT = minHeight ?? 0;\n\tconst minimumContentHeight = Math.max(contentHeight, CHROMIUM_MIN_HEIGHT);\n\tconst height = fixedHeight ? fixedHeight : Math.min(minimumContentHeight, maxHeight);\n\n\tconst { left, top } = await calculatePosition(menuId, height);\n\n\t// Final step, make sure the menu isn't larger than the screen itself\n\tconst { availHeight }: Screen = window.screen;\n\tconst finalHeight = Math.min(height, availHeight);\n\n\treturn {\n\t\ttop,\n\t\tleft,\n\t\theight: finalHeight,\n\t};\n};\n\n/**\n * Copy CSS elements from parent to child window. Portals operate in a new window which doesn't automatically\n * have access to the CSS from the main window, so we need to clone those elements into the menu's window\n * when it is created.\n * @param childWindow Child window reference\n */\nexport const injectCSS = (childWindow: Window): void => {\n\tconst { children }: any = document.head;\n\tconst styleElements: HTMLElement[] = [];\n\tfor (const item in children) {\n\t\t/** \n\t\t\twebpack's style-loader creates <style> tags but some versions will create <link> tags if CSS source maps are \n\t\t\tenabled (sourceMap), or if `injectType: linkTag` is configured.\n \t*/\n\t\tif (children[item].tagName === \"STYLE\" || children[item].tagName === \"LINK\") {\n\t\t\tconst newElement = children[item].cloneNode(true);\n\t\t\tstyleElements.push(newElement);\n\t\t}\n\t}\n\tstyleElements.forEach((item) => {\n\t\tchildWindow.document.head.append(item);\n\t});\n};\n"]}
1
+ {"version":3,"file":"menuHelpers.js","sourceRoot":"","sources":["../../../src/components/menu/menuHelpers.ts"],"names":[],"mappings":"AAAA,8CAA8C;AAC9C,MAAM,UAAU,GAAG,GAAG,CAAC;AAEvB;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAK,EACrC,MAAc,EACd,iBAA0B,EAIxB,EAAE;;IACJ,wGAAwG;IACxG,gHAAgH;IAChH,uGAAuG;IACvG,MAAM,aAAa,GAAiB,QAAQ,CAAC,sBAAsB,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAE,CAAC,YAAY,CAAC;IAE1G,oHAAoH;IACpH,4CAA4C;IAC5C,MAAM,EAAE,WAAW,EAAE,GAAW,MAAM,CAAC,MAAM,CAAC;IAE9C,2IAA2I;IAC3I,mEAAmE;IACnE,MAAM,QAAQ,GAAG,MAAA,MAAC,MAAM,CAAC,MAAc,0CAAE,QAAQ,mCAAI,CAAC,CAAC;IAEvD,MAAM,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC;IACnC,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC;IAClC,MAAM,iBAAiB,GAAG,WAAW,GAAG,QAAQ,GAAG,QAAQ,GAAG,aAAa,CAAC;IAE5E;;;MAGE;IACF,MAAM,QAAQ,GAAG,IAAI,MAAM,cAAc,CAAC;IAC1C,MAAM,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IACpD,IAAI,CAAC,UAAU,EAAE;QAChB,OAAO,CAAC,KAAK,CAAC,4CAA4C,QAAQ,GAAG,CAAC,CAAC;KACvE;IAED,mEAAmE;IACnE,gGAAgG;IAChG,MAAM,EAAE,CAAC,EAAE,WAAW,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,qBAAqB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;IAEtF,IAAI,IAAI,GAAG,QAAQ,GAAG,WAAW,CAAC;IAClC,IAAI,GAAG,GAAG,QAAQ,GAAG,aAAa,CAAC;IACnC;;;;MAIE;IACF,IAAI,iBAAiB,EAAE;QACtB,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,iBAAiB,EAAE,UAAU,CAAC,CAAC;QAC3D,IAAI,UAAU,GAAG,iBAAiB,EAAE;YACnC,GAAG,GAAG,QAAQ,GAAG,UAAU,CAAC;SAC5B;KACD;IAED,OAAO;QACN,GAAG;QACH,IAAI;KACJ,CAAC;AACH,CAAC,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,EACvC,WAAmB,EACnB,MAAc,EACd,cAAsB,CAAC,EACvB,YAAoB,QAAQ,EAC5B,SAAiB,EAKf,EAAE;IACJ;;MAEE;IACF,MAAM,aAAa,GAAG,WAAW,CAAC,QAAQ,CAAC,eAAe,CAAC,YAAY,CAAC;IAExE;;;;;OAKG;IACH,MAAM,mBAAmB,GAAG,SAAS,aAAT,SAAS,cAAT,SAAS,GAAI,CAAC,CAAC;IAC3C,MAAM,oBAAoB,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,mBAAmB,CAAC,CAAC;IAC1E,MAAM,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,oBAAoB,EAAE,SAAS,CAAC,CAAC;IAErF,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,MAAM,iBAAiB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAE9D,qEAAqE;IACrE,MAAM,EAAE,WAAW,EAAE,GAAW,MAAM,CAAC,MAAM,CAAC;IAC9C,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IAElD,OAAO;QACN,GAAG;QACH,IAAI;QACJ,MAAM,EAAE,WAAW;KACnB,CAAC;AACH,CAAC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,WAAmB,EAAQ,EAAE;IACtD,MAAM,EAAE,QAAQ,EAAE,GAAQ,QAAQ,CAAC,IAAI,CAAC;IACxC,MAAM,aAAa,GAAkB,EAAE,CAAC;IACxC,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE;QAC5B;;;UAGK;QACL,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,KAAK,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,KAAK,MAAM,EAAE;YAC5E,MAAM,UAAU,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YAClD,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;SAC/B;KACD;IACD,aAAa,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QAC9B,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC","sourcesContent":["// Minimum portal height (chromium limitation)\nconst MIN_HEIGHT = 100;\n\n/**\n * Returns a drop down menu's position relative to the toolbar's current location and the\n * MenuToggle that was pressed. The dimensions returned are relative to the toolbar's\n * current monitor.\n * @param menuId The shell ID (e.g. filemenu)\n * @param menuContentHeight The height of menu contents.\n */\nexport const calculatePosition = async (\n\tmenuId: string,\n\tmenuContentHeight?: number\n): Promise<{\n\ttop: number;\n\tleft: number;\n}> => {\n\t// Rather than use window.innerHeight, we use the height of the document because Electron at times fails\n\t// to resize windows across monitors with different DPI scaling. We've worked around this by calling setShape()\n\t// to avoid a white bar at the bottom of the window, but the window DOM height is still the old height.\n\tconst toolbarHeight = (<HTMLElement>document.getElementsByClassName(\"finsemble-toolbar\")[0]).offsetHeight;\n\n\t// The monitor's available height and width is found in the window.screen object (just like Electron, less the space\n\t// taken up by the operating system toolbar)\n\tconst { availHeight }: Screen = window.screen;\n\n\t// Non-standard. Specifies the y-coordinate of the first pixel that is not allocated to permanent or semipermanent user interface features.\n\t// https://developer.mozilla.org/en-US/docs/Web/API/Screen/availTop\n\tconst availTop = (window.screen as any)?.availTop ?? 0;\n\n\tconst toolbarX = window.screenLeft;\n\tconst toolbarY = window.screenTop;\n\tconst spaceBelowToolbar = availHeight + availTop - toolbarY - toolbarHeight;\n\n\t/*\n\tGet a reference to the MenuToggle's element using querySelector to avoid having to pass\n\tReact ref all the way down here.\n\t*/\n\tconst selector = `#${menuId}-menu-toggle`;\n\tconst menuToggle = document.querySelector(selector);\n\tif (!menuToggle) {\n\t\tconsole.error(`calculatePosition() can't find selector \"${selector}\"`);\n\t}\n\n\t// Get the \"x\" coordinate of our toggle button *within* the toolbar\n\t// If for whatever reason the menuToggle can't be found, then default to an x coordinate of zero\n\tconst { x: menuToggleX } = menuToggle ? menuToggle.getBoundingClientRect() : { x: 0 };\n\n\tlet left = toolbarX + menuToggleX;\n\tlet top = toolbarY + toolbarHeight;\n\t/*\n\tCheck if we have enough space for the menu between\n\tthe toolbar and bottom edge of the screen. If not,\n\tthen reposition the menu to appear above toolbar.\n\t*/\n\tif (menuContentHeight) {\n\t\tconst menuHeight = Math.max(menuContentHeight, MIN_HEIGHT);\n\t\tif (menuHeight > spaceBelowToolbar) {\n\t\t\ttop = toolbarY - menuHeight;\n\t\t}\n\t}\n\n\treturn {\n\t\ttop,\n\t\tleft,\n\t};\n};\n\n/**\n * Calculates the height and position that a window should take based on the height necessary to display\n * the window's DOM contents without scrollbars, but not beyond the scope of the monitor itself.\n *\n * @param childWindow Window The window to calculate\n * @param menuId string The id of the menu, used for a CSS selector\n * @param [maxHeight] Maximum height for the window\n * @param [fixedHeight] Optional fixed height\n */\nexport const calculateDimensions = async (\n\tchildWindow: Window,\n\tmenuId: string,\n\tfixedHeight: number = 0,\n\tmaxHeight: number = Infinity,\n\tminHeight: number\n): Promise<{\n\ttop: number;\n\tleft: number;\n\theight: number;\n}> => {\n\t/* Content height is essentially the offsetHeight of the window's <html> element.\n\tThis seems more reliable than summing the heights of all body children.\n\t*/\n\tconst contentHeight = childWindow.document.documentElement.offsetHeight;\n\n\t/**\n\t * Calculate the actual menu height, constrained by maximum and minimum sizes.\n\t * Zero, null or undefined are invalid maximum heights.\n\t *\n\t * Chromium imposes a 100 pixel minimum on window height.\n\t */\n\tconst CHROMIUM_MIN_HEIGHT = minHeight ?? 0;\n\tconst minimumContentHeight = Math.max(contentHeight, CHROMIUM_MIN_HEIGHT);\n\tconst height = fixedHeight ? fixedHeight : Math.min(minimumContentHeight, maxHeight);\n\n\tconst { left, top } = await calculatePosition(menuId, height);\n\n\t// Final step, make sure the menu isn't larger than the screen itself\n\tconst { availHeight }: Screen = window.screen;\n\tconst finalHeight = Math.min(height, availHeight);\n\n\treturn {\n\t\ttop,\n\t\tleft,\n\t\theight: finalHeight,\n\t};\n};\n\n/**\n * Copy CSS elements from parent to child window. Portals operate in a new window which doesn't automatically\n * have access to the CSS from the main window, so we need to clone those elements into the menu's window\n * when it is created.\n * @param childWindow Child window reference\n */\nexport const injectCSS = (childWindow: Window): void => {\n\tconst { children }: any = document.head;\n\tconst styleElements: HTMLElement[] = [];\n\tfor (const item in children) {\n\t\t/** \n\t\t\twebpack's style-loader creates <style> tags but some versions will create <link> tags if CSS source maps are \n\t\t\tenabled (sourceMap), or if `injectType: linkTag` is configured.\n \t*/\n\t\tif (children[item].tagName === \"STYLE\" || children[item].tagName === \"LINK\") {\n\t\t\tconst newElement = children[item].cloneNode(true);\n\t\t\tstyleElements.push(newElement);\n\t\t}\n\t}\n\tstyleElements.forEach((item) => {\n\t\tchildWindow.document.head.append(item);\n\t});\n};\n"]}
@@ -1,12 +1,16 @@
1
1
  import React, { useContext, useEffect } from "react";
2
+ // Context
2
3
  import { NotificationsContext } from "../../notificationsContext";
3
4
  import { ViewMode, SelectionMode } from "../../constants";
5
+ // Hooks
4
6
  import { markNotificationsRead, markNotificationsUnread, dismissNotification, snoozeNotifications, } from "../../../../hooks/useNotifications";
7
+ // Components
5
8
  import IconButton from "../shared/IconButton";
6
9
  const DrawerControls = () => {
7
10
  const notificationsContext = useContext(NotificationsContext);
8
11
  const { viewMode, setViewMode, drawerControlProps, setDrawerControlProps, selectionMode, isSelectAll, setSelectAll, setSelectionMode, checkedNotifications, setCheckedNotifications, } = notificationsContext;
9
12
  const toggleControl = (clickedControl) => {
13
+ // If we click on the control aready active, then there's nothing to toggle and we bail out.
10
14
  if (clickedControl.action === drawerControlProps.active)
11
15
  return;
12
16
  drawerControlProps.controls.forEach((control) => {
@@ -34,6 +38,9 @@ const DrawerControls = () => {
34
38
  };
35
39
  const toggleSelectAll = () => {
36
40
  if (isSelectAll) {
41
+ // this variable is a toggle, therefore
42
+ // if we are currently in select all mode
43
+ // means we are about to unselect all (as in a batch action)
37
44
  setCheckedNotifications([]);
38
45
  }
39
46
  setSelectAll(!isSelectAll);
@@ -54,6 +61,7 @@ const DrawerControls = () => {
54
61
  const selectAllControlStyle = `notifications-center-controls__filter-btn ${isSelectAll ? "active" : ""} ${isSelectionMode ? "visible" : "invisible"}`;
55
62
  const controlClassname = `notifications-center-controls__filter-btn ${isSelectionMode ? "visible" : "invisible"} ${checkedNotifications.length ? "enabled" : "disabled"}`;
56
63
  useEffect(() => {
64
+ // unchecks "Select All"
57
65
  if (selectionMode === SelectionMode.NO_SELECTION) {
58
66
  setSelectAll(false);
59
67
  checkedNotifications.length = 0;
@@ -1 +1 @@
1
- {"version":3,"file":"DrawerControls.js","sourceRoot":"","sources":["../../../../../src/components/notifications/components/drawer/DrawerControls.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useContext, useEffect } from \"react\";\n\n// Context\nimport { NotificationsContext } from \"../../notificationsContext\";\n\n// Types & Constants\nimport { Control } from \"../../types\";\nimport { ViewMode, SelectionMode } from \"../../constants\";\n\n// Hooks\nimport {\n\tmarkNotificationsRead,\n\tmarkNotificationsUnread,\n\tdismissNotification,\n\tsnoozeNotifications,\n} from \"../../../../hooks/useNotifications\";\n\n// Components\nimport IconButton from \"../shared/IconButton\";\n\nconst DrawerControls: React.FunctionComponent = () => {\n\tconst notificationsContext = useContext(NotificationsContext);\n\n\tconst {\n\t\tviewMode,\n\t\tsetViewMode,\n\t\tdrawerControlProps,\n\t\tsetDrawerControlProps,\n\t\tselectionMode,\n\t\tisSelectAll,\n\t\tsetSelectAll,\n\t\tsetSelectionMode,\n\t\tcheckedNotifications,\n\t\tsetCheckedNotifications,\n\t} = notificationsContext;\n\n\tconst toggleControl = (clickedControl: Control) => {\n\t\t// If we click on the control aready active, then there's nothing to toggle and we bail out.\n\t\tif (clickedControl.action === drawerControlProps.active) return;\n\t\tdrawerControlProps.controls.forEach((control: Control) => {\n\t\t\tif (control.action === clickedControl.action) {\n\t\t\t\tif (drawerControlProps.active === control.action) {\n\t\t\t\t\tdelete drawerControlProps.active;\n\t\t\t\t} else {\n\t\t\t\t\tdrawerControlProps.active = control.action;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\tsetDrawerControlProps({ ...drawerControlProps });\n\t};\n\n\tconst renderControls = () => {\n\t\tlet className = \"notifications-center-controls__filter-btn\";\n\t\treturn drawerControlProps.controls.map((control: Control) => (\n\t\t\t<div\n\t\t\t\tkey={control.action}\n\t\t\t\tclassName={`${className} ${drawerControlProps.active === control.action ? \"active\" : \"\"}`}\n\t\t\t\trole=\"button\"\n\t\t\t\ttabIndex={0}\n\t\t\t\tonClick={() => toggleControl(control)}\n\t\t\t\tonKeyDown={(e) => {\n\t\t\t\t\tif (e.key === \"Enter\") {\n\t\t\t\t\t\ttoggleControl(control);\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t\tstyle={selectionMode === SelectionMode.SELECTION ? { pointerEvents: \"none\", opacity: \"0.4\" } : {}}\n\t\t\t>\n\t\t\t\t{control.label}\n\t\t\t</div>\n\t\t));\n\t};\n\n\tconst toggleSelect = () => {\n\t\tsetSelectionMode(\n\t\t\tselectionMode === SelectionMode.NO_SELECTION ? SelectionMode.SELECTION : SelectionMode.NO_SELECTION\n\t\t);\n\t};\n\n\tconst toggleSelectAll = () => {\n\t\tif (isSelectAll) {\n\t\t\t// this variable is a toggle, therefore\n\t\t\t// if we are currently in select all mode\n\t\t\t// means we are about to unselect all (as in a batch action)\n\t\t\tsetCheckedNotifications([]);\n\t\t}\n\t\tsetSelectAll(!isSelectAll);\n\t};\n\n\tconst readChecked = () => {\n\t\tmarkNotificationsRead(checkedNotifications);\n\t};\n\n\tconst unreadChecked = () => {\n\t\tmarkNotificationsUnread(checkedNotifications);\n\t};\n\n\tconst hideChecked = () => {\n\t\tdismissNotification(checkedNotifications);\n\t};\n\n\tconst snoozeChecked = () => {\n\t\tsnoozeNotifications(checkedNotifications);\n\t};\n\n\tconst isSelectionMode = selectionMode === SelectionMode.SELECTION;\n\n\tconst selectAllControlStyle = `notifications-center-controls__filter-btn ${isSelectAll ? \"active\" : \"\"} ${\n\t\tisSelectionMode ? \"visible\" : \"invisible\"\n\t}`;\n\n\tconst controlClassname = `notifications-center-controls__filter-btn ${isSelectionMode ? \"visible\" : \"invisible\"} ${\n\t\tcheckedNotifications.length ? \"enabled\" : \"disabled\"\n\t}`;\n\n\tuseEffect(() => {\n\t\t// unchecks \"Select All\"\n\t\tif (selectionMode === SelectionMode.NO_SELECTION) {\n\t\t\tsetSelectAll(false);\n\t\t\tcheckedNotifications.length = 0;\n\t\t}\n\t}, [selectionMode, checkedNotifications]);\n\n\treturn (\n\t\t<div id=\"notifications-center-controls\">\n\t\t\t<div className=\"notifications-center-controls__row\">{renderControls()}</div>\n\t\t\t<div className=\"notifications-center-controls__row\">\n\t\t\t\t<div\n\t\t\t\t\tclassName=\"notifications-center-controls__filter-btn\"\n\t\t\t\t\ttabIndex={0}\n\t\t\t\t\tonClick={() => toggleSelect()}\n\t\t\t\t\tonKeyDown={(e) => {\n\t\t\t\t\t\tif (e.key === \"Enter\") {\n\t\t\t\t\t\t\ttoggleSelect();\n\t\t\t\t\t\t}\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t<i className={isSelectionMode ? \"ff-close\" : \"ff-check-mark icon_active\"} />\n\t\t\t\t\tSelect\n\t\t\t\t</div>\n\t\t\t\t<div\n\t\t\t\t\tclassName={selectAllControlStyle}\n\t\t\t\t\ttabIndex={0}\n\t\t\t\t\tonClick={() => toggleSelectAll()}\n\t\t\t\t\tonKeyDown={(e) => {\n\t\t\t\t\t\tif (e.key === \"Enter\") {\n\t\t\t\t\t\t\ttoggleSelectAll();\n\t\t\t\t\t\t}\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\tSelect All\n\t\t\t\t</div>\n\t\t\t\t<div className=\"notifications-center-controls__view_mode\">\n\t\t\t\t\t<IconButton\n\t\t\t\t\t\ticonName=\"ff-chart-alt-2\"\n\t\t\t\t\t\tclassNames={viewMode === ViewMode.CARD ? \"active\" : \"\"}\n\t\t\t\t\t\tclickHandler={() => {\n\t\t\t\t\t\t\tsetSelectionMode(SelectionMode.NO_SELECTION);\n\t\t\t\t\t\t\tsetViewMode(ViewMode.CARD);\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t<IconButton\n\t\t\t\t\t\ticonName=\"ff-adp-hamburger\"\n\t\t\t\t\t\tclassNames={viewMode === ViewMode.LIST ? \"active\" : \"\"}\n\t\t\t\t\t\tclickHandler={() => {\n\t\t\t\t\t\t\tsetSelectionMode(SelectionMode.NO_SELECTION);\n\t\t\t\t\t\t\tsetViewMode(ViewMode.LIST);\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div className=\"notifications-center-controls__row center\">\n\t\t\t\t<div\n\t\t\t\t\tclassName={controlClassname}\n\t\t\t\t\tonClick={() => readChecked()}\n\t\t\t\t\ttabIndex={0}\n\t\t\t\t\tonKeyDown={(e) => {\n\t\t\t\t\t\tif (e.key === \"Enter\") {\n\t\t\t\t\t\t\treadChecked();\n\t\t\t\t\t\t}\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\tMark Read\n\t\t\t\t</div>\n\t\t\t\t<div\n\t\t\t\t\tclassName={controlClassname}\n\t\t\t\t\tonClick={() => unreadChecked()}\n\t\t\t\t\ttabIndex={0}\n\t\t\t\t\tonKeyDown={(e) => {\n\t\t\t\t\t\tif (e.key === \"Enter\") {\n\t\t\t\t\t\t\tunreadChecked();\n\t\t\t\t\t\t}\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\tMark Unread\n\t\t\t\t</div>\n\t\t\t\t<div\n\t\t\t\t\tclassName={controlClassname}\n\t\t\t\t\tonClick={() => hideChecked()}\n\t\t\t\t\ttabIndex={0}\n\t\t\t\t\tonKeyDown={(e) => {\n\t\t\t\t\t\tif (e.key === \"Enter\") {\n\t\t\t\t\t\t\thideChecked();\n\t\t\t\t\t\t}\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\tHide\n\t\t\t\t</div>\n\n\t\t\t\t<div\n\t\t\t\t\tclassName={controlClassname}\n\t\t\t\t\tonClick={() => snoozeChecked()}\n\t\t\t\t\ttabIndex={0}\n\t\t\t\t\tonKeyDown={(e) => {\n\t\t\t\t\t\tif (e.key === \"Enter\") {\n\t\t\t\t\t\t\tsnoozeChecked();\n\t\t\t\t\t\t}\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\tSnooze\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\nexport default DrawerControls;\n"]}
1
+ {"version":3,"file":"DrawerControls.js","sourceRoot":"","sources":["../../../../../src/components/notifications/components/drawer/DrawerControls.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useContext, useEffect } from \"react\";\n\n// Context\nimport { NotificationsContext } from \"../../notificationsContext\";\n\n// Types & Constants\nimport { Control } from \"../../types\";\nimport { ViewMode, SelectionMode } from \"../../constants\";\n\n// Hooks\nimport {\n\tmarkNotificationsRead,\n\tmarkNotificationsUnread,\n\tdismissNotification,\n\tsnoozeNotifications,\n} from \"../../../../hooks/useNotifications\";\n\n// Components\nimport IconButton from \"../shared/IconButton\";\n\nconst DrawerControls: React.FunctionComponent = () => {\n\tconst notificationsContext = useContext(NotificationsContext);\n\n\tconst {\n\t\tviewMode,\n\t\tsetViewMode,\n\t\tdrawerControlProps,\n\t\tsetDrawerControlProps,\n\t\tselectionMode,\n\t\tisSelectAll,\n\t\tsetSelectAll,\n\t\tsetSelectionMode,\n\t\tcheckedNotifications,\n\t\tsetCheckedNotifications,\n\t} = notificationsContext;\n\n\tconst toggleControl = (clickedControl: Control) => {\n\t\t// If we click on the control aready active, then there's nothing to toggle and we bail out.\n\t\tif (clickedControl.action === drawerControlProps.active) return;\n\t\tdrawerControlProps.controls.forEach((control: Control) => {\n\t\t\tif (control.action === clickedControl.action) {\n\t\t\t\tif (drawerControlProps.active === control.action) {\n\t\t\t\t\tdelete drawerControlProps.active;\n\t\t\t\t} else {\n\t\t\t\t\tdrawerControlProps.active = control.action;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\tsetDrawerControlProps({ ...drawerControlProps });\n\t};\n\n\tconst renderControls = () => {\n\t\tlet className = \"notifications-center-controls__filter-btn\";\n\t\treturn drawerControlProps.controls.map((control: Control) => (\n\t\t\t<div\n\t\t\t\tkey={control.action}\n\t\t\t\tclassName={`${className} ${drawerControlProps.active === control.action ? \"active\" : \"\"}`}\n\t\t\t\trole=\"button\"\n\t\t\t\ttabIndex={0}\n\t\t\t\tonClick={() => toggleControl(control)}\n\t\t\t\tonKeyDown={(e) => {\n\t\t\t\t\tif (e.key === \"Enter\") {\n\t\t\t\t\t\ttoggleControl(control);\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t\tstyle={selectionMode === SelectionMode.SELECTION ? { pointerEvents: \"none\", opacity: \"0.4\" } : {}}\n\t\t\t>\n\t\t\t\t{control.label}\n\t\t\t</div>\n\t\t));\n\t};\n\n\tconst toggleSelect = () => {\n\t\tsetSelectionMode(\n\t\t\tselectionMode === SelectionMode.NO_SELECTION ? SelectionMode.SELECTION : SelectionMode.NO_SELECTION\n\t\t);\n\t};\n\n\tconst toggleSelectAll = () => {\n\t\tif (isSelectAll) {\n\t\t\t// this variable is a toggle, therefore\n\t\t\t// if we are currently in select all mode\n\t\t\t// means we are about to unselect all (as in a batch action)\n\t\t\tsetCheckedNotifications([]);\n\t\t}\n\t\tsetSelectAll(!isSelectAll);\n\t};\n\n\tconst readChecked = () => {\n\t\tmarkNotificationsRead(checkedNotifications);\n\t};\n\n\tconst unreadChecked = () => {\n\t\tmarkNotificationsUnread(checkedNotifications);\n\t};\n\n\tconst hideChecked = () => {\n\t\tdismissNotification(checkedNotifications);\n\t};\n\n\tconst snoozeChecked = () => {\n\t\tsnoozeNotifications(checkedNotifications);\n\t};\n\n\tconst isSelectionMode = selectionMode === SelectionMode.SELECTION;\n\n\tconst selectAllControlStyle = `notifications-center-controls__filter-btn ${isSelectAll ? \"active\" : \"\"} ${\n\t\tisSelectionMode ? \"visible\" : \"invisible\"\n\t}`;\n\n\tconst controlClassname = `notifications-center-controls__filter-btn ${isSelectionMode ? \"visible\" : \"invisible\"} ${\n\t\tcheckedNotifications.length ? \"enabled\" : \"disabled\"\n\t}`;\n\n\tuseEffect(() => {\n\t\t// unchecks \"Select All\"\n\t\tif (selectionMode === SelectionMode.NO_SELECTION) {\n\t\t\tsetSelectAll(false);\n\t\t\tcheckedNotifications.length = 0;\n\t\t}\n\t}, [selectionMode, checkedNotifications]);\n\n\treturn (\n\t\t<div id=\"notifications-center-controls\">\n\t\t\t<div className=\"notifications-center-controls__row\">{renderControls()}</div>\n\t\t\t<div className=\"notifications-center-controls__row\">\n\t\t\t\t<div\n\t\t\t\t\tclassName=\"notifications-center-controls__filter-btn\"\n\t\t\t\t\ttabIndex={0}\n\t\t\t\t\tonClick={() => toggleSelect()}\n\t\t\t\t\tonKeyDown={(e) => {\n\t\t\t\t\t\tif (e.key === \"Enter\") {\n\t\t\t\t\t\t\ttoggleSelect();\n\t\t\t\t\t\t}\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t<i className={isSelectionMode ? \"ff-close\" : \"ff-check-mark icon_active\"} />\n\t\t\t\t\tSelect\n\t\t\t\t</div>\n\t\t\t\t<div\n\t\t\t\t\tclassName={selectAllControlStyle}\n\t\t\t\t\ttabIndex={0}\n\t\t\t\t\tonClick={() => toggleSelectAll()}\n\t\t\t\t\tonKeyDown={(e) => {\n\t\t\t\t\t\tif (e.key === \"Enter\") {\n\t\t\t\t\t\t\ttoggleSelectAll();\n\t\t\t\t\t\t}\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\tSelect All\n\t\t\t\t</div>\n\t\t\t\t<div className=\"notifications-center-controls__view_mode\">\n\t\t\t\t\t<IconButton\n\t\t\t\t\t\ticonName=\"ff-chart-alt-2\"\n\t\t\t\t\t\tclassNames={viewMode === ViewMode.CARD ? \"active\" : \"\"}\n\t\t\t\t\t\tclickHandler={() => {\n\t\t\t\t\t\t\tsetSelectionMode(SelectionMode.NO_SELECTION);\n\t\t\t\t\t\t\tsetViewMode(ViewMode.CARD);\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t<IconButton\n\t\t\t\t\t\ticonName=\"ff-adp-hamburger\"\n\t\t\t\t\t\tclassNames={viewMode === ViewMode.LIST ? \"active\" : \"\"}\n\t\t\t\t\t\tclickHandler={() => {\n\t\t\t\t\t\t\tsetSelectionMode(SelectionMode.NO_SELECTION);\n\t\t\t\t\t\t\tsetViewMode(ViewMode.LIST);\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div className=\"notifications-center-controls__row center\">\n\t\t\t\t<div\n\t\t\t\t\tclassName={controlClassname}\n\t\t\t\t\tonClick={() => readChecked()}\n\t\t\t\t\ttabIndex={0}\n\t\t\t\t\tonKeyDown={(e) => {\n\t\t\t\t\t\tif (e.key === \"Enter\") {\n\t\t\t\t\t\t\treadChecked();\n\t\t\t\t\t\t}\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\tMark Read\n\t\t\t\t</div>\n\t\t\t\t<div\n\t\t\t\t\tclassName={controlClassname}\n\t\t\t\t\tonClick={() => unreadChecked()}\n\t\t\t\t\ttabIndex={0}\n\t\t\t\t\tonKeyDown={(e) => {\n\t\t\t\t\t\tif (e.key === \"Enter\") {\n\t\t\t\t\t\t\tunreadChecked();\n\t\t\t\t\t\t}\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\tMark Unread\n\t\t\t\t</div>\n\t\t\t\t<div\n\t\t\t\t\tclassName={controlClassname}\n\t\t\t\t\tonClick={() => hideChecked()}\n\t\t\t\t\ttabIndex={0}\n\t\t\t\t\tonKeyDown={(e) => {\n\t\t\t\t\t\tif (e.key === \"Enter\") {\n\t\t\t\t\t\t\thideChecked();\n\t\t\t\t\t\t}\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\tHide\n\t\t\t\t</div>\n\n\t\t\t\t<div\n\t\t\t\t\tclassName={controlClassname}\n\t\t\t\t\tonClick={() => snoozeChecked()}\n\t\t\t\t\ttabIndex={0}\n\t\t\t\t\tonKeyDown={(e) => {\n\t\t\t\t\t\tif (e.key === \"Enter\") {\n\t\t\t\t\t\t\tsnoozeChecked();\n\t\t\t\t\t\t}\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\tSnooze\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\nexport default DrawerControls;\n"]}
@@ -1,6 +1,8 @@
1
1
  import React, { useState, useRef, useContext } from "react";
2
2
  import debounce from "lodash/debounce";
3
+ // Hooks
3
4
  import { useNotificationUI } from "../../../../hooks/useNotifications";
5
+ // Components
4
6
  import IconButton from "../shared/IconButton";
5
7
  import { NotificationsContext } from "../../notificationsContext";
6
8
  const NotificationsCenterMenu = ({ poppedOutStatus, popOutToggle }) => {
@@ -38,6 +40,7 @@ const DrawerHeader = ({ poppedOutStatus, popOutToggle }) => {
38
40
  const toggleMenu = () => {
39
41
  setShowMenu(!showMenu);
40
42
  };
43
+ // This is unchanged across renders
41
44
  const handleSearchTerm = useRef(debounce((nextValue) => {
42
45
  const regex = /^(title|details|source):/gi;
43
46
  nextValue = nextValue.trim();
@@ -60,6 +63,8 @@ const DrawerHeader = ({ poppedOutStatus, popOutToggle }) => {
60
63
  const handleChange = (ev) => {
61
64
  const { value: nextValue } = ev.target;
62
65
  setSearchInputValue(nextValue);
66
+ // Even though handleChange is created on each render and executed
67
+ // it references the same handleSearchTerm that was created initially
63
68
  handleSearchTerm(nextValue);
64
69
  };
65
70
  return (React.createElement("div", { id: "notifications-center__header" },
@@ -1 +1 @@
1
- {"version":3,"file":"DrawerHeader.js","sourceRoot":"","sources":["../../../../../src/components/notifications/components/drawer/DrawerHeader.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useState, useRef, useContext } from \"react\";\nimport debounce from \"lodash/debounce\";\n\n// Hooks\nimport { useNotificationUI } from \"../../../../hooks/useNotifications\";\n\n// Components\nimport IconButton from \"../shared/IconButton\";\nimport { NotificationsContext } from \"../../notificationsContext\";\n\nconst NotificationsCenterMenu = ({ poppedOutStatus, popOutToggle }: any) => {\n\tconst goToSettings = () => {\n\t\tFSBL.Clients.RouterClient.transmit(\"FinsembleUserPreferencesChannel\", {\n\t\t\tpreferencesTab: \"Notifications\",\n\t\t});\n\t\tFSBL.Clients.LauncherClient.showWindow(\n\t\t\t{\n\t\t\t\tcomponentType: \"UserPreferences\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tmonitor: \"mine\",\n\t\t\t\tleft: \"center\",\n\t\t\t\ttop: \"center\",\n\t\t\t}\n\t\t);\n\t};\n\n\treturn (\n\t\t<div className=\"overflow-menu__container\">\n\t\t\t<div className=\"overflow-menu__action\" onClick={popOutToggle}>\n\t\t\t\t<div className=\"finsemble-icon\">\n\t\t\t\t\t<i className={`ff-${poppedOutStatus ? \"share\" : \"chat-popout\"}`} />\n\t\t\t\t</div>\n\t\t\t\t<span className=\"btn-label\">{poppedOutStatus ? \"Pop-in\" : \"Pop-out\"}</span>\n\t\t\t</div>\n\t\t\t<div className=\"overflow-menu__action\" onClick={goToSettings}>\n\t\t\t\t<div className=\"finsemble-icon\">\n\t\t\t\t\t<i className=\"ff-settings\" />\n\t\t\t\t</div>\n\t\t\t\t<span className=\"btn-label\">Settings</span>\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\nconst DrawerHeader: React.FunctionComponent<{\n\tpoppedOutStatus: boolean;\n\tpopOutToggle: Function;\n}> = ({ poppedOutStatus, popOutToggle }) => {\n\tconst [uiState, setUIState] = useNotificationUI();\n\tconst notificationsContext = useContext(NotificationsContext);\n\tconst { searchString, setSearchString } = notificationsContext;\n\n\tconst [searchInputValue, setSearchInputValue] = useState(searchString);\n\n\tconst [showMenu, setShowMenu] = useState(false);\n\n\tconst closeDrawerClick = () => {\n\t\tsetUIState({\n\t\t\t...uiState,\n\t\t\tshowCenter: false,\n\t\t});\n\t};\n\n\tconst toggleMenu = () => {\n\t\tsetShowMenu(!showMenu);\n\t};\n\n\t// This is unchanged across renders\n\tconst handleSearchTerm = useRef(\n\t\tdebounce((nextValue: string) => {\n\t\t\tconst regex = /^(title|details|source):/gi;\n\t\t\tnextValue = nextValue.trim();\n\n\t\t\tconst isFilter = regex.test(nextValue);\n\t\t\tlet parsedSearchTerm = \"\";\n\n\t\t\tif (isFilter) {\n\t\t\t\tparsedSearchTerm = nextValue.split(\":\")[1].trim();\n\t\t\t} else {\n\t\t\t\tparsedSearchTerm = nextValue;\n\t\t\t}\n\n\t\t\tif (parsedSearchTerm.length > 2) {\n\t\t\t\tsetSearchString(nextValue);\n\t\t\t} else {\n\t\t\t\tconsole.log(\"search string is too short\");\n\t\t\t\tsetSearchString(\"\");\n\t\t\t}\n\t\t}, 400)\n\t).current;\n\n\tconst handleChange = (ev: any) => {\n\t\tconst { value: nextValue } = ev.target;\n\t\tsetSearchInputValue(nextValue);\n\t\t// Even though handleChange is created on each render and executed\n\t\t// it references the same handleSearchTerm that was created initially\n\t\thandleSearchTerm(nextValue);\n\t};\n\n\treturn (\n\t\t<div id=\"notifications-center__header\">\n\t\t\t<IconButton iconName=\"ff-search\" classNames=\"no-hover\" />\n\t\t\t<input\n\t\t\t\tclassName=\"search-notifications__input\"\n\t\t\t\ttype=\"text\"\n\t\t\t\tplaceholder={\"Search Notifications\"}\n\t\t\t\tvalue={searchInputValue}\n\t\t\t\tonChange={handleChange}\n\t\t\t/>\n\t\t\t<IconButton iconName=\"ff-dots-vert\" tooltip=\"Options\" classNames=\"center-menu\" clickHandler={() => toggleMenu()}>\n\t\t\t\t{showMenu ? <NotificationsCenterMenu poppedOutStatus={poppedOutStatus} popOutToggle={popOutToggle} /> : null}\n\t\t\t</IconButton>\n\t\t\t<IconButton iconName=\"ff-adp-chevron-right\" clickHandler={() => closeDrawerClick()} />\n\t\t</div>\n\t);\n};\n\nexport default DrawerHeader;\n"]}
1
+ {"version":3,"file":"DrawerHeader.js","sourceRoot":"","sources":["../../../../../src/components/notifications/components/drawer/DrawerHeader.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useState, useRef, useContext } from \"react\";\nimport debounce from \"lodash/debounce\";\n\n// Hooks\nimport { useNotificationUI } from \"../../../../hooks/useNotifications\";\n\n// Components\nimport IconButton from \"../shared/IconButton\";\nimport { NotificationsContext } from \"../../notificationsContext\";\n\nconst NotificationsCenterMenu = ({ poppedOutStatus, popOutToggle }: any) => {\n\tconst goToSettings = () => {\n\t\tFSBL.Clients.RouterClient.transmit(\"FinsembleUserPreferencesChannel\", {\n\t\t\tpreferencesTab: \"Notifications\",\n\t\t});\n\t\tFSBL.Clients.LauncherClient.showWindow(\n\t\t\t{\n\t\t\t\tcomponentType: \"UserPreferences\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tmonitor: \"mine\",\n\t\t\t\tleft: \"center\",\n\t\t\t\ttop: \"center\",\n\t\t\t}\n\t\t);\n\t};\n\n\treturn (\n\t\t<div className=\"overflow-menu__container\">\n\t\t\t<div className=\"overflow-menu__action\" onClick={popOutToggle}>\n\t\t\t\t<div className=\"finsemble-icon\">\n\t\t\t\t\t<i className={`ff-${poppedOutStatus ? \"share\" : \"chat-popout\"}`} />\n\t\t\t\t</div>\n\t\t\t\t<span className=\"btn-label\">{poppedOutStatus ? \"Pop-in\" : \"Pop-out\"}</span>\n\t\t\t</div>\n\t\t\t<div className=\"overflow-menu__action\" onClick={goToSettings}>\n\t\t\t\t<div className=\"finsemble-icon\">\n\t\t\t\t\t<i className=\"ff-settings\" />\n\t\t\t\t</div>\n\t\t\t\t<span className=\"btn-label\">Settings</span>\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\nconst DrawerHeader: React.FunctionComponent<{\n\tpoppedOutStatus: boolean;\n\tpopOutToggle: Function;\n}> = ({ poppedOutStatus, popOutToggle }) => {\n\tconst [uiState, setUIState] = useNotificationUI();\n\tconst notificationsContext = useContext(NotificationsContext);\n\tconst { searchString, setSearchString } = notificationsContext;\n\n\tconst [searchInputValue, setSearchInputValue] = useState(searchString);\n\n\tconst [showMenu, setShowMenu] = useState(false);\n\n\tconst closeDrawerClick = () => {\n\t\tsetUIState({\n\t\t\t...uiState,\n\t\t\tshowCenter: false,\n\t\t});\n\t};\n\n\tconst toggleMenu = () => {\n\t\tsetShowMenu(!showMenu);\n\t};\n\n\t// This is unchanged across renders\n\tconst handleSearchTerm = useRef(\n\t\tdebounce((nextValue: string) => {\n\t\t\tconst regex = /^(title|details|source):/gi;\n\t\t\tnextValue = nextValue.trim();\n\n\t\t\tconst isFilter = regex.test(nextValue);\n\t\t\tlet parsedSearchTerm = \"\";\n\n\t\t\tif (isFilter) {\n\t\t\t\tparsedSearchTerm = nextValue.split(\":\")[1].trim();\n\t\t\t} else {\n\t\t\t\tparsedSearchTerm = nextValue;\n\t\t\t}\n\n\t\t\tif (parsedSearchTerm.length > 2) {\n\t\t\t\tsetSearchString(nextValue);\n\t\t\t} else {\n\t\t\t\tconsole.log(\"search string is too short\");\n\t\t\t\tsetSearchString(\"\");\n\t\t\t}\n\t\t}, 400)\n\t).current;\n\n\tconst handleChange = (ev: any) => {\n\t\tconst { value: nextValue } = ev.target;\n\t\tsetSearchInputValue(nextValue);\n\t\t// Even though handleChange is created on each render and executed\n\t\t// it references the same handleSearchTerm that was created initially\n\t\thandleSearchTerm(nextValue);\n\t};\n\n\treturn (\n\t\t<div id=\"notifications-center__header\">\n\t\t\t<IconButton iconName=\"ff-search\" classNames=\"no-hover\" />\n\t\t\t<input\n\t\t\t\tclassName=\"search-notifications__input\"\n\t\t\t\ttype=\"text\"\n\t\t\t\tplaceholder={\"Search Notifications\"}\n\t\t\t\tvalue={searchInputValue}\n\t\t\t\tonChange={handleChange}\n\t\t\t/>\n\t\t\t<IconButton iconName=\"ff-dots-vert\" tooltip=\"Options\" classNames=\"center-menu\" clickHandler={() => toggleMenu()}>\n\t\t\t\t{showMenu ? <NotificationsCenterMenu poppedOutStatus={poppedOutStatus} popOutToggle={popOutToggle} /> : null}\n\t\t\t</IconButton>\n\t\t\t<IconButton iconName=\"ff-adp-chevron-right\" clickHandler={() => closeDrawerClick()} />\n\t\t</div>\n\t);\n};\n\nexport default DrawerHeader;\n"]}
@@ -3,8 +3,11 @@ import { CSSTransition } from "react-transition-group";
3
3
  import ConditionalWrapper from "../../../shared/ConditionalWrapper";
4
4
  import { ViewMode, SelectionMode } from "../../constants";
5
5
  import "../../../../assets/css/notificationsCenter.css";
6
+ // Hooks
6
7
  import useNotifications, { useNotificationUI, getNotificationConfig, moveToToolbarMonitor, getOS, getFetchHistoryParams, } from "../../../../hooks/useNotifications";
8
+ // Context
7
9
  import { NotificationsContext } from "../../notificationsContext";
10
+ // Components
8
11
  import CardView from "../views/CardView";
9
12
  import Drawer from "../drawer/Drawer";
10
13
  import DrawerControls from "../drawer/DrawerControls";
@@ -12,6 +15,8 @@ import DrawerHeader from "../drawer/DrawerHeader";
12
15
  import ListView from "../views/ListView";
13
16
  import NotificationDetailsView from "../views/NotificationDetailsView";
14
17
  import FloatingFocus from "@q42/floating-focus-a11y";
18
+ // The package FloatingFocus injects a focus indicator that moves around the page, but only for
19
+ // keyboard users. (Mouse users don't see the indicator.) All that needs to be done is to envoke it.
15
20
  new FloatingFocus();
16
21
  const defaultControls = {
17
22
  controls: [
@@ -68,6 +73,7 @@ const setShowWindowForState = (centerState) => {
68
73
  if (centerState.position) {
69
74
  finsembleWindow.setBounds(centerState.position);
70
75
  }
76
+ // Always on top when popped in
71
77
  FSBL.Clients.WindowClient.setAlwaysOnTop(!centerState.poppedOut);
72
78
  storeNotificationsCenterWindowPosition(centerState);
73
79
  };
@@ -85,6 +91,7 @@ export const NotificationsCenter = (props) => {
85
91
  const [isInitialized, setInitialized] = useState(false);
86
92
  const [isMac] = useState(getOS() === "Mac");
87
93
  const nextPageToFetch = useRef(1);
94
+ // Set up references for use in callbacks to FSBL functions
88
95
  const showCenterRef = useRef(false);
89
96
  const poppedOutRef = useRef(false);
90
97
  const subscriptionMessageRef = useRef({});
@@ -153,6 +160,7 @@ export const NotificationsCenter = (props) => {
153
160
  };
154
161
  const boundsChangeListener = (event) => {
155
162
  if ((showCenterRef === null || showCenterRef === void 0 ? void 0 : showCenterRef.current) && !poppedOutRef.current) {
163
+ // Bounds Changed fires when Windows Taskbar + Finsemble Toolbar docking changes
156
164
  setFullHeight();
157
165
  }
158
166
  const position = {
@@ -169,6 +177,7 @@ export const NotificationsCenter = (props) => {
169
177
  };
170
178
  const getScrollPercentage = () => {
171
179
  var _a, _b, _c, _d, _e, _f;
180
+ // document.getElementsByClassName("cards-container")[0].scrollHeight - document.getElementsByClassName("cards-container")[0].clientHeight
172
181
  const maxScroll = ((_b = (_a = scrollContainer.current) === null || _a === void 0 ? void 0 : _a.scrollHeight) !== null && _b !== void 0 ? _b : 0) - ((_d = (_c = scrollContainer.current) === null || _c === void 0 ? void 0 : _c.clientHeight) !== null && _d !== void 0 ? _d : 0);
173
182
  const currentScroll = (_f = (_e = scrollContainer.current) === null || _e === void 0 ? void 0 : _e.scrollTop) !== null && _f !== void 0 ? _f : 0;
174
183
  return currentScroll / maxScroll;
@@ -185,6 +194,7 @@ export const NotificationsCenter = (props) => {
185
194
  }
186
195
  }
187
196
  else {
197
+ // Stop fetching after this one
188
198
  nextPageToFetch.current = LAZY_LOAD_NO_MORE_PAGES;
189
199
  }
190
200
  }
@@ -242,6 +252,7 @@ export const NotificationsCenter = (props) => {
242
252
  }
243
253
  }
244
254
  };
255
+ // When popped out we want to prevent the center to be closed when the close button is clicked (or alt +)
245
256
  useEffect(() => {
246
257
  var _a;
247
258
  setOpaqueClassName(!config.isTransparent);
@@ -279,6 +290,7 @@ export const NotificationsCenter = (props) => {
279
290
  }, []);
280
291
  useEffect(() => {
281
292
  const recursiveLoad = async () => {
293
+ // Cater for the case where there is no scroll bar to trigger lazy load - keep loading until scrollbar or no pages
282
294
  await lazyLoadNextPage();
283
295
  if (getScrollPercentage() === 1 && nextPageToFetch.current != LAZY_LOAD_NO_MORE_PAGES) {
284
296
  recursiveLoad();
@@ -286,8 +298,10 @@ export const NotificationsCenter = (props) => {
286
298
  };
287
299
  recursiveLoad();
288
300
  }, [viewMode, drawerControlProps.active]);
301
+ // Hook to set up the center state from service data on component start
289
302
  useEffect(() => {
290
303
  subscriptionMessageRef.current = uiState;
304
+ // Hook can execute before initial pubsub response - waiting for actual values
291
305
  if (!isInitialized && typeof uiState.showCenter !== "undefined") {
292
306
  if (uiState.poppedOut) {
293
307
  removePoppedInClasses();
@@ -302,11 +316,13 @@ export const NotificationsCenter = (props) => {
302
316
  position: uiState.position,
303
317
  });
304
318
  }
319
+ // Setup references
305
320
  showCenterRef.current = uiState.showCenter;
306
321
  poppedOutRef.current = uiState.poppedOut;
307
322
  setInitialized(true);
308
323
  }
309
324
  }, [uiState]);
325
+ // Effect to run when we pop-in or pop-out the notification center
310
326
  useEffect(() => {
311
327
  if (isInitialized) {
312
328
  poppedOutRef.current = uiState.poppedOut;
@@ -358,6 +374,7 @@ export const NotificationsCenter = (props) => {
358
374
  FSBL.Clients.RouterClient.removeListener("FinsembleNotificationsMuteStateChannel", listenMuteStateChanged);
359
375
  };
360
376
  }, []);
377
+ // Sets the current active mute filters
361
378
  useEffect(() => {
362
379
  async function loadMuteFilter() {
363
380
  return await FSBL.Clients.NotificationClient.getMuteFilters();
@@ -367,6 +384,7 @@ export const NotificationsCenter = (props) => {
367
384
  setReloadMuteFilters(false);
368
385
  });
369
386
  }, [reloadMuteFilters]);
387
+ // Sets the select all status from user selecting notifications individually
370
388
  useEffect(() => {
371
389
  if (notifications.length > 0 && checkedNotifications.length === notifications.length) {
372
390
  setSelectAll(true);