@finsemble/finsemble-ui 6.1.3 → 6.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (276) hide show
  1. package/package.json +20 -17
  2. package/react/actions/smartDesktopDesignerActions.d.ts +5 -4
  3. package/react/actions/smartDesktopDesignerActions.js.map +1 -1
  4. package/react/assets/css/defaultTheme.css +1 -1
  5. package/react/assets/css/notificationsCenter.css +1 -0
  6. package/react/assets/css/userPreferences.css +4 -2
  7. package/react/assets/css/windowTitleBar.css +1 -0
  8. package/react/assets/icons/check-square.svg +6 -0
  9. package/react/assets/icons/lock.svg +6 -0
  10. package/react/components/common/Button.d.ts +1 -0
  11. package/react/components/common/Button.js +2 -2
  12. package/react/components/common/Button.js.map +1 -1
  13. package/react/components/common/ButtonRow.d.ts +15 -0
  14. package/react/components/common/ButtonRow.js +32 -0
  15. package/react/components/common/ButtonRow.js.map +1 -0
  16. package/react/components/common/Checkbox.d.ts +8 -0
  17. package/react/components/common/Checkbox.js +22 -0
  18. package/react/components/common/Checkbox.js.map +1 -0
  19. package/react/components/common/FinsembleIcon.d.ts +1 -1
  20. package/react/components/common/FinsembleIcon.js +4 -0
  21. package/react/components/common/FinsembleIcon.js.map +1 -1
  22. package/react/components/common/FinsembleSelect.d.ts +3 -2
  23. package/react/components/common/FinsembleSelect.js +2 -2
  24. package/react/components/common/FinsembleSelect.js.map +1 -1
  25. package/react/components/common/Tooltip.d.ts +4 -3
  26. package/react/components/common/Tooltip.js +3 -3
  27. package/react/components/common/Tooltip.js.map +1 -1
  28. package/react/components/common/css/tooltip.css +10 -0
  29. package/react/components/common/helpers.js +12 -0
  30. package/react/components/common/helpers.js.map +1 -1
  31. package/react/components/common/stories/ButtonRow.stories.d.ts +14 -0
  32. package/react/components/common/stories/ButtonRow.stories.js +39 -0
  33. package/react/components/common/stories/ButtonRow.stories.js.map +1 -0
  34. package/react/components/common/stories/Checkbox.stories.d.ts +13 -0
  35. package/react/components/common/stories/Checkbox.stories.js +29 -0
  36. package/react/components/common/stories/Checkbox.stories.js.map +1 -0
  37. package/react/components/common/stories/DropdownButton.stories.d.ts +22 -0
  38. package/react/components/common/stories/DropdownButton.stories.js +29 -0
  39. package/react/components/common/stories/DropdownButton.stories.js.map +1 -0
  40. package/react/components/common/stories/FinsembleIcon.stories.js +2 -0
  41. package/react/components/common/stories/FinsembleIcon.stories.js.map +1 -1
  42. package/react/components/common/stories/FinsembleSelect.stories.d.ts +1 -1
  43. package/react/components/common/stories/Tooltip.stories.d.ts +1 -1
  44. package/react/components/{shared/addProtocolToValidURL.spec.d.ts → common/tests/ButtonRow.spec.d.ts} +0 -0
  45. package/react/components/common/tests/ButtonRow.spec.js +25 -0
  46. package/react/components/common/tests/ButtonRow.spec.js.map +1 -0
  47. package/react/components/common/tests/Checkbox.spec.d.ts +1 -0
  48. package/react/components/common/tests/Checkbox.spec.js +33 -0
  49. package/react/components/common/tests/Checkbox.spec.js.map +1 -0
  50. package/react/components/fdc3Resolver/ResolverDialog.css +1 -0
  51. package/react/components/fdc3Resolver/ResolverDialog.js +4 -5
  52. package/react/components/fdc3Resolver/ResolverDialog.js.map +1 -1
  53. package/react/components/fdc3Resolver/ResolverDialog.spec.js +1 -8
  54. package/react/components/fdc3Resolver/ResolverDialog.spec.js.map +1 -1
  55. package/react/components/fdc3Resolver/ResolverDialog.stories.js +45 -45
  56. package/react/components/fdc3Resolver/ResolverDialog.stories.js.map +1 -1
  57. package/react/components/notifications/components/drawer/DrawerHeader.js +6 -6
  58. package/react/components/notifications/components/drawer/DrawerHeader.js.map +1 -1
  59. package/react/components/notifications/components/notificationsCenter/NotificationsCenter.js +32 -31
  60. package/react/components/notifications/components/notificationsCenter/NotificationsCenter.js.map +1 -1
  61. package/react/components/notifications/components/notificationsToasts/NotificationsToasts.js +4 -6
  62. package/react/components/notifications/components/notificationsToasts/NotificationsToasts.js.map +1 -1
  63. package/react/components/notifications/components/views/ListView.js +1 -1
  64. package/react/components/notifications/components/views/ListView.js.map +1 -1
  65. package/react/components/notifications/components/views/NotificationDetailsView.js +3 -2
  66. package/react/components/notifications/components/views/NotificationDetailsView.js.map +1 -1
  67. package/react/components/notifications/constants.d.ts +13 -0
  68. package/react/components/notifications/constants.js.map +1 -1
  69. package/react/components/search/Highlight.js +13 -3
  70. package/react/components/search/Highlight.js.map +1 -1
  71. package/react/components/shared/DefaultDropdownButton.d.ts +1 -0
  72. package/react/components/shared/DefaultDropdownButton.js +14 -4
  73. package/react/components/shared/DefaultDropdownButton.js.map +1 -1
  74. package/react/components/shared/tests/DefaultDropdownButton.spec.d.ts +1 -0
  75. package/react/components/shared/tests/DefaultDropdownButton.spec.js +54 -0
  76. package/react/components/shared/tests/DefaultDropdownButton.spec.js.map +1 -0
  77. package/react/components/shared/tests/addProtocolToValidURL.spec.d.ts +1 -0
  78. package/react/components/shared/{addProtocolToValidURL.spec.js → tests/addProtocolToValidURL.spec.js} +1 -1
  79. package/react/components/shared/tests/addProtocolToValidURL.spec.js.map +1 -0
  80. package/react/components/smartDesktopDesigner/AppEditAccess.d.ts +15 -0
  81. package/react/components/smartDesktopDesigner/AppEditAccess.js +155 -0
  82. package/react/components/smartDesktopDesigner/AppEditAccess.js.map +1 -0
  83. package/react/components/smartDesktopDesigner/AppEditPage.d.ts +7 -1
  84. package/react/components/smartDesktopDesigner/AppEditPage.js +5 -1
  85. package/react/components/smartDesktopDesigner/AppEditPage.js.map +1 -1
  86. package/react/components/smartDesktopDesigner/Application.d.ts +4 -1
  87. package/react/components/smartDesktopDesigner/Application.js +20 -10
  88. package/react/components/smartDesktopDesigner/Application.js.map +1 -1
  89. package/react/components/smartDesktopDesigner/ApplicationEdit.d.ts +3 -0
  90. package/react/components/smartDesktopDesigner/ApplicationEdit.js +2 -2
  91. package/react/components/smartDesktopDesigner/ApplicationEdit.js.map +1 -1
  92. package/react/components/smartDesktopDesigner/ApplicationList.js +11 -1
  93. package/react/components/smartDesktopDesigner/ApplicationList.js.map +1 -1
  94. package/react/components/smartDesktopDesigner/ApplicationSetup.d.ts +6 -1
  95. package/react/components/smartDesktopDesigner/ApplicationSetup.js.map +1 -1
  96. package/react/components/smartDesktopDesigner/Applications.d.ts +2 -0
  97. package/react/components/smartDesktopDesigner/Applications.js +2 -2
  98. package/react/components/smartDesktopDesigner/Applications.js.map +1 -1
  99. package/react/components/smartDesktopDesigner/common/views.js +2 -0
  100. package/react/components/smartDesktopDesigner/common/views.js.map +1 -1
  101. package/react/components/smartDesktopDesigner/css/applications.css +38 -0
  102. package/react/components/smartDesktopDesigner/fixtures/applicationEditProps.js +18 -0
  103. package/react/components/smartDesktopDesigner/fixtures/applicationEditProps.js.map +1 -1
  104. package/react/components/smartDesktopDesigner/fixtures/applicationSetupProps.js +9 -0
  105. package/react/components/smartDesktopDesigner/fixtures/applicationSetupProps.js.map +1 -1
  106. package/react/components/smartDesktopDesigner/fixtures/applicationsProps.js +6 -2
  107. package/react/components/smartDesktopDesigner/fixtures/applicationsProps.js.map +1 -1
  108. package/react/components/smartDesktopDesigner/fixtures/apps.d.ts +71 -2
  109. package/react/components/smartDesktopDesigner/fixtures/apps.js +16 -5
  110. package/react/components/smartDesktopDesigner/fixtures/apps.js.map +1 -1
  111. package/react/components/smartDesktopDesigner/stories/AppEditPage.stories.d.ts +1 -1
  112. package/react/components/smartDesktopDesigner/stories/AppEditPage.stories.js +20 -0
  113. package/react/components/smartDesktopDesigner/stories/AppEditPage.stories.js.map +1 -1
  114. package/react/components/smartDesktopDesigner/stories/Applications.stories.js +2 -1
  115. package/react/components/smartDesktopDesigner/stories/Applications.stories.js.map +1 -1
  116. package/react/components/smartDesktopDesigner/tests/AppEditPage.spec.js +1 -0
  117. package/react/components/smartDesktopDesigner/tests/AppEditPage.spec.js.map +1 -1
  118. package/react/components/smartDesktopDesigner/tests/Applications.spec.d.ts +1 -1
  119. package/react/components/smartDesktopDesigner/tests/Applications.spec.js +84 -7
  120. package/react/components/smartDesktopDesigner/tests/Applications.spec.js.map +1 -1
  121. package/react/components/toolbar/advancedAppLauncher/components/Content.js +2 -3
  122. package/react/components/toolbar/advancedAppLauncher/components/Content.js.map +1 -1
  123. package/react/components/toolbar/advancedAppLauncher/components/FoldersList.js +1 -1
  124. package/react/components/toolbar/advancedAppLauncher/components/FoldersList.js.map +1 -1
  125. package/react/components/toolbar/dashbar/Dashbar.js +23 -11
  126. package/react/components/toolbar/dashbar/Dashbar.js.map +1 -1
  127. package/react/components/userPreferences/UserPreferences.js +8 -23
  128. package/react/components/userPreferences/UserPreferences.js.map +1 -1
  129. package/react/components/userPreferences/UserPreferencesBase.d.ts +3 -1
  130. package/react/components/userPreferences/UserPreferencesBase.js +5 -6
  131. package/react/components/userPreferences/UserPreferencesBase.js.map +1 -1
  132. package/react/components/userPreferences/UserPreferencesWrapper.d.ts +4 -0
  133. package/react/components/userPreferences/UserPreferencesWrapper.js +27 -0
  134. package/react/components/userPreferences/UserPreferencesWrapper.js.map +1 -0
  135. package/react/components/userPreferences/components/ContentSection.d.ts +18 -3
  136. package/react/components/userPreferences/components/ContentSection.js +4 -2
  137. package/react/components/userPreferences/components/ContentSection.js.map +1 -1
  138. package/react/components/userPreferences/components/LeftNav.d.ts +19 -4
  139. package/react/components/userPreferences/components/LeftNav.js +11 -10
  140. package/react/components/userPreferences/components/LeftNav.js.map +1 -1
  141. package/react/components/userPreferences/components/content/DashbarEditor.d.ts +20 -5
  142. package/react/components/userPreferences/components/content/DashbarEditor.js +11 -11
  143. package/react/components/userPreferences/components/content/DashbarEditor.js.map +1 -1
  144. package/react/components/userPreferences/components/content/DashbarEditorItem.d.ts +10 -0
  145. package/react/components/userPreferences/components/content/DashbarEditorItem.js +11 -0
  146. package/react/components/userPreferences/components/content/DashbarEditorItem.js.map +1 -0
  147. package/react/components/userPreferences/components/content/General.d.ts +10 -3
  148. package/react/components/userPreferences/components/content/General.js +2 -2
  149. package/react/components/userPreferences/components/content/General.js.map +1 -1
  150. package/react/components/userPreferences/components/content/Workspaces.js +39 -112
  151. package/react/components/userPreferences/components/content/Workspaces.js.map +1 -1
  152. package/react/components/userPreferences/components/content/notificationViews/NotificationsPreferencesHome.js +9 -11
  153. package/react/components/userPreferences/components/content/notificationViews/NotificationsPreferencesHome.js.map +1 -1
  154. package/react/components/userPreferences/components/content/notificationViews/NotificationsSourceTypes.d.ts +1 -1
  155. package/react/components/userPreferences/components/content/notificationViews/NotificationsSourceTypes.js +9 -7
  156. package/react/components/userPreferences/components/content/notificationViews/NotificationsSourceTypes.js.map +1 -1
  157. package/react/components/userPreferences/components/content/notificationViews/NotificationsSourcesPreferences.d.ts +3 -1
  158. package/react/components/userPreferences/components/content/notificationViews/NotificationsSourcesPreferences.js +13 -12
  159. package/react/components/userPreferences/components/content/notificationViews/NotificationsSourcesPreferences.js.map +1 -1
  160. package/react/components/userPreferences/components/general/ScheduledRestart.d.ts +24 -7
  161. package/react/components/userPreferences/components/general/ScheduledRestart.js +71 -22
  162. package/react/components/userPreferences/components/general/ScheduledRestart.js.map +1 -1
  163. package/react/components/userPreferences/components/workspaces/WorkspaceButton.d.ts +9 -0
  164. package/react/components/userPreferences/components/workspaces/WorkspaceButton.js +5 -0
  165. package/react/components/userPreferences/components/workspaces/WorkspaceButton.js.map +1 -0
  166. package/react/components/userPreferences/components/workspaces/WorkspaceComponents.d.ts +6 -0
  167. package/react/components/userPreferences/components/workspaces/WorkspaceComponents.js +8 -0
  168. package/react/components/userPreferences/components/workspaces/WorkspaceComponents.js.map +1 -0
  169. package/react/components/userPreferences/components/workspaces/WorkspaceItem.d.ts +45 -0
  170. package/react/components/userPreferences/components/workspaces/WorkspaceItem.js +82 -0
  171. package/react/components/userPreferences/components/workspaces/WorkspaceItem.js.map +1 -0
  172. package/react/components/userPreferences/components/workspaces/WorkspaceItemList.d.ts +8 -0
  173. package/react/components/userPreferences/components/workspaces/WorkspaceItemList.js +7 -0
  174. package/react/components/userPreferences/components/workspaces/WorkspaceItemList.js.map +1 -0
  175. package/react/components/userPreferences/index.d.ts +1 -1
  176. package/react/components/userPreferences/index.js +1 -1
  177. package/react/components/userPreferences/index.js.map +1 -1
  178. package/react/components/userPreferences/stores/UserPreferencesStore.d.ts +0 -1
  179. package/react/components/userPreferences/stores/UserPreferencesStore.js +4 -9
  180. package/react/components/userPreferences/stores/UserPreferencesStore.js.map +1 -1
  181. package/react/components/userPreferences/stories/DashbarEditor.stories.d.ts +2 -1
  182. package/react/components/userPreferences/stories/DashbarEditor.stories.js +35 -4
  183. package/react/components/userPreferences/stories/DashbarEditor.stories.js.map +1 -1
  184. package/react/components/userPreferences/stories/DashbarEditorItem.stories.d.ts +11 -0
  185. package/react/components/userPreferences/stories/DashbarEditorItem.stories.js +21 -0
  186. package/react/components/userPreferences/stories/DashbarEditorItem.stories.js.map +1 -0
  187. package/react/components/userPreferences/stories/General.stories.d.ts +9 -0
  188. package/react/components/userPreferences/stories/General.stories.js +16 -0
  189. package/react/components/userPreferences/stories/General.stories.js.map +1 -0
  190. package/react/components/userPreferences/stories/Notifications.stories.d.ts +9 -0
  191. package/react/components/userPreferences/stories/Notifications.stories.js +17 -0
  192. package/react/components/userPreferences/stories/Notifications.stories.js.map +1 -0
  193. package/react/components/userPreferences/stories/NotificationsSourceTypes.stories.d.ts +9 -0
  194. package/react/components/userPreferences/stories/NotificationsSourceTypes.stories.js +20 -0
  195. package/react/components/userPreferences/stories/NotificationsSourceTypes.stories.js.map +1 -0
  196. package/react/components/userPreferences/stories/NotificationsSources.stories.d.ts +12 -0
  197. package/react/components/userPreferences/stories/NotificationsSources.stories.js +28 -0
  198. package/react/components/userPreferences/stories/NotificationsSources.stories.js.map +1 -0
  199. package/react/components/userPreferences/stories/UserPreferences.stories.d.ts +8 -0
  200. package/react/components/userPreferences/stories/UserPreferences.stories.js +53 -0
  201. package/react/components/userPreferences/stories/UserPreferences.stories.js.map +1 -0
  202. package/react/components/userPreferences/stories/WorkspaceButton.stories.d.ts +15 -0
  203. package/react/components/userPreferences/stories/WorkspaceButton.stories.js +13 -0
  204. package/react/components/userPreferences/stories/WorkspaceButton.stories.js.map +1 -0
  205. package/react/components/userPreferences/stories/WorkspaceComponents.stories.d.ts +13 -0
  206. package/react/components/userPreferences/stories/WorkspaceComponents.stories.js +26 -0
  207. package/react/components/userPreferences/stories/WorkspaceComponents.stories.js.map +1 -0
  208. package/react/components/userPreferences/stories/WorkspaceItem.stories.d.ts +9 -0
  209. package/react/components/userPreferences/stories/WorkspaceItem.stories.js +30 -0
  210. package/react/components/userPreferences/stories/WorkspaceItem.stories.js.map +1 -0
  211. package/react/components/userPreferences/stories/WorkspaceItemList.stories.d.ts +10 -0
  212. package/react/components/userPreferences/stories/WorkspaceItemList.stories.js +57 -0
  213. package/react/components/userPreferences/stories/WorkspaceItemList.stories.js.map +1 -0
  214. package/react/components/userPreferences/stories/Workspaces.stories.d.ts +9 -0
  215. package/react/components/userPreferences/stories/Workspaces.stories.js +44 -0
  216. package/react/components/userPreferences/stories/Workspaces.stories.js.map +1 -0
  217. package/react/components/userPreferences/tests/ContentSection.spec.d.ts +1 -0
  218. package/react/components/userPreferences/tests/ContentSection.spec.js +41 -0
  219. package/react/components/userPreferences/tests/ContentSection.spec.js.map +1 -0
  220. package/react/components/userPreferences/tests/DashbarEditor.spec.d.ts +1 -0
  221. package/react/components/userPreferences/tests/DashbarEditor.spec.js +37 -0
  222. package/react/components/userPreferences/tests/DashbarEditor.spec.js.map +1 -0
  223. package/react/components/userPreferences/tests/DashbarEditorItem.spec.d.ts +1 -0
  224. package/react/components/userPreferences/tests/DashbarEditorItem.spec.js +38 -0
  225. package/react/components/userPreferences/tests/DashbarEditorItem.spec.js.map +1 -0
  226. package/react/components/userPreferences/tests/General.spec.d.ts +1 -0
  227. package/react/components/userPreferences/tests/General.spec.js +28 -0
  228. package/react/components/userPreferences/tests/General.spec.js.map +1 -0
  229. package/react/components/userPreferences/tests/LeftNav.spec.d.ts +1 -0
  230. package/react/components/userPreferences/tests/LeftNav.spec.js +12 -0
  231. package/react/components/userPreferences/tests/LeftNav.spec.js.map +1 -0
  232. package/react/components/userPreferences/tests/NotificationSourceTypes.spec.d.ts +1 -0
  233. package/react/components/userPreferences/tests/NotificationSourceTypes.spec.js +14 -0
  234. package/react/components/userPreferences/tests/NotificationSourceTypes.spec.js.map +1 -0
  235. package/react/components/userPreferences/tests/Notifications.spec.d.ts +1 -0
  236. package/react/components/userPreferences/tests/Notifications.spec.js +17 -0
  237. package/react/components/userPreferences/tests/Notifications.spec.js.map +1 -0
  238. package/react/components/userPreferences/tests/NotificationsPreferencesHome.spec.d.ts +1 -0
  239. package/react/components/userPreferences/tests/NotificationsPreferencesHome.spec.js +39 -0
  240. package/react/components/userPreferences/tests/NotificationsPreferencesHome.spec.js.map +1 -0
  241. package/react/components/userPreferences/tests/NotificationsSourcesPreferences.spec.d.ts +1 -0
  242. package/react/components/userPreferences/tests/NotificationsSourcesPreferences.spec.js +22 -0
  243. package/react/components/userPreferences/tests/NotificationsSourcesPreferences.spec.js.map +1 -0
  244. package/react/components/userPreferences/tests/ScheduledRestart.spec.d.ts +1 -0
  245. package/react/components/userPreferences/tests/ScheduledRestart.spec.js +70 -0
  246. package/react/components/userPreferences/tests/ScheduledRestart.spec.js.map +1 -0
  247. package/react/components/userPreferences/tests/WorkspaceButton.spec.d.ts +1 -0
  248. package/react/components/userPreferences/tests/WorkspaceButton.spec.js +24 -0
  249. package/react/components/userPreferences/tests/WorkspaceButton.spec.js.map +1 -0
  250. package/react/components/userPreferences/tests/WorkspaceComponents.spec.d.ts +1 -0
  251. package/react/components/userPreferences/tests/WorkspaceComponents.spec.js +22 -0
  252. package/react/components/userPreferences/tests/WorkspaceComponents.spec.js.map +1 -0
  253. package/react/components/userPreferences/tests/WorkspaceItem.spec.d.ts +1 -0
  254. package/react/components/userPreferences/tests/WorkspaceItem.spec.js +64 -0
  255. package/react/components/userPreferences/tests/WorkspaceItem.spec.js.map +1 -0
  256. package/react/components/userPreferences/tests/WorkspaceItemList.spec.d.ts +1 -0
  257. package/react/components/userPreferences/tests/WorkspaceItemList.spec.js +45 -0
  258. package/react/components/userPreferences/tests/WorkspaceItemList.spec.js.map +1 -0
  259. package/react/hooks/useNotifications.d.ts +4 -0
  260. package/react/hooks/useNotifications.js +47 -40
  261. package/react/hooks/useNotifications.js.map +1 -1
  262. package/react/hooks/usePubSub.js.map +1 -1
  263. package/react/hooks/useToolbar.js +71 -48
  264. package/react/hooks/useToolbar.js.map +1 -1
  265. package/react/reducers/rootReducer.d.ts +2 -2
  266. package/react/store.d.ts +4 -4
  267. package/react/types/dashbarTypes.d.ts +1 -1
  268. package/react/types/dashbarTypes.js.map +1 -1
  269. package/react/types/fdc3.d.ts +8 -22
  270. package/react/types/fdc3.js.map +1 -1
  271. package/react/types/smartDesktopDesignerTypes.d.ts +4 -1
  272. package/react/types/smartDesktopDesignerTypes.js.map +1 -1
  273. package/react/components/shared/addProtocolToValidURL.spec.js.map +0 -1
  274. package/react/components/userPreferences/components/Checkbox.d.ts +0 -4
  275. package/react/components/userPreferences/components/Checkbox.js +0 -27
  276. package/react/components/userPreferences/components/Checkbox.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"Applications.spec.js","sourceRoot":"","sources":["../../../../src/components/smartDesktopDesigner/tests/Applications.spec.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from \"react\";\r\nimport { mount } from \"enzyme\";\r\nimport { describe, it } from \"mocha\";\r\nimport { expect } from \"chai\";\r\nimport {\r\n\tDefaultApplications,\r\n\tEmptyApplications,\r\n\tApplicationsWithTemporary,\r\n\tLong,\r\n} from \"../stories/Applications.stories\";\r\nimport { getApplicationsArgs } from \"../fixtures/apps\";\r\nimport { waitTick } from \"../sdd_helpers\";\r\nimport { accessibilityAssessor } from \"./a11y_helper\";\r\nimport { DefaultSDD } from \"../stories/SmartDesktopDesigner.stories\";\r\nimport { SmartDesktopDesignerProps } from \"../SmartDesktopDesigner\";\r\n\r\nexport const ADD_NEW_APP_BUTTON = \".visible button\",\r\n\tAPP_LIST_TABLE_ROW = \".app-list-row\",\r\n\tACTIVE_TAB_APP_LIST_TABLE_ROW = \".visible .app-list-row\",\r\n\tAPP_LIST_EMPTY_MESSAGE = \".app-list-empty\",\r\n\tPAGE_HEADER = \".view-title .leftSide\",\r\n\tPAGE_HEADER_BUTTON = \".view-title .leftSide button\",\r\n\tSETUP_WIZARD_BUTTON = \".tile-type-buttons .icon-wizard button\",\r\n\tSETUP_MANUAL_BUTTON = \".tile-type-buttons .icon-manual button\";\r\n\r\ndescribe(\"<Applications/>\", () => {\r\n\tit(\"should pass accessibility scans\", async () => {\r\n\t\tconst wrapper = mount(<DefaultApplications {...getApplicationsArgs(\"default\")} />);\r\n\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\texpect(await accessibilityAssessor(wrapper)).to.be.true;\r\n\t});\r\n\r\n\tit(\"should pass accessibility scans (empty)\", async () => {\r\n\t\tconst wrapper = mount(<EmptyApplications {...getApplicationsArgs(\"empty\")} />);\r\n\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\texpect(await accessibilityAssessor(wrapper)).to.be.true;\r\n\t});\r\n\r\n\tit(\"should contain add button app list when not empty\", async () => {\r\n\t\tconst wrapper = mount(<DefaultApplications {...getApplicationsArgs(\"default\")} />);\r\n\r\n\t\tawait waitTick();\r\n\t\t// wait for async effects to finish\r\n\r\n\t\twrapper.update();\r\n\r\n\t\texpect(wrapper.find(\".view-content button\").first().text()).to.contain(\"Add\");\r\n\t\texpect(wrapper.find(APP_LIST_TABLE_ROW).length).to.be.greaterThan(0);\r\n\t\texpect(wrapper.find(APP_LIST_EMPTY_MESSAGE).length).to.equal(0);\r\n\t});\r\n\tit(\"should contain add button and empty message when empty\", async () => {\r\n\t\tconst wrapper = mount(<EmptyApplications {...getApplicationsArgs(\"empty\")} />);\r\n\r\n\t\tawait waitTick();\r\n\t\t// wait for async effects to finish\r\n\r\n\t\twrapper.update();\r\n\r\n\t\texpect(wrapper.find(\".view-content button\").first().text()).to.contain(\"Add\");\r\n\t\texpect(wrapper.find(APP_LIST_TABLE_ROW).length).to.be.equal(0);\r\n\t\texpect(wrapper.find(APP_LIST_EMPTY_MESSAGE).first().text()).to.contain(\"nothing here\");\r\n\t});\r\n\tit(\"should be able to edit a web app\", async () => {\r\n\t\tconst wrapper = mount(<DefaultApplications {...getApplicationsArgs(\"default\")} />);\r\n\r\n\t\tawait waitTick();\r\n\t\t// wait for async effects to finish\r\n\r\n\t\twrapper.update();\r\n\r\n\t\texpect(wrapper.find(APP_LIST_TABLE_ROW).length).to.be.greaterThan(0);\r\n\r\n\t\tconst app = wrapper.find(APP_LIST_TABLE_ROW).first();\r\n\r\n\t\tconst appName = app.text();\r\n\r\n\t\tconst newName = `${appName} modified`;\r\n\r\n\t\tapp.simulate(\"click\");\r\n\r\n\t\tconst input = wrapper.find(\"input#app-name\");\r\n\r\n\t\tinput.simulate(\"focus\");\r\n\t\tinput.simulate(\"change\", { target: { value: newName } });\r\n\r\n\t\twrapper.find(\".app-edit-actions .button-container-secondary button\").simulate(\"click\");\r\n\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\texpect(wrapper.find(APP_LIST_TABLE_ROW).someWhere((node) => node.text() === newName)).to.be.true;\r\n\t});\r\n\tit(\"should be able to add a web app with wizard\", async () => {\r\n\t\tconst wrapper = mount(<EmptyApplications {...getApplicationsArgs(\"empty\")} />);\r\n\r\n\t\tawait waitTick();\r\n\t\t// wait for async effects to finish\r\n\r\n\t\twrapper.update();\r\n\r\n\t\texpect(wrapper.find(APP_LIST_TABLE_ROW).length).to.be.equal(0);\r\n\r\n\t\twrapper.find(ADD_NEW_APP_BUTTON).simulate(\"click\");\r\n\r\n\t\tawait waitTick();\r\n\t\t// wait for async effects to finish\r\n\r\n\t\twrapper.update();\r\n\r\n\t\texpect(wrapper.find(\".setup-type-heading\").length).to.equal(1);\r\n\r\n\t\twrapper.find(SETUP_WIZARD_BUTTON).simulate(\"click\");\r\n\t\twrapper.find(\".button-container-tile.icon-web button\").simulate(\"click\");\r\n\r\n\t\tconst input = wrapper.find(\"input\");\r\n\r\n\t\tinput.simulate(\"focus\");\r\n\t\tinput.simulate(\"change\", { target: { value: \"http://test.com\" } });\r\n\r\n\t\twrapper.find(\".app-edit-actions .button-container-secondary button\").simulate(\"click\");\r\n\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\twrapper.find(\".app-edit-actions button\").last().simulate(\"click\");\r\n\r\n\t\tawait waitTick();\r\n\t\t// wait for async effects to finish\r\n\r\n\t\twrapper.update();\r\n\r\n\t\twrapper.find(\".app-edit-success-actions > :last-child button\").simulate(\"click\");\r\n\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\texpect(wrapper.find(APP_LIST_TABLE_ROW).length).to.be.equal(1);\r\n\t});\r\n\tit(\"should not display temporary apps\", async () => {\r\n\t\tconst wrapper = mount(<ApplicationsWithTemporary {...getApplicationsArgs(\"temporary\")} />);\r\n\r\n\t\tawait waitTick();\r\n\r\n\t\twrapper.update();\r\n\t\texpect(wrapper.find(APP_LIST_TABLE_ROW).length).to.equal(1);\r\n\t});\r\n});\r\n\r\nconst preventable = {\r\n\tpreventDefault: () => {},\r\n\tstopPropagation: () => {},\r\n};\r\n\r\ndescribe(\"<Applications />, Menu section\", () => {\r\n\tit(\"should display empty state with 0 menus\", async () => {\r\n\t\tconst wrapper = mount(<EmptyApplications {...getApplicationsArgs(\"empty\")} />);\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\t\twrapper.find(\"[role='tab']\").at(1).simulate(\"click\");\r\n\r\n\t\texpect(wrapper.find(ADD_NEW_APP_BUTTON).first().text()).to.contain(\"Add\");\r\n\t\texpect(wrapper.find(ACTIVE_TAB_APP_LIST_TABLE_ROW).length).to.be.equal(0);\r\n\t\texpect(wrapper.find(\".visible .app-list-empty\").first().text()).to.contain(\"nothing here\");\r\n\t});\r\n\tit(\"should display menu name and delete button when there are 1+ menus\", async () => {\r\n\t\tconst wrapper = mount(<DefaultApplications {...getApplicationsArgs(\"default\")} />);\r\n\t\twrapper.find(\"[role='tab']\").at(1).simulate(\"click\");\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\texpect(wrapper.find(ACTIVE_TAB_APP_LIST_TABLE_ROW).length).to.be.equal(1);\r\n\t\texpect(wrapper.find(ACTIVE_TAB_APP_LIST_TABLE_ROW).first().text()).to.contain(\"Examples\");\r\n\t\texpect(wrapper.find(\".visible .app-list-row .icon-delete\").exists()).to.be.true;\r\n\t});\r\n\tit(\"MenuEdit: should have an empty Name field by default\", () => {\r\n\t\tconst wrapper = mount(<DefaultApplications {...getApplicationsArgs(\"default\")} />);\r\n\t\twrapper.find(\"[role='tab']\").at(1).simulate(\"click\");\r\n\t\twrapper.find(ADD_NEW_APP_BUTTON).first().simulate(\"click\");\r\n\t\texpect(wrapper.find(\"#menu-name\").first().prop(\"value\")).to.equal(\"\");\r\n\t});\r\n\tit(\"should display disabled Add New button when there are 5 menus\", async () => {\r\n\t\tconst wrapper = mount(<Long {...getApplicationsArgs(\"long\")} />);\r\n\t\twrapper.find(\"[role='tab']\").at(1).simulate(\"click\");\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\texpect(wrapper.find(ACTIVE_TAB_APP_LIST_TABLE_ROW).length).to.be.equal(5);\r\n\t\texpect(wrapper.find(ADD_NEW_APP_BUTTON).first().prop(\"disabled\")).to.be.true;\r\n\t});\r\n\tit(\"MenuEdit: should disable submit button when Name field is empty\", () => {\r\n\t\tconst wrapper = mount(<DefaultApplications {...getApplicationsArgs(\"default\")} />);\r\n\t\twrapper.find(\"[role='tab']\").at(1).simulate(\"click\");\r\n\t\twrapper.find(ACTIVE_TAB_APP_LIST_TABLE_ROW).at(0).simulate(\"click\", preventable);\r\n\t\twrapper\r\n\t\t\t.find(\"#menu-name\")\r\n\t\t\t.at(0)\r\n\t\t\t.simulate(\"change\", {\r\n\t\t\t\ttarget: {\r\n\t\t\t\t\tvalue: \"\",\r\n\t\t\t\t},\r\n\t\t\t});\r\n\t\texpect(wrapper.find(\"button\").at(1).prop(\"disabled\")).to.be.true;\r\n\t});\r\n\r\n\tconst characters_49 = \"Hubert Blaine Wolfeschlegelsteinhausenbergerdorff\";\r\n\tconst characters_50 = \"Hubert Blaine Wolfeschlegelsteinhausenbergerdorff!\";\r\n\tconst characters_51 = \"Hubert Blaine Wolfeschlegelsteinhausenbergerdorff!?\";\r\n\tit(\"MenuEdit: when Name input receives 49 characters, it should display 49\", () => {\r\n\t\tconst wrapper = mount(<DefaultApplications {...getApplicationsArgs(\"default\")} />);\r\n\t\twrapper.find(\"[role='tab']\").at(1).simulate(\"click\");\r\n\t\twrapper.find(ACTIVE_TAB_APP_LIST_TABLE_ROW).at(0).simulate(\"click\", preventable);\r\n\t\twrapper\r\n\t\t\t.find(\"#menu-name\")\r\n\t\t\t.at(0)\r\n\t\t\t.simulate(\"change\", {\r\n\t\t\t\ttarget: {\r\n\t\t\t\t\tvalue: characters_49,\r\n\t\t\t\t},\r\n\t\t\t});\r\n\t\texpect(wrapper.find(\"#menu-name\").prop(\"value\")).to.equal(characters_49);\r\n\t});\r\n\tit(\"MenuEdit: when Name input receives 50 characters, it should display 50\", () => {\r\n\t\tconst wrapper = mount(<DefaultApplications {...getApplicationsArgs(\"default\")} />);\r\n\t\twrapper.find(\"[role='tab']\").at(1).simulate(\"click\");\r\n\t\twrapper.find(ACTIVE_TAB_APP_LIST_TABLE_ROW).at(0).simulate(\"click\", preventable);\r\n\t\twrapper\r\n\t\t\t.find(\"#menu-name\")\r\n\t\t\t.at(0)\r\n\t\t\t.simulate(\"change\", {\r\n\t\t\t\ttarget: {\r\n\t\t\t\t\tvalue: characters_50,\r\n\t\t\t\t},\r\n\t\t\t});\r\n\t\texpect(wrapper.find(\"#menu-name\").prop(\"value\")).to.equal(characters_50);\r\n\t});\r\n\tit(\"MenuEdit: when Name input receives 51 characters, it should only display 50\", () => {\r\n\t\tconst wrapper = mount(<DefaultApplications {...getApplicationsArgs(\"default\")} />);\r\n\t\twrapper.find(\"[role='tab']\").at(1).simulate(\"click\");\r\n\t\twrapper.find(ACTIVE_TAB_APP_LIST_TABLE_ROW).at(0).simulate(\"click\", preventable);\r\n\t\twrapper\r\n\t\t\t.find(\"#menu-name\")\r\n\t\t\t.at(0)\r\n\t\t\t.simulate(\"change\", {\r\n\t\t\t\ttarget: {\r\n\t\t\t\t\tvalue: characters_51,\r\n\t\t\t\t},\r\n\t\t\t});\r\n\t\texpect(wrapper.find(\"#menu-name\").prop(\"value\")).to.equal(characters_50);\r\n\t});\r\n\tit(\"MenuEdit: back button should take users back to Applications page, Menu tab\", () => {\r\n\t\tconst wrapper = mount(<DefaultApplications {...getApplicationsArgs(\"default\")} />);\r\n\r\n\t\t// Go to Menus tab\r\n\t\twrapper.find(\"[role='tab']\").at(1).simulate(\"click\");\r\n\r\n\t\t// Click \"Add\" button\r\n\t\twrapper.find(ADD_NEW_APP_BUTTON).first().simulate(\"click\");\r\n\r\n\t\t// Click \"Back\" button\r\n\t\twrapper.find(\"button\").first().simulate(\"click\");\r\n\r\n\t\texpect(wrapper.find(\".visible div[data-label='Menus']\").exists(), \"Menus Tab is visible\").to.be.true;\r\n\t\texpect(wrapper.find(ACTIVE_TAB_APP_LIST_TABLE_ROW).length, \"Still only 1 menu in list\").to.be.equal(1);\r\n\t});\r\n\tit(\"MenuEdit: click Add New, then click Cancel, then see menu list has not changed\", () => {\r\n\t\tconst wrapper = mount(<DefaultApplications {...getApplicationsArgs(\"default\")} />);\r\n\r\n\t\t// Go to Menus tab\r\n\t\twrapper.find(\"[role='tab']\").at(1).simulate(\"click\");\r\n\t\texpect(wrapper.find(ACTIVE_TAB_APP_LIST_TABLE_ROW).length, \"Only 1 menu in list\").to.be.equal(1);\r\n\r\n\t\t// Click \"Add\" button\r\n\t\twrapper.find(ADD_NEW_APP_BUTTON).first().simulate(\"click\");\r\n\r\n\t\t// Click \"Back\" button\r\n\t\twrapper.find(\"button\").first().simulate(\"click\");\r\n\r\n\t\texpect(wrapper.find(ACTIVE_TAB_APP_LIST_TABLE_ROW).length, \"Still only 1 menu in list\").to.be.equal(1);\r\n\t});\r\n\tit(\"MenuEdit: should show a new menu in the list after a menu has been added\", async () => {\r\n\t\tconst wrapper = mount(<DefaultApplications {...getApplicationsArgs(\"default\")} />);\r\n\r\n\t\t// Go to Menus tab\r\n\t\twrapper.find(\"[role='tab']\").at(1).simulate(\"click\");\r\n\t\texpect(wrapper.find(ACTIVE_TAB_APP_LIST_TABLE_ROW).length, \"Only 1 menu in list\").to.be.equal(1);\r\n\r\n\t\t// Click \"Add\" button\r\n\t\twrapper.find(ADD_NEW_APP_BUTTON).first().simulate(\"click\");\r\n\r\n\t\t// Set name as \"Charts\"\r\n\t\twrapper\r\n\t\t\t.find(\"#menu-name\")\r\n\t\t\t.at(0)\r\n\t\t\t.simulate(\"change\", {\r\n\t\t\t\ttarget: {\r\n\t\t\t\t\tvalue: \"Charts\",\r\n\t\t\t\t},\r\n\t\t\t});\r\n\r\n\t\t// Check \"Example Charts App\"\r\n\t\twrapper.find(\"input[type='checkbox']\").at(0).simulate(\"change\");\r\n\r\n\t\t// Click Save\r\n\t\twrapper.find(\"button\").at(1).simulate(\"click\");\r\n\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\t\texpect(wrapper.find(ACTIVE_TAB_APP_LIST_TABLE_ROW).length, \"Menu list shows 2 menus\").to.be.equal(2);\r\n\t});\r\n\tit(\"name change to a menu should persist\", async () => {\r\n\t\tconst wrapper = mount(<DefaultApplications {...getApplicationsArgs(\"default\")} />);\r\n\r\n\t\t// Go to Menus tab\r\n\t\twrapper.find(\"[role='tab']\").at(1).simulate(\"click\");\r\n\r\n\t\t// Click Examples\r\n\t\twrapper.find(ACTIVE_TAB_APP_LIST_TABLE_ROW).at(0).simulate(\"click\");\r\n\r\n\t\t// Change name to Hello World\r\n\t\twrapper\r\n\t\t\t.find(\"#menu-name\")\r\n\t\t\t.at(0)\r\n\t\t\t.simulate(\"change\", {\r\n\t\t\t\ttarget: {\r\n\t\t\t\t\tvalue: \"Hello World\",\r\n\t\t\t\t},\r\n\t\t\t});\r\n\r\n\t\t// Click Save\r\n\t\twrapper.find(\"button\").at(1).simulate(\"click\");\r\n\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\t// Confirm name is Hello World\r\n\t\texpect(wrapper.find(\".visible [role='listitem']\").at(0).text()).contains(\"Hello World\");\r\n\t});\r\n\tit(\"selected applications changes to a menu should persist\", async () => {\r\n\t\tconst wrapper = mount(<DefaultApplications {...getApplicationsArgs(\"default\")} />);\r\n\r\n\t\t// Go to Menus tab\r\n\t\twrapper.find(\"[role='tab']\").at(1).simulate(\"click\");\r\n\r\n\t\t// Click Examples\r\n\t\twrapper.find(ACTIVE_TAB_APP_LIST_TABLE_ROW).at(0).simulate(\"click\");\r\n\r\n\t\t// Select items\r\n\t\twrapper.find(\"input[type='checkbox']\").at(2).simulate(\"change\");\r\n\r\n\t\t// Click save\r\n\t\twrapper.find(\"button\").at(1).simulate(\"click\");\r\n\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\t// Click examples\r\n\t\twrapper.find(ACTIVE_TAB_APP_LIST_TABLE_ROW).at(0).simulate(\"click\");\r\n\r\n\t\t// Confirm items still present\r\n\t\texpect(wrapper.find(\"input[type='checkbox']\").at(2).prop(\"checked\")).to.be.true;\r\n\t});\r\n\tit(\"should not persist menu name when saving multiple menus\", async () => {\r\n\t\tconst wrapper = mount(<DefaultApplications {...getApplicationsArgs(\"default\")} />);\r\n\r\n\t\t// Go to Menus tab\r\n\t\twrapper.find(\"[role='tab']\").at(1).simulate(\"click\");\r\n\r\n\t\t// Click \"Add\" button\r\n\t\twrapper.find(ADD_NEW_APP_BUTTON).first().simulate(\"click\");\r\n\r\n\t\tawait waitTick();\r\n\t\t// Confirm name field is empty\r\n\t\twrapper.update();\r\n\t\texpect(wrapper.find(\"#menu-name\").first().prop(\"value\")).to.be.empty;\r\n\r\n\t\t// Change name to Test\r\n\t\twrapper\r\n\t\t\t.find(\"#menu-name\")\r\n\t\t\t.at(0)\r\n\t\t\t.simulate(\"change\", {\r\n\t\t\t\ttarget: {\r\n\t\t\t\t\tvalue: \"Test\",\r\n\t\t\t\t},\r\n\t\t\t});\r\n\r\n\t\t// Click save\r\n\t\twrapper.find(\"button\").at(1).simulate(\"click\");\r\n\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\t// Click \"Add\" button\r\n\t\twrapper.find(ADD_NEW_APP_BUTTON).first().simulate(\"click\");\r\n\t\tawait waitTick();\r\n\t\t// Confirm name field is empty\r\n\r\n\t\twrapper.update();\r\n\t\texpect(wrapper.find(\"#menu-name\").first().prop(\"value\")).to.be.empty;\r\n\t});\r\n});\r\n\r\ndescribe(\"<Applications/>, Navigation\", () => {\r\n\tit(\"should navigate as expected\", async () => {\r\n\t\tconst wrapper = mount(<EmptyApplications {...getApplicationsArgs(\"empty\")} />);\r\n\r\n\t\tawait waitTick();\r\n\t\t// wait for async effects to finish\r\n\r\n\t\twrapper.update();\r\n\r\n\t\t// Clicking \"Add\" button should take you to the \"Add an app\" page\r\n\t\twrapper.find(ADD_NEW_APP_BUTTON).at(0).simulate(\"click\");\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\t\texpect(wrapper.find(PAGE_HEADER).text()).contains(\"Add an app\");\r\n\r\n\t\t// Clicking \"Application Wizard\" should take you to \"Is your app web or native \"\r\n\t\twrapper.find(SETUP_WIZARD_BUTTON).simulate(\"click\");\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\t\texpect(wrapper.find(\"h2\").at(0).text()).contains(\"Is your app web or native?\");\r\n\r\n\t\t// Clicking \"Web app\" should bring up the URL entry form and a disabled Next button\r\n\t\twrapper.find(\".icon-web button\").simulate(\"click\");\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\t\texpect(wrapper.find(\".app-url-container\").exists()).to.be.true;\r\n\t\texpect(wrapper.find(\".app-edit-actions button\").prop(\"disabled\")).to.be.true;\r\n\r\n\t\t// Clicking \"Native app\" should bring up a file path form and a disabled Next button\r\n\t\twrapper.find(\".icon-native button\").simulate(\"click\");\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\t\texpect(wrapper.find(\".file-input-container\").exists()).to.be.true;\r\n\t\texpect(wrapper.find(\".app-edit-actions button\").prop(\"disabled\")).to.be.true;\r\n\r\n\t\t// Clicking \"Back\" should take you to \"Add an App\"\r\n\t\twrapper.find(PAGE_HEADER_BUTTON).simulate(\"click\");\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\t\texpect(wrapper.find(PAGE_HEADER).text()).contains(\"Add an app\");\r\n\r\n\t\t// Clicking \"Manual Setup (Advanced)\" should take you to the form\r\n\t\twrapper.find(SETUP_MANUAL_BUTTON).simulate(\"click\");\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\t\texpect(wrapper.find(\".view-container form\").exists()).to.be.true;\r\n\r\n\t\t// Clicking \"Back\" should take you to \"Add an app\"\r\n\t\twrapper.find(PAGE_HEADER_BUTTON).simulate(\"click\");\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\t\texpect(wrapper.find(PAGE_HEADER).text()).contains(\"Add an app\");\r\n\r\n\t\t// Clicking \"Back\" should take you to the Applications landing page\r\n\t\twrapper.find(PAGE_HEADER_BUTTON).simulate(\"click\");\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\t\texpect(wrapper.find(PAGE_HEADER).text()).contains(\"Apps\");\r\n\t\twrapper.unmount();\r\n\t});\r\n\r\n\tit(\"clicking Cancel on the Application form (Manual) should return to the Applications List\", async () => {\r\n\t\tconst wrapper = mount(<EmptyApplications {...getApplicationsArgs(\"empty\")} />);\r\n\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\t// Click the \"Add\" button\r\n\t\twrapper.find(ADD_NEW_APP_BUTTON).at(0).simulate(\"click\");\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\twrapper.find(SETUP_MANUAL_BUTTON).simulate(\"click\");\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\twrapper.find(\".app-edit-actions button\").at(0).simulate(\"click\");\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\texpect(wrapper.find(PAGE_HEADER).text()).contains(\"Apps\");\r\n\t});\r\n\r\n\tit(\"clicking Cancel on the Application form (Wizard) should return to the Applications List\", async () => {\r\n\t\tconst wrapper = mount(<EmptyApplications {...getApplicationsArgs(\"empty\")} />);\r\n\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\t// Click the \"Add\" button\r\n\t\twrapper.find(ADD_NEW_APP_BUTTON).at(0).simulate(\"click\");\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\twrapper.find(SETUP_WIZARD_BUTTON).simulate(\"click\");\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\twrapper.find(\".icon-web button\").simulate(\"click\");\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\twrapper.find(\"#app-url\").simulate(\"change\", {\r\n\t\t\ttarget: {\r\n\t\t\t\tvalue: \"http://www.cosaic.io\",\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\t// Click Next\r\n\t\twrapper.find(\".app-edit-actions button\").at(0).simulate(\"click\");\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\t// Click Cancel\r\n\t\twrapper.find(\".app-edit-actions button\").at(0).simulate(\"click\");\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\texpect(wrapper.find(PAGE_HEADER).text()).contains(\"Apps\");\r\n\t});\r\n\r\n\tit(\"clicking Return to List should return to the Applications List (advanced)\", async () => {\r\n\t\tconst wrapper = mount(<EmptyApplications {...getApplicationsArgs(\"empty\")} />);\r\n\r\n\t\twrapper.update();\r\n\r\n\t\texpect(\r\n\t\t\twrapper.find(\"[data-label='Apps'] .app-list-row\").length,\r\n\t\t\t\"Confirm the App tab's App Table has 0 items in it\"\r\n\t\t).to.be.equal(0);\r\n\t\texpect(\r\n\t\t\twrapper.find(\"[data-label='Apps'] .app-list-empty\").length,\r\n\t\t\t\"Confirm the empty app list message is present\"\r\n\t\t).to.equal(1);\r\n\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\twrapper.find(ADD_NEW_APP_BUTTON).at(0).simulate(\"click\");\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\twrapper.find(SETUP_MANUAL_BUTTON).simulate(\"click\");\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\twrapper.find(\"#app-name\").simulate(\"change\", {\r\n\t\t\ttarget: {\r\n\t\t\t\tvalue: \"Cosaic\",\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\twrapper.find(\"#app-url\").simulate(\"change\", {\r\n\t\t\ttarget: {\r\n\t\t\t\tvalue: \"http://www.cosaic.io\",\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\t// Click Save\r\n\t\twrapper.find(\".app-edit-actions button\").at(1).simulate(\"click\");\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\texpect(wrapper.find(\".app-edit-success h2\").text()).contains(\"Your application is added\");\r\n\r\n\t\t// Click Save\r\n\t\twrapper.find(\".app-edit-success-actions button\").at(1).simulate(\"click\");\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\texpect(wrapper.find(PAGE_HEADER).text()).contains(\"Apps\");\r\n\t\texpect(\r\n\t\t\twrapper.find(\"[data-label='Apps'] .app-list-row\").length,\r\n\t\t\t\"Confirm a row in the App Table exists\"\r\n\t\t).to.be.equal(1);\r\n\t\texpect(\r\n\t\t\twrapper.find(\"[data-label='Apps'] .app-list-empty\").length,\r\n\t\t\t\"Confirm the empty app list message isn't visible\"\r\n\t\t).to.equal(0);\r\n\t});\r\n\r\n\tit(\"clicking Return to List should return to the Applications List (wizard)\", async () => {\r\n\t\tconst wrapper = mount(<EmptyApplications {...getApplicationsArgs(\"empty\")} />);\r\n\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\twrapper.find(ADD_NEW_APP_BUTTON).at(0).simulate(\"click\");\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\twrapper.find(SETUP_WIZARD_BUTTON).simulate(\"click\");\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\twrapper.find(\".icon-web button\").simulate(\"click\");\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\twrapper.find(\"#app-url\").simulate(\"change\", {\r\n\t\t\ttarget: {\r\n\t\t\t\tvalue: \"http://www.cosaic.io\",\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\t// Click Next\r\n\t\twrapper.find(\".app-edit-actions button\").at(0).simulate(\"click\");\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\t// Click Save\r\n\t\twrapper.find(\".app-edit-actions button\").at(1).simulate(\"click\");\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\texpect(wrapper.find(\".app-edit-success h2\").text()).contains(\"Your application is added\");\r\n\r\n\t\t// Click Save\r\n\t\twrapper.find(\".app-edit-success-actions button\").at(1).simulate(\"click\");\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\texpect(wrapper.find(PAGE_HEADER).text()).contains(\"Apps\");\r\n\t});\r\n\r\n\tit(\"should be able to back out of the application form (Wizard)\", async () => {\r\n\t\tconst wrapper = mount(<EmptyApplications {...getApplicationsArgs(\"empty\")} />);\r\n\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\twrapper.find(ADD_NEW_APP_BUTTON).at(0).simulate(\"click\");\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\twrapper.find(SETUP_WIZARD_BUTTON).simulate(\"click\");\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\twrapper.find(\".icon-web button\").simulate(\"click\");\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\twrapper.find(\"#app-url\").simulate(\"change\", {\r\n\t\t\ttarget: {\r\n\t\t\t\tvalue: \"http://www.cosaic.io\",\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\t// Click Next\r\n\t\twrapper.find(\".app-edit-actions button\").at(0).simulate(\"click\");\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\t// Clicking \"Back\" should take you to \"Is your app web or native?\"\r\n\t\twrapper.find(PAGE_HEADER_BUTTON).at(0).simulate(\"click\");\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\t\texpect(wrapper.find(\"h2\").at(0).text()).contains(\"Is your app web or native?\");\r\n\r\n\t\t// Clicking \"Back\" should take you to \"Add an app\"\r\n\t\twrapper.find(PAGE_HEADER_BUTTON).at(0).simulate(\"click\");\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\t\texpect(wrapper.find(PAGE_HEADER).text()).contains(\"Add an app\");\r\n\r\n\t\twrapper.find(PAGE_HEADER_BUTTON).at(0).simulate(\"click\");\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\texpect(wrapper.find(PAGE_HEADER).text()).contains(\"Apps\");\r\n\t\twrapper.unmount();\r\n\t});\r\n\r\n\tit(\"should be able to back out of the application form (Advanced)\", async () => {\r\n\t\tconst wrapper = mount(<EmptyApplications {...getApplicationsArgs(\"empty\")} />);\r\n\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\twrapper.find(ADD_NEW_APP_BUTTON).at(0).simulate(\"click\");\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\twrapper.find(SETUP_MANUAL_BUTTON).simulate(\"click\");\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\twrapper.find(\"#app-url\").simulate(\"change\", {\r\n\t\t\ttarget: {\r\n\t\t\t\tvalue: \"http://www.cosaic.io\",\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\t// Click Back\r\n\t\twrapper.find(\".view-header button\").at(0).simulate(\"click\");\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\t// Clicking \"Back\" should take you to \"Choose a method to add an application\"\r\n\t\texpect(wrapper.find(\".setup-type-heading\").at(0).text(), \"Setup header text contains expected title\").contains(\r\n\t\t\t\"Choose a method to add an app\"\r\n\t\t);\r\n\r\n\t\t// Click Back\r\n\t\twrapper.find(\".view-header button\").at(0).simulate(\"click\");\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\texpect(wrapper.find(PAGE_HEADER).text(), \"Page header text contains expected title\").contains(\"Apps\");\r\n\t\twrapper.unmount();\r\n\t});\r\n\r\n\tit(\"clicking Add Another Application should return to Add Applications form\", async () => {\r\n\t\tconst wrapper = mount(<EmptyApplications {...getApplicationsArgs(\"empty\")} />);\r\n\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\twrapper.find(ADD_NEW_APP_BUTTON).at(0).simulate(\"click\");\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\twrapper.find(SETUP_WIZARD_BUTTON).simulate(\"click\");\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\twrapper.find(\".icon-web button\").simulate(\"click\");\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\twrapper.find(\"#app-url\").simulate(\"change\", {\r\n\t\t\ttarget: {\r\n\t\t\t\tvalue: \"http://www.cosaic.io\",\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\t// Click Next\r\n\t\twrapper.find(\".app-edit-actions button\").at(0).simulate(\"click\");\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\t// Click Save\r\n\t\twrapper.find(\".app-edit-actions button\").at(1).simulate(\"click\");\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\t// Click Add Another Application\r\n\t\twrapper.find(\".app-edit-success-actions button\").at(0).simulate(\"click\");\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\texpect(wrapper.find(\"h2\").at(0).text()).contains(\"Is your app web or native?\");\r\n\r\n\t\t// Clicking \"Back\" should take you to \"Add an app\"\r\n\t\twrapper.find(PAGE_HEADER_BUTTON).simulate(\"click\");\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\t\texpect(wrapper.find(PAGE_HEADER).text()).contains(\"Add an app\");\r\n\r\n\t\t// Clicking \"Back\" should take you to the Applications landing page\r\n\t\twrapper.find(PAGE_HEADER_BUTTON).simulate(\"click\");\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\t\texpect(wrapper.find(PAGE_HEADER).text()).contains(\"Apps\");\r\n\t}).timeout(5000);\r\n\r\n\tit(\"form should auto-populate from wizard (Web)\", async () => {\r\n\t\tconst wrapper = mount(<DefaultApplications {...getApplicationsArgs(\"default\")} />);\r\n\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\twrapper.find(ADD_NEW_APP_BUTTON).at(0).simulate(\"click\");\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\twrapper.find(SETUP_WIZARD_BUTTON).simulate(\"click\");\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\twrapper.find(\".icon-web button\").simulate(\"click\");\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\twrapper.find(\"#app-url\").simulate(\"change\", {\r\n\t\t\ttarget: {\r\n\t\t\t\tvalue: \"http://www.google.com\",\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\t// Click Next\r\n\t\twrapper.find(\".app-edit-actions button\").at(0).simulate(\"click\");\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\texpect(wrapper.find(\"#app-url\").prop(\"value\"), \"Url is auto-populated\").to.equal(\"http://www.google.com\");\r\n\t\texpect(wrapper.find(\"#app-name\").prop(\"value\"), \"Name is auto-populated to 'Google'\").to.equal(\"Google\");\r\n\t});\r\n\r\n\tit(\"should discard app on edit screens when user exits via external navigation\", async () => {\r\n\t\tconst wrapper = mount(<DefaultSDD {...(DefaultSDD.args as SmartDesktopDesignerProps)} />);\r\n\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\twrapper.find(`.nav-item #applications-nav-link`).at(0).simulate(\"click\");\r\n\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\twrapper.find(ADD_NEW_APP_BUTTON).at(0).simulate(\"click\");\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\twrapper.find(SETUP_WIZARD_BUTTON).simulate(\"click\");\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\twrapper.find(\".icon-web button\").simulate(\"click\");\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\twrapper.find(\"#app-url\").simulate(\"change\", {\r\n\t\t\ttarget: {\r\n\t\t\t\tvalue: \"http://www.google.com\",\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\t// Click Next\r\n\t\twrapper.find(\".app-edit-actions button\").at(0).simulate(\"click\");\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\twrapper.find(`.nav-item #getting-started-nav-link`).at(0).simulate(\"click\");\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\twrapper.find(`.nav-item #applications-nav-link`).at(0).simulate(\"click\");\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\texpect(wrapper.find(APP_LIST_TABLE_ROW).length).to.be.equal(0);\r\n\t});\r\n\r\n\tit(\"should save app on final screen when user exits via external navigation\", async () => {\r\n\t\tconst wrapper = mount(<DefaultSDD {...(DefaultSDD.args as SmartDesktopDesignerProps)} />);\r\n\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\twrapper.find(`.nav-item #applications-nav-link`).at(0).simulate(\"click\");\r\n\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\twrapper.find(ADD_NEW_APP_BUTTON).at(0).simulate(\"click\");\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\twrapper.find(SETUP_WIZARD_BUTTON).simulate(\"click\");\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\twrapper.find(\".icon-web button\").simulate(\"click\");\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\twrapper.find(\"#app-url\").simulate(\"change\", {\r\n\t\t\ttarget: {\r\n\t\t\t\tvalue: \"http://www.google.com\",\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\t// Click Next\r\n\t\twrapper.find(\".app-edit-actions button\").at(0).simulate(\"click\");\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\t// Click Save\r\n\t\twrapper.find(\".app-edit-actions button\").at(1).simulate(\"click\");\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\twrapper.find(`.nav-item #getting-started-nav-link`).at(0).simulate(\"click\");\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\twrapper.find(`.nav-item #applications-nav-link`).at(0).simulate(\"click\");\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\texpect(wrapper.find(APP_LIST_TABLE_ROW).length).to.be.equal(1);\r\n\t});\r\n});\r\n"]}
1
+ {"version":3,"file":"Applications.spec.js","sourceRoot":"","sources":["../../../../src/components/smartDesktopDesigner/tests/Applications.spec.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from \"react\";\r\nimport { mount } from \"enzyme\";\r\nimport { describe, it } from \"mocha\";\r\nimport { expect } from \"chai\";\r\nimport {\r\n\tDefaultApplications,\r\n\tEmptyApplications,\r\n\tApplicationsWithTemporary,\r\n\tLong,\r\n} from \"../stories/Applications.stories\";\r\nimport { getApplicationsArgs } from \"../fixtures/apps\";\r\nimport { waitTick } from \"../sdd_helpers\";\r\nimport { accessibilityAssessor } from \"./a11y_helper\";\r\nimport { DefaultSDD } from \"../stories/SmartDesktopDesigner.stories\";\r\nimport { SmartDesktopDesignerProps } from \"../SmartDesktopDesigner\";\r\n\r\nexport const ADD_NEW_APP_BUTTON = \".visible .icon-before-add button\",\r\n\tAPP_LIST_TABLE_ROW = \".app-list-row\",\r\n\tACTIVE_TAB_APP_LIST_TABLE_ROW = \".visible .app-list-row\",\r\n\tAPP_LIST_EMPTY_MESSAGE = \".app-list-empty\",\r\n\tPAGE_HEADER = \".view-title .leftSide\",\r\n\tPAGE_HEADER_BUTTON = \".view-title .leftSide button\",\r\n\tSETUP_WIZARD_BUTTON = \".tile-type-buttons .icon-wizard button\",\r\n\tSETUP_MANUAL_BUTTON = \".tile-type-buttons .icon-manual button\",\r\n\tAPP_ACCESS_RULE = \".app-edit-access-item\",\r\n\tAPP_ACCESS_BLOCKED = \".app-edit-access-blocked\";\r\n\r\ndescribe(\"<Applications/>\", () => {\r\n\tit(\"should pass accessibility scans\", async () => {\r\n\t\tconst wrapper = mount(<DefaultApplications {...getApplicationsArgs(\"default\")} />);\r\n\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\texpect(await accessibilityAssessor(wrapper)).to.be.true;\r\n\t});\r\n\r\n\tit(\"should pass accessibility scans (empty)\", async () => {\r\n\t\tconst wrapper = mount(<EmptyApplications {...getApplicationsArgs(\"empty\")} />);\r\n\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\texpect(await accessibilityAssessor(wrapper)).to.be.true;\r\n\t});\r\n\r\n\tit(\"should contain add button app list when not empty\", async () => {\r\n\t\tconst wrapper = mount(<DefaultApplications {...getApplicationsArgs(\"default\")} />);\r\n\r\n\t\tawait waitTick();\r\n\t\t// wait for async effects to finish\r\n\r\n\t\twrapper.update();\r\n\r\n\t\texpect(wrapper.find(\".view-content button\").first().text()).to.contain(\"Add\");\r\n\t\texpect(wrapper.find(APP_LIST_TABLE_ROW).length).to.be.greaterThan(0);\r\n\t\texpect(wrapper.find(APP_LIST_EMPTY_MESSAGE).length).to.equal(0);\r\n\t});\r\n\tit(\"should contain add button and empty message when empty\", async () => {\r\n\t\tconst wrapper = mount(<EmptyApplications {...getApplicationsArgs(\"empty\")} />);\r\n\r\n\t\tawait waitTick();\r\n\t\t// wait for async effects to finish\r\n\r\n\t\twrapper.update();\r\n\r\n\t\texpect(wrapper.find(\".view-content button\").first().text()).to.contain(\"Add\");\r\n\t\texpect(wrapper.find(APP_LIST_TABLE_ROW).length).to.be.equal(0);\r\n\t\texpect(wrapper.find(APP_LIST_EMPTY_MESSAGE).first().text()).to.contain(\"nothing here\");\r\n\t});\r\n\tit(\"should be able to edit a web app\", async () => {\r\n\t\tconst wrapper = mount(<DefaultApplications {...getApplicationsArgs(\"default\")} />);\r\n\r\n\t\tawait waitTick();\r\n\t\t// wait for async effects to finish\r\n\r\n\t\twrapper.update();\r\n\r\n\t\texpect(wrapper.find(APP_LIST_TABLE_ROW).length).to.be.greaterThan(0);\r\n\r\n\t\tconst app = wrapper.find(APP_LIST_TABLE_ROW).first();\r\n\r\n\t\tconst appName = app.text();\r\n\r\n\t\tconst newName = `${appName} modified`;\r\n\r\n\t\tapp.simulate(\"click\");\r\n\r\n\t\tconst input = wrapper.find(\"input#app-name\");\r\n\r\n\t\tinput.simulate(\"focus\");\r\n\t\tinput.simulate(\"change\", { target: { value: newName } });\r\n\r\n\t\twrapper.find(\".app-edit-actions .button-container-secondary button\").simulate(\"click\");\r\n\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\texpect(wrapper.find(APP_LIST_TABLE_ROW).someWhere((node) => node.text() === newName)).to.be.true;\r\n\t});\r\n\tit(\"should be able to add a web app with wizard\", async () => {\r\n\t\tconst wrapper = mount(<EmptyApplications {...getApplicationsArgs(\"empty\")} />);\r\n\r\n\t\tawait waitTick();\r\n\t\t// wait for async effects to finish\r\n\r\n\t\twrapper.update();\r\n\r\n\t\texpect(wrapper.find(APP_LIST_TABLE_ROW).length).to.be.equal(0);\r\n\r\n\t\twrapper.find(ADD_NEW_APP_BUTTON).simulate(\"click\");\r\n\r\n\t\tawait waitTick();\r\n\t\t// wait for async effects to finish\r\n\r\n\t\twrapper.update();\r\n\r\n\t\texpect(wrapper.find(\".setup-type-heading\").length).to.equal(1);\r\n\r\n\t\twrapper.find(SETUP_WIZARD_BUTTON).simulate(\"click\");\r\n\t\twrapper.find(\".button-container-tile.icon-web button\").simulate(\"click\");\r\n\r\n\t\tconst input = wrapper.find(\"input\");\r\n\r\n\t\tinput.simulate(\"focus\");\r\n\t\tinput.simulate(\"change\", { target: { value: \"http://test.com\" } });\r\n\r\n\t\twrapper.find(\".app-edit-actions .button-container-secondary button\").simulate(\"click\");\r\n\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\twrapper.find(\".app-edit-actions button\").last().simulate(\"click\");\r\n\r\n\t\tawait waitTick();\r\n\t\t// wait for async effects to finish\r\n\r\n\t\twrapper.update();\r\n\r\n\t\twrapper.find(\".app-edit-success-actions > :last-child button\").simulate(\"click\");\r\n\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\texpect(wrapper.find(APP_LIST_TABLE_ROW).length).to.be.equal(1);\r\n\t});\r\n\tit(\"should be able to grant selectConnect access between two apps\", async () => {\r\n\t\tconst wrapper = mount(<EmptyApplications {...getApplicationsArgs(\"empty\")} />);\r\n\r\n\t\tawait waitTick();\r\n\t\t// wait for async effects to finish\r\n\r\n\t\twrapper.update();\r\n\r\n\t\t// ADD FIRST APP\r\n\r\n\t\texpect(wrapper.find(APP_LIST_TABLE_ROW).length).to.be.equal(0);\r\n\r\n\t\twrapper.find(ADD_NEW_APP_BUTTON).simulate(\"click\");\r\n\r\n\t\tawait waitTick();\r\n\t\t// wait for async effects to finish\r\n\r\n\t\twrapper.update();\r\n\r\n\t\texpect(wrapper.find(\".setup-type-heading\").length).to.equal(1);\r\n\r\n\t\twrapper.find(SETUP_WIZARD_BUTTON).simulate(\"click\");\r\n\t\twrapper.find(\".button-container-tile.icon-web button\").simulate(\"click\");\r\n\r\n\t\tlet input = wrapper.find(\"input\");\r\n\r\n\t\tinput.simulate(\"focus\");\r\n\t\tinput.simulate(\"change\", { target: { value: \"http://test1.com\" } });\r\n\r\n\t\twrapper.find(\".app-edit-actions .button-container-secondary button\").simulate(\"click\");\r\n\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\texpect(wrapper.find(APP_ACCESS_RULE).length, \"No SelectConnect access rules visible\").to.equal(0);\r\n\r\n\t\twrapper.find(\".app-edit-actions button\").last().simulate(\"click\");\r\n\r\n\t\tawait waitTick();\r\n\t\t// wait for async effects to finish\r\n\r\n\t\twrapper.update();\r\n\r\n\t\twrapper.find(\".app-edit-success-actions > :last-child button\").simulate(\"click\");\r\n\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\t// ADD SECOND APP\r\n\r\n\t\texpect(wrapper.find(APP_LIST_TABLE_ROW).length).to.be.equal(1);\r\n\r\n\t\twrapper.find(ADD_NEW_APP_BUTTON).simulate(\"click\");\r\n\r\n\t\tawait waitTick();\r\n\t\t// wait for async effects to finish\r\n\r\n\t\twrapper.update();\r\n\r\n\t\texpect(wrapper.find(\".setup-type-heading\").length).to.equal(1);\r\n\r\n\t\twrapper.find(SETUP_WIZARD_BUTTON).simulate(\"click\");\r\n\t\twrapper.find(\".button-container-tile.icon-web button\").simulate(\"click\");\r\n\r\n\t\tinput = wrapper.find(\"input\");\r\n\r\n\t\tinput.simulate(\"focus\");\r\n\t\tinput.simulate(\"change\", { target: { value: \"http://test2.com\" } });\r\n\r\n\t\twrapper.find(\".app-edit-actions .button-container-secondary button\").simulate(\"click\");\r\n\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\texpect(wrapper.find(APP_ACCESS_RULE).length, \"One SelectConnect access rule visible\").to.equal(1);\r\n\r\n\t\twrapper.find(\".app-edit-actions button\").last().simulate(\"click\");\r\n\r\n\t\tawait waitTick();\r\n\t\t// wait for async effects to finish\r\n\r\n\t\twrapper.update();\r\n\r\n\t\twrapper.find(\".app-edit-success-actions > :last-child button\").simulate(\"click\");\r\n\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\texpect(wrapper.find(APP_LIST_TABLE_ROW).length).to.be.equal(2);\r\n\r\n\t\twrapper.find(APP_LIST_TABLE_ROW).first().simulate(\"click\");\r\n\r\n\t\texpect(wrapper.find(APP_ACCESS_RULE).length, \"One SelectConnect access rule visible\").to.equal(1);\r\n\r\n\t\texpect(wrapper.find(APP_ACCESS_BLOCKED).length, \"Inbound SelectConnect blocked\").to.equal(1);\r\n\r\n\t\twrapper.find(\".finsembleToggle input\").first().simulate(\"change\");\r\n\r\n\t\texpect(wrapper.find(\".finsembleToggle-on\").length, \"should be toggled on\").to.equal(1);\r\n\r\n\t\twrapper.find(\".app-edit-actions button\").last().simulate(\"click\");\r\n\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\twrapper.find(APP_LIST_TABLE_ROW).last().simulate(\"click\");\r\n\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\texpect(wrapper.find(APP_ACCESS_RULE).length, \"One SelectConnect access rule visible\").to.equal(1);\r\n\r\n\t\texpect(wrapper.find(APP_ACCESS_BLOCKED).length, \"Inbound SelectConnect not blocked\").to.equal(0);\r\n\t});\r\n\tit(\"should not display temporary apps\", async () => {\r\n\t\tconst wrapper = mount(<ApplicationsWithTemporary {...getApplicationsArgs(\"temporary\")} />);\r\n\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\texpect(wrapper.find(APP_LIST_TABLE_ROW).length).to.equal(1);\r\n\t});\r\n});\r\n\r\nconst preventable = {\r\n\tpreventDefault: () => {},\r\n\tstopPropagation: () => {},\r\n};\r\n\r\ndescribe(\"<Applications />, Menu section\", () => {\r\n\tit(\"should display empty state with 0 menus\", async () => {\r\n\t\tconst wrapper = mount(<EmptyApplications {...getApplicationsArgs(\"empty\")} />);\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\t\twrapper.find(\"[role='tab']\").at(1).simulate(\"click\");\r\n\r\n\t\texpect(wrapper.find(ADD_NEW_APP_BUTTON).first().text()).to.contain(\"Add\");\r\n\t\texpect(wrapper.find(ACTIVE_TAB_APP_LIST_TABLE_ROW).length).to.be.equal(0);\r\n\t\texpect(wrapper.find(\".visible .app-list-empty\").first().text()).to.contain(\"nothing here\");\r\n\t});\r\n\tit(\"should display menu name and delete button when there are 1+ menus\", async () => {\r\n\t\tconst wrapper = mount(<DefaultApplications {...getApplicationsArgs(\"default\")} />);\r\n\t\twrapper.find(\"[role='tab']\").at(1).simulate(\"click\");\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\texpect(wrapper.find(ACTIVE_TAB_APP_LIST_TABLE_ROW).length).to.be.equal(1);\r\n\t\texpect(wrapper.find(ACTIVE_TAB_APP_LIST_TABLE_ROW).first().text()).to.contain(\"Examples\");\r\n\t\texpect(wrapper.find(\".visible .app-list-row .icon-delete\").exists()).to.be.true;\r\n\t});\r\n\tit(\"MenuEdit: should have an empty Name field by default\", () => {\r\n\t\tconst wrapper = mount(<DefaultApplications {...getApplicationsArgs(\"default\")} />);\r\n\t\twrapper.find(\"[role='tab']\").at(1).simulate(\"click\");\r\n\t\twrapper.find(ADD_NEW_APP_BUTTON).first().simulate(\"click\");\r\n\t\texpect(wrapper.find(\"#menu-name\").first().prop(\"value\")).to.equal(\"\");\r\n\t});\r\n\tit(\"should display disabled Add New button when there are 5 menus\", async () => {\r\n\t\tconst wrapper = mount(<Long {...getApplicationsArgs(\"long\")} />);\r\n\t\twrapper.find(\"[role='tab']\").at(1).simulate(\"click\");\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\texpect(wrapper.find(ACTIVE_TAB_APP_LIST_TABLE_ROW).length).to.be.equal(5);\r\n\t\texpect(wrapper.find(ADD_NEW_APP_BUTTON).first().prop(\"disabled\")).to.be.true;\r\n\t});\r\n\tit(\"MenuEdit: should disable submit button when Name field is empty\", async () => {\r\n\t\tconst wrapper = mount(<DefaultApplications {...getApplicationsArgs(\"default\")} />);\r\n\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\twrapper.find(\"[role='tab']\").at(1).simulate(\"click\");\r\n\t\twrapper.find(ACTIVE_TAB_APP_LIST_TABLE_ROW).at(0).simulate(\"click\", preventable);\r\n\t\twrapper\r\n\t\t\t.find(\"#menu-name\")\r\n\t\t\t.at(0)\r\n\t\t\t.simulate(\"change\", {\r\n\t\t\t\ttarget: {\r\n\t\t\t\t\tvalue: \"\",\r\n\t\t\t\t},\r\n\t\t\t});\r\n\t\texpect(wrapper.find(\"button\").at(1).prop(\"disabled\")).to.be.true;\r\n\t});\r\n\r\n\tconst characters_49 = \"Hubert Blaine Wolfeschlegelsteinhausenbergerdorff\";\r\n\tconst characters_50 = \"Hubert Blaine Wolfeschlegelsteinhausenbergerdorff!\";\r\n\tconst characters_51 = \"Hubert Blaine Wolfeschlegelsteinhausenbergerdorff!?\";\r\n\tit(\"MenuEdit: when Name input receives 49 characters, it should display 49\", async () => {\r\n\t\tconst wrapper = mount(<DefaultApplications {...getApplicationsArgs(\"default\")} />);\r\n\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\twrapper.find(\"[role='tab']\").at(1).simulate(\"click\");\r\n\t\twrapper.find(ACTIVE_TAB_APP_LIST_TABLE_ROW).at(0).simulate(\"click\", preventable);\r\n\t\twrapper\r\n\t\t\t.find(\"#menu-name\")\r\n\t\t\t.at(0)\r\n\t\t\t.simulate(\"change\", {\r\n\t\t\t\ttarget: {\r\n\t\t\t\t\tvalue: characters_49,\r\n\t\t\t\t},\r\n\t\t\t});\r\n\t\texpect(wrapper.find(\"#menu-name\").prop(\"value\")).to.equal(characters_49);\r\n\t});\r\n\tit(\"MenuEdit: when Name input receives 50 characters, it should display 50\", async () => {\r\n\t\tconst wrapper = mount(<DefaultApplications {...getApplicationsArgs(\"default\")} />);\r\n\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\twrapper.find(\"[role='tab']\").at(1).simulate(\"click\");\r\n\t\twrapper.find(ACTIVE_TAB_APP_LIST_TABLE_ROW).at(0).simulate(\"click\", preventable);\r\n\t\twrapper\r\n\t\t\t.find(\"#menu-name\")\r\n\t\t\t.at(0)\r\n\t\t\t.simulate(\"change\", {\r\n\t\t\t\ttarget: {\r\n\t\t\t\t\tvalue: characters_50,\r\n\t\t\t\t},\r\n\t\t\t});\r\n\t\texpect(wrapper.find(\"#menu-name\").prop(\"value\")).to.equal(characters_50);\r\n\t});\r\n\tit(\"MenuEdit: when Name input receives 51 characters, it should only display 50\", async () => {\r\n\t\tconst wrapper = mount(<DefaultApplications {...getApplicationsArgs(\"default\")} />);\r\n\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\twrapper.find(\"[role='tab']\").at(1).simulate(\"click\");\r\n\t\twrapper.find(ACTIVE_TAB_APP_LIST_TABLE_ROW).at(0).simulate(\"click\", preventable);\r\n\t\twrapper\r\n\t\t\t.find(\"#menu-name\")\r\n\t\t\t.at(0)\r\n\t\t\t.simulate(\"change\", {\r\n\t\t\t\ttarget: {\r\n\t\t\t\t\tvalue: characters_51,\r\n\t\t\t\t},\r\n\t\t\t});\r\n\t\texpect(wrapper.find(\"#menu-name\").prop(\"value\")).to.equal(characters_50);\r\n\t});\r\n\tit(\"MenuEdit: back button should take users back to Applications page, Menu tab\", async () => {\r\n\t\tconst wrapper = mount(<DefaultApplications {...getApplicationsArgs(\"default\")} />);\r\n\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\t// Go to Menus tab\r\n\t\twrapper.find(\"[role='tab']\").at(1).simulate(\"click\");\r\n\r\n\t\t// Click \"Add\" button\r\n\t\twrapper.find(ADD_NEW_APP_BUTTON).first().simulate(\"click\");\r\n\r\n\t\t// Click \"Back\" button\r\n\t\twrapper.find(\"button\").first().simulate(\"click\");\r\n\r\n\t\texpect(wrapper.find(\".visible div[data-label='Menus']\").exists(), \"Menus Tab is visible\").to.be.true;\r\n\t\texpect(wrapper.find(ACTIVE_TAB_APP_LIST_TABLE_ROW).length, \"Still only 1 menu in list\").to.be.equal(1);\r\n\t});\r\n\tit(\"MenuEdit: click Add New, then click Cancel, then see menu list has not changed\", async () => {\r\n\t\tconst wrapper = mount(<DefaultApplications {...getApplicationsArgs(\"default\")} />);\r\n\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\t// Go to Menus tab\r\n\t\twrapper.find(\"[role='tab']\").at(1).simulate(\"click\");\r\n\t\texpect(wrapper.find(ACTIVE_TAB_APP_LIST_TABLE_ROW).length, \"Only 1 menu in list\").to.be.equal(1);\r\n\r\n\t\t// Click \"Add\" button\r\n\t\twrapper.find(ADD_NEW_APP_BUTTON).first().simulate(\"click\");\r\n\r\n\t\t// Click \"Back\" button\r\n\t\twrapper.find(\"button\").first().simulate(\"click\");\r\n\r\n\t\texpect(wrapper.find(ACTIVE_TAB_APP_LIST_TABLE_ROW).length, \"Still only 1 menu in list\").to.be.equal(1);\r\n\t});\r\n\tit(\"MenuEdit: should show a new menu in the list after a menu has been added\", async () => {\r\n\t\tconst wrapper = mount(<DefaultApplications {...getApplicationsArgs(\"default\")} />);\r\n\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\t// Go to Menus tab\r\n\t\twrapper.find(\"[role='tab']\").at(1).simulate(\"click\");\r\n\t\texpect(wrapper.find(ACTIVE_TAB_APP_LIST_TABLE_ROW).length, \"Only 1 menu in list\").to.be.equal(1);\r\n\r\n\t\t// Click \"Add\" button\r\n\t\twrapper.find(ADD_NEW_APP_BUTTON).first().simulate(\"click\");\r\n\r\n\t\t// Set name as \"Charts\"\r\n\t\twrapper\r\n\t\t\t.find(\"#menu-name\")\r\n\t\t\t.at(0)\r\n\t\t\t.simulate(\"change\", {\r\n\t\t\t\ttarget: {\r\n\t\t\t\t\tvalue: \"Charts\",\r\n\t\t\t\t},\r\n\t\t\t});\r\n\r\n\t\t// Check \"Example Charts App\"\r\n\t\twrapper.find(\"input[type='checkbox']\").at(0).simulate(\"change\");\r\n\r\n\t\t// Click Save\r\n\t\twrapper.find(\"button\").at(1).simulate(\"click\");\r\n\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\t\texpect(wrapper.find(ACTIVE_TAB_APP_LIST_TABLE_ROW).length, \"Menu list shows 2 menus\").to.be.equal(2);\r\n\t});\r\n\tit(\"name change to a menu should persist\", async () => {\r\n\t\tconst wrapper = mount(<DefaultApplications {...getApplicationsArgs(\"default\")} />);\r\n\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\t// Go to Menus tab\r\n\t\twrapper.find(\"[role='tab']\").at(1).simulate(\"click\");\r\n\r\n\t\t// Click Examples\r\n\t\twrapper.find(ACTIVE_TAB_APP_LIST_TABLE_ROW).at(0).simulate(\"click\");\r\n\r\n\t\t// Change name to Hello World\r\n\t\twrapper\r\n\t\t\t.find(\"#menu-name\")\r\n\t\t\t.at(0)\r\n\t\t\t.simulate(\"change\", {\r\n\t\t\t\ttarget: {\r\n\t\t\t\t\tvalue: \"Hello World\",\r\n\t\t\t\t},\r\n\t\t\t});\r\n\r\n\t\t// Click Save\r\n\t\twrapper.find(\"button\").at(1).simulate(\"click\");\r\n\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\t// Confirm name is Hello World\r\n\t\texpect(wrapper.find(\".visible [role='listitem']\").at(0).text()).contains(\"Hello World\");\r\n\t});\r\n\tit(\"selected applications changes to a menu should persist\", async () => {\r\n\t\tconst wrapper = mount(<DefaultApplications {...getApplicationsArgs(\"default\")} />);\r\n\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\t// Go to Menus tab\r\n\t\twrapper.find(\"[role='tab']\").at(1).simulate(\"click\");\r\n\r\n\t\t// Click Examples\r\n\t\twrapper.find(ACTIVE_TAB_APP_LIST_TABLE_ROW).at(0).simulate(\"click\");\r\n\r\n\t\t// Select items\r\n\t\twrapper.find(\"input[type='checkbox']\").at(2).simulate(\"change\");\r\n\r\n\t\t// Click save\r\n\t\twrapper.find(\"button\").at(1).simulate(\"click\");\r\n\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\t// Click examples\r\n\t\twrapper.find(ACTIVE_TAB_APP_LIST_TABLE_ROW).at(0).simulate(\"click\");\r\n\r\n\t\t// Confirm items still present\r\n\t\texpect(wrapper.find(\"input[type='checkbox']\").at(2).prop(\"checked\")).to.be.true;\r\n\t});\r\n\tit(\"should not persist menu name when saving multiple menus\", async () => {\r\n\t\tconst wrapper = mount(<DefaultApplications {...getApplicationsArgs(\"default\")} />);\r\n\r\n\t\t// Go to Menus tab\r\n\t\twrapper.find(\"[role='tab']\").at(1).simulate(\"click\");\r\n\r\n\t\t// Click \"Add\" button\r\n\t\twrapper.find(ADD_NEW_APP_BUTTON).first().simulate(\"click\");\r\n\r\n\t\tawait waitTick();\r\n\t\t// Confirm name field is empty\r\n\t\twrapper.update();\r\n\t\texpect(wrapper.find(\"#menu-name\").first().prop(\"value\")).to.be.empty;\r\n\r\n\t\t// Change name to Test\r\n\t\twrapper\r\n\t\t\t.find(\"#menu-name\")\r\n\t\t\t.at(0)\r\n\t\t\t.simulate(\"change\", {\r\n\t\t\t\ttarget: {\r\n\t\t\t\t\tvalue: \"Test\",\r\n\t\t\t\t},\r\n\t\t\t});\r\n\r\n\t\t// Click save\r\n\t\twrapper.find(\"button\").at(1).simulate(\"click\");\r\n\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\t// Click \"Add\" button\r\n\t\twrapper.find(ADD_NEW_APP_BUTTON).first().simulate(\"click\");\r\n\t\tawait waitTick();\r\n\t\t// Confirm name field is empty\r\n\r\n\t\twrapper.update();\r\n\t\texpect(wrapper.find(\"#menu-name\").first().prop(\"value\")).to.be.empty;\r\n\t});\r\n});\r\n\r\ndescribe(\"<Applications/>, Navigation\", () => {\r\n\tit(\"should navigate as expected\", async () => {\r\n\t\tconst wrapper = mount(<EmptyApplications {...getApplicationsArgs(\"empty\")} />);\r\n\r\n\t\tawait waitTick();\r\n\t\t// wait for async effects to finish\r\n\r\n\t\twrapper.update();\r\n\r\n\t\t// Clicking \"Add\" button should take you to the \"Add an app\" page\r\n\t\twrapper.find(ADD_NEW_APP_BUTTON).at(0).simulate(\"click\");\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\t\texpect(wrapper.find(PAGE_HEADER).text()).contains(\"Add an app\");\r\n\r\n\t\t// Clicking \"Application Wizard\" should take you to \"Is your app web or native \"\r\n\t\twrapper.find(SETUP_WIZARD_BUTTON).simulate(\"click\");\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\t\texpect(wrapper.find(\"h2\").at(0).text()).contains(\"Is your app web or native?\");\r\n\r\n\t\t// Clicking \"Web app\" should bring up the URL entry form and a disabled Next button\r\n\t\twrapper.find(\".icon-web button\").simulate(\"click\");\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\t\texpect(wrapper.find(\".app-url-container\").exists()).to.be.true;\r\n\t\texpect(wrapper.find(\".app-edit-actions button\").prop(\"disabled\")).to.be.true;\r\n\r\n\t\t// Clicking \"Native app\" should bring up a file path form and a disabled Next button\r\n\t\twrapper.find(\".icon-native button\").simulate(\"click\");\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\t\texpect(wrapper.find(\".file-input-container\").exists()).to.be.true;\r\n\t\texpect(wrapper.find(\".app-edit-actions button\").prop(\"disabled\")).to.be.true;\r\n\r\n\t\t// Clicking \"Back\" should take you to \"Add an App\"\r\n\t\twrapper.find(PAGE_HEADER_BUTTON).simulate(\"click\");\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\t\texpect(wrapper.find(PAGE_HEADER).text()).contains(\"Add an app\");\r\n\r\n\t\t// Clicking \"Manual Setup (Advanced)\" should take you to the form\r\n\t\twrapper.find(SETUP_MANUAL_BUTTON).simulate(\"click\");\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\t\texpect(wrapper.find(\".view-container form\").exists()).to.be.true;\r\n\r\n\t\t// Clicking \"Back\" should take you to \"Add an app\"\r\n\t\twrapper.find(PAGE_HEADER_BUTTON).simulate(\"click\");\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\t\texpect(wrapper.find(PAGE_HEADER).text()).contains(\"Add an app\");\r\n\r\n\t\t// Clicking \"Back\" should take you to the Applications landing page\r\n\t\twrapper.find(PAGE_HEADER_BUTTON).simulate(\"click\");\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\t\texpect(wrapper.find(PAGE_HEADER).text()).contains(\"Apps\");\r\n\t\twrapper.unmount();\r\n\t});\r\n\r\n\tit(\"clicking Cancel on the Application form (Manual) should return to the Applications List\", async () => {\r\n\t\tconst wrapper = mount(<EmptyApplications {...getApplicationsArgs(\"empty\")} />);\r\n\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\t// Click the \"Add\" button\r\n\t\twrapper.find(ADD_NEW_APP_BUTTON).at(0).simulate(\"click\");\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\twrapper.find(SETUP_MANUAL_BUTTON).simulate(\"click\");\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\twrapper.find(\".app-edit-actions button\").at(0).simulate(\"click\");\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\texpect(wrapper.find(PAGE_HEADER).text()).contains(\"Apps\");\r\n\t});\r\n\r\n\tit(\"clicking Cancel on the Application form (Wizard) should return to the Applications List\", async () => {\r\n\t\tconst wrapper = mount(<EmptyApplications {...getApplicationsArgs(\"empty\")} />);\r\n\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\t// Click the \"Add\" button\r\n\t\twrapper.find(ADD_NEW_APP_BUTTON).at(0).simulate(\"click\");\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\twrapper.find(SETUP_WIZARD_BUTTON).simulate(\"click\");\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\twrapper.find(\".icon-web button\").simulate(\"click\");\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\twrapper.find(\"#app-url\").simulate(\"change\", {\r\n\t\t\ttarget: {\r\n\t\t\t\tvalue: \"http://www.cosaic.io\",\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\t// Click Next\r\n\t\twrapper.find(\".app-edit-actions button\").at(0).simulate(\"click\");\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\t// Click Cancel\r\n\t\twrapper.find(\".app-edit-actions button\").at(0).simulate(\"click\");\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\texpect(wrapper.find(PAGE_HEADER).text()).contains(\"Apps\");\r\n\t});\r\n\r\n\tit(\"clicking Return to List should return to the Applications List (advanced)\", async () => {\r\n\t\tconst wrapper = mount(<EmptyApplications {...getApplicationsArgs(\"empty\")} />);\r\n\r\n\t\twrapper.update();\r\n\r\n\t\texpect(\r\n\t\t\twrapper.find(\"[data-label='Apps'] .app-list-row\").length,\r\n\t\t\t\"Confirm the App tab's App Table has 0 items in it\"\r\n\t\t).to.be.equal(0);\r\n\t\texpect(\r\n\t\t\twrapper.find(\"[data-label='Apps'] .app-list-empty\").length,\r\n\t\t\t\"Confirm the empty app list message is present\"\r\n\t\t).to.equal(1);\r\n\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\twrapper.find(ADD_NEW_APP_BUTTON).at(0).simulate(\"click\");\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\twrapper.find(SETUP_MANUAL_BUTTON).simulate(\"click\");\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\twrapper.find(\"#app-name\").simulate(\"change\", {\r\n\t\t\ttarget: {\r\n\t\t\t\tvalue: \"Cosaic\",\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\twrapper.find(\"#app-url\").simulate(\"change\", {\r\n\t\t\ttarget: {\r\n\t\t\t\tvalue: \"http://www.cosaic.io\",\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\t// Click Save\r\n\t\twrapper.find(\".app-edit-actions button\").at(1).simulate(\"click\");\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\texpect(wrapper.find(\".app-edit-success h2\").text()).contains(\"Your application is added\");\r\n\r\n\t\t// Click Save\r\n\t\twrapper.find(\".app-edit-success-actions button\").at(1).simulate(\"click\");\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\texpect(wrapper.find(PAGE_HEADER).text()).contains(\"Apps\");\r\n\t\texpect(\r\n\t\t\twrapper.find(\"[data-label='Apps'] .app-list-row\").length,\r\n\t\t\t\"Confirm a row in the App Table exists\"\r\n\t\t).to.be.equal(1);\r\n\t\texpect(\r\n\t\t\twrapper.find(\"[data-label='Apps'] .app-list-empty\").length,\r\n\t\t\t\"Confirm the empty app list message isn't visible\"\r\n\t\t).to.equal(0);\r\n\t});\r\n\r\n\tit(\"clicking Return to List should return to the Applications List (wizard)\", async () => {\r\n\t\tconst wrapper = mount(<EmptyApplications {...getApplicationsArgs(\"empty\")} />);\r\n\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\twrapper.find(ADD_NEW_APP_BUTTON).at(0).simulate(\"click\");\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\twrapper.find(SETUP_WIZARD_BUTTON).simulate(\"click\");\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\twrapper.find(\".icon-web button\").simulate(\"click\");\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\twrapper.find(\"#app-url\").simulate(\"change\", {\r\n\t\t\ttarget: {\r\n\t\t\t\tvalue: \"http://www.cosaic.io\",\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\t// Click Next\r\n\t\twrapper.find(\".app-edit-actions button\").at(0).simulate(\"click\");\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\t// Click Save\r\n\t\twrapper.find(\".app-edit-actions button\").at(1).simulate(\"click\");\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\texpect(wrapper.find(\".app-edit-success h2\").text()).contains(\"Your application is added\");\r\n\r\n\t\t// Click Save\r\n\t\twrapper.find(\".app-edit-success-actions button\").at(1).simulate(\"click\");\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\texpect(wrapper.find(PAGE_HEADER).text()).contains(\"Apps\");\r\n\t});\r\n\r\n\tit(\"should be able to back out of the application form (Wizard)\", async () => {\r\n\t\tconst wrapper = mount(<EmptyApplications {...getApplicationsArgs(\"empty\")} />);\r\n\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\twrapper.find(ADD_NEW_APP_BUTTON).at(0).simulate(\"click\");\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\twrapper.find(SETUP_WIZARD_BUTTON).simulate(\"click\");\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\twrapper.find(\".icon-web button\").simulate(\"click\");\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\twrapper.find(\"#app-url\").simulate(\"change\", {\r\n\t\t\ttarget: {\r\n\t\t\t\tvalue: \"http://www.cosaic.io\",\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\t// Click Next\r\n\t\twrapper.find(\".app-edit-actions button\").at(0).simulate(\"click\");\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\t// Clicking \"Back\" should take you to \"Is your app web or native?\"\r\n\t\twrapper.find(PAGE_HEADER_BUTTON).at(0).simulate(\"click\");\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\t\texpect(wrapper.find(\"h2\").at(0).text()).contains(\"Is your app web or native?\");\r\n\r\n\t\t// Clicking \"Back\" should take you to \"Add an app\"\r\n\t\twrapper.find(PAGE_HEADER_BUTTON).at(0).simulate(\"click\");\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\t\texpect(wrapper.find(PAGE_HEADER).text()).contains(\"Add an app\");\r\n\r\n\t\twrapper.find(PAGE_HEADER_BUTTON).at(0).simulate(\"click\");\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\texpect(wrapper.find(PAGE_HEADER).text()).contains(\"Apps\");\r\n\t\twrapper.unmount();\r\n\t});\r\n\r\n\tit(\"should be able to back out of the application form (Advanced)\", async () => {\r\n\t\tconst wrapper = mount(<EmptyApplications {...getApplicationsArgs(\"empty\")} />);\r\n\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\twrapper.find(ADD_NEW_APP_BUTTON).at(0).simulate(\"click\");\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\twrapper.find(SETUP_MANUAL_BUTTON).simulate(\"click\");\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\twrapper.find(\"#app-url\").simulate(\"change\", {\r\n\t\t\ttarget: {\r\n\t\t\t\tvalue: \"http://www.cosaic.io\",\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\t// Click Back\r\n\t\twrapper.find(\".view-header button\").at(0).simulate(\"click\");\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\t// Clicking \"Back\" should take you to \"Choose a method to add an application\"\r\n\t\texpect(wrapper.find(\".setup-type-heading\").at(0).text(), \"Setup header text contains expected title\").contains(\r\n\t\t\t\"Choose a method to add an app\"\r\n\t\t);\r\n\r\n\t\t// Click Back\r\n\t\twrapper.find(\".view-header button\").at(0).simulate(\"click\");\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\texpect(wrapper.find(PAGE_HEADER).text(), \"Page header text contains expected title\").contains(\"Apps\");\r\n\t\twrapper.unmount();\r\n\t});\r\n\r\n\tit(\"clicking Add Another Application should return to Add Applications form\", async () => {\r\n\t\tconst wrapper = mount(<EmptyApplications {...getApplicationsArgs(\"empty\")} />);\r\n\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\twrapper.find(ADD_NEW_APP_BUTTON).at(0).simulate(\"click\");\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\twrapper.find(SETUP_WIZARD_BUTTON).simulate(\"click\");\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\twrapper.find(\".icon-web button\").simulate(\"click\");\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\twrapper.find(\"#app-url\").simulate(\"change\", {\r\n\t\t\ttarget: {\r\n\t\t\t\tvalue: \"http://www.cosaic.io\",\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\t// Click Next\r\n\t\twrapper.find(\".app-edit-actions button\").at(0).simulate(\"click\");\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\t// Click Save\r\n\t\twrapper.find(\".app-edit-actions button\").at(1).simulate(\"click\");\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\t// Click Add Another Application\r\n\t\twrapper.find(\".app-edit-success-actions button\").at(0).simulate(\"click\");\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\texpect(wrapper.find(\"h2\").at(0).text()).contains(\"Is your app web or native?\");\r\n\r\n\t\t// Clicking \"Back\" should take you to \"Add an app\"\r\n\t\twrapper.find(PAGE_HEADER_BUTTON).simulate(\"click\");\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\t\texpect(wrapper.find(PAGE_HEADER).text()).contains(\"Add an app\");\r\n\r\n\t\t// Clicking \"Back\" should take you to the Applications landing page\r\n\t\twrapper.find(PAGE_HEADER_BUTTON).simulate(\"click\");\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\t\texpect(wrapper.find(PAGE_HEADER).text()).contains(\"Apps\");\r\n\t}).timeout(5000);\r\n\r\n\tit(\"form should auto-populate from wizard (Web)\", async () => {\r\n\t\tconst wrapper = mount(<DefaultApplications {...getApplicationsArgs(\"default\")} />);\r\n\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\twrapper.find(ADD_NEW_APP_BUTTON).at(0).simulate(\"click\");\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\twrapper.find(SETUP_WIZARD_BUTTON).simulate(\"click\");\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\twrapper.find(\".icon-web button\").simulate(\"click\");\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\twrapper.find(\"#app-url\").simulate(\"change\", {\r\n\t\t\ttarget: {\r\n\t\t\t\tvalue: \"http://www.google.com\",\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\t// Click Next\r\n\t\twrapper.find(\".app-edit-actions button\").at(0).simulate(\"click\");\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\texpect(wrapper.find(\"#app-url\").prop(\"value\"), \"Url is auto-populated\").to.equal(\"http://www.google.com\");\r\n\t\texpect(wrapper.find(\"#app-name\").prop(\"value\"), \"Name is auto-populated to 'Google'\").to.equal(\"Google\");\r\n\t});\r\n\r\n\tit(\"should discard app on edit screens when user exits via external navigation\", async () => {\r\n\t\tconst wrapper = mount(<DefaultSDD {...(DefaultSDD.args as SmartDesktopDesignerProps)} />);\r\n\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\twrapper.find(`.nav-item #applications-nav-link`).at(0).simulate(\"click\");\r\n\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\twrapper.find(ADD_NEW_APP_BUTTON).at(0).simulate(\"click\");\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\twrapper.find(SETUP_WIZARD_BUTTON).simulate(\"click\");\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\twrapper.find(\".icon-web button\").simulate(\"click\");\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\twrapper.find(\"#app-url\").simulate(\"change\", {\r\n\t\t\ttarget: {\r\n\t\t\t\tvalue: \"http://www.google.com\",\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\t// Click Next\r\n\t\twrapper.find(\".app-edit-actions button\").at(0).simulate(\"click\");\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\twrapper.find(`.nav-item #getting-started-nav-link`).at(0).simulate(\"click\");\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\twrapper.find(`.nav-item #applications-nav-link`).at(0).simulate(\"click\");\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\texpect(wrapper.find(APP_LIST_TABLE_ROW).length).to.be.equal(0);\r\n\t});\r\n\r\n\tit(\"should save app on final screen when user exits via external navigation\", async () => {\r\n\t\tconst wrapper = mount(<DefaultSDD {...(DefaultSDD.args as SmartDesktopDesignerProps)} />);\r\n\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\twrapper.find(`.nav-item #applications-nav-link`).at(0).simulate(\"click\");\r\n\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\twrapper.find(ADD_NEW_APP_BUTTON).at(0).simulate(\"click\");\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\twrapper.find(SETUP_WIZARD_BUTTON).simulate(\"click\");\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\twrapper.find(\".icon-web button\").simulate(\"click\");\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\twrapper.find(\"#app-url\").simulate(\"change\", {\r\n\t\t\ttarget: {\r\n\t\t\t\tvalue: \"http://www.google.com\",\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\t// Click Next\r\n\t\twrapper.find(\".app-edit-actions button\").at(0).simulate(\"click\");\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\t// Click Save\r\n\t\twrapper.find(\".app-edit-actions button\").at(1).simulate(\"click\");\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\twrapper.find(`.nav-item #getting-started-nav-link`).at(0).simulate(\"click\");\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\twrapper.find(`.nav-item #applications-nav-link`).at(0).simulate(\"click\");\r\n\t\tawait waitTick();\r\n\t\twrapper.update();\r\n\r\n\t\texpect(wrapper.find(APP_LIST_TABLE_ROW).length).to.be.equal(1);\r\n\t});\r\n});\r\n"]}
@@ -44,9 +44,8 @@ export default class Content extends React.Component {
44
44
  if (!this.state.filterText) {
45
45
  return filteredApps;
46
46
  }
47
- return filteredApps.filter((app) => {
48
- return app.name.toLowerCase().indexOf(this.state.filterText.toLowerCase()) !== -1;
49
- });
47
+ return filteredApps.filter(({ displayName, name }) => displayName?.toLowerCase().includes(this.state.filterText.toLowerCase()) ??
48
+ name?.toLowerCase().includes(this.state.filterText.toLowerCase()));
50
49
  }
51
50
  filterAppsByTags(apps) {
52
51
  if (!this.state.tags) {
@@ -1 +1 @@
1
- {"version":3,"file":"Content.js","sourceRoot":"","sources":["../../../../../src/components/toolbar/advancedAppLauncher/components/Content.jsx"],"names":[],"mappings":"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","sourcesContent":["import React from \"react\";\r\nimport AppDefinition from \"./AppDefinition\";\r\nimport NoAppsFound from \"./NoAppsFound\";\r\nimport FilterSort from \"./FilterSort\";\r\nimport { getStore } from \"../stores/LauncherStore\";\r\nimport storeActions from \"../stores/StoreActions\";\r\nimport sortFunctions from \"../utils/sort-functions\";\r\nconst ADVANCED_APP_LAUNCHER = \"Advanced App Launcher\";\r\n\r\nwindow.storeActions = storeActions;\r\n// To be assigned a value later in the constructor\r\nlet store;\r\n\r\nexport default class Content extends React.Component {\r\n\trouterSubscription;\r\n\tconstructor(props) {\r\n\t\tsuper(props);\r\n\t\tthis.state = {\r\n\t\t\tapps: storeActions.getApps(),\r\n\t\t\ttags: storeActions.getTags(),\r\n\t\t\tsortBy: storeActions.getSortBy(),\r\n\t\t\tfilterText: storeActions.getSearchText().toLowerCase(),\r\n\t\t\tfolder: storeActions.getActiveFolder(),\r\n\t\t};\r\n\t\tthis.onSort = this.onSort.bind(this);\r\n\t\tthis.onSearch = this.onSearch.bind(this);\r\n\t\tthis.onTagsUpdate = this.onTagsUpdate.bind(this);\r\n\t\tthis.onActiveFolderChanged = this.onActiveFolderChanged.bind(this);\r\n\t\tthis.onAppListUpdate = this.onAppListUpdate.bind(this);\r\n\t\tthis.onAppLauncherUpdate = this.onAppLauncherUpdate.bind(this);\r\n\t\tthis.updateAppDefinitions = this.updateAppDefinitions.bind(this);\r\n\t\tstore = getStore();\r\n\t}\r\n\r\n\tfilterApps() {\r\n\t\tconst folder = this.state.folder;\r\n\t\tlet apps;\r\n\t\tif (folder.name === ADVANCED_APP_LAUNCHER) {\r\n\t\t\tapps = Object.values(storeActions.getAllApps());\r\n\t\t} else {\r\n\t\t\tapps = folder.apps;\r\n\t\t}\r\n\r\n\t\tif (!folder || !apps) {\r\n\t\t\treturn [];\r\n\t\t}\r\n\t\tconst sortFunc = sortFunctions[this.state.sortBy];\r\n\t\tconst filteredApps = this.filterAppsByTags(sortFunc(apps));\r\n\t\tif (!this.state.filterText) {\r\n\t\t\treturn filteredApps;\r\n\t\t}\r\n\r\n\t\treturn filteredApps.filter((app) => {\r\n\t\t\treturn app.name.toLowerCase().indexOf(this.state.filterText.toLowerCase()) !== -1;\r\n\t\t});\r\n\t}\r\n\r\n\tfilterAppsByTags(apps) {\r\n\t\tif (!this.state.tags) {\r\n\t\t\treturn apps;\r\n\t\t}\r\n\t\t//All active tags must be present in an app for it to show\r\n\t\treturn apps.filter((app) => {\r\n\t\t\tfor (let i = 0; i < this.state.tags.length; i++) {\r\n\t\t\t\tlet tag = this.state.tags[i];\r\n\t\t\t\tif (!app.tags.includes(tag)) {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn true;\r\n\t\t});\r\n\t}\r\n\r\n\tonActiveFolderChanged(error, data) {\r\n\t\tthis.setState({\r\n\t\t\tfolder: storeActions.getActiveFolder(),\r\n\t\t});\r\n\t}\r\n\r\n\tonSearch(error, data) {\r\n\t\tthis.setState({\r\n\t\t\tfilterText: data.value,\r\n\t\t});\r\n\t}\r\n\r\n\tonSort(error, data) {\r\n\t\tthis.setState({\r\n\t\t\tsortBy: data.value,\r\n\t\t});\r\n\t}\r\n\r\n\tonTagsUpdate(error, data) {\r\n\t\tthis.setState({\r\n\t\t\ttags: data.value,\r\n\t\t});\r\n\t}\r\n\t/**\r\n\t * Mainly used to know when a user remove an app from a folder\r\n\t * Because there is no way to subscribe to\r\n\t * folders[index].appDefinitions updates.\r\n\t */\r\n\tonAppListUpdate(error, data) {\r\n\t\tthis.setState({\r\n\t\t\tfolder: storeActions.getActiveFolder(),\r\n\t\t});\r\n\t}\r\n\r\n\tonAppLauncherUpdate() {\r\n\t\tthis.setState({\r\n\t\t\tapps: storeActions.getApps(),\r\n\t\t});\r\n\t}\r\n\r\n\tupdateAppDefinitions(err, response) {\r\n\t\tFSBL.Clients.Logger.debug(\"list updated\", err, response);\r\n\t\tif (err) {\r\n\t\t\treturn console.error(err);\r\n\t\t}\r\n\t\tstoreActions.refreshAppDefinitions(response.data.componentList);\r\n\t\tthis.onAppListUpdate(err);\r\n\t}\r\n\r\n\tcomponentDidMount() {\r\n\t\t//this.setStateValues();\r\n\t\tstore.addListener({ field: \"activeFolder\" }, this.onActiveFolderChanged);\r\n\t\tstore.addListener({ field: \"filterText\" }, this.onSearch);\r\n\t\tstore.addListener({ field: \"sortBy\" }, this.onSort);\r\n\t\tstore.addListener({ field: \"activeLauncherTags\" }, this.onTagsUpdate);\r\n\t\t// We can't subscribe to folders[index].appDefinitions\r\n\t\t// So we are looking at appFolders.folders update\r\n\t\t// Since that update is done After removing an app of definitions\r\n\t\tstore.addListener({ field: \"appFolders.folders\" }, this.onAppListUpdate);\r\n\r\n\t\tstore.addListener({ field: \"appDefinitions\" }, this.onAppLauncherUpdate);\r\n\t\tthis.routerSubscription = FSBL.Clients.RouterClient.subscribe(\"Launcher.update\", this.updateAppDefinitions);\r\n\t}\r\n\r\n\tcomponentWillUnmount() {\r\n\t\tstore.removeListener({ field: \"activeFolder\" }, this.onActiveFolderChanged);\r\n\t\tstore.removeListener({ field: \"filterText\" }, this.onSearch);\r\n\t\tstore.removeListener({ field: \"sortBy\" }, this.onSort);\r\n\t\tstore.removeListener({ field: \"activeLauncherTags\" }, this.onTagsUpdate);\r\n\t\tstore.removeListener({ field: \"appFolders.folders\" }, this.onAppListUpdate);\r\n\r\n\t\tstore.removeListener({ field: \"appDefinitions\" }, this.onAppLauncherUpdate);\r\n\t\tFSBL.Clients.RouterClient.unsubscribe(this.routerSubscription.subscribeID);\r\n\t}\r\n\r\n\trenderAppList() {\r\n\t\treturn this.filterApps().map((app, index) => {\r\n\t\t\treturn <AppDefinition app={app} folder={this.state.folder} key={index} />;\r\n\t\t});\r\n\t}\r\n\r\n\tgetNoResultsMessage() {\r\n\t\tconst messages = {\r\n\t\t\tsearch: [\"No results found. Please try again.\"],\r\n\t\t\tFavorites: [\"There’s nothing here!\", <br key={1} />, \"Add apps to Favorites to view them here.\"],\r\n\t\t\t//Dashboards: ['There’s nothing here!', <br />, 'Press “New Dashboard” to construct an Dashboard.'],\r\n\t\t\tdefault: [\"There’s nothing here!\", <br key={2} />, \"Add apps to folders to view them here.\"],\r\n\t\t};\r\n\t\tif (!this.state.folder) {\r\n\t\t\treturn [\"Loading data...\", <br key={3} />];\r\n\t\t}\r\n\t\t// User is searching so we need the search message\r\n\t\tif (this.state.filterText || this.state.tags.length) {\r\n\t\t\treturn messages.search;\r\n\t\t}\r\n\t\t// Now let's check which folder is currently active\r\n\t\tswitch (this.state.folder.name) {\r\n\t\t\tcase \"Favorites\":\r\n\t\t\t\treturn messages.Favorites;\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"Dashboards\":\r\n\t\t\t\treturn messages.Dashboards;\r\n\t\t\tdefault:\r\n\t\t\t\treturn messages.default;\r\n\t\t}\r\n\t}\r\n\r\n\trender() {\r\n\t\tconst apps = this.renderAppList();\r\n\t\treturn (\r\n\t\t\t<div className=\"complex-menu-content-row\">\r\n\t\t\t\t<FilterSort></FilterSort>\r\n\t\t\t\t<div className=\"item-wrapper\">{apps.length ? apps : <NoAppsFound message={this.getNoResultsMessage()} />}</div>\r\n\t\t\t</div>\r\n\t\t);\r\n\t}\r\n}\r\n"]}
1
+ {"version":3,"file":"Content.js","sourceRoot":"","sources":["../../../../../src/components/toolbar/advancedAppLauncher/components/Content.jsx"],"names":[],"mappings":"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","sourcesContent":["import React from \"react\";\r\nimport AppDefinition from \"./AppDefinition\";\r\nimport NoAppsFound from \"./NoAppsFound\";\r\nimport FilterSort from \"./FilterSort\";\r\nimport { getStore } from \"../stores/LauncherStore\";\r\nimport storeActions from \"../stores/StoreActions\";\r\nimport sortFunctions from \"../utils/sort-functions\";\r\nconst ADVANCED_APP_LAUNCHER = \"Advanced App Launcher\";\r\n\r\nwindow.storeActions = storeActions;\r\n// To be assigned a value later in the constructor\r\nlet store;\r\n\r\nexport default class Content extends React.Component {\r\n\trouterSubscription;\r\n\tconstructor(props) {\r\n\t\tsuper(props);\r\n\t\tthis.state = {\r\n\t\t\tapps: storeActions.getApps(),\r\n\t\t\ttags: storeActions.getTags(),\r\n\t\t\tsortBy: storeActions.getSortBy(),\r\n\t\t\tfilterText: storeActions.getSearchText().toLowerCase(),\r\n\t\t\tfolder: storeActions.getActiveFolder(),\r\n\t\t};\r\n\t\tthis.onSort = this.onSort.bind(this);\r\n\t\tthis.onSearch = this.onSearch.bind(this);\r\n\t\tthis.onTagsUpdate = this.onTagsUpdate.bind(this);\r\n\t\tthis.onActiveFolderChanged = this.onActiveFolderChanged.bind(this);\r\n\t\tthis.onAppListUpdate = this.onAppListUpdate.bind(this);\r\n\t\tthis.onAppLauncherUpdate = this.onAppLauncherUpdate.bind(this);\r\n\t\tthis.updateAppDefinitions = this.updateAppDefinitions.bind(this);\r\n\t\tstore = getStore();\r\n\t}\r\n\r\n\tfilterApps() {\r\n\t\tconst folder = this.state.folder;\r\n\t\tlet apps;\r\n\t\tif (folder.name === ADVANCED_APP_LAUNCHER) {\r\n\t\t\tapps = Object.values(storeActions.getAllApps());\r\n\t\t} else {\r\n\t\t\tapps = folder.apps;\r\n\t\t}\r\n\r\n\t\tif (!folder || !apps) {\r\n\t\t\treturn [];\r\n\t\t}\r\n\t\tconst sortFunc = sortFunctions[this.state.sortBy];\r\n\t\tconst filteredApps = this.filterAppsByTags(sortFunc(apps));\r\n\t\tif (!this.state.filterText) {\r\n\t\t\treturn filteredApps;\r\n\t\t}\r\n\r\n\t\treturn filteredApps.filter(\r\n\t\t\t({ displayName, name }) =>\r\n\t\t\t\tdisplayName?.toLowerCase().includes(this.state.filterText.toLowerCase()) ??\r\n\t\t\t\tname?.toLowerCase().includes(this.state.filterText.toLowerCase())\r\n\t\t);\r\n\t}\r\n\r\n\tfilterAppsByTags(apps) {\r\n\t\tif (!this.state.tags) {\r\n\t\t\treturn apps;\r\n\t\t}\r\n\t\t//All active tags must be present in an app for it to show\r\n\t\treturn apps.filter((app) => {\r\n\t\t\tfor (let i = 0; i < this.state.tags.length; i++) {\r\n\t\t\t\tlet tag = this.state.tags[i];\r\n\t\t\t\tif (!app.tags.includes(tag)) {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn true;\r\n\t\t});\r\n\t}\r\n\r\n\tonActiveFolderChanged(error, data) {\r\n\t\tthis.setState({\r\n\t\t\tfolder: storeActions.getActiveFolder(),\r\n\t\t});\r\n\t}\r\n\r\n\tonSearch(error, data) {\r\n\t\tthis.setState({\r\n\t\t\tfilterText: data.value,\r\n\t\t});\r\n\t}\r\n\r\n\tonSort(error, data) {\r\n\t\tthis.setState({\r\n\t\t\tsortBy: data.value,\r\n\t\t});\r\n\t}\r\n\r\n\tonTagsUpdate(error, data) {\r\n\t\tthis.setState({\r\n\t\t\ttags: data.value,\r\n\t\t});\r\n\t}\r\n\t/**\r\n\t * Mainly used to know when a user remove an app from a folder\r\n\t * Because there is no way to subscribe to\r\n\t * folders[index].appDefinitions updates.\r\n\t */\r\n\tonAppListUpdate(error, data) {\r\n\t\tthis.setState({\r\n\t\t\tfolder: storeActions.getActiveFolder(),\r\n\t\t});\r\n\t}\r\n\r\n\tonAppLauncherUpdate() {\r\n\t\tthis.setState({\r\n\t\t\tapps: storeActions.getApps(),\r\n\t\t});\r\n\t}\r\n\r\n\tupdateAppDefinitions(err, response) {\r\n\t\tFSBL.Clients.Logger.debug(\"list updated\", err, response);\r\n\t\tif (err) {\r\n\t\t\treturn console.error(err);\r\n\t\t}\r\n\t\tstoreActions.refreshAppDefinitions(response.data.componentList);\r\n\t\tthis.onAppListUpdate(err);\r\n\t}\r\n\r\n\tcomponentDidMount() {\r\n\t\t//this.setStateValues();\r\n\t\tstore.addListener({ field: \"activeFolder\" }, this.onActiveFolderChanged);\r\n\t\tstore.addListener({ field: \"filterText\" }, this.onSearch);\r\n\t\tstore.addListener({ field: \"sortBy\" }, this.onSort);\r\n\t\tstore.addListener({ field: \"activeLauncherTags\" }, this.onTagsUpdate);\r\n\t\t// We can't subscribe to folders[index].appDefinitions\r\n\t\t// So we are looking at appFolders.folders update\r\n\t\t// Since that update is done After removing an app of definitions\r\n\t\tstore.addListener({ field: \"appFolders.folders\" }, this.onAppListUpdate);\r\n\r\n\t\tstore.addListener({ field: \"appDefinitions\" }, this.onAppLauncherUpdate);\r\n\t\tthis.routerSubscription = FSBL.Clients.RouterClient.subscribe(\"Launcher.update\", this.updateAppDefinitions);\r\n\t}\r\n\r\n\tcomponentWillUnmount() {\r\n\t\tstore.removeListener({ field: \"activeFolder\" }, this.onActiveFolderChanged);\r\n\t\tstore.removeListener({ field: \"filterText\" }, this.onSearch);\r\n\t\tstore.removeListener({ field: \"sortBy\" }, this.onSort);\r\n\t\tstore.removeListener({ field: \"activeLauncherTags\" }, this.onTagsUpdate);\r\n\t\tstore.removeListener({ field: \"appFolders.folders\" }, this.onAppListUpdate);\r\n\r\n\t\tstore.removeListener({ field: \"appDefinitions\" }, this.onAppLauncherUpdate);\r\n\t\tFSBL.Clients.RouterClient.unsubscribe(this.routerSubscription.subscribeID);\r\n\t}\r\n\r\n\trenderAppList() {\r\n\t\treturn this.filterApps().map((app, index) => {\r\n\t\t\treturn <AppDefinition app={app} folder={this.state.folder} key={index} />;\r\n\t\t});\r\n\t}\r\n\r\n\tgetNoResultsMessage() {\r\n\t\tconst messages = {\r\n\t\t\tsearch: [\"No results found. Please try again.\"],\r\n\t\t\tFavorites: [\"There’s nothing here!\", <br key={1} />, \"Add apps to Favorites to view them here.\"],\r\n\t\t\t//Dashboards: ['There’s nothing here!', <br />, 'Press “New Dashboard” to construct an Dashboard.'],\r\n\t\t\tdefault: [\"There’s nothing here!\", <br key={2} />, \"Add apps to folders to view them here.\"],\r\n\t\t};\r\n\t\tif (!this.state.folder) {\r\n\t\t\treturn [\"Loading data...\", <br key={3} />];\r\n\t\t}\r\n\t\t// User is searching so we need the search message\r\n\t\tif (this.state.filterText || this.state.tags.length) {\r\n\t\t\treturn messages.search;\r\n\t\t}\r\n\t\t// Now let's check which folder is currently active\r\n\t\tswitch (this.state.folder.name) {\r\n\t\t\tcase \"Favorites\":\r\n\t\t\t\treturn messages.Favorites;\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"Dashboards\":\r\n\t\t\t\treturn messages.Dashboards;\r\n\t\t\tdefault:\r\n\t\t\t\treturn messages.default;\r\n\t\t}\r\n\t}\r\n\r\n\trender() {\r\n\t\tconst apps = this.renderAppList();\r\n\t\treturn (\r\n\t\t\t<div className=\"complex-menu-content-row\">\r\n\t\t\t\t<FilterSort></FilterSort>\r\n\t\t\t\t<div className=\"item-wrapper\">{apps.length ? apps : <NoAppsFound message={this.getNoResultsMessage()} />}</div>\r\n\t\t\t</div>\r\n\t\t);\r\n\t}\r\n}\r\n"]}
@@ -198,7 +198,7 @@ export default class FoldersList extends React.Component {
198
198
  }
199
199
  });
200
200
  favorites.forEach((fav) => {
201
- const app = storeActions.findAppByField("name", fav.name);
201
+ const app = storeActions.findAppByField("name", fav.name) || storeActions.findAppByField("displayName", fav.name);
202
202
  if (app) {
203
203
  storeActions.addAppToFolder("Favorites", app);
204
204
  }
@@ -1 +1 @@
1
- {"version":3,"file":"FoldersList.js","sourceRoot":"","sources":["../../../../../src/components/toolbar/advancedAppLauncher/components/FoldersList.jsx"],"names":[],"mappings":"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","sourcesContent":["import React from \"react\";\r\nimport storeActions from \"../stores/StoreActions\";\r\nimport { getStore } from \"../stores/LauncherStore\";\r\nimport { useFavorites } from \"../../../../hooks/useFavorites\";\r\nimport { FinsembleDraggable } from \"../../../legacyControls/FinsembleDraggable\";\r\nimport { FinsembleDnDContext } from \"../../../legacyControls/FinsembleDnDContext\";\r\nconst { ADVANCED_APP_LAUNCHER, DASHBOARDS, FAVORITES } = storeActions.getConstants();\r\n\r\nconst dragDisabled = storeActions.getDragDisabled();\r\n\r\nexport default class FoldersList extends React.Component {\r\n\tconstructor(props) {\r\n\t\tsuper(props);\r\n\t\tthis.state = {\r\n\t\t\tfoldersList: storeActions.getFoldersList(),\r\n\t\t\tactiveFolder: storeActions.getActiveFolderName(),\r\n\t\t\trenamingFolder: null,\r\n\t\t\tfolderNameInput: \"\",\r\n\t\t\tisNameError: false,\r\n\t\t};\r\n\t\t// Reference to ontainer element of folder list\r\n\t\tthis.listDiv = React.createRef();\r\n\t\tthis.renameFolder = this.renameFolder.bind(this);\r\n\t\tthis.changeFolderName = this.changeFolderName.bind(this);\r\n\t\tthis.cancelEdit = this.cancelEdit.bind(this);\r\n\t\tthis.onFoldersListUpdate = this.onFoldersListUpdate.bind(this);\r\n\t\tthis.keyPressed = this.keyPressed.bind(this);\r\n\t\tthis.deleteFolder = this.deleteFolder.bind(this);\r\n\t\tthis.onFocusRemove = this.onFocusRemove.bind(this);\r\n\t\tthis.onDragEnd = this.onDragEnd.bind(this);\r\n\t\tthis.onMouseMove = this.onMouseMove.bind(this);\r\n\t\tthis.animateErrorInput = this.animateErrorInput.bind(this);\r\n\r\n\t\t// The last known mouse Y position\r\n\t\tthis.mouseY = null;\r\n\r\n\t\t//Reference to a folder name input in error\r\n\t\tthis.errorInput = React.createRef();\r\n\t}\r\n\r\n\tanimateErrorInput() {\r\n\t\tif (this.errorInput.current) {\r\n\t\t\tthis.errorInput.current.classList.remove(\"error\");\r\n\t\t\tconst flickerInput = setTimeout(() => {\r\n\t\t\t\tif (this.errorInput.current) {\r\n\t\t\t\t\tthis.errorInput.current.classList.add(\"error\");\r\n\t\t\t\t}\r\n\t\t\t\tclearTimeout(flickerInput);\r\n\t\t\t}, 500);\r\n\t\t}\r\n\t}\r\n\r\n\tcancelEdit() {\r\n\t\tconsole.log(\"cancelling edit\");\r\n\t\tthis.setState({\r\n\t\t\trenamingFolder: null,\r\n\t\t\tisNameError: false,\r\n\t\t\tfolderNameInput: \"\",\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Keeps a track of the last mouse's clientY position\r\n\t * @param {MouseEvent} event The mouse move event\r\n\t */\r\n\tonMouseMove(event) {\r\n\t\tthis.mouseY = event.clientY;\r\n\t}\r\n\r\n\tonDragEnd({ oldIndex, newIndex }) {\r\n\t\tstoreActions.reorderFolders(oldIndex, newIndex);\r\n\t}\r\n\r\n\tonAppDrop(event, folder) {\r\n\t\tevent.preventDefault();\r\n\t\tconst app = JSON.parse(event.dataTransfer.getData(\"app\"));\r\n\t\t// Do not do anything if its Advanced App Launcher or dashboards folder\r\n\t\tif ([ADVANCED_APP_LAUNCHER, DASHBOARDS].indexOf(folder) < 0) {\r\n\t\t\tstoreActions.addAppToFolder(folder, app);\r\n\t\t}\r\n\t}\r\n\r\n\tonFoldersListUpdate(error, data) {\r\n\t\tthis.setState({\r\n\t\t\tfoldersList: data.value,\r\n\t\t});\r\n\t}\r\n\r\n\tonFolderClicked(event, folder) {\r\n\t\tgetStore().setValue(\r\n\t\t\t{\r\n\t\t\t\tfield: \"activeFolder\",\r\n\t\t\t\tvalue: folder,\r\n\t\t\t},\r\n\t\t\t(error, data) => {\r\n\t\t\t\tthis.setState({\r\n\t\t\t\t\tactiveFolder: folder,\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t);\r\n\t}\r\n\r\n\tonFocusRemove(event) {\r\n\t\tif (this.state.isNameError) {\r\n\t\t\tthis.animateErrorInput();\r\n\t\t}\r\n\t\t// If focus removed and nothing was type, then just hide\r\n\t\t// and consider it a rename cancel\r\n\t\tif (!this.state.folderNameInput) {\r\n\t\t\t// Cancel rename\r\n\t\t\tthis.setState({\r\n\t\t\t\trenamingFolder: null,\r\n\t\t\t\tisNameError: false,\r\n\t\t\t\tfolderNameInput: \"\",\r\n\t\t\t});\r\n\t\t\treturn;\r\n\t\t}\r\n\t\t// Finally, all good and so we can rename the folder\r\n\t\tthis.attemptRename();\r\n\t}\r\n\r\n\tUNSAFE_componentWillMount() {\r\n\t\tgetStore().addListener({ field: \"appFolders.list\" }, this.onFoldersListUpdate);\r\n\t\tdocument.addEventListener(\"mousemove\", this.onMouseMove);\r\n\t}\r\n\r\n\tcomponentWillUnmount() {\r\n\t\tgetStore().addListener({ field: \"appFolders.list\" }, this.onFoldersListUpdate);\r\n\t\tdocument.removeEventListener(\"mousemove\", this.onMouseMove);\r\n\t}\r\n\r\n\trenameFolder(name, e) {\r\n\t\te.preventDefault();\r\n\t\te.stopPropagation();\r\n\t\tif (!this.state.isNameError) {\r\n\t\t\tthis.setState({\r\n\t\t\t\trenamingFolder: name,\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tchangeFolderName(e) {\r\n\t\tthis.setState({\r\n\t\t\tfolderNameInput: e.target.value,\r\n\t\t});\r\n\t}\r\n\r\n\tdeleteFolder(name, e) {\r\n\t\te.stopPropagation();\r\n\t\te.preventDefault();\r\n\t\t// Do not attempt to delete if user is renaming a folder\r\n\t\t!this.state.renamingFolder && storeActions.deleteFolder(name);\r\n\t}\r\n\r\n\tkeyPressed(e) {\r\n\t\tif (e.key === \"Enter\") {\r\n\t\t\tthis.attemptRename();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * To be called when user press Enter or when focus is removed\r\n\t */\r\n\tattemptRename() {\r\n\t\tconst folders = storeActions.getFolders();\r\n\t\tconst input = this.state.folderNameInput.trim();\r\n\t\tconst oldName = this.state.renamingFolder;\r\n\t\tlet newName = input;\r\n\t\t// Check user input to make sure its at least 1 character\r\n\t\t// made of string, number or both\r\n\t\tif (!/^([a-zA-Z0-9\\s]{1,})$/.test(input)) {\r\n\t\t\t// Do not rename\r\n\t\t\tconsole.warn(\"A valid folder name is required. /^([a-zA-Z0-9s]{1,})$/\");\r\n\t\t\treturn this.setState({\r\n\t\t\t\tisNameError: true,\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t// Check if the submission is the same text as the old name.\r\n\t\t// If false, renaming will be skipped\r\n\t\tlet nameChanged = true;\r\n\t\t// We no longer allow leading or trailing spaces, but the trim on the oldName needs to remain for any existing folders\r\n\t\tif (oldName.trim() === newName) nameChanged = false;\r\n\r\n\t\t// Names must be unique, folders cant share same names\r\n\t\tif (folders[newName]) {\r\n\t\t\tlet repeatedFolderIndex = 0;\r\n\t\t\tdo {\r\n\t\t\t\trepeatedFolderIndex++;\r\n\t\t\t} while (Object.keys(folders).includes(`${newName}(${repeatedFolderIndex})`));\r\n\t\t\tnewName = `${newName}(${repeatedFolderIndex})`;\r\n\t\t}\r\n\r\n\t\tthis.setState(\r\n\t\t\t{\r\n\t\t\t\tfolderNameInput: \"\",\r\n\t\t\t\trenamingFolder: null,\r\n\t\t\t\tisNameError: false,\r\n\t\t\t},\r\n\t\t\t() => {\r\n\t\t\t\tif (nameChanged) {\r\n\t\t\t\t\tstoreActions.renameFolder(oldName, newName);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t);\r\n\t}\r\n\r\n\t/**\r\n\t * Given some data, renders the basic folder structure that cannot be unordered. Used for orderable folders too. Those just get wrapped in a Draggable\r\n\t * @param {*} folder\r\n\t * @param {*} folderName\r\n\t * @param {*} index\r\n\t */\r\n\trenderFolder(folder, folderName, index) {\r\n\t\tlet className = \"complex-menu-section-toggle\";\r\n\t\tif (this.state.activeFolder === folderName) {\r\n\t\t\tclassName = `${className} active-section-toggle`;\r\n\t\t}\r\n\t\tif (folder.icon) {\r\n\t\t\tclassName = `${className} folder-with-icon`;\r\n\t\t}\r\n\r\n\t\tconst { canDelete, canEdit } = folder;\r\n\r\n\t\tlet nameField,\r\n\t\t\tisEditing = false;\r\n\t\tif (this.state.renamingFolder === folderName && canEdit) {\r\n\t\t\tconst { isNameError } = this.state;\r\n\t\t\tnameField = (\r\n\t\t\t\t<input\r\n\t\t\t\t\tid=\"rename\"\r\n\t\t\t\t\tvalue={this.state.folderNameInput}\r\n\t\t\t\t\tonChange={this.changeFolderName}\r\n\t\t\t\t\tonKeyPress={this.keyPressed}\r\n\t\t\t\t\tonBlur={this.onFocusRemove}\r\n\t\t\t\t\tclassName={isNameError ? \"error\" : \"\"}\r\n\t\t\t\t\tautoFocus\r\n\t\t\t\t\tref={isNameError ? this.errorInput : null}\r\n\t\t\t\t/>\r\n\t\t\t);\r\n\t\t\tisEditing = true;\r\n\t\t} else if (folderName === \"Advanced App Launcher\") {\r\n\t\t\tnameField = \"App Launcher\";\r\n\t\t} else {\r\n\t\t\tnameField = folderName;\r\n\t\t}\r\n\r\n\t\tconst RenderFolder = (props) => {\r\n\t\t\tconst { addFavorite, isFavorited, favorites } = useFavorites();\r\n\t\t\t// If an app is dropped in the Favorites folder, favorite the app\r\n\t\t\tconst onDrop = (e) => {\r\n\t\t\t\tprops.onDrop(e);\r\n\t\t\t\tconst app = JSON.parse(e.dataTransfer.getData(\"app\"));\r\n\t\t\t\tif (folderName === FAVORITES && !isFavorited(app.name)) {\r\n\t\t\t\t\tconst favoriteApp = {\r\n\t\t\t\t\t\tid: app.name,\r\n\t\t\t\t\t\tcategory: \"Application\",\r\n\t\t\t\t\t\tname: app.name,\r\n\t\t\t\t\t\ticon: app.icon,\r\n\t\t\t\t\t};\r\n\t\t\t\t\taddFavorite(favoriteApp);\r\n\t\t\t\t}\r\n\t\t\t};\r\n\t\t\t// When favorites changes remove all items from the favorites folder and re-add all current favorites.\r\n\t\t\tReact.useEffect(() => {\r\n\t\t\t\tconst existingFavApps = storeActions.getAllAppsFromFolder(FAVORITES);\r\n\t\t\t\tObject.values(existingFavApps).forEach((app) => {\r\n\t\t\t\t\tif (!favorites.some((fav) => fav.name === app.name)) {\r\n\t\t\t\t\t\tstoreActions.removeAppFromFolder(\"Favorites\", app);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t\tfavorites.forEach((fav) => {\r\n\t\t\t\t\tconst app = storeActions.findAppByField(\"name\", fav.name);\r\n\t\t\t\t\t// may have things other than favorites in here.\r\n\t\t\t\t\tif (app) {\r\n\t\t\t\t\t\tstoreActions.addAppToFolder(\"Favorites\", app);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}, [favorites]);\r\n\t\t\treturn (\r\n\t\t\t\t<div {...props} onDrop={onDrop}>\r\n\t\t\t\t\t{props.children}\r\n\t\t\t\t</div>\r\n\t\t\t);\r\n\t\t};\r\n\r\n\t\tconst showIcon = canEdit || canDelete;\r\n\r\n\t\tlet buttons;\r\n\t\tif (showIcon) {\r\n\t\t\tif (isEditing) {\r\n\t\t\t\t// We can't use onClick for these buttons because onBlur causes a re-render of these buttons which means mousedown and mouseup\r\n\t\t\t\t// technically don't fire on the same button. This means onClick is never fired, so we trigger the buttons on mousedown instead.\r\n\t\t\t\t// For more information see: https://www.eventbrite.com/engineering/a-story-of-a-react-re-rendering-bug/\r\n\t\t\t\tbuttons = (\r\n\t\t\t\t\t<span className=\"folder-action-icons\">\r\n\t\t\t\t\t\t<i\r\n\t\t\t\t\t\t\tid=\"confirm-edit\"\r\n\t\t\t\t\t\t\tclassName=\"ff-check-mark-2\"\r\n\t\t\t\t\t\t\ttitle=\"Accept Rename\"\r\n\t\t\t\t\t\t\tonMouseDown={this.attemptRename.bind(this)}\r\n\t\t\t\t\t\t></i>\r\n\t\t\t\t\t\t<i id=\"cancel-edit\" className=\"ff-close\" title=\"Cancel\" onMouseDown={this.cancelEdit.bind(this)}></i>\r\n\t\t\t\t\t</span>\r\n\t\t\t\t);\r\n\t\t\t} else {\r\n\t\t\t\tbuttons = (\r\n\t\t\t\t\t<span className=\"folder-action-icons\">\r\n\t\t\t\t\t\t{canEdit && (\r\n\t\t\t\t\t\t\t<i className=\"ff-adp-edit\" title=\"Rename\" onClick={this.renameFolder.bind(this, folderName)}></i>\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t{canDelete && (\r\n\t\t\t\t\t\t\t<i\r\n\t\t\t\t\t\t\t\tclassName=\"ff-adp-trash-outline\"\r\n\t\t\t\t\t\t\t\ttitle=\"Delete Folder\"\r\n\t\t\t\t\t\t\t\tonClick={this.deleteFolder.bind(this, folderName)}\r\n\t\t\t\t\t\t\t></i>\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t</span>\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// This DOM will be rendered within a draggable (if the folder can be dragged), and a plain ol div if it cannot be dragged.\r\n\t\treturn (\r\n\t\t\t<RenderFolder\r\n\t\t\t\tonDragOver={(event) => event.preventDefault()}\r\n\t\t\t\tonDrop={(event) => this.onAppDrop(event, folderName)}\r\n\t\t\t\tonClick={(event) => this.onFolderClicked(event, folderName)}\r\n\t\t\t\tclassName={className}\r\n\t\t\t\tkey={index}\r\n\t\t\t\ttitle={folderName}\r\n\t\t\t>\r\n\t\t\t\t<div className=\"left-nav-label\">\r\n\t\t\t\t\t{folder.icon && <i className={folder.icon}></i>}\r\n\t\t\t\t\t<div className=\"folder-name\">{nameField}</div>\r\n\t\t\t\t</div>\r\n\t\t\t\t{buttons}\r\n\t\t\t</RenderFolder>\r\n\t\t);\r\n\t}\r\n\r\n\t/**\r\n\t * Render all folders that cannot be reordered.\r\n\t */\r\n\trenderUnorderableFolders() {\r\n\t\tconst folders = storeActions.getFolders();\r\n\t\tconst unorderableFolders = this.state.foldersList.filter(\r\n\t\t\t(folderName) => dragDisabled.includes(folderName) && folderName in folders\r\n\t\t);\r\n\t\treturn unorderableFolders.map((folderName, index) => {\r\n\t\t\tconst folder = folders[folderName];\r\n\t\t\tfolder.icon = null;\r\n\t\t\treturn this.renderFolder(folder, folderName, index);\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Renders all folders that can be reordered (user created folders).\r\n\t */\r\n\trenderOrderableFolders() {\r\n\t\tconst folders = storeActions.getFolders();\r\n\t\tconst orderableFolders = this.state.foldersList.filter(\r\n\t\t\t(folderName) => !dragDisabled.includes(folderName) && folderName in folders\r\n\t\t);\r\n\t\treturn orderableFolders.map((folderName, index) => {\r\n\t\t\tconst folder = folders[folderName];\r\n\t\t\treturn (\r\n\t\t\t\t<FinsembleDraggable draggableId={folderName} key={index} index={index}>\r\n\t\t\t\t\t{this.renderFolder(folder, folderName, index)}\r\n\t\t\t\t</FinsembleDraggable>\r\n\t\t\t);\r\n\t\t});\r\n\t}\r\n\r\n\trender() {\r\n\t\treturn (\r\n\t\t\t<div className=\"top\">\r\n\t\t\t\t<div className=\"folder-list\" ref={this.listDiv}>\r\n\t\t\t\t\t{this.renderUnorderableFolders()}\r\n\t\t\t\t\t<FinsembleDnDContext onDragEnd={this.onDragEnd}>{this.renderOrderableFolders()}</FinsembleDnDContext>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t);\r\n\t}\r\n}\r\n"]}
1
+ {"version":3,"file":"FoldersList.js","sourceRoot":"","sources":["../../../../../src/components/toolbar/advancedAppLauncher/components/FoldersList.jsx"],"names":[],"mappings":"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","sourcesContent":["import React from \"react\";\r\nimport storeActions from \"../stores/StoreActions\";\r\nimport { getStore } from \"../stores/LauncherStore\";\r\nimport { useFavorites } from \"../../../../hooks/useFavorites\";\r\nimport { FinsembleDraggable } from \"../../../legacyControls/FinsembleDraggable\";\r\nimport { FinsembleDnDContext } from \"../../../legacyControls/FinsembleDnDContext\";\r\nconst { ADVANCED_APP_LAUNCHER, DASHBOARDS, FAVORITES } = storeActions.getConstants();\r\n\r\nconst dragDisabled = storeActions.getDragDisabled();\r\n\r\nexport default class FoldersList extends React.Component {\r\n\tconstructor(props) {\r\n\t\tsuper(props);\r\n\t\tthis.state = {\r\n\t\t\tfoldersList: storeActions.getFoldersList(),\r\n\t\t\tactiveFolder: storeActions.getActiveFolderName(),\r\n\t\t\trenamingFolder: null,\r\n\t\t\tfolderNameInput: \"\",\r\n\t\t\tisNameError: false,\r\n\t\t};\r\n\t\t// Reference to ontainer element of folder list\r\n\t\tthis.listDiv = React.createRef();\r\n\t\tthis.renameFolder = this.renameFolder.bind(this);\r\n\t\tthis.changeFolderName = this.changeFolderName.bind(this);\r\n\t\tthis.cancelEdit = this.cancelEdit.bind(this);\r\n\t\tthis.onFoldersListUpdate = this.onFoldersListUpdate.bind(this);\r\n\t\tthis.keyPressed = this.keyPressed.bind(this);\r\n\t\tthis.deleteFolder = this.deleteFolder.bind(this);\r\n\t\tthis.onFocusRemove = this.onFocusRemove.bind(this);\r\n\t\tthis.onDragEnd = this.onDragEnd.bind(this);\r\n\t\tthis.onMouseMove = this.onMouseMove.bind(this);\r\n\t\tthis.animateErrorInput = this.animateErrorInput.bind(this);\r\n\r\n\t\t// The last known mouse Y position\r\n\t\tthis.mouseY = null;\r\n\r\n\t\t//Reference to a folder name input in error\r\n\t\tthis.errorInput = React.createRef();\r\n\t}\r\n\r\n\tanimateErrorInput() {\r\n\t\tif (this.errorInput.current) {\r\n\t\t\tthis.errorInput.current.classList.remove(\"error\");\r\n\t\t\tconst flickerInput = setTimeout(() => {\r\n\t\t\t\tif (this.errorInput.current) {\r\n\t\t\t\t\tthis.errorInput.current.classList.add(\"error\");\r\n\t\t\t\t}\r\n\t\t\t\tclearTimeout(flickerInput);\r\n\t\t\t}, 500);\r\n\t\t}\r\n\t}\r\n\r\n\tcancelEdit() {\r\n\t\tconsole.log(\"cancelling edit\");\r\n\t\tthis.setState({\r\n\t\t\trenamingFolder: null,\r\n\t\t\tisNameError: false,\r\n\t\t\tfolderNameInput: \"\",\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Keeps a track of the last mouse's clientY position\r\n\t * @param {MouseEvent} event The mouse move event\r\n\t */\r\n\tonMouseMove(event) {\r\n\t\tthis.mouseY = event.clientY;\r\n\t}\r\n\r\n\tonDragEnd({ oldIndex, newIndex }) {\r\n\t\tstoreActions.reorderFolders(oldIndex, newIndex);\r\n\t}\r\n\r\n\tonAppDrop(event, folder) {\r\n\t\tevent.preventDefault();\r\n\t\tconst app = JSON.parse(event.dataTransfer.getData(\"app\"));\r\n\t\t// Do not do anything if its Advanced App Launcher or dashboards folder\r\n\t\tif ([ADVANCED_APP_LAUNCHER, DASHBOARDS].indexOf(folder) < 0) {\r\n\t\t\tstoreActions.addAppToFolder(folder, app);\r\n\t\t}\r\n\t}\r\n\r\n\tonFoldersListUpdate(error, data) {\r\n\t\tthis.setState({\r\n\t\t\tfoldersList: data.value,\r\n\t\t});\r\n\t}\r\n\r\n\tonFolderClicked(event, folder) {\r\n\t\tgetStore().setValue(\r\n\t\t\t{\r\n\t\t\t\tfield: \"activeFolder\",\r\n\t\t\t\tvalue: folder,\r\n\t\t\t},\r\n\t\t\t(error, data) => {\r\n\t\t\t\tthis.setState({\r\n\t\t\t\t\tactiveFolder: folder,\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t);\r\n\t}\r\n\r\n\tonFocusRemove(event) {\r\n\t\tif (this.state.isNameError) {\r\n\t\t\tthis.animateErrorInput();\r\n\t\t}\r\n\t\t// If focus removed and nothing was type, then just hide\r\n\t\t// and consider it a rename cancel\r\n\t\tif (!this.state.folderNameInput) {\r\n\t\t\t// Cancel rename\r\n\t\t\tthis.setState({\r\n\t\t\t\trenamingFolder: null,\r\n\t\t\t\tisNameError: false,\r\n\t\t\t\tfolderNameInput: \"\",\r\n\t\t\t});\r\n\t\t\treturn;\r\n\t\t}\r\n\t\t// Finally, all good and so we can rename the folder\r\n\t\tthis.attemptRename();\r\n\t}\r\n\r\n\tUNSAFE_componentWillMount() {\r\n\t\tgetStore().addListener({ field: \"appFolders.list\" }, this.onFoldersListUpdate);\r\n\t\tdocument.addEventListener(\"mousemove\", this.onMouseMove);\r\n\t}\r\n\r\n\tcomponentWillUnmount() {\r\n\t\tgetStore().addListener({ field: \"appFolders.list\" }, this.onFoldersListUpdate);\r\n\t\tdocument.removeEventListener(\"mousemove\", this.onMouseMove);\r\n\t}\r\n\r\n\trenameFolder(name, e) {\r\n\t\te.preventDefault();\r\n\t\te.stopPropagation();\r\n\t\tif (!this.state.isNameError) {\r\n\t\t\tthis.setState({\r\n\t\t\t\trenamingFolder: name,\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tchangeFolderName(e) {\r\n\t\tthis.setState({\r\n\t\t\tfolderNameInput: e.target.value,\r\n\t\t});\r\n\t}\r\n\r\n\tdeleteFolder(name, e) {\r\n\t\te.stopPropagation();\r\n\t\te.preventDefault();\r\n\t\t// Do not attempt to delete if user is renaming a folder\r\n\t\t!this.state.renamingFolder && storeActions.deleteFolder(name);\r\n\t}\r\n\r\n\tkeyPressed(e) {\r\n\t\tif (e.key === \"Enter\") {\r\n\t\t\tthis.attemptRename();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * To be called when user press Enter or when focus is removed\r\n\t */\r\n\tattemptRename() {\r\n\t\tconst folders = storeActions.getFolders();\r\n\t\tconst input = this.state.folderNameInput.trim();\r\n\t\tconst oldName = this.state.renamingFolder;\r\n\t\tlet newName = input;\r\n\t\t// Check user input to make sure its at least 1 character\r\n\t\t// made of string, number or both\r\n\t\tif (!/^([a-zA-Z0-9\\s]{1,})$/.test(input)) {\r\n\t\t\t// Do not rename\r\n\t\t\tconsole.warn(\"A valid folder name is required. /^([a-zA-Z0-9s]{1,})$/\");\r\n\t\t\treturn this.setState({\r\n\t\t\t\tisNameError: true,\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t// Check if the submission is the same text as the old name.\r\n\t\t// If false, renaming will be skipped\r\n\t\tlet nameChanged = true;\r\n\t\t// We no longer allow leading or trailing spaces, but the trim on the oldName needs to remain for any existing folders\r\n\t\tif (oldName.trim() === newName) nameChanged = false;\r\n\r\n\t\t// Names must be unique, folders cant share same names\r\n\t\tif (folders[newName]) {\r\n\t\t\tlet repeatedFolderIndex = 0;\r\n\t\t\tdo {\r\n\t\t\t\trepeatedFolderIndex++;\r\n\t\t\t} while (Object.keys(folders).includes(`${newName}(${repeatedFolderIndex})`));\r\n\t\t\tnewName = `${newName}(${repeatedFolderIndex})`;\r\n\t\t}\r\n\r\n\t\tthis.setState(\r\n\t\t\t{\r\n\t\t\t\tfolderNameInput: \"\",\r\n\t\t\t\trenamingFolder: null,\r\n\t\t\t\tisNameError: false,\r\n\t\t\t},\r\n\t\t\t() => {\r\n\t\t\t\tif (nameChanged) {\r\n\t\t\t\t\tstoreActions.renameFolder(oldName, newName);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t);\r\n\t}\r\n\r\n\t/**\r\n\t * Given some data, renders the basic folder structure that cannot be unordered. Used for orderable folders too. Those just get wrapped in a Draggable\r\n\t * @param {*} folder\r\n\t * @param {*} folderName\r\n\t * @param {*} index\r\n\t */\r\n\trenderFolder(folder, folderName, index) {\r\n\t\tlet className = \"complex-menu-section-toggle\";\r\n\t\tif (this.state.activeFolder === folderName) {\r\n\t\t\tclassName = `${className} active-section-toggle`;\r\n\t\t}\r\n\t\tif (folder.icon) {\r\n\t\t\tclassName = `${className} folder-with-icon`;\r\n\t\t}\r\n\r\n\t\tconst { canDelete, canEdit } = folder;\r\n\r\n\t\tlet nameField,\r\n\t\t\tisEditing = false;\r\n\t\tif (this.state.renamingFolder === folderName && canEdit) {\r\n\t\t\tconst { isNameError } = this.state;\r\n\t\t\tnameField = (\r\n\t\t\t\t<input\r\n\t\t\t\t\tid=\"rename\"\r\n\t\t\t\t\tvalue={this.state.folderNameInput}\r\n\t\t\t\t\tonChange={this.changeFolderName}\r\n\t\t\t\t\tonKeyPress={this.keyPressed}\r\n\t\t\t\t\tonBlur={this.onFocusRemove}\r\n\t\t\t\t\tclassName={isNameError ? \"error\" : \"\"}\r\n\t\t\t\t\tautoFocus\r\n\t\t\t\t\tref={isNameError ? this.errorInput : null}\r\n\t\t\t\t/>\r\n\t\t\t);\r\n\t\t\tisEditing = true;\r\n\t\t} else if (folderName === \"Advanced App Launcher\") {\r\n\t\t\tnameField = \"App Launcher\";\r\n\t\t} else {\r\n\t\t\tnameField = folderName;\r\n\t\t}\r\n\r\n\t\tconst RenderFolder = (props) => {\r\n\t\t\tconst { addFavorite, isFavorited, favorites } = useFavorites();\r\n\t\t\t// If an app is dropped in the Favorites folder, favorite the app\r\n\t\t\tconst onDrop = (e) => {\r\n\t\t\t\tprops.onDrop(e);\r\n\t\t\t\tconst app = JSON.parse(e.dataTransfer.getData(\"app\"));\r\n\t\t\t\tif (folderName === FAVORITES && !isFavorited(app.name)) {\r\n\t\t\t\t\tconst favoriteApp = {\r\n\t\t\t\t\t\tid: app.name,\r\n\t\t\t\t\t\tcategory: \"Application\",\r\n\t\t\t\t\t\tname: app.name,\r\n\t\t\t\t\t\ticon: app.icon,\r\n\t\t\t\t\t};\r\n\t\t\t\t\taddFavorite(favoriteApp);\r\n\t\t\t\t}\r\n\t\t\t};\r\n\t\t\t// When favorites changes remove all items from the favorites folder and re-add all current favorites.\r\n\t\t\tReact.useEffect(() => {\r\n\t\t\t\tconst existingFavApps = storeActions.getAllAppsFromFolder(FAVORITES);\r\n\t\t\t\tObject.values(existingFavApps).forEach((app) => {\r\n\t\t\t\t\tif (!favorites.some((fav) => fav.name === app.name)) {\r\n\t\t\t\t\t\tstoreActions.removeAppFromFolder(\"Favorites\", app);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t\tfavorites.forEach((fav) => {\r\n\t\t\t\t\tconst app =\r\n\t\t\t\t\t\tstoreActions.findAppByField(\"name\", fav.name) || storeActions.findAppByField(\"displayName\", fav.name);\r\n\t\t\t\t\t// may have things other than favorites in here.\r\n\t\t\t\t\tif (app) {\r\n\t\t\t\t\t\tstoreActions.addAppToFolder(\"Favorites\", app);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}, [favorites]);\r\n\t\t\treturn (\r\n\t\t\t\t<div {...props} onDrop={onDrop}>\r\n\t\t\t\t\t{props.children}\r\n\t\t\t\t</div>\r\n\t\t\t);\r\n\t\t};\r\n\r\n\t\tconst showIcon = canEdit || canDelete;\r\n\r\n\t\tlet buttons;\r\n\t\tif (showIcon) {\r\n\t\t\tif (isEditing) {\r\n\t\t\t\t// We can't use onClick for these buttons because onBlur causes a re-render of these buttons which means mousedown and mouseup\r\n\t\t\t\t// technically don't fire on the same button. This means onClick is never fired, so we trigger the buttons on mousedown instead.\r\n\t\t\t\t// For more information see: https://www.eventbrite.com/engineering/a-story-of-a-react-re-rendering-bug/\r\n\t\t\t\tbuttons = (\r\n\t\t\t\t\t<span className=\"folder-action-icons\">\r\n\t\t\t\t\t\t<i\r\n\t\t\t\t\t\t\tid=\"confirm-edit\"\r\n\t\t\t\t\t\t\tclassName=\"ff-check-mark-2\"\r\n\t\t\t\t\t\t\ttitle=\"Accept Rename\"\r\n\t\t\t\t\t\t\tonMouseDown={this.attemptRename.bind(this)}\r\n\t\t\t\t\t\t></i>\r\n\t\t\t\t\t\t<i id=\"cancel-edit\" className=\"ff-close\" title=\"Cancel\" onMouseDown={this.cancelEdit.bind(this)}></i>\r\n\t\t\t\t\t</span>\r\n\t\t\t\t);\r\n\t\t\t} else {\r\n\t\t\t\tbuttons = (\r\n\t\t\t\t\t<span className=\"folder-action-icons\">\r\n\t\t\t\t\t\t{canEdit && (\r\n\t\t\t\t\t\t\t<i className=\"ff-adp-edit\" title=\"Rename\" onClick={this.renameFolder.bind(this, folderName)}></i>\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t{canDelete && (\r\n\t\t\t\t\t\t\t<i\r\n\t\t\t\t\t\t\t\tclassName=\"ff-adp-trash-outline\"\r\n\t\t\t\t\t\t\t\ttitle=\"Delete Folder\"\r\n\t\t\t\t\t\t\t\tonClick={this.deleteFolder.bind(this, folderName)}\r\n\t\t\t\t\t\t\t></i>\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t</span>\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// This DOM will be rendered within a draggable (if the folder can be dragged), and a plain ol div if it cannot be dragged.\r\n\t\treturn (\r\n\t\t\t<RenderFolder\r\n\t\t\t\tonDragOver={(event) => event.preventDefault()}\r\n\t\t\t\tonDrop={(event) => this.onAppDrop(event, folderName)}\r\n\t\t\t\tonClick={(event) => this.onFolderClicked(event, folderName)}\r\n\t\t\t\tclassName={className}\r\n\t\t\t\tkey={index}\r\n\t\t\t\ttitle={folderName}\r\n\t\t\t>\r\n\t\t\t\t<div className=\"left-nav-label\">\r\n\t\t\t\t\t{folder.icon && <i className={folder.icon}></i>}\r\n\t\t\t\t\t<div className=\"folder-name\">{nameField}</div>\r\n\t\t\t\t</div>\r\n\t\t\t\t{buttons}\r\n\t\t\t</RenderFolder>\r\n\t\t);\r\n\t}\r\n\r\n\t/**\r\n\t * Render all folders that cannot be reordered.\r\n\t */\r\n\trenderUnorderableFolders() {\r\n\t\tconst folders = storeActions.getFolders();\r\n\t\tconst unorderableFolders = this.state.foldersList.filter(\r\n\t\t\t(folderName) => dragDisabled.includes(folderName) && folderName in folders\r\n\t\t);\r\n\t\treturn unorderableFolders.map((folderName, index) => {\r\n\t\t\tconst folder = folders[folderName];\r\n\t\t\tfolder.icon = null;\r\n\t\t\treturn this.renderFolder(folder, folderName, index);\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Renders all folders that can be reordered (user created folders).\r\n\t */\r\n\trenderOrderableFolders() {\r\n\t\tconst folders = storeActions.getFolders();\r\n\t\tconst orderableFolders = this.state.foldersList.filter(\r\n\t\t\t(folderName) => !dragDisabled.includes(folderName) && folderName in folders\r\n\t\t);\r\n\t\treturn orderableFolders.map((folderName, index) => {\r\n\t\t\tconst folder = folders[folderName];\r\n\t\t\treturn (\r\n\t\t\t\t<FinsembleDraggable draggableId={folderName} key={index} index={index}>\r\n\t\t\t\t\t{this.renderFolder(folder, folderName, index)}\r\n\t\t\t\t</FinsembleDraggable>\r\n\t\t\t);\r\n\t\t});\r\n\t}\r\n\r\n\trender() {\r\n\t\treturn (\r\n\t\t\t<div className=\"top\">\r\n\t\t\t\t<div className=\"folder-list\" ref={this.listDiv}>\r\n\t\t\t\t\t{this.renderUnorderableFolders()}\r\n\t\t\t\t\t<FinsembleDnDContext onDragEnd={this.onDragEnd}>{this.renderOrderableFolders()}</FinsembleDnDContext>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t);\r\n\t}\r\n}\r\n"]}