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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (787) hide show
  1. package/package.json +13 -11
  2. package/react/actions/favoriteActions.d.ts +1 -0
  3. package/react/actions/favoriteActions.js +1 -0
  4. package/react/actions/favoriteActions.js.map +1 -1
  5. package/react/actions/menuActions.d.ts +1 -0
  6. package/react/actions/menuActions.js +1 -0
  7. package/react/actions/menuActions.js.map +1 -1
  8. package/react/actions/rootActions.d.ts +1 -0
  9. package/react/actions/rootActions.js +1 -0
  10. package/react/actions/rootActions.js.map +1 -1
  11. package/react/actions/searchActions.d.ts +1 -0
  12. package/react/actions/searchActions.js +1 -0
  13. package/react/actions/searchActions.js.map +1 -1
  14. package/react/actions/toolbarActions.d.ts +34 -0
  15. package/react/actions/toolbarActions.js +17 -0
  16. package/react/actions/toolbarActions.js.map +1 -1
  17. package/react/actions/workspaceActions.d.ts +1 -0
  18. package/react/actions/workspaceActions.js +1 -0
  19. package/react/actions/workspaceActions.js.map +1 -1
  20. package/react/assets/css/advancedAppLauncher.css +22 -19
  21. package/react/assets/css/appCatalog.css +67 -72
  22. package/react/assets/css/authentication.css +4 -3
  23. package/react/assets/css/button.css +3 -10
  24. package/react/assets/css/core/formElements.css +1 -1
  25. package/react/assets/css/core/icons.css +3 -2
  26. package/react/assets/css/core/notifications.css +2 -2
  27. package/react/assets/css/core/windowFrame.css +9 -9
  28. package/react/assets/css/dashbar.css +1 -1
  29. package/react/assets/css/defaultTheme.css +9 -53
  30. package/react/assets/css/dialogs.css +13 -11
  31. package/react/assets/css/favorites.css +3 -1
  32. package/react/assets/css/finsemble.css +3 -2
  33. package/react/assets/css/font-finance.css +233 -120
  34. package/react/assets/css/fonts/Open_Sans/OpenSans-Definition.css +10 -10
  35. package/react/assets/css/linkerWindow.css +2 -2
  36. package/react/assets/css/menus.css +10 -10
  37. package/react/assets/css/notificationsCenter.css +16 -31
  38. package/react/assets/css/processMonitor.css +7 -4
  39. package/react/assets/css/search.css +1 -1
  40. package/react/assets/css/shared/animations.css +10 -4
  41. package/react/assets/css/shared/common.css +2 -2
  42. package/react/assets/css/tags.css +10 -10
  43. package/react/assets/css/toolbar.css +22 -19
  44. package/react/assets/css/userPreferences.css +12 -14
  45. package/react/assets/css/windowTitleBar.css +75 -36
  46. package/react/componentTemplateGenerator.js +3 -2
  47. package/react/componentTemplateGenerator.js.map +1 -1
  48. package/react/components/FinsembleProvider.d.ts +7 -0
  49. package/react/components/FinsembleProvider.js +2 -0
  50. package/react/components/FinsembleProvider.js.map +1 -1
  51. package/react/components/appCatalog/AppCatalog.d.ts +4 -0
  52. package/react/components/appCatalog/AppCatalog.js +4 -0
  53. package/react/components/appCatalog/AppCatalog.js.map +1 -1
  54. package/react/components/appCatalog/AppCatalogComponent.d.ts +58 -0
  55. package/react/components/appCatalog/AppCatalogComponent.js +70 -1
  56. package/react/components/appCatalog/AppCatalogComponent.js.map +1 -1
  57. package/react/components/appCatalog/components/AppCard.d.ts +35 -0
  58. package/react/components/appCatalog/components/AppCard.js +42 -0
  59. package/react/components/appCatalog/components/AppCard.js.map +1 -1
  60. package/react/components/appCatalog/components/AppResults.d.ts +10 -0
  61. package/react/components/appCatalog/components/AppResults.js +24 -0
  62. package/react/components/appCatalog/components/AppResults.js.map +1 -1
  63. package/react/components/appCatalog/components/Carousel.d.ts +26 -0
  64. package/react/components/appCatalog/components/Carousel.js +34 -0
  65. package/react/components/appCatalog/components/Carousel.js.map +1 -1
  66. package/react/components/appCatalog/components/EmptyResults.d.ts +4 -0
  67. package/react/components/appCatalog/components/EmptyResults.js +8 -0
  68. package/react/components/appCatalog/components/EmptyResults.js.map +1 -1
  69. package/react/components/appCatalog/components/Hero.d.ts +15 -0
  70. package/react/components/appCatalog/components/Hero.js +15 -0
  71. package/react/components/appCatalog/components/Hero.js.map +1 -1
  72. package/react/components/appCatalog/components/Home.d.ts +6 -4
  73. package/react/components/appCatalog/components/Home.js +10 -0
  74. package/react/components/appCatalog/components/Home.js.map +1 -1
  75. package/react/components/appCatalog/components/SearchBar.d.ts +31 -0
  76. package/react/components/appCatalog/components/SearchBar.js +33 -0
  77. package/react/components/appCatalog/components/SearchBar.js.map +1 -1
  78. package/react/components/appCatalog/components/Showcase/AppDescription.d.ts +5 -0
  79. package/react/components/appCatalog/components/Showcase/AppDescription.js +9 -0
  80. package/react/components/appCatalog/components/Showcase/AppDescription.js.map +1 -1
  81. package/react/components/appCatalog/components/Showcase/AppDevNotes.d.ts +7 -0
  82. package/react/components/appCatalog/components/Showcase/AppDevNotes.js +15 -0
  83. package/react/components/appCatalog/components/Showcase/AppDevNotes.js.map +1 -1
  84. package/react/components/appCatalog/components/Showcase/AppShowcase.d.ts +17 -0
  85. package/react/components/appCatalog/components/Showcase/AppShowcase.js +25 -0
  86. package/react/components/appCatalog/components/Showcase/AppShowcase.js.map +1 -1
  87. package/react/components/appCatalog/components/Showcase/Header.d.ts +7 -0
  88. package/react/components/appCatalog/components/Showcase/Header.js +12 -0
  89. package/react/components/appCatalog/components/Showcase/Header.js.map +1 -1
  90. package/react/components/appCatalog/components/Showcase/ImageCarousel.d.ts +7 -0
  91. package/react/components/appCatalog/components/Showcase/ImageCarousel.js +11 -0
  92. package/react/components/appCatalog/components/Showcase/ImageCarousel.js.map +1 -1
  93. package/react/components/appCatalog/components/Showcase/Modal.d.ts +10 -0
  94. package/react/components/appCatalog/components/Showcase/Modal.js +10 -0
  95. package/react/components/appCatalog/components/Showcase/Modal.js.map +1 -1
  96. package/react/components/appCatalog/components/Showcase/ReleaseNotes.d.ts +5 -0
  97. package/react/components/appCatalog/components/Showcase/ReleaseNotes.js +9 -0
  98. package/react/components/appCatalog/components/Showcase/ReleaseNotes.js.map +1 -1
  99. package/react/components/appCatalog/components/Showcase/SupportNotes.d.ts +6 -0
  100. package/react/components/appCatalog/components/Showcase/SupportNotes.js +11 -0
  101. package/react/components/appCatalog/components/Showcase/SupportNotes.js.map +1 -1
  102. package/react/components/appCatalog/components/Showcase/VersionNotes.d.ts +5 -0
  103. package/react/components/appCatalog/components/Showcase/VersionNotes.js +9 -0
  104. package/react/components/appCatalog/components/Showcase/VersionNotes.js.map +1 -1
  105. package/react/components/appCatalog/components/Tag.d.ts +6 -0
  106. package/react/components/appCatalog/components/Tag.js +10 -0
  107. package/react/components/appCatalog/components/Tag.js.map +1 -1
  108. package/react/components/appCatalog/components/Toast.d.ts +5 -0
  109. package/react/components/appCatalog/components/Toast.js +9 -0
  110. package/react/components/appCatalog/components/Toast.js.map +1 -1
  111. package/react/components/appCatalog/components/helpers.js +1 -0
  112. package/react/components/appCatalog/components/helpers.js.map +1 -1
  113. package/react/components/appCatalog/modules/AppDirectory.d.ts +5 -0
  114. package/react/components/appCatalog/modules/AppDirectory.js +5 -0
  115. package/react/components/appCatalog/modules/AppDirectory.js.map +1 -1
  116. package/react/components/appCatalog/modules/FDC3.d.ts +37 -0
  117. package/react/components/appCatalog/modules/FDC3.js +40 -0
  118. package/react/components/appCatalog/modules/FDC3.js.map +1 -1
  119. package/react/components/appCatalog/stores/appStore.js +1 -0
  120. package/react/components/appCatalog/stores/appStore.js.map +1 -1
  121. package/react/components/appCatalog/stores/storeActions.d.ts +91 -0
  122. package/react/components/appCatalog/stores/storeActions.js +116 -1
  123. package/react/components/appCatalog/stores/storeActions.js.map +1 -1
  124. package/react/components/common/Checkbox.d.ts +1 -0
  125. package/react/components/common/Checkbox.js +2 -2
  126. package/react/components/common/Checkbox.js.map +1 -1
  127. package/react/components/common/ColorPicker.d.ts +5 -0
  128. package/react/components/common/ColorPicker.js +40 -0
  129. package/react/components/common/ColorPicker.js.map +1 -1
  130. package/react/components/common/DropZone.d.ts +11 -0
  131. package/react/components/common/DropZone.js +21 -1
  132. package/react/components/common/DropZone.js.map +1 -1
  133. package/react/components/common/DropdownButton.d.ts +4 -0
  134. package/react/components/common/DropdownButton.js +4 -0
  135. package/react/components/common/DropdownButton.js.map +1 -1
  136. package/react/components/common/ErrorBoundary.d.ts +18 -0
  137. package/react/components/common/ErrorBoundary.js +21 -0
  138. package/react/components/common/ErrorBoundary.js.map +1 -1
  139. package/react/components/common/FileInput.d.ts +8 -1
  140. package/react/components/common/FileInput.js +19 -4
  141. package/react/components/common/FileInput.js.map +1 -1
  142. package/react/components/common/FinsembleIcon.d.ts +10 -0
  143. package/react/components/common/FinsembleIcon.js +51 -2
  144. package/react/components/common/FinsembleIcon.js.map +1 -1
  145. package/react/components/common/FinsembleSelect.js +5 -1
  146. package/react/components/common/FinsembleSelect.js.map +1 -1
  147. package/react/components/common/FinsembleToggleButtonBar.js +1 -1
  148. package/react/components/common/FinsembleToggleButtonBar.js.map +1 -1
  149. package/react/components/common/InputTable.d.ts +7 -0
  150. package/react/components/common/InputTable.js +7 -0
  151. package/react/components/common/InputTable.js.map +1 -1
  152. package/react/components/common/Tab.js +3 -0
  153. package/react/components/common/Tab.js.map +1 -1
  154. package/react/components/common/TimeSelect.js +24 -0
  155. package/react/components/common/TimeSelect.js.map +1 -1
  156. package/react/components/common/Tooltip.js +2 -0
  157. package/react/components/common/Tooltip.js.map +1 -1
  158. package/react/components/common/css/accordion.css +9 -6
  159. package/react/components/common/css/application-edit-page.css +39 -44
  160. package/react/components/common/css/button.css +10 -5
  161. package/react/components/common/css/color-picker.css +3 -3
  162. package/react/components/common/css/drop-zone.css +2 -6
  163. package/react/components/common/css/file-input.css +5 -5
  164. package/react/components/common/css/header.css +3 -2
  165. package/react/components/common/css/icon.css +1 -1
  166. package/react/components/common/css/loading-spinner.css +7 -12
  167. package/react/components/common/css/selector.css +4 -4
  168. package/react/components/common/css/styles.css +22 -16
  169. package/react/components/common/css/tab.css +8 -8
  170. package/react/components/common/css/time-select.css +1 -0
  171. package/react/components/common/css/toggle.css +4 -4
  172. package/react/components/common/css/tooltip.css +2 -3
  173. package/react/components/common/file_helpers.js +2 -0
  174. package/react/components/common/file_helpers.js.map +1 -1
  175. package/react/components/common/helpers.js +1 -0
  176. package/react/components/common/helpers.js.map +1 -1
  177. package/react/components/common/stories/ColorPicker.stories.js +3 -0
  178. package/react/components/common/stories/ColorPicker.stories.js.map +1 -1
  179. package/react/components/common/stories/FileInput.stories.d.ts +3 -1
  180. package/react/components/common/stories/FileInput.stories.js +12 -0
  181. package/react/components/common/stories/FileInput.stories.js.map +1 -1
  182. package/react/components/common/tests/Accordion.spec.js +6 -0
  183. package/react/components/common/tests/Accordion.spec.js.map +1 -1
  184. package/react/components/common/tests/Checkbox.spec.js +1 -0
  185. package/react/components/common/tests/Checkbox.spec.js.map +1 -1
  186. package/react/components/common/tests/ColorPicker.spec.js +6 -0
  187. package/react/components/common/tests/ColorPicker.spec.js.map +1 -1
  188. package/react/components/common/tests/DropZone.spec.js +1 -0
  189. package/react/components/common/tests/DropZone.spec.js.map +1 -1
  190. package/react/components/common/tests/FileInput.spec.js +22 -0
  191. package/react/components/common/tests/FileInput.spec.js.map +1 -1
  192. package/react/components/common/tests/FinsembleSelect.spec.js +1 -0
  193. package/react/components/common/tests/FinsembleSelect.spec.js.map +1 -1
  194. package/react/components/common/tests/FinsembleToggle.spec.js +1 -0
  195. package/react/components/common/tests/FinsembleToggle.spec.js.map +1 -1
  196. package/react/components/common/tests/FinsembleToggleButtonBar.spec.js +1 -0
  197. package/react/components/common/tests/FinsembleToggleButtonBar.spec.js.map +1 -1
  198. package/react/components/common/tests/TimeSelect.spec.js +4 -0
  199. package/react/components/common/tests/TimeSelect.spec.js.map +1 -1
  200. package/react/components/common/tests/Tooltip.spec.js +16 -0
  201. package/react/components/common/tests/Tooltip.spec.js.map +1 -1
  202. package/react/components/favorites/FavoriteMaker.d.ts +8 -0
  203. package/react/components/favorites/FavoriteMaker.js +9 -0
  204. package/react/components/favorites/FavoriteMaker.js.map +1 -1
  205. package/react/components/favorites/FavoritesShell.d.ts +4 -0
  206. package/react/components/favorites/FavoritesShell.js +13 -1
  207. package/react/components/favorites/FavoritesShell.js.map +1 -1
  208. package/react/components/favorites/FavoritesShell.spec.js +3 -0
  209. package/react/components/favorites/FavoritesShell.spec.js.map +1 -1
  210. package/react/components/fdc3Resolver/ResolverContainer.js +8 -0
  211. package/react/components/fdc3Resolver/ResolverContainer.js.map +1 -1
  212. package/react/components/fdc3Resolver/ResolverDialog.css +16 -3
  213. package/react/components/fdc3Resolver/ResolverDialog.js +7 -2
  214. package/react/components/fdc3Resolver/ResolverDialog.js.map +1 -1
  215. package/react/components/fdc3Resolver/ResolverDialog.spec.js +3 -2
  216. package/react/components/fdc3Resolver/ResolverDialog.spec.js.map +1 -1
  217. package/react/components/fdc3Resolver/ResolverDialog.stories.js +2 -0
  218. package/react/components/fdc3Resolver/ResolverDialog.stories.js.map +1 -1
  219. package/react/components/icon/Icon.d.ts +13 -0
  220. package/react/components/icon/Icon.js +34 -0
  221. package/react/components/icon/Icon.js.map +1 -1
  222. package/react/components/legacyControls/FinsembleDialog.d.ts +4 -0
  223. package/react/components/legacyControls/FinsembleDialog.js +15 -0
  224. package/react/components/legacyControls/FinsembleDialog.js.map +1 -1
  225. package/react/components/legacyControls/FinsembleDialogButton.d.ts +3 -0
  226. package/react/components/legacyControls/FinsembleDialogButton.js +6 -1
  227. package/react/components/legacyControls/FinsembleDialogButton.js.map +1 -1
  228. package/react/components/legacyControls/FinsembleDialogQuestion.d.ts +7 -0
  229. package/react/components/legacyControls/FinsembleDialogQuestion.js +7 -0
  230. package/react/components/legacyControls/FinsembleDialogQuestion.js.map +1 -1
  231. package/react/components/legacyControls/FinsembleDialogTextInput.d.ts +3 -0
  232. package/react/components/legacyControls/FinsembleDialogTextInput.js +14 -0
  233. package/react/components/legacyControls/FinsembleDialogTextInput.js.map +1 -1
  234. package/react/components/legacyControls/FinsembleDnDContext.d.ts +19 -0
  235. package/react/components/legacyControls/FinsembleDnDContext.js +126 -1
  236. package/react/components/legacyControls/FinsembleDnDContext.js.map +1 -1
  237. package/react/components/legacyControls/FinsembleDraggable.d.ts +3 -0
  238. package/react/components/legacyControls/FinsembleDraggable.js +3 -0
  239. package/react/components/legacyControls/FinsembleDraggable.js.map +1 -1
  240. package/react/components/legacyControls/FinsembleHoverDetector.d.ts +15 -0
  241. package/react/components/legacyControls/FinsembleHoverDetector.js +26 -1
  242. package/react/components/legacyControls/FinsembleHoverDetector.js.map +1 -1
  243. package/react/components/legacyControls/FinsembleMenuSection.d.ts +4 -0
  244. package/react/components/legacyControls/FinsembleMenuSection.js +38 -0
  245. package/react/components/legacyControls/FinsembleMenuSection.js.map +1 -1
  246. package/react/components/legacyControls/tests/FinsembleDialogButton.spec.js +1 -0
  247. package/react/components/legacyControls/tests/FinsembleDialogButton.spec.js.map +1 -1
  248. package/react/components/legacyControls/tests/FinsembleDialogTextInput.spec.js +1 -0
  249. package/react/components/legacyControls/tests/FinsembleDialogTextInput.spec.js.map +1 -1
  250. package/react/components/linker/LinkerMenu.d.ts +3 -0
  251. package/react/components/linker/LinkerMenu.js +21 -0
  252. package/react/components/linker/LinkerMenu.js.map +1 -1
  253. package/react/components/linker/LinkerMenuDeprecated.d.ts +3 -0
  254. package/react/components/linker/LinkerMenuDeprecated.js +9 -0
  255. package/react/components/linker/LinkerMenuDeprecated.js.map +1 -1
  256. package/react/components/menu/Menu.d.ts +15 -0
  257. package/react/components/menu/Menu.js +15 -0
  258. package/react/components/menu/Menu.js.map +1 -1
  259. package/react/components/menu/MenuAutoResizer.d.ts +7 -0
  260. package/react/components/menu/MenuAutoResizer.js +27 -0
  261. package/react/components/menu/MenuAutoResizer.js.map +1 -1
  262. package/react/components/menu/MenuContent.d.ts +4 -0
  263. package/react/components/menu/MenuContent.js +4 -0
  264. package/react/components/menu/MenuContent.js.map +1 -1
  265. package/react/components/menu/MenuHotKey.d.ts +14 -0
  266. package/react/components/menu/MenuHotKey.js +15 -0
  267. package/react/components/menu/MenuHotKey.js.map +1 -1
  268. package/react/components/menu/MenuItem.d.ts +8 -0
  269. package/react/components/menu/MenuItem.js +13 -2
  270. package/react/components/menu/MenuItem.js.map +1 -1
  271. package/react/components/menu/MenuPortal.js +112 -2
  272. package/react/components/menu/MenuPortal.js.map +1 -1
  273. package/react/components/menu/MenuShell.d.ts +16 -0
  274. package/react/components/menu/MenuShell.js +26 -0
  275. package/react/components/menu/MenuShell.js.map +1 -1
  276. package/react/components/menu/MenuToggle.d.ts +3 -0
  277. package/react/components/menu/MenuToggle.js +3 -0
  278. package/react/components/menu/MenuToggle.js.map +1 -1
  279. package/react/components/menu/keyboardNavigation.d.ts +12 -0
  280. package/react/components/menu/keyboardNavigation.js +55 -0
  281. package/react/components/menu/keyboardNavigation.js.map +1 -1
  282. package/react/components/menu/menuContext.d.ts +6 -0
  283. package/react/components/menu/menuContext.js +6 -0
  284. package/react/components/menu/menuContext.js.map +1 -1
  285. package/react/components/menu/menuHelpers.d.ts +22 -0
  286. package/react/components/menu/menuHelpers.js +58 -1
  287. package/react/components/menu/menuHelpers.js.map +1 -1
  288. package/react/components/notifications/components/drawer/DrawerControls.js +8 -0
  289. package/react/components/notifications/components/drawer/DrawerControls.js.map +1 -1
  290. package/react/components/notifications/components/drawer/DrawerHeader.js +5 -0
  291. package/react/components/notifications/components/drawer/DrawerHeader.js.map +1 -1
  292. package/react/components/notifications/components/notificationsCenter/NotificationsCenter.js +18 -0
  293. package/react/components/notifications/components/notificationsCenter/NotificationsCenter.js.map +1 -1
  294. package/react/components/notifications/components/notificationsToasts/NotificationsToasts.js +3 -0
  295. package/react/components/notifications/components/notificationsToasts/NotificationsToasts.js.map +1 -1
  296. package/react/components/notifications/components/shared/CheckButton.js +1 -1
  297. package/react/components/notifications/components/shared/CheckButton.js.map +1 -1
  298. package/react/components/notifications/components/shared/NotificationCardShell.d.ts +9 -0
  299. package/react/components/notifications/components/shared/NotificationCardShell.js +13 -6
  300. package/react/components/notifications/components/shared/NotificationCardShell.js.map +1 -1
  301. package/react/components/notifications/components/shared/OverflowMenu.d.ts +4 -0
  302. package/react/components/notifications/components/shared/OverflowMenu.js +16 -2
  303. package/react/components/notifications/components/shared/OverflowMenu.js.map +1 -1
  304. package/react/components/notifications/components/views/CardView.js +3 -0
  305. package/react/components/notifications/components/views/CardView.js.map +1 -1
  306. package/react/components/notifications/components/views/ListView.js +8 -0
  307. package/react/components/notifications/components/views/ListView.js.map +1 -1
  308. package/react/components/notifications/notificationsContext.d.ts +4 -0
  309. package/react/components/notifications/notificationsContext.js +4 -0
  310. package/react/components/notifications/notificationsContext.js.map +1 -1
  311. package/react/components/notifications/types.d.ts +3 -0
  312. package/react/components/notifications/utils.d.ts +4 -0
  313. package/react/components/notifications/utils.js +4 -0
  314. package/react/components/notifications/utils.js.map +1 -1
  315. package/react/components/processMonitor/ProcessMonitor.d.ts +3 -0
  316. package/react/components/processMonitor/ProcessMonitor.js +17 -2
  317. package/react/components/processMonitor/ProcessMonitor.js.map +1 -1
  318. package/react/components/processMonitor/components/ChildWindow.d.ts +3 -0
  319. package/react/components/processMonitor/components/ChildWindow.js +5 -0
  320. package/react/components/processMonitor/components/ChildWindow.js.map +1 -1
  321. package/react/components/processMonitor/components/ListHeader.d.ts +5 -0
  322. package/react/components/processMonitor/components/ListHeader.js +7 -0
  323. package/react/components/processMonitor/components/ListHeader.js.map +1 -1
  324. package/react/components/processMonitor/components/ProcessStatistics.js +12 -1
  325. package/react/components/processMonitor/components/ProcessStatistics.js.map +1 -1
  326. package/react/components/processMonitor/constants.js +6 -0
  327. package/react/components/processMonitor/constants.js.map +1 -1
  328. package/react/components/processMonitor/helpers.d.ts +13 -0
  329. package/react/components/processMonitor/helpers.js +23 -3
  330. package/react/components/processMonitor/helpers.js.map +1 -1
  331. package/react/components/processMonitor/stores/ProcessMonitorStore.d.ts +39 -0
  332. package/react/components/processMonitor/stores/ProcessMonitorStore.js +50 -0
  333. package/react/components/processMonitor/stores/ProcessMonitorStore.js.map +1 -1
  334. package/react/components/quickComponentForm/QuickComponentForm.d.ts +3 -0
  335. package/react/components/quickComponentForm/QuickComponentForm.js +20 -0
  336. package/react/components/quickComponentForm/QuickComponentForm.js.map +1 -1
  337. package/react/components/quickComponentForm/quickComponent.css +1 -1
  338. package/react/components/sdd/AddApp.d.ts +4 -2
  339. package/react/components/sdd/AddApp.js +57 -49
  340. package/react/components/sdd/AddApp.js.map +1 -1
  341. package/react/components/sdd/AppEditAccess.js +8 -0
  342. package/react/components/sdd/AppEditAccess.js.map +1 -1
  343. package/react/components/sdd/AppEditPage.d.ts +2 -1
  344. package/react/components/sdd/AppEditPage.js +148 -361
  345. package/react/components/sdd/AppEditPage.js.map +1 -1
  346. package/react/components/sdd/Appearance.css +1 -1
  347. package/react/components/sdd/Appearance.js +3 -0
  348. package/react/components/sdd/Appearance.js.map +1 -1
  349. package/react/components/sdd/Application.js +39 -7
  350. package/react/components/sdd/Application.js.map +1 -1
  351. package/react/components/sdd/Applications.js +89 -13
  352. package/react/components/sdd/Applications.js.map +1 -1
  353. package/react/components/sdd/AssetsPage.css +3 -3
  354. package/react/components/sdd/EditPreload.js +10 -0
  355. package/react/components/sdd/EditPreload.js.map +1 -1
  356. package/react/components/sdd/ExportCloud.js +4 -0
  357. package/react/components/sdd/ExportCloud.js.map +1 -1
  358. package/react/components/sdd/Publish.js +2 -0
  359. package/react/components/sdd/Publish.js.map +1 -1
  360. package/react/components/sdd/PublishProgress.js +11 -1
  361. package/react/components/sdd/PublishProgress.js.map +1 -1
  362. package/react/components/sdd/SmartDesktopDesigner.js +17 -0
  363. package/react/components/sdd/SmartDesktopDesigner.js.map +1 -1
  364. package/react/components/sdd/ThemePage.css +6 -23
  365. package/react/components/sdd/ThemePage.js +1 -1
  366. package/react/components/sdd/ThemePage.js.map +1 -1
  367. package/react/components/sdd/Themes.js +2 -0
  368. package/react/components/sdd/Themes.js.map +1 -1
  369. package/react/components/sdd/Toolbar.js +7 -0
  370. package/react/components/sdd/Toolbar.js.map +1 -1
  371. package/react/components/sdd/appEditPage/Behavior.d.ts +34 -0
  372. package/react/components/sdd/appEditPage/Behavior.js +134 -0
  373. package/react/components/sdd/appEditPage/Behavior.js.map +1 -0
  374. package/react/components/sdd/appEditPage/Component.d.ts +22 -0
  375. package/react/components/sdd/appEditPage/Component.js +76 -0
  376. package/react/components/sdd/appEditPage/Component.js.map +1 -0
  377. package/react/components/sdd/appEditPage/DebugToolkit.d.ts +9 -0
  378. package/react/components/sdd/appEditPage/DebugToolkit.js +20 -0
  379. package/react/components/sdd/appEditPage/DebugToolkit.js.map +1 -0
  380. package/react/components/sdd/appEditPage/Interop.d.ts +10 -0
  381. package/react/components/sdd/appEditPage/Interop.js +40 -0
  382. package/react/components/sdd/appEditPage/Interop.js.map +1 -0
  383. package/react/components/sdd/appEditPage/Position.d.ts +18 -0
  384. package/react/components/sdd/appEditPage/Position.js +72 -0
  385. package/react/components/sdd/appEditPage/Position.js.map +1 -0
  386. package/react/components/sdd/appEditPage/Preloads.d.ts +9 -0
  387. package/react/components/sdd/appEditPage/Preloads.js +16 -0
  388. package/react/components/sdd/appEditPage/Preloads.js.map +1 -0
  389. package/react/components/sdd/appEditPage/SelectConnect.d.ts +15 -0
  390. package/react/components/sdd/appEditPage/SelectConnect.js +28 -0
  391. package/react/components/sdd/appEditPage/SelectConnect.js.map +1 -0
  392. package/react/components/sdd/appEditPage/Workspace.d.ts +12 -0
  393. package/react/components/sdd/appEditPage/Workspace.js +30 -0
  394. package/react/components/sdd/appEditPage/Workspace.js.map +1 -0
  395. package/react/components/sdd/common/getCSSVars.js +7 -2
  396. package/react/components/sdd/common/getCSSVars.js.map +1 -1
  397. package/react/components/sdd/common/setPreloadDefaults.js +4 -0
  398. package/react/components/sdd/common/setPreloadDefaults.js.map +1 -1
  399. package/react/components/sdd/css/addApp.css +18 -5
  400. package/react/components/sdd/css/appearance.css +6 -0
  401. package/react/components/sdd/css/applications.css +27 -14
  402. package/react/components/sdd/css/authentication.css +7 -6
  403. package/react/components/sdd/css/buttons.css +1 -1
  404. package/react/components/sdd/css/export.css +5 -3
  405. package/react/components/sdd/css/getting-started.css +2 -2
  406. package/react/components/sdd/css/nav.css +8 -11
  407. package/react/components/sdd/css/project-header.css +5 -7
  408. package/react/components/sdd/css/styles.css +29 -23
  409. package/react/components/sdd/css/views.css +4 -3
  410. package/react/components/sdd/fixtures/apps.js +12 -0
  411. package/react/components/sdd/fixtures/apps.js.map +1 -1
  412. package/react/components/sdd/fixtures/configTemplate.js +1 -0
  413. package/react/components/sdd/fixtures/configTemplate.js.map +1 -1
  414. package/react/components/sdd/fixtures/publishProgress.js +40 -0
  415. package/react/components/sdd/fixtures/publishProgress.js.map +1 -1
  416. package/react/components/sdd/sdd_helpers.d.ts +6 -0
  417. package/react/components/sdd/sdd_helpers.js +6 -0
  418. package/react/components/sdd/sdd_helpers.js.map +1 -1
  419. package/react/components/sdd/smartDesktopClient.d.ts +303 -0
  420. package/react/components/sdd/smartDesktopClient.js +334 -1
  421. package/react/components/sdd/smartDesktopClient.js.map +1 -1
  422. package/react/components/sdd/smartDesktopClient.spec.js +5 -2
  423. package/react/components/sdd/smartDesktopClient.spec.js.map +1 -1
  424. package/react/components/sdd/stories/AddApp.stories.d.ts +2 -1
  425. package/react/components/sdd/stories/AddApp.stories.js +8 -0
  426. package/react/components/sdd/stories/AddApp.stories.js.map +1 -1
  427. package/react/components/sdd/stories/AppEditPage.stories.d.ts +3 -1
  428. package/react/components/sdd/stories/AppEditPage.stories.js +3 -0
  429. package/react/components/sdd/stories/AppEditPage.stories.js.map +1 -1
  430. package/react/components/sdd/stories/Appearance.stories.js +1 -0
  431. package/react/components/sdd/stories/Appearance.stories.js.map +1 -1
  432. package/react/components/sdd/tests/AddApp.spec.js +40 -3
  433. package/react/components/sdd/tests/AddApp.spec.js.map +1 -1
  434. package/react/components/sdd/tests/AppEditPage.spec.js +16 -0
  435. package/react/components/sdd/tests/AppEditPage.spec.js.map +1 -1
  436. package/react/components/sdd/tests/Application.spec.js +33 -438
  437. package/react/components/sdd/tests/Application.spec.js.map +1 -1
  438. package/react/components/sdd/tests/Applications.spec.d.ts +1 -1
  439. package/react/components/sdd/tests/Applications.spec.js +29 -5
  440. package/react/components/sdd/tests/Applications.spec.js.map +1 -1
  441. package/react/components/sdd/tests/Authentication.spec.js +7 -0
  442. package/react/components/sdd/tests/Authentication.spec.js.map +1 -1
  443. package/react/components/sdd/tests/ContentHeader.spec.js +2 -0
  444. package/react/components/sdd/tests/ContentHeader.spec.js.map +1 -1
  445. package/react/components/sdd/tests/EditPreload.spec.js +13 -0
  446. package/react/components/sdd/tests/EditPreload.spec.js.map +1 -1
  447. package/react/components/sdd/tests/Export.spec.js +2 -1
  448. package/react/components/sdd/tests/Export.spec.js.map +1 -1
  449. package/react/components/sdd/tests/ItemList.spec.js +4 -0
  450. package/react/components/sdd/tests/ItemList.spec.js.map +1 -1
  451. package/react/components/sdd/tests/OptionalSettingsView.spec.js +29 -0
  452. package/react/components/sdd/tests/OptionalSettingsView.spec.js.map +1 -1
  453. package/react/components/sdd/tests/ProjectErrors.spec.js +2 -0
  454. package/react/components/sdd/tests/ProjectErrors.spec.js.map +1 -1
  455. package/react/components/sdd/tests/Themes.spec.js +1 -1
  456. package/react/components/sdd/tests/Themes.spec.js.map +1 -1
  457. package/react/components/sdd/tests/Toolbar.spec.js +53 -0
  458. package/react/components/sdd/tests/Toolbar.spec.js.map +1 -1
  459. package/react/components/sdd/tests/a11y_helper.js +8 -0
  460. package/react/components/sdd/tests/a11y_helper.js.map +1 -1
  461. package/react/components/search/Highlight.d.ts +6 -0
  462. package/react/components/search/Highlight.js +19 -0
  463. package/react/components/search/Highlight.js.map +1 -1
  464. package/react/components/search/SearchBestMatch.d.ts +4 -0
  465. package/react/components/search/SearchBestMatch.js +11 -0
  466. package/react/components/search/SearchBestMatch.js.map +1 -1
  467. package/react/components/search/SearchInput.d.ts +5 -0
  468. package/react/components/search/SearchInput.js +6 -0
  469. package/react/components/search/SearchInput.js.map +1 -1
  470. package/react/components/search/SearchProviderResults.js +2 -0
  471. package/react/components/search/SearchProviderResults.js.map +1 -1
  472. package/react/components/search/SearchResult.js +6 -0
  473. package/react/components/search/SearchResult.js.map +1 -1
  474. package/react/components/search/SearchResult.spec.js +7 -0
  475. package/react/components/search/SearchResult.spec.js.map +1 -1
  476. package/react/components/search/SearchResult.stories.js +4 -0
  477. package/react/components/search/SearchResult.stories.js.map +1 -1
  478. package/react/components/search/SearchResults.js +5 -1
  479. package/react/components/search/SearchResults.js.map +1 -1
  480. package/react/components/search/SearchResults.spec.js +7 -0
  481. package/react/components/search/SearchResults.spec.js.map +1 -1
  482. package/react/components/shared/Animate.d.ts +5 -0
  483. package/react/components/shared/Animate.js +12 -1
  484. package/react/components/shared/Animate.js.map +1 -1
  485. package/react/components/shared/DefaultDropdownButton.js +9 -0
  486. package/react/components/shared/DefaultDropdownButton.js.map +1 -1
  487. package/react/components/shared/Tag.d.ts +0 -4
  488. package/react/components/shared/Tag.js +4 -0
  489. package/react/components/shared/Tag.js.map +1 -1
  490. package/react/components/shared/TagsMenu.d.ts +6 -0
  491. package/react/components/shared/TagsMenu.js +7 -0
  492. package/react/components/shared/TagsMenu.js.map +1 -1
  493. package/react/components/shared/addProtocolToValidURL.d.ts +6 -0
  494. package/react/components/shared/addProtocolToValidURL.js +6 -0
  495. package/react/components/shared/addProtocolToValidURL.js.map +1 -1
  496. package/react/components/shared/openQuitConfirmationDialog.d.ts +1 -1
  497. package/react/components/shared/openQuitConfirmationDialog.js +4 -4
  498. package/react/components/shared/openQuitConfirmationDialog.js.map +1 -1
  499. package/react/components/shared/tests/addProtocolToValidURL.spec.js +1 -0
  500. package/react/components/shared/tests/addProtocolToValidURL.spec.js.map +1 -1
  501. package/react/components/shared/validateURL.d.ts +18 -0
  502. package/react/components/shared/validateURL.js +24 -5
  503. package/react/components/shared/validateURL.js.map +1 -1
  504. package/react/components/singleInputDialog/SingleInputDialog.css +1 -1
  505. package/react/components/singleInputDialog/SingleInputDialog.d.ts +3 -0
  506. package/react/components/singleInputDialog/SingleInputDialog.js +44 -0
  507. package/react/components/singleInputDialog/SingleInputDialog.js.map +1 -1
  508. package/react/components/smartDesktopDesigner/SmartDesktopDesigner.js +6 -0
  509. package/react/components/smartDesktopDesigner/SmartDesktopDesigner.js.map +1 -1
  510. package/react/components/system/System.d.ts +22 -0
  511. package/react/components/system/System.js +23 -1
  512. package/react/components/system/System.js.map +1 -1
  513. package/react/components/system/System.stories.js +1 -0
  514. package/react/components/system/System.stories.js.map +1 -1
  515. package/react/components/system/SystemTrayComponentShell.d.ts +6 -0
  516. package/react/components/system/SystemTrayComponentShell.js +9 -0
  517. package/react/components/system/SystemTrayComponentShell.js.map +1 -1
  518. package/react/components/toolbar/AutoArrange.d.ts +5 -0
  519. package/react/components/toolbar/AutoArrange.js +8 -1
  520. package/react/components/toolbar/AutoArrange.js.map +1 -1
  521. package/react/components/toolbar/AutoArrange.spec.js +1 -0
  522. package/react/components/toolbar/AutoArrange.spec.js.map +1 -1
  523. package/react/components/toolbar/AutoArrange.stories.js +1 -0
  524. package/react/components/toolbar/AutoArrange.stories.js.map +1 -1
  525. package/react/components/toolbar/DragHandle.d.ts +4 -0
  526. package/react/components/toolbar/DragHandle.js +11 -0
  527. package/react/components/toolbar/DragHandle.js.map +1 -1
  528. package/react/components/toolbar/DragHandle.spec.js +1 -0
  529. package/react/components/toolbar/DragHandle.spec.js.map +1 -1
  530. package/react/components/toolbar/DragHandle.stories.js +1 -0
  531. package/react/components/toolbar/DragHandle.stories.js.map +1 -1
  532. package/react/components/toolbar/MinimizeAll.d.ts +4 -0
  533. package/react/components/toolbar/MinimizeAll.js +7 -1
  534. package/react/components/toolbar/MinimizeAll.js.map +1 -1
  535. package/react/components/toolbar/MinimizeAll.spec.js +1 -0
  536. package/react/components/toolbar/MinimizeAll.spec.js.map +1 -1
  537. package/react/components/toolbar/MinimizeAll.stories.js +1 -0
  538. package/react/components/toolbar/MinimizeAll.stories.js.map +1 -1
  539. package/react/components/toolbar/NotificationControl.d.ts +5 -0
  540. package/react/components/toolbar/NotificationControl.js +8 -1
  541. package/react/components/toolbar/NotificationControl.js.map +1 -1
  542. package/react/components/toolbar/RevealAll.d.ts +4 -0
  543. package/react/components/toolbar/RevealAll.js +7 -1
  544. package/react/components/toolbar/RevealAll.js.map +1 -1
  545. package/react/components/toolbar/RevealAll.spec.js +1 -0
  546. package/react/components/toolbar/RevealAll.spec.js.map +1 -1
  547. package/react/components/toolbar/RevealAll.stories.js +1 -0
  548. package/react/components/toolbar/RevealAll.stories.js.map +1 -1
  549. package/react/components/toolbar/SddButton.d.ts +4 -0
  550. package/react/components/toolbar/SddButton.js +4 -0
  551. package/react/components/toolbar/SddButton.js.map +1 -1
  552. package/react/components/toolbar/ToolbarIcon.d.ts +4 -0
  553. package/react/components/toolbar/ToolbarIcon.js +4 -0
  554. package/react/components/toolbar/ToolbarIcon.js.map +1 -1
  555. package/react/components/toolbar/ToolbarSection.d.ts +7 -0
  556. package/react/components/toolbar/ToolbarSection.js +19 -1
  557. package/react/components/toolbar/ToolbarSection.js.map +1 -1
  558. package/react/components/toolbar/ToolbarShell.d.ts +5 -0
  559. package/react/components/toolbar/ToolbarShell.js +7 -0
  560. package/react/components/toolbar/ToolbarShell.js.map +1 -1
  561. package/react/components/toolbar/advancedAppLauncher/AdvancedAppLauncher.d.ts +16 -0
  562. package/react/components/toolbar/advancedAppLauncher/AdvancedAppLauncher.js +20 -0
  563. package/react/components/toolbar/advancedAppLauncher/AdvancedAppLauncher.js.map +1 -1
  564. package/react/components/toolbar/advancedAppLauncher/components/AddNewAppForm.d.ts +52 -0
  565. package/react/components/toolbar/advancedAppLauncher/components/AddNewAppForm.js +58 -0
  566. package/react/components/toolbar/advancedAppLauncher/components/AddNewAppForm.js.map +1 -1
  567. package/react/components/toolbar/advancedAppLauncher/components/AddNewFolder.d.ts +5 -0
  568. package/react/components/toolbar/advancedAppLauncher/components/AddNewFolder.js +5 -0
  569. package/react/components/toolbar/advancedAppLauncher/components/AddNewFolder.js.map +1 -1
  570. package/react/components/toolbar/advancedAppLauncher/components/AppActionsMenu.d.ts +27 -0
  571. package/react/components/toolbar/advancedAppLauncher/components/AppActionsMenu.js +49 -0
  572. package/react/components/toolbar/advancedAppLauncher/components/AppActionsMenu.js.map +1 -1
  573. package/react/components/toolbar/advancedAppLauncher/components/AppDefinition.d.ts +13 -0
  574. package/react/components/toolbar/advancedAppLauncher/components/AppDefinition.js +14 -0
  575. package/react/components/toolbar/advancedAppLauncher/components/AppDefinition.js.map +1 -1
  576. package/react/components/toolbar/advancedAppLauncher/components/Content.d.ts +5 -0
  577. package/react/components/toolbar/advancedAppLauncher/components/Content.js +19 -0
  578. package/react/components/toolbar/advancedAppLauncher/components/Content.js.map +1 -1
  579. package/react/components/toolbar/advancedAppLauncher/components/FilterSort.d.ts +4 -0
  580. package/react/components/toolbar/advancedAppLauncher/components/FilterSort.js +4 -0
  581. package/react/components/toolbar/advancedAppLauncher/components/FilterSort.js.map +1 -1
  582. package/react/components/toolbar/advancedAppLauncher/components/FoldersList.d.ts +16 -0
  583. package/react/components/toolbar/advancedAppLauncher/components/FoldersList.js +39 -0
  584. package/react/components/toolbar/advancedAppLauncher/components/FoldersList.js.map +1 -1
  585. package/react/components/toolbar/advancedAppLauncher/components/LeftNavBottomLinks.d.ts +4 -0
  586. package/react/components/toolbar/advancedAppLauncher/components/LeftNavBottomLinks.js +9 -0
  587. package/react/components/toolbar/advancedAppLauncher/components/LeftNavBottomLinks.js.map +1 -1
  588. package/react/components/toolbar/advancedAppLauncher/components/SearchBox.js +3 -0
  589. package/react/components/toolbar/advancedAppLauncher/components/SearchBox.js.map +1 -1
  590. package/react/components/toolbar/advancedAppLauncher/components/TagsMenu.d.ts +6 -0
  591. package/react/components/toolbar/advancedAppLauncher/components/TagsMenu.js +7 -0
  592. package/react/components/toolbar/advancedAppLauncher/components/TagsMenu.js.map +1 -1
  593. package/react/components/toolbar/advancedAppLauncher/components/ToggleFavoriteDropdown.d.ts +5 -0
  594. package/react/components/toolbar/advancedAppLauncher/components/ToggleFavoriteDropdown.js +5 -0
  595. package/react/components/toolbar/advancedAppLauncher/components/ToggleFavoriteDropdown.js.map +1 -1
  596. package/react/components/toolbar/advancedAppLauncher/modules/AppDirectory.d.ts +5 -0
  597. package/react/components/toolbar/advancedAppLauncher/modules/AppDirectory.js +5 -0
  598. package/react/components/toolbar/advancedAppLauncher/modules/AppDirectory.js.map +1 -1
  599. package/react/components/toolbar/advancedAppLauncher/modules/FDC3.d.ts +37 -0
  600. package/react/components/toolbar/advancedAppLauncher/modules/FDC3.js +40 -0
  601. package/react/components/toolbar/advancedAppLauncher/modules/FDC3.js.map +1 -1
  602. package/react/components/toolbar/advancedAppLauncher/stores/StoreActions.d.ts +3 -0
  603. package/react/components/toolbar/advancedAppLauncher/stores/StoreActions.js +82 -0
  604. package/react/components/toolbar/advancedAppLauncher/stores/StoreActions.js.map +1 -1
  605. package/react/components/toolbar/advancedAppLauncher/utils/sort-functions.d.ts +10 -0
  606. package/react/components/toolbar/advancedAppLauncher/utils/sort-functions.js +11 -0
  607. package/react/components/toolbar/advancedAppLauncher/utils/sort-functions.js.map +1 -1
  608. package/react/components/toolbar/appLauncher/AppLauncherMenu.d.ts +18 -0
  609. package/react/components/toolbar/appLauncher/AppLauncherMenu.js +20 -0
  610. package/react/components/toolbar/appLauncher/AppLauncherMenu.js.map +1 -1
  611. package/react/components/toolbar/appLauncher/StaticAppLauncherMenu.d.ts +9 -0
  612. package/react/components/toolbar/appLauncher/StaticAppLauncherMenu.js +12 -0
  613. package/react/components/toolbar/appLauncher/StaticAppLauncherMenu.js.map +1 -1
  614. package/react/components/toolbar/appLauncher/appLauncher.css +1 -1
  615. package/react/components/toolbar/appLauncher/components/componentList.d.ts +3 -0
  616. package/react/components/toolbar/appLauncher/components/componentList.js +17 -3
  617. package/react/components/toolbar/appLauncher/components/componentList.js.map +1 -1
  618. package/react/components/toolbar/appLauncher/stores/appLauncherStore.d.ts +6 -0
  619. package/react/components/toolbar/appLauncher/stores/appLauncherStore.js +26 -0
  620. package/react/components/toolbar/appLauncher/stores/appLauncherStore.js.map +1 -1
  621. package/react/components/toolbar/dashbar/Dashbar.js +70 -3
  622. package/react/components/toolbar/dashbar/Dashbar.js.map +1 -1
  623. package/react/components/toolbar/dashbar/DashbarItem.js +5 -0
  624. package/react/components/toolbar/dashbar/DashbarItem.js.map +1 -1
  625. package/react/components/toolbar/workspaceManagementMenu/WorkspaceManagementMenu.d.ts +7 -0
  626. package/react/components/toolbar/workspaceManagementMenu/WorkspaceManagementMenu.js +7 -0
  627. package/react/components/toolbar/workspaceManagementMenu/WorkspaceManagementMenu.js.map +1 -1
  628. package/react/components/toolbar/workspaceManagementMenu/components/Workspace.d.ts +16 -0
  629. package/react/components/toolbar/workspaceManagementMenu/components/Workspace.js +20 -0
  630. package/react/components/toolbar/workspaceManagementMenu/components/Workspace.js.map +1 -1
  631. package/react/components/toolbar/workspaceManagementMenu/components/WorkspaceActions.d.ts +26 -0
  632. package/react/components/toolbar/workspaceManagementMenu/components/WorkspaceActions.js +29 -0
  633. package/react/components/toolbar/workspaceManagementMenu/components/WorkspaceActions.js.map +1 -1
  634. package/react/components/toolbar/workspaceManagementMenu/components/WorkspaceList.d.ts +5 -0
  635. package/react/components/toolbar/workspaceManagementMenu/components/WorkspaceList.js +6 -0
  636. package/react/components/toolbar/workspaceManagementMenu/components/WorkspaceList.js.map +1 -1
  637. package/react/components/toolbar/workspaceManagementMenu/stores/workspaceManagementMenuStore.d.ts +76 -0
  638. package/react/components/toolbar/workspaceManagementMenu/stores/workspaceManagementMenuStore.js +140 -1
  639. package/react/components/toolbar/workspaceManagementMenu/stores/workspaceManagementMenuStore.js.map +1 -1
  640. package/react/components/toolbar/workspaceManagementMenu/workspaceManagementMenu.css +8 -18
  641. package/react/components/userPreferences/NotificationsPreferencesContext.d.ts +4 -0
  642. package/react/components/userPreferences/NotificationsPreferencesContext.js +4 -0
  643. package/react/components/userPreferences/NotificationsPreferencesContext.js.map +1 -1
  644. package/react/components/userPreferences/UserPreferenceTypes.d.ts +3 -0
  645. package/react/components/userPreferences/UserPreferences.d.ts +8 -0
  646. package/react/components/userPreferences/UserPreferences.js +8 -0
  647. package/react/components/userPreferences/UserPreferences.js.map +1 -1
  648. package/react/components/userPreferences/UserPreferencesBase.js +4 -0
  649. package/react/components/userPreferences/UserPreferencesBase.js.map +1 -1
  650. package/react/components/userPreferences/components/ContentSection.d.ts +5 -0
  651. package/react/components/userPreferences/components/LeftNav.d.ts +4 -0
  652. package/react/components/userPreferences/components/content/DashbarEditor.js +3 -0
  653. package/react/components/userPreferences/components/content/DashbarEditor.js.map +1 -1
  654. package/react/components/userPreferences/components/content/Notifications.js +3 -0
  655. package/react/components/userPreferences/components/content/Notifications.js.map +1 -1
  656. package/react/components/userPreferences/components/content/Workspaces.d.ts +12 -0
  657. package/react/components/userPreferences/components/content/Workspaces.js +33 -1
  658. package/react/components/userPreferences/components/content/Workspaces.js.map +1 -1
  659. package/react/components/userPreferences/components/content/notificationViews/NotificationsPreferencesHome.js +3 -0
  660. package/react/components/userPreferences/components/content/notificationViews/NotificationsPreferencesHome.js.map +1 -1
  661. package/react/components/userPreferences/components/content/notificationViews/NotificationsSourceTypes.js +3 -0
  662. package/react/components/userPreferences/components/content/notificationViews/NotificationsSourceTypes.js.map +1 -1
  663. package/react/components/userPreferences/components/content/notificationViews/NotificationsSourcesPreferences.js +3 -0
  664. package/react/components/userPreferences/components/content/notificationViews/NotificationsSourcesPreferences.js.map +1 -1
  665. package/react/components/userPreferences/components/general/ScheduledClose.js +11 -0
  666. package/react/components/userPreferences/components/general/ScheduledClose.js.map +1 -1
  667. package/react/components/userPreferences/components/workspaces/WorkspaceItem.js +3 -0
  668. package/react/components/userPreferences/components/workspaces/WorkspaceItem.js.map +1 -1
  669. package/react/components/userPreferences/stores/UserPreferencesStore.d.ts +17 -0
  670. package/react/components/userPreferences/stores/UserPreferencesStore.js +27 -0
  671. package/react/components/userPreferences/stores/UserPreferencesStore.js.map +1 -1
  672. package/react/components/userPreferences/tests/NotificationsPreferencesHome.spec.js +1 -0
  673. package/react/components/userPreferences/tests/NotificationsPreferencesHome.spec.js.map +1 -1
  674. package/react/components/userPreferences/tests/Workspace.spec.js +20 -0
  675. package/react/components/userPreferences/tests/Workspace.spec.js.map +1 -1
  676. package/react/components/windowTitleBar/WindowTitleBarShell.d.ts +124 -0
  677. package/react/components/windowTitleBar/WindowTitleBarShell.js +284 -35
  678. package/react/components/windowTitleBar/WindowTitleBarShell.js.map +1 -1
  679. package/react/components/windowTitleBar/components/center/Tab.d.ts +3 -0
  680. package/react/components/windowTitleBar/components/center/Tab.js +3 -0
  681. package/react/components/windowTitleBar/components/center/Tab.js.map +1 -1
  682. package/react/components/windowTitleBar/components/center/TabList.d.ts +90 -0
  683. package/react/components/windowTitleBar/components/center/TabList.js +170 -4
  684. package/react/components/windowTitleBar/components/center/TabList.js.map +1 -1
  685. package/react/components/windowTitleBar/components/left/LinkerButton.d.ts +9 -1
  686. package/react/components/windowTitleBar/components/left/LinkerButton.js +25 -9
  687. package/react/components/windowTitleBar/components/left/LinkerButton.js.map +1 -1
  688. package/react/components/windowTitleBar/components/left/LinkerButtonDeprecated.d.ts +47 -0
  689. package/react/components/windowTitleBar/components/left/LinkerButtonDeprecated.js +76 -1
  690. package/react/components/windowTitleBar/components/left/LinkerButtonDeprecated.js.map +1 -1
  691. package/react/components/windowTitleBar/components/left/LinkerGroups.d.ts +4 -0
  692. package/react/components/windowTitleBar/components/left/LinkerGroups.js +5 -0
  693. package/react/components/windowTitleBar/components/left/LinkerGroups.js.map +1 -1
  694. package/react/components/windowTitleBar/components/left/LinkerGroupsDeprecated.d.ts +18 -0
  695. package/react/components/windowTitleBar/components/left/LinkerGroupsDeprecated.js +49 -0
  696. package/react/components/windowTitleBar/components/left/LinkerGroupsDeprecated.js.map +1 -1
  697. package/react/components/windowTitleBar/components/left/ShareButton.d.ts +17 -0
  698. package/react/components/windowTitleBar/components/left/ShareButton.js +39 -0
  699. package/react/components/windowTitleBar/components/left/ShareButton.js.map +1 -1
  700. package/react/components/windowTitleBar/components/right/AlwaysOnTopButton.js +4 -0
  701. package/react/components/windowTitleBar/components/right/AlwaysOnTopButton.js.map +1 -1
  702. package/react/components/windowTitleBar/components/right/CloseButton.d.ts +27 -0
  703. package/react/components/windowTitleBar/components/right/CloseButton.js +27 -0
  704. package/react/components/windowTitleBar/components/right/CloseButton.js.map +1 -1
  705. package/react/components/windowTitleBar/components/right/GroupingButton.d.ts +37 -0
  706. package/react/components/windowTitleBar/components/right/GroupingButton.js +40 -0
  707. package/react/components/windowTitleBar/components/right/GroupingButton.js.map +1 -1
  708. package/react/components/windowTitleBar/components/right/MaximizeButton.d.ts +46 -0
  709. package/react/components/windowTitleBar/components/right/MaximizeButton.js +54 -0
  710. package/react/components/windowTitleBar/components/right/MaximizeButton.js.map +1 -1
  711. package/react/components/windowTitleBar/components/right/MinimizeButton.d.ts +26 -0
  712. package/react/components/windowTitleBar/components/right/MinimizeButton.js +26 -0
  713. package/react/components/windowTitleBar/components/right/MinimizeButton.js.map +1 -1
  714. package/react/components/windowTitleBar/components/windowTitle.d.ts +40 -0
  715. package/react/components/windowTitleBar/components/windowTitle.js +172 -10
  716. package/react/components/windowTitleBar/components/windowTitle.js.map +1 -1
  717. package/react/components/windowTitleBar/stores/windowTitleBarStore.d.ts +5 -0
  718. package/react/components/windowTitleBar/stores/windowTitleBarStore.js +72 -1
  719. package/react/components/windowTitleBar/stores/windowTitleBarStore.js.map +1 -1
  720. package/react/components/yesNoDialog/YesNoDialog.css +1 -1
  721. package/react/components/yesNoDialog/YesNoDialog.d.ts +3 -0
  722. package/react/components/yesNoDialog/YesNoDialog.js +63 -0
  723. package/react/components/yesNoDialog/YesNoDialog.js.map +1 -1
  724. package/react/components/yesNoDialog/YesNoDialog.spec.js +4 -0
  725. package/react/components/yesNoDialog/YesNoDialog.spec.js.map +1 -1
  726. package/react/components/yesNoDialog/timer.js +2 -0
  727. package/react/components/yesNoDialog/timer.js.map +1 -1
  728. package/react/enzymeSetup.js +5 -0
  729. package/react/enzymeSetup.js.map +1 -1
  730. package/react/hooks/useDashbar.js +10 -0
  731. package/react/hooks/useDashbar.js.map +1 -1
  732. package/react/hooks/useDeepEffect.d.ts +4 -0
  733. package/react/hooks/useDeepEffect.js +21 -0
  734. package/react/hooks/useDeepEffect.js.map +1 -1
  735. package/react/hooks/useFavorites.d.ts +15 -0
  736. package/react/hooks/useFavorites.js +3 -0
  737. package/react/hooks/useFavorites.js.map +1 -1
  738. package/react/hooks/useFavoritesShell.d.ts +4 -0
  739. package/react/hooks/useFavoritesShell.js +23 -0
  740. package/react/hooks/useFavoritesShell.js.map +1 -1
  741. package/react/hooks/useHotkey.d.ts +6 -0
  742. package/react/hooks/useHotkey.js +9 -0
  743. package/react/hooks/useHotkey.js.map +1 -1
  744. package/react/hooks/useLinker.js +14 -0
  745. package/react/hooks/useLinker.js.map +1 -1
  746. package/react/hooks/useMenu.d.ts +29 -0
  747. package/react/hooks/useMenu.js +12 -1
  748. package/react/hooks/useMenu.js.map +1 -1
  749. package/react/hooks/useNotifications.d.ts +44 -0
  750. package/react/hooks/useNotifications.js +90 -0
  751. package/react/hooks/useNotifications.js.map +1 -1
  752. package/react/hooks/useOutsideClickDetector.d.ts +3 -0
  753. package/react/hooks/useOutsideClickDetector.js +3 -0
  754. package/react/hooks/useOutsideClickDetector.js.map +1 -1
  755. package/react/hooks/usePubSub.d.ts +17 -0
  756. package/react/hooks/usePubSub.js +18 -0
  757. package/react/hooks/usePubSub.js.map +1 -1
  758. package/react/hooks/useSearch.d.ts +5 -0
  759. package/react/hooks/useSearch.js +30 -0
  760. package/react/hooks/useSearch.js.map +1 -1
  761. package/react/hooks/useToolbar.js +52 -0
  762. package/react/hooks/useToolbar.js.map +1 -1
  763. package/react/reducers/favoriteReducer.d.ts +3 -0
  764. package/react/reducers/linkerReducer.d.ts +3 -0
  765. package/react/reducers/linkerReducer.js +4 -0
  766. package/react/reducers/linkerReducer.js.map +1 -1
  767. package/react/reducers/menuReducer.d.ts +28 -0
  768. package/react/reducers/menuReducer.js +34 -0
  769. package/react/reducers/menuReducer.js.map +1 -1
  770. package/react/reducers/rootReducer.js +3 -0
  771. package/react/reducers/rootReducer.js.map +1 -1
  772. package/react/reducers/searchReducer.d.ts +7 -0
  773. package/react/reducers/searchReducer.js +6 -0
  774. package/react/reducers/searchReducer.js.map +1 -1
  775. package/react/reducers/workspaceReducer.js +1 -0
  776. package/react/reducers/workspaceReducer.js.map +1 -1
  777. package/react/store.d.ts +4 -0
  778. package/react/store.js +11 -0
  779. package/react/store.js.map +1 -1
  780. package/react/tsconfig.tsbuildinfo +1 -1
  781. package/react/types/fdc3.d.ts +2 -0
  782. package/react/types/linkerTypes.d.ts +13 -0
  783. package/react/types/linkerTypes.js +1 -0
  784. package/react/types/linkerTypes.js.map +1 -1
  785. package/react/types/smartDesktopDesignerTypes.d.ts +5 -0
  786. package/react/types/smartDesktopDesignerTypes.js.map +1 -1
  787. package/react/types/workspaceTypes.d.ts +8 -0
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/components/common/helpers.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from \"react\";\nimport { FileInputUploadCb } from \"./FileInput\";\nimport { Story } from \"@storybook/react/types-6-0\";\n\nimport { SDServerInfo } from \"../../types/smartDesktopDesignerTypes\";\nimport { Provider } from \"react-redux\";\nimport { createStore } from \"../../store\";\n\nexport const uploadFunction: FileInputUploadCb = (fileObject: File) =>\n\tnew Promise((resolve) => {\n\t\tresolve({\n\t\t\terr: \"\",\n\t\t\tpath: fileObject.name,\n\t\t});\n\t});\n\nexport const initFSBL = (windowObject?: any) => {\n\t// Poor man's global that can take any appendage\n\tconst globalAsAny: any = global;\n\n\tif (!windowObject) {\n\t\twindowObject = globalAsAny.window = {} as any;\n\t} else {\n\t\twindowObject = window;\n\n\t\tsetTimeout(() => {\n\t\t\tconst event = window.document.createEvent(\"Event\");\n\n\t\t\tevent?.initEvent(\"FSBLReady\", true, true);\n\n\t\t\twindow.dispatchEvent(event);\n\t\t});\n\t}\n\n\tglobalAsAny.FSBL = windowObject.FSBL = {\n\t\taddEventListener: (name: String, callback: () => void) => {\n\t\t\tcallback();\n\t\t},\n\t\tgetFSBLInfo: () =>\n\t\t\tnew Promise((resolve) => {\n\t\t\t\tresolve({\n\t\t\t\t\tFSBLVersion: \"1.0.0\",\n\t\t\t\t});\n\t\t\t}),\n\t\tClients: {\n\t\t\tTmpSmartDesktopClient: {\n\t\t\t\tcheckValidURL(url: string) {\n\t\t\t\t\tif (url.length === 0) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t\treturn /^https?:\\/\\/[^\\s]+$/.test(url);\n\t\t\t\t},\n\t\t\t\tcheckValidProjectName(name: string) {\n\t\t\t\t\treturn /^[a-zA-Z0-9 \\-_.]{1,}$/.test(name) && /[a-zA-Z0-9]{1,}/.test(name);\n\t\t\t\t},\n\t\t\t} as unknown,\n\t\t\tConfigClient: {\n\t\t\t\tsetPreference: () => {},\n\t\t\t\tgetValues: () => {},\n\t\t\t\tgetPreferences: () => {},\n\t\t\t},\n\t\t\tDialogManager: {\n\t\t\t\tspawnDialog: (obj1: any) => {\n\t\t\t\t\tconsole.table(obj1);\n\t\t\t\t},\n\t\t\t\tregisterDialogCallback: () => {},\n\t\t\t\trespondToOpener: () => {},\n\t\t\t},\n\t\t\tLauncherClient: {\n\t\t\t\tshowWindow: () => {},\n\t\t\t},\n\t\t\tLogger: {\n\t\t\t\tlog: () => {},\n\t\t\t\terror: () => {},\n\t\t\t\tsystem: {\n\t\t\t\t\tdebug: () => {},\n\t\t\t\t\tlog: () => {},\n\t\t\t\t\terror: () => {},\n\t\t\t\t\tverbose: () => {},\n\t\t\t\t\tdeprecated: () => {},\n\t\t\t\t},\n\t\t\t},\n\t\t\tRouterClient: {\n\t\t\t\ttransmit: () => {},\n\t\t\t\taddListener: () => {},\n\t\t\t\tsubscribe: () => {},\n\t\t\t},\n\t\t\tSearchClient: {\n\t\t\t\tinvokeItemAction: () => {},\n\t\t\t},\n\t\t\tStorageClient: {\n\t\t\t\tsave: () => {},\n\t\t\t\tclearCache: () => {},\n\t\t\t},\n\t\t\tWindowClient: {\n\t\t\t\tfitToDOM: () => {},\n\t\t\t},\n\t\t\tWorkspaceClient: {\n\t\t\t\tbringWindowsToFront: () => {},\n\t\t\t\tautoArrange: () => {},\n\t\t\t\tminimizeAll: () => {},\n\t\t\t\tactiveWorkspace: {\n\t\t\t\t\tname: \" \",\n\t\t\t\t},\n\t\t\t\tgetWorkspaceDefinition: (obj: Object, cb: Function) => {\n\t\t\t\t\tcb(null, null);\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\tonShutdown: () => {},\n\t\tSystem: {\n\t\t\tgetSDServerInfo: () =>\n\t\t\t\tnew Promise((resolve) => {\n\t\t\t\t\tresolve({} as SDServerInfo);\n\t\t\t\t}),\n\t\t},\n\t\tSystemManagerClient: {\n\t\t\tpublishCheckpointState: () => {},\n\t\t},\n\t} as any;\n\n\tglobalAsAny.FSBL.Clients = {\n\t\t...globalAsAny.FSBL.Clients,\n\t\tWindowClient: {\n\t\t\tfitToDOM: () => {},\n\t\t} as any,\n\t};\n\n\tglobalAsAny.finsembleWindow = windowObject.finsembleWindow = {\n\t\tsetAlwaysOnTop: () => {},\n\t\taddEventListener: () => {},\n\t\tremoveEventListener: () => {},\n\t};\n};\n\nexport function createStory<T>(Component: Function, args: T) {\n\tconst template: Story<T> = (props: T) => {\n\t\tinitFSBL(window);\n\n\t\treturn (\n\t\t\t<Provider store={createStore()}>\n\t\t\t\t<Component {...{ ...args, ...props }} />\n\t\t\t</Provider>\n\t\t);\n\t};\n\n\ttemplate.args = args;\n\n\treturn template;\n}\n"]}
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/components/common/helpers.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from \"react\";\nimport { FileInputUploadCb } from \"./FileInput\";\nimport { Story } from \"@storybook/react/types-6-0\";\n\nimport { SDServerInfo } from \"../../types/smartDesktopDesignerTypes\";\nimport { Provider } from \"react-redux\";\nimport { createStore } from \"../../store\";\n\nexport const uploadFunction: FileInputUploadCb = (fileObject: File) =>\n\tnew Promise((resolve) => {\n\t\tresolve({\n\t\t\terr: \"\",\n\t\t\tpath: fileObject.name,\n\t\t});\n\t});\n\nexport const initFSBL = (windowObject?: any) => {\n\t// Poor man's global that can take any appendage\n\tconst globalAsAny: any = global;\n\n\tif (!windowObject) {\n\t\twindowObject = globalAsAny.window = {} as any;\n\t} else {\n\t\twindowObject = window;\n\n\t\tsetTimeout(() => {\n\t\t\tconst event = window.document.createEvent(\"Event\");\n\n\t\t\tevent?.initEvent(\"FSBLReady\", true, true);\n\n\t\t\twindow.dispatchEvent(event);\n\t\t});\n\t}\n\n\tglobalAsAny.FSBL = windowObject.FSBL = {\n\t\taddEventListener: (name: String, callback: () => void) => {\n\t\t\tcallback();\n\t\t},\n\t\tgetFSBLInfo: () =>\n\t\t\tnew Promise((resolve) => {\n\t\t\t\tresolve({\n\t\t\t\t\tFSBLVersion: \"1.0.0\",\n\t\t\t\t});\n\t\t\t}),\n\t\tClients: {\n\t\t\tTmpSmartDesktopClient: {\n\t\t\t\tcheckValidURL(url: string) {\n\t\t\t\t\tif (url.length === 0) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t\treturn /^https?:\\/\\/[^\\s]+$/.test(url);\n\t\t\t\t},\n\t\t\t\tcheckValidProjectName(name: string) {\n\t\t\t\t\treturn /^[a-zA-Z0-9 \\-_.]{1,}$/.test(name) && /[a-zA-Z0-9]{1,}/.test(name);\n\t\t\t\t},\n\t\t\t} as unknown,\n\t\t\tConfigClient: {\n\t\t\t\tsetPreference: () => {},\n\t\t\t\tgetValues: () => {},\n\t\t\t\tgetPreferences: () => {},\n\t\t\t},\n\t\t\tDialogManager: {\n\t\t\t\tspawnDialog: (obj1: any) => {\n\t\t\t\t\tconsole.table(obj1);\n\t\t\t\t},\n\t\t\t\tregisterDialogCallback: () => {},\n\t\t\t\trespondToOpener: () => {},\n\t\t\t},\n\t\t\tLauncherClient: {\n\t\t\t\tshowWindow: () => {},\n\t\t\t},\n\t\t\tLogger: {\n\t\t\t\tlog: () => {},\n\t\t\t\terror: () => {},\n\t\t\t\tsystem: {\n\t\t\t\t\tdebug: () => {},\n\t\t\t\t\tlog: () => {},\n\t\t\t\t\terror: () => {},\n\t\t\t\t\tverbose: () => {},\n\t\t\t\t\tdeprecated: () => {},\n\t\t\t\t},\n\t\t\t},\n\t\t\tRouterClient: {\n\t\t\t\ttransmit: () => {},\n\t\t\t\taddListener: () => {},\n\t\t\t\tsubscribe: () => {},\n\t\t\t},\n\t\t\tSearchClient: {\n\t\t\t\tinvokeItemAction: () => {},\n\t\t\t},\n\t\t\tStorageClient: {\n\t\t\t\tsave: () => {},\n\t\t\t\tclearCache: () => {},\n\t\t\t},\n\t\t\tWindowClient: {\n\t\t\t\tfitToDOM: () => {},\n\t\t\t},\n\t\t\tWorkspaceClient: {\n\t\t\t\tbringWindowsToFront: () => {},\n\t\t\t\tautoArrange: () => {},\n\t\t\t\tminimizeAll: () => {},\n\t\t\t\tactiveWorkspace: {\n\t\t\t\t\tname: \" \",\n\t\t\t\t},\n\t\t\t\tgetWorkspaceDefinition: (obj: Object, cb: Function) => {\n\t\t\t\t\tcb(null, null);\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\tonShutdown: () => {},\n\t\tSystem: {\n\t\t\tgetSDServerInfo: () =>\n\t\t\t\tnew Promise((resolve) => {\n\t\t\t\t\tresolve({} as SDServerInfo);\n\t\t\t\t}),\n\t\t},\n\t\tSystemManagerClient: {\n\t\t\tpublishCheckpointState: () => {},\n\t\t},\n\t} as any;\n\n\tglobalAsAny.FSBL.Clients = {\n\t\t...globalAsAny.FSBL.Clients,\n\t\tWindowClient: {\n\t\t\tfitToDOM: () => {},\n\t\t} as any,\n\t};\n\n\tglobalAsAny.finsembleWindow = windowObject.finsembleWindow = {\n\t\tsetAlwaysOnTop: () => {},\n\t\taddEventListener: () => {},\n\t\tremoveEventListener: () => {},\n\t};\n};\n\nexport function createStory<T>(Component: Function, args: T) {\n\tconst template: Story<T> = (props: T) => {\n\t\tinitFSBL(window);\n\n\t\treturn (\n\t\t\t<Provider store={createStore()}>\n\t\t\t\t<Component {...{ ...args, ...props }} />\n\t\t\t</Provider>\n\t\t);\n\t};\n\n\ttemplate.args = args;\n\n\treturn template;\n}\n"]}
@@ -8,6 +8,9 @@ export default {
8
8
  };
9
9
  const Template = (args) => {
10
10
  var _a;
11
+ // The colorpicker was changed to not update its internal state
12
+ // but only fire the event and instead rely on props, so for the purpose of unit testing
13
+ // and storybook, let's define a mock component that synchonizes them
11
14
  const [startColor, setColor] = useState(args.startColor);
12
15
  return React.createElement(ColorPicker, { id: args.id, startColor: startColor, updateColor: (_a = args.updateColor) !== null && _a !== void 0 ? _a : setColor });
13
16
  };
@@ -1 +1 @@
1
- {"version":3,"file":"ColorPicker.stories.js","sourceRoot":"","sources":["../../../../src/components/common/stories/ColorPicker.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACxC,OAAO,EAAE,WAAW,EAAoB,MAAM,gBAAgB,CAAC;AAC/D,OAAO,mCAAmC,CAAC;AAC3C,OAAO,mBAAmB,CAAC;AAG3B,eAAe;IACd,KAAK,EAAE,oBAAoB;IAC3B,SAAS,EAAE,WAAW;CACtB,CAAC;AAEF,MAAM,QAAQ,GAA4B,CAAC,IAAsB,EAAE,EAAE;;IAIpE,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACzD,OAAO,oBAAC,WAAW,IAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,MAAA,IAAI,CAAC,WAAW,mCAAI,QAAQ,GAAI,CAAC;AACxG,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC5C,UAAU,CAAC,IAAI,GAAG;IACjB,UAAU,EAAE,EAAE;CACd,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC5C,UAAU,CAAC,IAAI,GAAG;IACjB,UAAU,EAAE,SAAS;CACrB,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC9C,YAAY,CAAC,IAAI,GAAG;IACnB,UAAU,EAAE,SAAS;CACrB,CAAC","sourcesContent":["import React, { useState } from \"react\";\nimport { ColorPicker, ColorPickerProps } from \"../ColorPicker\";\nimport \"../../../assets/css/finsemble.css\";\nimport \"../css/styles.css\";\nimport { Story } from \"@storybook/react/types-6-0\";\n\nexport default {\n\ttitle: \"Common/ColorPicker\",\n\tcomponent: ColorPicker,\n};\n\nconst Template: Story<ColorPickerProps> = (args: ColorPickerProps) => {\n\t// The colorpicker was changed to not update its internal state\n\t// but only fire the event and instead rely on props, so for the purpose of unit testing\n\t// and storybook, let's define a mock component that synchonizes them\n\tconst [startColor, setColor] = useState(args.startColor);\n\treturn <ColorPicker id={args.id} startColor={startColor} updateColor={args.updateColor ?? setColor} />;\n};\n\nexport const EmptyField = Template.bind({});\nEmptyField.args = {\n\tstartColor: \"\",\n};\n\nexport const ValidColor = Template.bind({});\nValidColor.args = {\n\tstartColor: \"#FF0000\",\n};\n\nexport const InvalidColor = Template.bind({});\nInvalidColor.args = {\n\tstartColor: \"#ZZZZZZ\",\n};\n"]}
1
+ {"version":3,"file":"ColorPicker.stories.js","sourceRoot":"","sources":["../../../../src/components/common/stories/ColorPicker.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACxC,OAAO,EAAE,WAAW,EAAoB,MAAM,gBAAgB,CAAC;AAC/D,OAAO,mCAAmC,CAAC;AAC3C,OAAO,mBAAmB,CAAC;AAG3B,eAAe;IACd,KAAK,EAAE,oBAAoB;IAC3B,SAAS,EAAE,WAAW;CACtB,CAAC;AAEF,MAAM,QAAQ,GAA4B,CAAC,IAAsB,EAAE,EAAE;;IACpE,+DAA+D;IAC/D,wFAAwF;IACxF,qEAAqE;IACrE,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACzD,OAAO,oBAAC,WAAW,IAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,MAAA,IAAI,CAAC,WAAW,mCAAI,QAAQ,GAAI,CAAC;AACxG,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC5C,UAAU,CAAC,IAAI,GAAG;IACjB,UAAU,EAAE,EAAE;CACd,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC5C,UAAU,CAAC,IAAI,GAAG;IACjB,UAAU,EAAE,SAAS;CACrB,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC9C,YAAY,CAAC,IAAI,GAAG;IACnB,UAAU,EAAE,SAAS;CACrB,CAAC","sourcesContent":["import React, { useState } from \"react\";\nimport { ColorPicker, ColorPickerProps } from \"../ColorPicker\";\nimport \"../../../assets/css/finsemble.css\";\nimport \"../css/styles.css\";\nimport { Story } from \"@storybook/react/types-6-0\";\n\nexport default {\n\ttitle: \"Common/ColorPicker\",\n\tcomponent: ColorPicker,\n};\n\nconst Template: Story<ColorPickerProps> = (args: ColorPickerProps) => {\n\t// The colorpicker was changed to not update its internal state\n\t// but only fire the event and instead rely on props, so for the purpose of unit testing\n\t// and storybook, let's define a mock component that synchonizes them\n\tconst [startColor, setColor] = useState(args.startColor);\n\treturn <ColorPicker id={args.id} startColor={startColor} updateColor={args.updateColor ?? setColor} />;\n};\n\nexport const EmptyField = Template.bind({});\nEmptyField.args = {\n\tstartColor: \"\",\n};\n\nexport const ValidColor = Template.bind({});\nValidColor.args = {\n\tstartColor: \"#FF0000\",\n};\n\nexport const InvalidColor = Template.bind({});\nInvalidColor.args = {\n\tstartColor: \"#ZZZZZZ\",\n};\n"]}
@@ -4,7 +4,7 @@ import "../../../assets/css/finsemble.css";
4
4
  import "../css/styles.css";
5
5
  declare const _default: {
6
6
  title: string;
7
- component: ({ acceptTypes, value, onSetValue, id, shouldUpload, uploadFunction, presetFile, suppressDropzone, disabled, allowClearing, }: FileInputProps) => JSX.Element;
7
+ component: ({ acceptTypes, value, onSetValue, id, shouldUpload, uploadFunction, presetFile, suppressDropzone, disabled, allowClearing, textEditable, }: FileInputProps) => JSX.Element;
8
8
  };
9
9
  export default _default;
10
10
  export declare const EmptyField: import("@storybook/react").Story<FileInputProps>;
@@ -14,3 +14,5 @@ export declare const PreFilledInvalidField: import("@storybook/react").Story<Fil
14
14
  export declare const anyField: import("@storybook/react").Story<FileInputProps>;
15
15
  export declare const hasId: import("@storybook/react").Story<FileInputProps>;
16
16
  export declare const PreFilledFieldNoClearing: import("@storybook/react").Story<FileInputProps>;
17
+ export declare const TextEditable: import("@storybook/react").Story<FileInputProps>;
18
+ export declare const TextEditablePrefilled: import("@storybook/react").Story<FileInputProps>;
@@ -44,4 +44,16 @@ export const PreFilledFieldNoClearing = createStory(FileInput, {
44
44
  uploadFunction,
45
45
  allowClearing: false,
46
46
  });
47
+ export const TextEditable = createStory(FileInput, {
48
+ acceptTypes: ["*"],
49
+ value: "",
50
+ uploadFunction,
51
+ textEditable: true,
52
+ });
53
+ export const TextEditablePrefilled = createStory(FileInput, {
54
+ acceptTypes: ["*"],
55
+ value: "%windir%/System32/mspaint.exe",
56
+ uploadFunction,
57
+ textEditable: true,
58
+ });
47
59
  //# sourceMappingURL=FileInput.stories.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FileInput.stories.js","sourceRoot":"","sources":["../../../../src/components/common/stories/FileInput.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACzD,OAAO,EAAE,SAAS,EAAkB,MAAM,cAAc,CAAC;AACzD,OAAO,mCAAmC,CAAC;AAC3C,OAAO,mBAAmB,CAAC;AAE3B,eAAe;IACd,KAAK,EAAE,kBAAkB;IACzB,SAAS,EAAE,SAAS;CACpB,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAG,WAAW,CAAiB,SAAS,EAAE;IAChE,KAAK,EAAE,EAAE;IACT,WAAW,EAAE,CAAC,WAAW,CAAC;IAC1B,cAAc;CACd,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,QAAQ,GAAG,WAAW,CAAiB,SAAS,EAAE;IAC9D,KAAK,EAAE,EAAE;IACT,WAAW,EAAE,CAAC,WAAW,CAAC;IAC1B,cAAc;IACd,QAAQ,EAAE,IAAI;CACd,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,cAAc,GAAG,WAAW,CAAiB,SAAS,EAAE;IACpE,WAAW,EAAE,CAAC,WAAW,CAAC;IAC1B,KAAK,EAAE,iBAAiB;IACxB,cAAc;CACd,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,qBAAqB,GAAG,WAAW,CAAiB,SAAS,EAAE;IAC3E,WAAW,EAAE,CAAC,WAAW,CAAC;IAC1B,KAAK,EAAE,eAAe;IACtB,cAAc;CACd,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,QAAQ,GAAG,WAAW,CAAiB,SAAS,EAAE;IAC9D,WAAW,EAAE,CAAC,GAAG,CAAC;IAClB,KAAK,EAAE,SAAS;IAChB,cAAc;CACd,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,KAAK,GAAG,WAAW,CAAiB,SAAS,EAAE;IAC3D,WAAW,EAAE,CAAC,GAAG,CAAC;IAClB,KAAK,EAAE,EAAE;IACT,cAAc;IACd,EAAE,EAAE,MAAM;CACV,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,wBAAwB,GAAG,WAAW,CAAiB,SAAS,EAAE;IAC9E,WAAW,EAAE,CAAC,WAAW,CAAC;IAC1B,KAAK,EAAE,iBAAiB;IACxB,cAAc;IACd,aAAa,EAAE,KAAK;CACpB,CAAC,CAAC","sourcesContent":["import { createStory, uploadFunction } from \"../helpers\";\nimport { FileInput, FileInputProps } from \"../FileInput\";\nimport \"../../../assets/css/finsemble.css\";\nimport \"../css/styles.css\";\n\nexport default {\n\ttitle: \"Common/FileInput\",\n\tcomponent: FileInput,\n};\n\nexport const EmptyField = createStory<FileInputProps>(FileInput, {\n\tvalue: \"\",\n\tacceptTypes: [\"image/png\"],\n\tuploadFunction,\n});\n\nexport const Disabled = createStory<FileInputProps>(FileInput, {\n\tvalue: \"\",\n\tacceptTypes: [\"image/png\"],\n\tuploadFunction,\n\tdisabled: true,\n});\n\nexport const PreFilledField = createStory<FileInputProps>(FileInput, {\n\tacceptTypes: [\"image/png\"],\n\tvalue: \"ThisIsATest.png\",\n\tuploadFunction,\n});\n\nexport const PreFilledInvalidField = createStory<FileInputProps>(FileInput, {\n\tacceptTypes: [\"image/png\"],\n\tvalue: \"MyBadPath.jpg\",\n\tuploadFunction,\n});\n\nexport const anyField = createStory<FileInputProps>(FileInput, {\n\tacceptTypes: [\"*\"],\n\tvalue: \"abc.exe\",\n\tuploadFunction,\n});\n\nexport const hasId = createStory<FileInputProps>(FileInput, {\n\tacceptTypes: [\"*\"],\n\tvalue: \"\",\n\tuploadFunction,\n\tid: \"myId\",\n});\n\nexport const PreFilledFieldNoClearing = createStory<FileInputProps>(FileInput, {\n\tacceptTypes: [\"image/png\"],\n\tvalue: \"ThisIsATest.png\",\n\tuploadFunction,\n\tallowClearing: false,\n});\n"]}
1
+ {"version":3,"file":"FileInput.stories.js","sourceRoot":"","sources":["../../../../src/components/common/stories/FileInput.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACzD,OAAO,EAAE,SAAS,EAAkB,MAAM,cAAc,CAAC;AACzD,OAAO,mCAAmC,CAAC;AAC3C,OAAO,mBAAmB,CAAC;AAE3B,eAAe;IACd,KAAK,EAAE,kBAAkB;IACzB,SAAS,EAAE,SAAS;CACpB,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAG,WAAW,CAAiB,SAAS,EAAE;IAChE,KAAK,EAAE,EAAE;IACT,WAAW,EAAE,CAAC,WAAW,CAAC;IAC1B,cAAc;CACd,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,QAAQ,GAAG,WAAW,CAAiB,SAAS,EAAE;IAC9D,KAAK,EAAE,EAAE;IACT,WAAW,EAAE,CAAC,WAAW,CAAC;IAC1B,cAAc;IACd,QAAQ,EAAE,IAAI;CACd,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,cAAc,GAAG,WAAW,CAAiB,SAAS,EAAE;IACpE,WAAW,EAAE,CAAC,WAAW,CAAC;IAC1B,KAAK,EAAE,iBAAiB;IACxB,cAAc;CACd,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,qBAAqB,GAAG,WAAW,CAAiB,SAAS,EAAE;IAC3E,WAAW,EAAE,CAAC,WAAW,CAAC;IAC1B,KAAK,EAAE,eAAe;IACtB,cAAc;CACd,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,QAAQ,GAAG,WAAW,CAAiB,SAAS,EAAE;IAC9D,WAAW,EAAE,CAAC,GAAG,CAAC;IAClB,KAAK,EAAE,SAAS;IAChB,cAAc;CACd,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,KAAK,GAAG,WAAW,CAAiB,SAAS,EAAE;IAC3D,WAAW,EAAE,CAAC,GAAG,CAAC;IAClB,KAAK,EAAE,EAAE;IACT,cAAc;IACd,EAAE,EAAE,MAAM;CACV,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,wBAAwB,GAAG,WAAW,CAAiB,SAAS,EAAE;IAC9E,WAAW,EAAE,CAAC,WAAW,CAAC;IAC1B,KAAK,EAAE,iBAAiB;IACxB,cAAc;IACd,aAAa,EAAE,KAAK;CACpB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,YAAY,GAAG,WAAW,CAAiB,SAAS,EAAE;IAClE,WAAW,EAAE,CAAC,GAAG,CAAC;IAClB,KAAK,EAAE,EAAE;IACT,cAAc;IACd,YAAY,EAAE,IAAI;CAClB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,qBAAqB,GAAG,WAAW,CAAiB,SAAS,EAAE;IAC3E,WAAW,EAAE,CAAC,GAAG,CAAC;IAClB,KAAK,EAAE,+BAA+B;IACtC,cAAc;IACd,YAAY,EAAE,IAAI;CAClB,CAAC,CAAC","sourcesContent":["import { createStory, uploadFunction } from \"../helpers\";\nimport { FileInput, FileInputProps } from \"../FileInput\";\nimport \"../../../assets/css/finsemble.css\";\nimport \"../css/styles.css\";\n\nexport default {\n\ttitle: \"Common/FileInput\",\n\tcomponent: FileInput,\n};\n\nexport const EmptyField = createStory<FileInputProps>(FileInput, {\n\tvalue: \"\",\n\tacceptTypes: [\"image/png\"],\n\tuploadFunction,\n});\n\nexport const Disabled = createStory<FileInputProps>(FileInput, {\n\tvalue: \"\",\n\tacceptTypes: [\"image/png\"],\n\tuploadFunction,\n\tdisabled: true,\n});\n\nexport const PreFilledField = createStory<FileInputProps>(FileInput, {\n\tacceptTypes: [\"image/png\"],\n\tvalue: \"ThisIsATest.png\",\n\tuploadFunction,\n});\n\nexport const PreFilledInvalidField = createStory<FileInputProps>(FileInput, {\n\tacceptTypes: [\"image/png\"],\n\tvalue: \"MyBadPath.jpg\",\n\tuploadFunction,\n});\n\nexport const anyField = createStory<FileInputProps>(FileInput, {\n\tacceptTypes: [\"*\"],\n\tvalue: \"abc.exe\",\n\tuploadFunction,\n});\n\nexport const hasId = createStory<FileInputProps>(FileInput, {\n\tacceptTypes: [\"*\"],\n\tvalue: \"\",\n\tuploadFunction,\n\tid: \"myId\",\n});\n\nexport const PreFilledFieldNoClearing = createStory<FileInputProps>(FileInput, {\n\tacceptTypes: [\"image/png\"],\n\tvalue: \"ThisIsATest.png\",\n\tuploadFunction,\n\tallowClearing: false,\n});\n\nexport const TextEditable = createStory<FileInputProps>(FileInput, {\n\tacceptTypes: [\"*\"],\n\tvalue: \"\",\n\tuploadFunction,\n\ttextEditable: true,\n});\n\nexport const TextEditablePrefilled = createStory<FileInputProps>(FileInput, {\n\tacceptTypes: [\"*\"],\n\tvalue: \"%windir%/System32/mspaint.exe\",\n\tuploadFunction,\n\ttextEditable: true,\n});\n"]}
@@ -3,14 +3,19 @@ import { mount } from "enzyme";
3
3
  import { describe, it, afterEach } from "mocha";
4
4
  import { expect } from "chai";
5
5
  import { BasicAccordion, BasicAccordionOpen, BasicAccordionWithSummary, NestedAccordion, } from "../stories/Accordion.stories";
6
+ // For running accessibility scans
6
7
  import { accessibilityAssessor } from "../../sdd/tests/a11y_helper";
8
+ // For testing user interactions (like click events):
7
9
  import sinon from "sinon";
10
+ // Necessary to allow sinon to work with mocked actions (which are shown in the Actions panel in Storybook)
8
11
  import addons, { mockChannel } from "@storybook/addons";
9
12
  addons.setChannel(mockChannel());
10
13
  describe("<Accordion/>", () => {
14
+ // Used to clear after each interactive test using sinon
11
15
  afterEach(() => {
12
16
  sinon.restore();
13
17
  });
18
+ // Example basic test
14
19
  it("should display the label", () => {
15
20
  const wrapper = mount(React.createElement(BasicAccordion, Object.assign({}, BasicAccordion.args)));
16
21
  expect(wrapper.find(".accordion-summary").exists(), "The does not exist").to.be.false;
@@ -45,6 +50,7 @@ describe("<Accordion/>", () => {
45
50
  const checkbox = wrapper.find({ type: "checkbox" });
46
51
  expect(checkbox.props().checked).to.equal(true);
47
52
  });
53
+ // Example accessibility scan
48
54
  it("should pass accessibility scans", async () => {
49
55
  const wrapper = mount(React.createElement(NestedAccordion, Object.assign({}, NestedAccordion.args)));
50
56
  expect(await accessibilityAssessor(wrapper)).to.be.true;
@@ -1 +1 @@
1
- {"version":3,"file":"Accordion.spec.js","sourceRoot":"","sources":["../../../../src/components/common/tests/Accordion.spec.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from \"react\";\nimport { mount } from \"enzyme\";\nimport { describe, it, afterEach } from \"mocha\";\nimport { expect } from \"chai\";\nimport { AccordionProps } from \"../Accordion\";\nimport {\n\tBasicAccordion,\n\tBasicAccordionOpen,\n\tBasicAccordionWithSummary,\n\tNestedAccordion,\n} from \"../stories/Accordion.stories\";\n\n// For running accessibility scans\nimport { accessibilityAssessor } from \"../../sdd/tests/a11y_helper\";\n\n// For testing user interactions (like click events):\nimport sinon from \"sinon\";\n// Necessary to allow sinon to work with mocked actions (which are shown in the Actions panel in Storybook)\nimport addons, { mockChannel } from \"@storybook/addons\";\naddons.setChannel(mockChannel());\n\ndescribe(\"<Accordion/>\", () => {\n\t// Used to clear after each interactive test using sinon\n\tafterEach(() => {\n\t\tsinon.restore();\n\t});\n\n\t// Example basic test\n\tit(\"should display the label\", () => {\n\t\tconst wrapper = mount(<BasicAccordion {...(BasicAccordion.args as AccordionProps)} />);\n\n\t\texpect(wrapper.find(\".accordion-summary\").exists(), \"The does not exist\").to.be.false;\n\t\texpect(wrapper.find(\"button\").exists(), \"The button exists\").to.be.true;\n\t\texpect(wrapper.find(\"button\").text(), \"The button's text\").to.equal(\"Accordion Label\");\n\t});\n\n\tit(\"should display the summary\", () => {\n\t\tconst wrapper = mount(<BasicAccordionWithSummary {...(BasicAccordionWithSummary.args as AccordionProps)} />);\n\n\t\texpect(wrapper.find(\".accordion-summary\").exists(), \"The summary exists\").to.be.true;\n\t\texpect(wrapper.find(\".accordion-summary\").text(), \"The Summary text\").to.equal(\n\t\t\t\"A summary of what the accordion contains\"\n\t\t);\n\t});\n\n\tit(\"should accept react as a summary\", () => {\n\t\tconst summary = (\n\t\t\t<div>\n\t\t\t\tI am a summary <a>Link</a>\n\t\t\t</div>\n\t\t);\n\t\tconst props = { ...(BasicAccordionOpen.args as AccordionProps), summary };\n\t\tconst wrapper = mount(<BasicAccordionOpen {...props} />);\n\n\t\texpect(wrapper.find(\".accordion-summary\").exists(), \"The summary exists\").to.be.true;\n\t\texpect(wrapper.find(\"a\").exists(), \"link exists in the summary\").to.be.true;\n\t\texpect(wrapper.find(\".accordion-summary\").text(), \"The Summary text\").to.equal(\"I am a summary Link\");\n\t});\n\n\tit(\"should change state when clicked\", () => {\n\t\tconst wrapper = mount(<BasicAccordion {...(BasicAccordion.args as AccordionProps)} />);\n\n\t\tlet checkbox = wrapper.find({ type: \"checkbox\" });\n\t\texpect(checkbox.props().checked).to.equal(false);\n\t\twrapper.find(\"button\").simulate(\"click\");\n\t\tcheckbox = wrapper.find({ type: \"checkbox\" });\n\t\texpect(checkbox.props().checked).to.equal(true);\n\t});\n\n\tit(\"should start open\", () => {\n\t\tconst wrapper = mount(<BasicAccordionOpen {...(BasicAccordionOpen.args as AccordionProps)} />);\n\n\t\tconst checkbox = wrapper.find({ type: \"checkbox\" });\n\t\texpect(checkbox.props().checked).to.equal(true);\n\t});\n\n\t// Example accessibility scan\n\tit(\"should pass accessibility scans\", async () => {\n\t\tconst wrapper = mount(<NestedAccordion {...(NestedAccordion.args as AccordionProps)} />);\n\n\t\texpect(await accessibilityAssessor(wrapper)).to.be.true;\n\t});\n});\n"]}
1
+ {"version":3,"file":"Accordion.spec.js","sourceRoot":"","sources":["../../../../src/components/common/tests/Accordion.spec.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from \"react\";\nimport { mount } from \"enzyme\";\nimport { describe, it, afterEach } from \"mocha\";\nimport { expect } from \"chai\";\nimport { AccordionProps } from \"../Accordion\";\nimport {\n\tBasicAccordion,\n\tBasicAccordionOpen,\n\tBasicAccordionWithSummary,\n\tNestedAccordion,\n} from \"../stories/Accordion.stories\";\n\n// For running accessibility scans\nimport { accessibilityAssessor } from \"../../sdd/tests/a11y_helper\";\n\n// For testing user interactions (like click events):\nimport sinon from \"sinon\";\n// Necessary to allow sinon to work with mocked actions (which are shown in the Actions panel in Storybook)\nimport addons, { mockChannel } from \"@storybook/addons\";\naddons.setChannel(mockChannel());\n\ndescribe(\"<Accordion/>\", () => {\n\t// Used to clear after each interactive test using sinon\n\tafterEach(() => {\n\t\tsinon.restore();\n\t});\n\n\t// Example basic test\n\tit(\"should display the label\", () => {\n\t\tconst wrapper = mount(<BasicAccordion {...(BasicAccordion.args as AccordionProps)} />);\n\n\t\texpect(wrapper.find(\".accordion-summary\").exists(), \"The does not exist\").to.be.false;\n\t\texpect(wrapper.find(\"button\").exists(), \"The button exists\").to.be.true;\n\t\texpect(wrapper.find(\"button\").text(), \"The button's text\").to.equal(\"Accordion Label\");\n\t});\n\n\tit(\"should display the summary\", () => {\n\t\tconst wrapper = mount(<BasicAccordionWithSummary {...(BasicAccordionWithSummary.args as AccordionProps)} />);\n\n\t\texpect(wrapper.find(\".accordion-summary\").exists(), \"The summary exists\").to.be.true;\n\t\texpect(wrapper.find(\".accordion-summary\").text(), \"The Summary text\").to.equal(\n\t\t\t\"A summary of what the accordion contains\"\n\t\t);\n\t});\n\n\tit(\"should accept react as a summary\", () => {\n\t\tconst summary = (\n\t\t\t<div>\n\t\t\t\tI am a summary <a>Link</a>\n\t\t\t</div>\n\t\t);\n\t\tconst props = { ...(BasicAccordionOpen.args as AccordionProps), summary };\n\t\tconst wrapper = mount(<BasicAccordionOpen {...props} />);\n\n\t\texpect(wrapper.find(\".accordion-summary\").exists(), \"The summary exists\").to.be.true;\n\t\texpect(wrapper.find(\"a\").exists(), \"link exists in the summary\").to.be.true;\n\t\texpect(wrapper.find(\".accordion-summary\").text(), \"The Summary text\").to.equal(\"I am a summary Link\");\n\t});\n\n\tit(\"should change state when clicked\", () => {\n\t\tconst wrapper = mount(<BasicAccordion {...(BasicAccordion.args as AccordionProps)} />);\n\n\t\tlet checkbox = wrapper.find({ type: \"checkbox\" });\n\t\texpect(checkbox.props().checked).to.equal(false);\n\t\twrapper.find(\"button\").simulate(\"click\");\n\t\tcheckbox = wrapper.find({ type: \"checkbox\" });\n\t\texpect(checkbox.props().checked).to.equal(true);\n\t});\n\n\tit(\"should start open\", () => {\n\t\tconst wrapper = mount(<BasicAccordionOpen {...(BasicAccordionOpen.args as AccordionProps)} />);\n\n\t\tconst checkbox = wrapper.find({ type: \"checkbox\" });\n\t\texpect(checkbox.props().checked).to.equal(true);\n\t});\n\n\t// Example accessibility scan\n\tit(\"should pass accessibility scans\", async () => {\n\t\tconst wrapper = mount(<NestedAccordion {...(NestedAccordion.args as AccordionProps)} />);\n\n\t\texpect(await accessibilityAssessor(wrapper)).to.be.true;\n\t});\n});\n"]}
@@ -4,6 +4,7 @@ import { describe, it } from "mocha";
4
4
  import { expect } from "chai";
5
5
  import sinon from "sinon";
6
6
  import { Checked, Unchecked, Disabled } from "../stories/Checkbox.stories";
7
+ // Necessary to allow sinon to work with mocked actions (which are shown in the Actions panel in Storybook)
7
8
  import addons, { mockChannel } from "@storybook/addons";
8
9
  addons.setChannel(mockChannel());
9
10
  const CHECKMARK_LOCATOR = "[role='checkbox'] .finsemble-icon-check";
@@ -1 +1 @@
1
- {"version":3,"file":"Checkbox.spec.js","sourceRoot":"","sources":["../../../../src/components/common/tests/Checkbox.spec.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAC/B,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAC9B,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAG3E,OAAO,MAAM,EAAE,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAExD,MAAM,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC;AAEjC,MAAM,iBAAiB,GAAG,yCAAyC,CAAC;AAEpE,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IAC5B,SAAS,CAAC,GAAG,EAAE;QACd,KAAK,CAAC,OAAO,EAAE,CAAC;IACjB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yEAAyE,EAAE,KAAK,IAAI,EAAE;QACxF,MAAM,OAAO,GAAG,KAAK,CAAC,oBAAC,SAAS,oBAAM,SAAS,CAAC,IAAsB,EAAI,CAAC,CAAC;QAE5E,OAAO,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACvE,OAAO,CAAC,MAAM,EAAE,CAAC;QAEjB,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2EAA2E,EAAE,KAAK,IAAI,EAAE;QAC1F,MAAM,OAAO,GAAG,KAAK,CAAC,oBAAC,OAAO,oBAAM,OAAO,CAAC,IAAsB,EAAI,CAAC,CAAC;QAExE,OAAO,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAEvE,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sCAAsC,EAAE,KAAK,IAAI,EAAE;QACrD,MAAM,OAAO,GAAG,KAAK,CAAC,oBAAC,QAAQ,oBAAM,QAAQ,CAAC,IAAsB,EAAI,CAAC,CAAC;QAE1E,OAAO,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAEvE,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wBAAwB,EAAE,KAAK,IAAI,EAAE;QACvC,MAAM,OAAO,GAAG,KAAK,CAAC,oBAAC,OAAO,oBAAM,OAAO,CAAC,IAAsB,EAAI,CAAC,CAAC;QAExE,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACrF,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC","sourcesContent":["import * as React from \"react\";\nimport { mount } from \"enzyme\";\nimport { describe, it } from \"mocha\";\nimport { expect } from \"chai\";\nimport sinon from \"sinon\";\nimport { CheckboxProps } from \"../Checkbox\";\nimport { Checked, Unchecked, Disabled } from \"../stories/Checkbox.stories\";\n\n// Necessary to allow sinon to work with mocked actions (which are shown in the Actions panel in Storybook)\nimport addons, { mockChannel } from \"@storybook/addons\";\n\naddons.setChannel(mockChannel());\n\nconst CHECKMARK_LOCATOR = \"[role='checkbox'] .finsemble-icon-check\";\n\ndescribe(\"<Checkbox/>\", () => {\n\tafterEach(() => {\n\t\tsinon.restore();\n\t});\n\n\tit(\"should be checked items if checked prop is updated after initial render\", async () => {\n\t\tconst wrapper = mount(<Unchecked {...(Unchecked.args as CheckboxProps)} />);\n\n\t\twrapper.find(\".complex-menu-checkbox-wrapper\").at(0).simulate(\"click\");\n\t\twrapper.update();\n\n\t\texpect(wrapper.find(CHECKMARK_LOCATOR)).to.be.length(1);\n\t});\n\n\tit(\"should be unchecked items if checked prop is updated after initial render\", async () => {\n\t\tconst wrapper = mount(<Checked {...(Checked.args as CheckboxProps)} />);\n\n\t\twrapper.find(\".complex-menu-checkbox-wrapper\").at(0).simulate(\"click\");\n\n\t\texpect(wrapper.find(CHECKMARK_LOCATOR)).to.be.length(0);\n\t});\n\n\tit(\"shouldn't be clickable when disabled\", async () => {\n\t\tconst wrapper = mount(<Disabled {...(Disabled.args as CheckboxProps)} />);\n\n\t\twrapper.find(\".complex-menu-checkbox-wrapper\").at(0).simulate(\"click\");\n\n\t\texpect(wrapper.find(CHECKMARK_LOCATOR)).to.be.length(0);\n\t});\n\n\tit(\"should display a label\", async () => {\n\t\tconst wrapper = mount(<Checked {...(Checked.args as CheckboxProps)} />);\n\n\t\texpect(wrapper.find(\".complex-menu-checkbox-label\").at(0).text()).to.equal(\"Label\");\n\t});\n});\n"]}
1
+ {"version":3,"file":"Checkbox.spec.js","sourceRoot":"","sources":["../../../../src/components/common/tests/Checkbox.spec.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAC/B,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAC9B,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAE3E,2GAA2G;AAC3G,OAAO,MAAM,EAAE,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAExD,MAAM,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC;AAEjC,MAAM,iBAAiB,GAAG,yCAAyC,CAAC;AAEpE,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IAC5B,SAAS,CAAC,GAAG,EAAE;QACd,KAAK,CAAC,OAAO,EAAE,CAAC;IACjB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yEAAyE,EAAE,KAAK,IAAI,EAAE;QACxF,MAAM,OAAO,GAAG,KAAK,CAAC,oBAAC,SAAS,oBAAM,SAAS,CAAC,IAAsB,EAAI,CAAC,CAAC;QAE5E,OAAO,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACvE,OAAO,CAAC,MAAM,EAAE,CAAC;QAEjB,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2EAA2E,EAAE,KAAK,IAAI,EAAE;QAC1F,MAAM,OAAO,GAAG,KAAK,CAAC,oBAAC,OAAO,oBAAM,OAAO,CAAC,IAAsB,EAAI,CAAC,CAAC;QAExE,OAAO,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAEvE,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sCAAsC,EAAE,KAAK,IAAI,EAAE;QACrD,MAAM,OAAO,GAAG,KAAK,CAAC,oBAAC,QAAQ,oBAAM,QAAQ,CAAC,IAAsB,EAAI,CAAC,CAAC;QAE1E,OAAO,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAEvE,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wBAAwB,EAAE,KAAK,IAAI,EAAE;QACvC,MAAM,OAAO,GAAG,KAAK,CAAC,oBAAC,OAAO,oBAAM,OAAO,CAAC,IAAsB,EAAI,CAAC,CAAC;QAExE,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACrF,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC","sourcesContent":["import * as React from \"react\";\nimport { mount } from \"enzyme\";\nimport { describe, it } from \"mocha\";\nimport { expect } from \"chai\";\nimport sinon from \"sinon\";\nimport { CheckboxProps } from \"../Checkbox\";\nimport { Checked, Unchecked, Disabled } from \"../stories/Checkbox.stories\";\n\n// Necessary to allow sinon to work with mocked actions (which are shown in the Actions panel in Storybook)\nimport addons, { mockChannel } from \"@storybook/addons\";\n\naddons.setChannel(mockChannel());\n\nconst CHECKMARK_LOCATOR = \"[role='checkbox'] .finsemble-icon-check\";\n\ndescribe(\"<Checkbox/>\", () => {\n\tafterEach(() => {\n\t\tsinon.restore();\n\t});\n\n\tit(\"should be checked items if checked prop is updated after initial render\", async () => {\n\t\tconst wrapper = mount(<Unchecked {...(Unchecked.args as CheckboxProps)} />);\n\n\t\twrapper.find(\".complex-menu-checkbox-wrapper\").at(0).simulate(\"click\");\n\t\twrapper.update();\n\n\t\texpect(wrapper.find(CHECKMARK_LOCATOR)).to.be.length(1);\n\t});\n\n\tit(\"should be unchecked items if checked prop is updated after initial render\", async () => {\n\t\tconst wrapper = mount(<Checked {...(Checked.args as CheckboxProps)} />);\n\n\t\twrapper.find(\".complex-menu-checkbox-wrapper\").at(0).simulate(\"click\");\n\n\t\texpect(wrapper.find(CHECKMARK_LOCATOR)).to.be.length(0);\n\t});\n\n\tit(\"shouldn't be clickable when disabled\", async () => {\n\t\tconst wrapper = mount(<Disabled {...(Disabled.args as CheckboxProps)} />);\n\n\t\twrapper.find(\".complex-menu-checkbox-wrapper\").at(0).simulate(\"click\");\n\n\t\texpect(wrapper.find(CHECKMARK_LOCATOR)).to.be.length(0);\n\t});\n\n\tit(\"should display a label\", async () => {\n\t\tconst wrapper = mount(<Checked {...(Checked.args as CheckboxProps)} />);\n\n\t\texpect(wrapper.find(\".complex-menu-checkbox-label\").at(0).text()).to.equal(\"Label\");\n\t});\n});\n"]}
@@ -4,12 +4,15 @@ import { describe, it } from "mocha";
4
4
  import { expect } from "chai";
5
5
  import { EmptyField, ValidColor } from "../stories/ColorPicker.stories";
6
6
  function getColorInputElement(wrapper) {
7
+ // Return the color picker control DOM element.
7
8
  return wrapper.find("input[type='color']").at(0);
8
9
  }
9
10
  function getColorInputValue(wrapper) {
11
+ // Return the current value of the color picker control.
10
12
  return getColorInputElement(wrapper).prop("value");
11
13
  }
12
14
  function changeColorInput(wrapper, newColor) {
15
+ // Simulate changing the color picker control.
13
16
  getColorInputElement(wrapper).simulate("change", {
14
17
  target: {
15
18
  value: newColor,
@@ -17,12 +20,15 @@ function changeColorInput(wrapper, newColor) {
17
20
  });
18
21
  }
19
22
  function getTextInputElement(wrapper) {
23
+ // Return the text input field DOM element.
20
24
  return wrapper.find("input[type='text']");
21
25
  }
22
26
  function getTextInputValue(wrapper) {
27
+ // Return the current value of the text input field.
23
28
  return getTextInputElement(wrapper).prop("value");
24
29
  }
25
30
  function changeTextInput(wrapper, newColor) {
31
+ // Simulate changing the text input field.
26
32
  getTextInputElement(wrapper).simulate("change", {
27
33
  target: {
28
34
  value: newColor,
@@ -1 +1 @@
1
- {"version":3,"file":"ColorPicker.spec.js","sourceRoot":"","sources":["../../../../src/components/common/tests/ColorPicker.spec.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from \"react\";\nimport { ReactWrapper, mount } from \"enzyme\";\nimport { describe, it } from \"mocha\";\nimport { expect } from \"chai\";\nimport { ColorPickerProps } from \"../ColorPicker\";\nimport { EmptyField, ValidColor } from \"../stories/ColorPicker.stories\";\n\nfunction getColorInputElement(wrapper: ReactWrapper): ReactWrapper {\n\t// Return the color picker control DOM element.\n\treturn wrapper.find(\"input[type='color']\").at(0);\n}\n\nfunction getColorInputValue(wrapper: ReactWrapper): ReactWrapper {\n\t// Return the current value of the color picker control.\n\treturn getColorInputElement(wrapper).prop(\"value\");\n}\n\nfunction changeColorInput(wrapper: ReactWrapper, newColor: string) {\n\t// Simulate changing the color picker control.\n\tgetColorInputElement(wrapper).simulate(\"change\", {\n\t\ttarget: {\n\t\t\tvalue: newColor,\n\t\t},\n\t});\n}\n\nfunction getTextInputElement(wrapper: ReactWrapper | ReactWrapper): ReactWrapper | ReactWrapper {\n\t// Return the text input field DOM element.\n\treturn wrapper.find(\"input[type='text']\");\n}\n\nfunction getTextInputValue(wrapper: ReactWrapper): ReactWrapper {\n\t// Return the current value of the text input field.\n\treturn getTextInputElement(wrapper).prop(\"value\");\n}\n\nfunction changeTextInput(wrapper: ReactWrapper | ReactWrapper, newColor: string) {\n\t// Simulate changing the text input field.\n\tgetTextInputElement(wrapper).simulate(\"change\", {\n\t\ttarget: {\n\t\t\tvalue: newColor,\n\t\t},\n\t});\n}\n\ndescribe(\"<ColorPicker/>\", () => {\n\tit(\"should display matching color values for both the color and text inputs\", () => {\n\t\tconst wrapper = mount(<ValidColor {...(ValidColor.args as ColorPickerProps)} />);\n\n\t\texpect(getColorInputValue(wrapper)).to.equal(getTextInputValue(wrapper));\n\t});\n\n\tit(\"should default to black when no color is provided\", () => {\n\t\tconst BLACK = \"#000000\";\n\n\t\tconst wrapper = mount(<EmptyField {...(EmptyField.args as ColorPickerProps)} />);\n\n\t\texpect(getColorInputValue(wrapper)).to.equal(BLACK);\n\t\texpect(getTextInputValue(wrapper)).to.equal(BLACK);\n\t});\n\n\tit(\"should update the text field when the color picker is changed\", () => {\n\t\tconst NEW_COLOR = \"#00aa00\";\n\n\t\tconst wrapper = mount(<EmptyField {...(EmptyField.args as ColorPickerProps)} />);\n\t\tchangeColorInput(wrapper, NEW_COLOR);\n\n\t\texpect(getColorInputValue(wrapper)).to.equal(NEW_COLOR);\n\t\texpect(getTextInputValue(wrapper)).to.equal(NEW_COLOR);\n\t});\n\n\tit(\"should update the color picker when the text field is changed\", () => {\n\t\tconst NEW_COLOR = \"#0000cc\";\n\n\t\tconst wrapper = mount(<EmptyField {...(EmptyField.args as ColorPickerProps)} />);\n\t\tchangeTextInput(wrapper, NEW_COLOR);\n\n\t\texpect(getColorInputValue(wrapper)).to.equal(NEW_COLOR);\n\t\texpect(getTextInputValue(wrapper)).to.equal(NEW_COLOR);\n\t});\n\n\tit(\"should display an error when an invalid color is selected\", () => {\n\t\tconst NEW_COLOR = \"#ZZZZZZ\";\n\n\t\tconst wrapper = mount(<ValidColor {...(ValidColor.args as ColorPickerProps)} />);\n\t\tchangeTextInput(wrapper, NEW_COLOR);\n\n\t\texpect(getTextInputElement(wrapper).prop(\"aria-invalid\")).to.be.true;\n\t});\n\n\tit(\"should display no error when a valid color is selected\", () => {\n\t\tconst NEW_COLOR = \"#abc123\";\n\n\t\tconst wrapper = mount(<ValidColor {...(ValidColor.args as ColorPickerProps)} />);\n\t\tchangeTextInput(wrapper, NEW_COLOR);\n\n\t\texpect(getTextInputElement(wrapper).prop(\"aria-invalid\")).to.be.false;\n\t});\n\n\tit(\"should trigger an event when a valid color is selected\", () => {\n\t\tconst ORIGINAL_COLOR = \"#123456\";\n\t\tconst NEW_COLOR = \"#abc123\";\n\t\tvar currentColorState = ORIGINAL_COLOR;\n\n\t\tconst wrapper = mount(\n\t\t\t<EmptyField\n\t\t\t\tstartColor={ORIGINAL_COLOR}\n\t\t\t\tupdateColor={(newColor) => {\n\t\t\t\t\tcurrentColorState = newColor;\n\t\t\t\t}}\n\t\t\t/>\n\t\t);\n\t\tchangeTextInput(wrapper, NEW_COLOR);\n\n\t\texpect(currentColorState).to.equal(NEW_COLOR);\n\t});\n\n\tit(\"should not trigger any event when an invalid color is selected\", () => {\n\t\tconst ORIGINAL_COLOR = \"#123456\";\n\t\tconst NEW_COLOR = \"foobar\";\n\t\tvar currentColorState = ORIGINAL_COLOR;\n\n\t\tconst wrapper = mount(\n\t\t\t<EmptyField\n\t\t\t\tstartColor={ORIGINAL_COLOR}\n\t\t\t\tupdateColor={(newColor) => {\n\t\t\t\t\tcurrentColorState = newColor;\n\t\t\t\t}}\n\t\t\t/>\n\t\t);\n\t\tchangeTextInput(wrapper, NEW_COLOR);\n\n\t\texpect(currentColorState).to.equal(ORIGINAL_COLOR);\n\t});\n});\n"]}
1
+ {"version":3,"file":"ColorPicker.spec.js","sourceRoot":"","sources":["../../../../src/components/common/tests/ColorPicker.spec.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from \"react\";\nimport { ReactWrapper, mount } from \"enzyme\";\nimport { describe, it } from \"mocha\";\nimport { expect } from \"chai\";\nimport { ColorPickerProps } from \"../ColorPicker\";\nimport { EmptyField, ValidColor } from \"../stories/ColorPicker.stories\";\n\nfunction getColorInputElement(wrapper: ReactWrapper): ReactWrapper {\n\t// Return the color picker control DOM element.\n\treturn wrapper.find(\"input[type='color']\").at(0);\n}\n\nfunction getColorInputValue(wrapper: ReactWrapper): ReactWrapper {\n\t// Return the current value of the color picker control.\n\treturn getColorInputElement(wrapper).prop(\"value\");\n}\n\nfunction changeColorInput(wrapper: ReactWrapper, newColor: string) {\n\t// Simulate changing the color picker control.\n\tgetColorInputElement(wrapper).simulate(\"change\", {\n\t\ttarget: {\n\t\t\tvalue: newColor,\n\t\t},\n\t});\n}\n\nfunction getTextInputElement(wrapper: ReactWrapper | ReactWrapper): ReactWrapper | ReactWrapper {\n\t// Return the text input field DOM element.\n\treturn wrapper.find(\"input[type='text']\");\n}\n\nfunction getTextInputValue(wrapper: ReactWrapper): ReactWrapper {\n\t// Return the current value of the text input field.\n\treturn getTextInputElement(wrapper).prop(\"value\");\n}\n\nfunction changeTextInput(wrapper: ReactWrapper | ReactWrapper, newColor: string) {\n\t// Simulate changing the text input field.\n\tgetTextInputElement(wrapper).simulate(\"change\", {\n\t\ttarget: {\n\t\t\tvalue: newColor,\n\t\t},\n\t});\n}\n\ndescribe(\"<ColorPicker/>\", () => {\n\tit(\"should display matching color values for both the color and text inputs\", () => {\n\t\tconst wrapper = mount(<ValidColor {...(ValidColor.args as ColorPickerProps)} />);\n\n\t\texpect(getColorInputValue(wrapper)).to.equal(getTextInputValue(wrapper));\n\t});\n\n\tit(\"should default to black when no color is provided\", () => {\n\t\tconst BLACK = \"#000000\";\n\n\t\tconst wrapper = mount(<EmptyField {...(EmptyField.args as ColorPickerProps)} />);\n\n\t\texpect(getColorInputValue(wrapper)).to.equal(BLACK);\n\t\texpect(getTextInputValue(wrapper)).to.equal(BLACK);\n\t});\n\n\tit(\"should update the text field when the color picker is changed\", () => {\n\t\tconst NEW_COLOR = \"#00aa00\";\n\n\t\tconst wrapper = mount(<EmptyField {...(EmptyField.args as ColorPickerProps)} />);\n\t\tchangeColorInput(wrapper, NEW_COLOR);\n\n\t\texpect(getColorInputValue(wrapper)).to.equal(NEW_COLOR);\n\t\texpect(getTextInputValue(wrapper)).to.equal(NEW_COLOR);\n\t});\n\n\tit(\"should update the color picker when the text field is changed\", () => {\n\t\tconst NEW_COLOR = \"#0000cc\";\n\n\t\tconst wrapper = mount(<EmptyField {...(EmptyField.args as ColorPickerProps)} />);\n\t\tchangeTextInput(wrapper, NEW_COLOR);\n\n\t\texpect(getColorInputValue(wrapper)).to.equal(NEW_COLOR);\n\t\texpect(getTextInputValue(wrapper)).to.equal(NEW_COLOR);\n\t});\n\n\tit(\"should display an error when an invalid color is selected\", () => {\n\t\tconst NEW_COLOR = \"#ZZZZZZ\";\n\n\t\tconst wrapper = mount(<ValidColor {...(ValidColor.args as ColorPickerProps)} />);\n\t\tchangeTextInput(wrapper, NEW_COLOR);\n\n\t\texpect(getTextInputElement(wrapper).prop(\"aria-invalid\")).to.be.true;\n\t});\n\n\tit(\"should display no error when a valid color is selected\", () => {\n\t\tconst NEW_COLOR = \"#abc123\";\n\n\t\tconst wrapper = mount(<ValidColor {...(ValidColor.args as ColorPickerProps)} />);\n\t\tchangeTextInput(wrapper, NEW_COLOR);\n\n\t\texpect(getTextInputElement(wrapper).prop(\"aria-invalid\")).to.be.false;\n\t});\n\n\tit(\"should trigger an event when a valid color is selected\", () => {\n\t\tconst ORIGINAL_COLOR = \"#123456\";\n\t\tconst NEW_COLOR = \"#abc123\";\n\t\tvar currentColorState = ORIGINAL_COLOR;\n\n\t\tconst wrapper = mount(\n\t\t\t<EmptyField\n\t\t\t\tstartColor={ORIGINAL_COLOR}\n\t\t\t\tupdateColor={(newColor) => {\n\t\t\t\t\tcurrentColorState = newColor;\n\t\t\t\t}}\n\t\t\t/>\n\t\t);\n\t\tchangeTextInput(wrapper, NEW_COLOR);\n\n\t\texpect(currentColorState).to.equal(NEW_COLOR);\n\t});\n\n\tit(\"should not trigger any event when an invalid color is selected\", () => {\n\t\tconst ORIGINAL_COLOR = \"#123456\";\n\t\tconst NEW_COLOR = \"foobar\";\n\t\tvar currentColorState = ORIGINAL_COLOR;\n\n\t\tconst wrapper = mount(\n\t\t\t<EmptyField\n\t\t\t\tstartColor={ORIGINAL_COLOR}\n\t\t\t\tupdateColor={(newColor) => {\n\t\t\t\t\tcurrentColorState = newColor;\n\t\t\t\t}}\n\t\t\t/>\n\t\t);\n\t\tchangeTextInput(wrapper, NEW_COLOR);\n\n\t\texpect(currentColorState).to.equal(ORIGINAL_COLOR);\n\t});\n});\n"]}
@@ -4,6 +4,7 @@ import { describe, it } from "mocha";
4
4
  import { expect } from "chai";
5
5
  import sinon from "sinon";
6
6
  import { Default } from "../stories/DropZone.stories";
7
+ // Necessary to allow sinon to work with mocked actions (which are shown in the Actions panel in Storybook)
7
8
  import addons, { mockChannel } from "@storybook/addons";
8
9
  addons.setChannel(mockChannel());
9
10
  describe("<DropZone />", () => {
@@ -1 +1 @@
1
- {"version":3,"file":"DropZone.spec.js","sourceRoot":"","sources":["../../../../src/components/common/tests/DropZone.spec.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from \"react\";\nimport { mount } from \"enzyme\";\nimport { describe, it } from \"mocha\";\nimport { expect } from \"chai\";\nimport sinon from \"sinon\";\nimport { DropZoneProps } from \"../DropZone\";\nimport { Default } from \"../stories/DropZone.stories\";\n\n// Necessary to allow sinon to work with mocked actions (which are shown in the Actions panel in Storybook)\nimport addons, { mockChannel } from \"@storybook/addons\";\naddons.setChannel(mockChannel());\n\ndescribe(\"<DropZone />\", () => {\n\tafterEach(() => {\n\t\tsinon.restore();\n\t});\n\n\tit(\"should process 1 file\", () => {\n\t\tconst buttonSpy = sinon.spy(Default.args as DropZoneProps, \"processFile\");\n\t\tconst wrapper = mount(<Default {...(Default.args as DropZoneProps)} />);\n\t\twrapper.find(\".dropZone\").simulate(\"drop\", {\n\t\t\tdataTransfer: {\n\t\t\t\tfiles: [{}],\n\t\t\t},\n\t\t});\n\t\texpect(buttonSpy.calledOnce).to.be.true;\n\t});\n\n\tit(\"should process 2 files\", () => {\n\t\tconst buttonSpy = sinon.spy(Default.args as DropZoneProps, \"processFile\");\n\t\tconst wrapper = mount(<Default {...(Default.args as DropZoneProps)} />);\n\t\twrapper.find(\".dropZone\").simulate(\"drop\", {\n\t\t\tdataTransfer: {\n\t\t\t\tfiles: [{}, {}],\n\t\t\t},\n\t\t});\n\t\texpect(buttonSpy.getCall(1)).to.not.be.null;\n\t});\n\n\tit(\"should process 0 files\", () => {\n\t\tconst buttonSpy = sinon.spy(Default.args as DropZoneProps, \"processFile\");\n\t\tconst wrapper = mount(<Default {...(Default.args as DropZoneProps)} />);\n\t\twrapper.find(\".dropZone\").simulate(\"drop\", {\n\t\t\tdataTransfer: {\n\t\t\t\tfiles: [],\n\t\t\t},\n\t\t});\n\t\texpect(buttonSpy.calledOnce).to.be.false;\n\t});\n\n\tit(\"should process 2 mixed files\", () => {\n\t\tconst buttonSpy = sinon.spy(Default.args as DropZoneProps, \"processFile\");\n\t\tconst wrapper = mount(<Default {...(Default.args as DropZoneProps)} />);\n\t\twrapper.find(\".dropZone\").simulate(\"drop\", {\n\t\t\tdataTransfer: {\n\t\t\t\tfiles: [null, {}],\n\t\t\t},\n\t\t});\n\t\texpect(buttonSpy.calledOnce).to.not.be.null;\n\t});\n});\n"]}
1
+ {"version":3,"file":"DropZone.spec.js","sourceRoot":"","sources":["../../../../src/components/common/tests/DropZone.spec.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from \"react\";\nimport { mount } from \"enzyme\";\nimport { describe, it } from \"mocha\";\nimport { expect } from \"chai\";\nimport sinon from \"sinon\";\nimport { DropZoneProps } from \"../DropZone\";\nimport { Default } from \"../stories/DropZone.stories\";\n\n// Necessary to allow sinon to work with mocked actions (which are shown in the Actions panel in Storybook)\nimport addons, { mockChannel } from \"@storybook/addons\";\naddons.setChannel(mockChannel());\n\ndescribe(\"<DropZone />\", () => {\n\tafterEach(() => {\n\t\tsinon.restore();\n\t});\n\n\tit(\"should process 1 file\", () => {\n\t\tconst buttonSpy = sinon.spy(Default.args as DropZoneProps, \"processFile\");\n\t\tconst wrapper = mount(<Default {...(Default.args as DropZoneProps)} />);\n\t\twrapper.find(\".dropZone\").simulate(\"drop\", {\n\t\t\tdataTransfer: {\n\t\t\t\tfiles: [{}],\n\t\t\t},\n\t\t});\n\t\texpect(buttonSpy.calledOnce).to.be.true;\n\t});\n\n\tit(\"should process 2 files\", () => {\n\t\tconst buttonSpy = sinon.spy(Default.args as DropZoneProps, \"processFile\");\n\t\tconst wrapper = mount(<Default {...(Default.args as DropZoneProps)} />);\n\t\twrapper.find(\".dropZone\").simulate(\"drop\", {\n\t\t\tdataTransfer: {\n\t\t\t\tfiles: [{}, {}],\n\t\t\t},\n\t\t});\n\t\texpect(buttonSpy.getCall(1)).to.not.be.null;\n\t});\n\n\tit(\"should process 0 files\", () => {\n\t\tconst buttonSpy = sinon.spy(Default.args as DropZoneProps, \"processFile\");\n\t\tconst wrapper = mount(<Default {...(Default.args as DropZoneProps)} />);\n\t\twrapper.find(\".dropZone\").simulate(\"drop\", {\n\t\t\tdataTransfer: {\n\t\t\t\tfiles: [],\n\t\t\t},\n\t\t});\n\t\texpect(buttonSpy.calledOnce).to.be.false;\n\t});\n\n\tit(\"should process 2 mixed files\", () => {\n\t\tconst buttonSpy = sinon.spy(Default.args as DropZoneProps, \"processFile\");\n\t\tconst wrapper = mount(<Default {...(Default.args as DropZoneProps)} />);\n\t\twrapper.find(\".dropZone\").simulate(\"drop\", {\n\t\t\tdataTransfer: {\n\t\t\t\tfiles: [null, {}],\n\t\t\t},\n\t\t});\n\t\texpect(buttonSpy.calledOnce).to.not.be.null;\n\t});\n});\n"]}
@@ -3,12 +3,14 @@ import { mount } from "enzyme";
3
3
  import { describe, it } from "mocha";
4
4
  import { expect } from "chai";
5
5
  import { EmptyField, PreFilledField, PreFilledInvalidField, PreFilledFieldNoClearing, } from "../stories/FileInput.stories";
6
+ // For testing user interactions (like click events):
6
7
  import sinon from "sinon";
7
8
  const locators = {
8
9
  displayPath: ".file-input-value-input",
9
10
  clearButton: ".finsemble-icon-times",
10
11
  };
11
12
  describe("<FileInput/>", () => {
13
+ // Used to clear after each interactive test using sinon
12
14
  afterEach(() => {
13
15
  sinon.restore();
14
16
  });
@@ -46,5 +48,25 @@ describe("<FileInput/>", () => {
46
48
  expect(wrapper.find(locators.displayPath).text()).to.equal("ThisIsATest.png");
47
49
  expect(wrapper.find(locators.clearButton).exists()).to.be.false;
48
50
  });
51
+ // it("should update the display when the file is changed", () => {
52
+ // const oldFileName = "old.txt";
53
+ // const newFileName = "newimage/png";
54
+ // const uploadFunction = (fileObject: File) =>
55
+ // new Promise((resolve) => {
56
+ // resolve({
57
+ // err: "",
58
+ // path: fileObject.name,
59
+ // });
60
+ // });
61
+ // const wrapper = mount(<FileInput uploadFunction value={oldFileName} acceptTypes={["image/png", "image/jpg", "image/ico"]} />);
62
+ // wrapper.find("input[type='file']").simulate('change', {
63
+ // target: {
64
+ // files: [
65
+ // newFileName
66
+ // ]
67
+ // }
68
+ // });
69
+ // expect(wrapper.find("input[type='text']").prop("value")).to.equal(newFileName);
70
+ // });
49
71
  });
50
72
  //# sourceMappingURL=FileInput.spec.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FileInput.spec.js","sourceRoot":"","sources":["../../../../src/components/common/tests/FileInput.spec.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAC/B,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAE9B,OAAO,EACN,UAAU,EACV,cAAc,EACd,qBAAqB,EACrB,wBAAwB,GACxB,MAAM,8BAA8B,CAAC;AAGtC,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,QAAQ,GAAG;IAChB,WAAW,EAAE,yBAAyB;IACtC,WAAW,EAAE,uBAAuB;CACpC,CAAC;AAEF,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAE7B,SAAS,CAAC,GAAG,EAAE;QACd,KAAK,CAAC,OAAO,EAAE,CAAC;IACjB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qDAAqD,EAAE,GAAG,EAAE;QAC9D,MAAM,OAAO,GAAG,KAAK,CAAC,oBAAC,UAAU,oBAAM,UAAU,CAAC,IAAuB,EAAI,CAAC,CAAC;QAC/E,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAChE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;QAC9C,MAAM,OAAO,GAAG,KAAK,CAAC,oBAAC,cAAc,oBAAM,cAAc,CAAC,IAAuB,EAAI,CAAC,CAAC;QACvF,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;QAC9E,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,MAAM,EAAE,EAAE,wBAAwB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;IAC1F,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;QACzD,MAAM,OAAO,GAAG,KAAK,CAAC,oBAAC,qBAAqB,oBAAM,qBAAqB,CAAC,IAAuB,EAAI,CAAC,CAAC;QACrG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;IACtE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;QACvD,MAAM,OAAO,GAAG,KAAK,CAAC,oBAAC,cAAc,oBAAM,cAAc,CAAC,IAAuB,EAAI,CAAC,CAAC;QACvF,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;IACvE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;QACzD,MAAM,OAAO,GAAG,KAAK,CAAC,oBAAC,UAAU,oBAAM,UAAU,CAAC,IAAuB,EAAI,CAAC,CAAC;QAC/E,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;IACvE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;QACtD,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;QACxB,MAAM,OAAO,GAAG,KAAK,CAAC,oBAAC,cAAc,kBAAC,UAAU,EAAE,GAAG,IAAO,cAAc,CAAC,IAAuB,EAAI,CAAC,CAAC;QACxG,OAAO,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAEhE,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;QAClC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,qDAAqD,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC/F,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC,IAAI,EAAE,EAAE,gCAAgC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;IACtG,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8DAA8D,EAAE,GAAG,EAAE;QACvE,MAAM,OAAO,GAAG,KAAK,CAAC,oBAAC,wBAAwB,oBAAM,wBAAwB,CAAC,IAAuB,EAAI,CAAC,CAAC;QAC3G,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;QAC9E,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;IACjE,CAAC,CAAC,CAAC;AAyBJ,CAAC,CAAC,CAAC","sourcesContent":["import * as React from \"react\";\nimport { mount } from \"enzyme\";\nimport { describe, it } from \"mocha\";\nimport { expect } from \"chai\";\nimport { FileInputProps } from \"../FileInput\";\nimport {\n\tEmptyField,\n\tPreFilledField,\n\tPreFilledInvalidField,\n\tPreFilledFieldNoClearing,\n} from \"../stories/FileInput.stories\";\n\n// For testing user interactions (like click events):\nimport sinon from \"sinon\";\n\nconst locators = {\n\tdisplayPath: \".file-input-value-input\",\n\tclearButton: \".finsemble-icon-times\",\n};\n\ndescribe(\"<FileInput/>\", () => {\n\t// Used to clear after each interactive test using sinon\n\tafterEach(() => {\n\t\tsinon.restore();\n\t});\n\n\tit(\"should display an empty string in its default state\", () => {\n\t\tconst wrapper = mount(<EmptyField {...(EmptyField.args as FileInputProps)} />);\n\t\texpect(wrapper.find(locators.displayPath).text()).to.equal(\"\");\n\t});\n\n\tit(\"should display the chosen file name\", () => {\n\t\tconst wrapper = mount(<PreFilledField {...(PreFilledField.args as FileInputProps)} />);\n\t\texpect(wrapper.find(locators.displayPath).text()).to.equal(\"ThisIsATest.png\");\n\t\texpect(wrapper.find(locators.clearButton).exists(), \"Clear button displayed\").to.be.true;\n\t});\n\n\tit(\"should display an error for invalid file types\", () => {\n\t\tconst wrapper = mount(<PreFilledInvalidField {...(PreFilledInvalidField.args as FileInputProps)} />);\n\t\texpect(wrapper.find(locators.displayPath).is(\".invalid\")).to.be.true;\n\t});\n\n\tit(\"should display no error for valid file types\", () => {\n\t\tconst wrapper = mount(<PreFilledField {...(PreFilledField.args as FileInputProps)} />);\n\t\texpect(wrapper.find(locators.displayPath).is(\".invalid\")).to.be.false;\n\t});\n\n\tit(\"should display no error when no file is chosen\", () => {\n\t\tconst wrapper = mount(<EmptyField {...(EmptyField.args as FileInputProps)} />);\n\t\texpect(wrapper.find(locators.displayPath).is(\".invalid\")).to.be.false;\n\t});\n\n\tit(\"should call onSetValue when file is cleared\", () => {\n\t\tconst spy = sinon.spy();\n\t\tconst wrapper = mount(<PreFilledField onSetValue={spy} {...(PreFilledField.args as FileInputProps)} />);\n\t\twrapper.find(\".button-container-icon button\").simulate(\"click\");\n\n\t\texpect(spy.calledOnce).to.be.true;\n\t\texpect(spy.args[0], \"onSetValue returned with a value of an empty string\").to.deep.equal([\"\"]);\n\t\texpect(wrapper.find(\".file-input-value-input\").text(), \"The filename field was emptied\").to.be.empty;\n\t});\n\n\tit(\"should not display the clear button when allowClearing=false\", () => {\n\t\tconst wrapper = mount(<PreFilledFieldNoClearing {...(PreFilledFieldNoClearing.args as FileInputProps)} />);\n\t\texpect(wrapper.find(locators.displayPath).text()).to.equal(\"ThisIsATest.png\");\n\t\texpect(wrapper.find(locators.clearButton).exists()).to.be.false;\n\t});\n\n\t// it(\"should update the display when the file is changed\", () => {\n\t// \tconst oldFileName = \"old.txt\";\n\t// \tconst newFileName = \"newimage/png\";\n\n\t// \tconst uploadFunction = (fileObject: File) =>\n\t// \t\tnew Promise((resolve) => {\n\t// \t\t\tresolve({\n\t// \t\t\t\terr: \"\",\n\t// \t\t\t\tpath: fileObject.name,\n\t// \t\t\t});\n\t// \t\t});\n\n\t// \tconst wrapper = mount(<FileInput uploadFunction value={oldFileName} acceptTypes={[\"image/png\", \"image/jpg\", \"image/ico\"]} />);\n\t// \twrapper.find(\"input[type='file']\").simulate('change', {\n\t// \t\ttarget: {\n\t// \t\t\tfiles: [\n\t// \t\t\t\tnewFileName\n\t// \t\t\t]\n\t// \t\t}\n\t// \t});\n\n\t// \texpect(wrapper.find(\"input[type='text']\").prop(\"value\")).to.equal(newFileName);\n\t// });\n});\n"]}
1
+ {"version":3,"file":"FileInput.spec.js","sourceRoot":"","sources":["../../../../src/components/common/tests/FileInput.spec.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from \"react\";\nimport { mount } from \"enzyme\";\nimport { describe, it } from \"mocha\";\nimport { expect } from \"chai\";\nimport { FileInputProps } from \"../FileInput\";\nimport {\n\tEmptyField,\n\tPreFilledField,\n\tPreFilledInvalidField,\n\tPreFilledFieldNoClearing,\n} from \"../stories/FileInput.stories\";\n\n// For testing user interactions (like click events):\nimport sinon from \"sinon\";\n\nconst locators = {\n\tdisplayPath: \".file-input-value-input\",\n\tclearButton: \".finsemble-icon-times\",\n};\n\ndescribe(\"<FileInput/>\", () => {\n\t// Used to clear after each interactive test using sinon\n\tafterEach(() => {\n\t\tsinon.restore();\n\t});\n\n\tit(\"should display an empty string in its default state\", () => {\n\t\tconst wrapper = mount(<EmptyField {...(EmptyField.args as FileInputProps)} />);\n\t\texpect(wrapper.find(locators.displayPath).text()).to.equal(\"\");\n\t});\n\n\tit(\"should display the chosen file name\", () => {\n\t\tconst wrapper = mount(<PreFilledField {...(PreFilledField.args as FileInputProps)} />);\n\t\texpect(wrapper.find(locators.displayPath).text()).to.equal(\"ThisIsATest.png\");\n\t\texpect(wrapper.find(locators.clearButton).exists(), \"Clear button displayed\").to.be.true;\n\t});\n\n\tit(\"should display an error for invalid file types\", () => {\n\t\tconst wrapper = mount(<PreFilledInvalidField {...(PreFilledInvalidField.args as FileInputProps)} />);\n\t\texpect(wrapper.find(locators.displayPath).is(\".invalid\")).to.be.true;\n\t});\n\n\tit(\"should display no error for valid file types\", () => {\n\t\tconst wrapper = mount(<PreFilledField {...(PreFilledField.args as FileInputProps)} />);\n\t\texpect(wrapper.find(locators.displayPath).is(\".invalid\")).to.be.false;\n\t});\n\n\tit(\"should display no error when no file is chosen\", () => {\n\t\tconst wrapper = mount(<EmptyField {...(EmptyField.args as FileInputProps)} />);\n\t\texpect(wrapper.find(locators.displayPath).is(\".invalid\")).to.be.false;\n\t});\n\n\tit(\"should call onSetValue when file is cleared\", () => {\n\t\tconst spy = sinon.spy();\n\t\tconst wrapper = mount(<PreFilledField onSetValue={spy} {...(PreFilledField.args as FileInputProps)} />);\n\t\twrapper.find(\".button-container-icon button\").simulate(\"click\");\n\n\t\texpect(spy.calledOnce).to.be.true;\n\t\texpect(spy.args[0], \"onSetValue returned with a value of an empty string\").to.deep.equal([\"\"]);\n\t\texpect(wrapper.find(\".file-input-value-input\").text(), \"The filename field was emptied\").to.be.empty;\n\t});\n\n\tit(\"should not display the clear button when allowClearing=false\", () => {\n\t\tconst wrapper = mount(<PreFilledFieldNoClearing {...(PreFilledFieldNoClearing.args as FileInputProps)} />);\n\t\texpect(wrapper.find(locators.displayPath).text()).to.equal(\"ThisIsATest.png\");\n\t\texpect(wrapper.find(locators.clearButton).exists()).to.be.false;\n\t});\n\n\t// it(\"should update the display when the file is changed\", () => {\n\t// \tconst oldFileName = \"old.txt\";\n\t// \tconst newFileName = \"newimage/png\";\n\n\t// \tconst uploadFunction = (fileObject: File) =>\n\t// \t\tnew Promise((resolve) => {\n\t// \t\t\tresolve({\n\t// \t\t\t\terr: \"\",\n\t// \t\t\t\tpath: fileObject.name,\n\t// \t\t\t});\n\t// \t\t});\n\n\t// \tconst wrapper = mount(<FileInput uploadFunction value={oldFileName} acceptTypes={[\"image/png\", \"image/jpg\", \"image/ico\"]} />);\n\t// \twrapper.find(\"input[type='file']\").simulate('change', {\n\t// \t\ttarget: {\n\t// \t\t\tfiles: [\n\t// \t\t\t\tnewFileName\n\t// \t\t\t]\n\t// \t\t}\n\t// \t});\n\n\t// \texpect(wrapper.find(\"input[type='text']\").prop(\"value\")).to.equal(newFileName);\n\t// });\n});\n"]}
@@ -4,6 +4,7 @@ import { describe, it } from "mocha";
4
4
  import { expect } from "chai";
5
5
  import sinon from "sinon";
6
6
  import { Sample, SeperateValuesFromText, PreSelected, PreSelectedValues, InvalidPreSelected, Searchable, } from "../stories/FinsembleSelect.stories";
7
+ // Necessary to allow sinon to work with mocked actions (which are shown in the Actions panel in Storybook)
7
8
  import addons, { mockChannel } from "@storybook/addons";
8
9
  import { waitTime } from "../../sdd/sdd_helpers";
9
10
  addons.setChannel(mockChannel());
@@ -1 +1 @@
1
- {"version":3,"file":"FinsembleSelect.spec.js","sourceRoot":"","sources":["../../../../src/components/common/tests/FinsembleSelect.spec.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from \"react\";\nimport { mount } from \"enzyme\";\nimport { describe, it } from \"mocha\";\nimport { expect } from \"chai\";\nimport sinon from \"sinon\";\nimport { FinsembleSelectProps } from \"../FinsembleSelect\";\nimport {\n\tSample,\n\tSeperateValuesFromText,\n\tPreSelected,\n\tPreSelectedValues,\n\tInvalidPreSelected,\n\tSearchable,\n} from \"../stories/FinsembleSelect.stories\";\n\n// Necessary to allow sinon to work with mocked actions (which are shown in the Actions panel in Storybook)\nimport addons, { mockChannel } from \"@storybook/addons\";\nimport { waitTime } from \"../../sdd/sdd_helpers\";\naddons.setChannel(mockChannel());\n\ndescribe(\"<FinsembleSelect/>\", () => {\n\tafterEach(() => {\n\t\tsinon.restore();\n\t});\n\n\tit(\"should display text and a checkbox\", () => {\n\t\tconst wrapper = mount(<Sample {...(Sample.args as FinsembleSelectProps)} />);\n\n\t\texpect(wrapper.find(\".emperorOption span\").exists(), \"Options have text\").to.be.true;\n\t\texpect(wrapper.find(\".emperorOption input[type='checkbox']\").exists(), \"Options have checkboxes\").to.be.true;\n\t});\n\tit(\"should call a function when checkbox is checked\", () => {\n\t\tconst buttonSpy = sinon.spy(Sample.args as FinsembleSelectProps, \"updateCallback\");\n\t\tconst wrapper = mount(<Sample {...(Sample.args as FinsembleSelectProps)} />);\n\t\twrapper.find(\".emperorOption input[type='checkbox']\").at(1).simulate(\"change\");\n\t\texpect(buttonSpy.getCall(0)).to.not.be.null;\n\t});\n\tit(\"should return all items checked when multiple items have been checked\", () => {\n\t\tconst buttonSpy = sinon.spy(Sample.args as FinsembleSelectProps, \"updateCallback\");\n\t\tconst wrapper = mount(<Sample {...(Sample.args as FinsembleSelectProps)} />);\n\t\twrapper.find(\".emperorOption input[type='checkbox']\").at(0).simulate(\"change\");\n\t\twrapper.find(\".emperorOption input[type='checkbox']\").at(2).simulate(\"change\");\n\t\texpect(buttonSpy.getCall(1).args[0]).lengthOf(2);\n\t});\n\tit(\"should limit checked selection\", () => {\n\t\tconst buttonSpy = sinon.spy(Sample.args as FinsembleSelectProps, \"updateCallback\");\n\t\tconst wrapper = mount(<Sample {...{ ...(Sample.args as FinsembleSelectProps), limit: 2 }} />);\n\t\twrapper.find(\".emperorOption input[type='checkbox']\").at(0).simulate(\"change\");\n\t\twrapper.find(\".emperorOption input[type='checkbox']\").at(1).simulate(\"change\");\n\t\twrapper.find(\".emperorOption input[type='checkbox']\").at(2).simulate(\"change\");\n\t\texpect(buttonSpy.getCall(1).args[0]).lengthOf(2);\n\t});\n\tit(\"should return values, not display text, if values are provided\", () => {\n\t\tconst buttonSpy = sinon.spy(SeperateValuesFromText.args as FinsembleSelectProps, \"updateCallback\");\n\t\tconst wrapper = mount(<SeperateValuesFromText {...(SeperateValuesFromText.args as FinsembleSelectProps)} />);\n\t\twrapper.find(\".emperorOption input[type='checkbox']\").at(0).simulate(\"change\");\n\t\texpect(buttonSpy.getCall(0).args[0]).to.deep.equal([\"1\"]);\n\t});\n\tit(\"should start with selected items if pre-selected items are provided\", () => {\n\t\tconst wrapper = mount(<PreSelected {...(PreSelected.args as FinsembleSelectProps)} />);\n\t\texpect(wrapper.find(\".emperorOption input[type='checkbox']\").at(1).prop(\"checked\")).to.be.true;\n\t});\n\tit(\"should show selected items if pre-selected items are provided after initial render\", async () => {\n\t\tconst wrapper = mount(<PreSelected {...(Sample.args as FinsembleSelectProps)} />);\n\n\t\tawait waitTime(10);\n\n\t\twrapper.setProps({ selected: PreSelected.args?.selected });\n\n\t\twrapper.update();\n\n\t\texpect(wrapper.find(\".emperorOption input[type='checkbox']\").at(1).prop(\"checked\")).to.be.true;\n\t});\n\tit(\"should start with selected values if both values and pre-selected values are provided\", () => {\n\t\tconst wrapper = mount(<PreSelectedValues {...(PreSelectedValues.args as FinsembleSelectProps)} />);\n\t\texpect(wrapper.find(\".emperorOption input[type='checkbox']\").at(0).prop(\"checked\")).to.be.false;\n\t\texpect(wrapper.find(\".emperorOption input[type='checkbox']\").at(1).prop(\"checked\")).to.be.true;\n\t\texpect(wrapper.find(\".emperorOption input[type='checkbox']\").at(2).prop(\"checked\")).to.be.true;\n\t\texpect(wrapper.find(\".emperorOption input[type='checkbox']\").at(3).prop(\"checked\")).to.be.false;\n\t});\n\tit(\"should ignore invalid pre-selected items\", () => {\n\t\tconst wrapper = mount(<InvalidPreSelected {...(InvalidPreSelected.args as FinsembleSelectProps)} />);\n\t\texpect(wrapper.find(\".emperorOption input[type='checkbox']\").at(0).prop(\"checked\")).to.be.false;\n\t\texpect(wrapper.find(\".emperorOption input[type='checkbox']\").at(1).prop(\"checked\")).to.be.false;\n\t\texpect(wrapper.find(\".emperorOption input[type='checkbox']\").at(2).prop(\"checked\")).to.be.false;\n\t\texpect(wrapper.find(\".emperorOption input[type='checkbox']\").at(3).prop(\"checked\")).to.be.false;\n\t});\n\tit(\"should filter list on input (case-insensitive)\", () => {\n\t\tconst buttonSpy = sinon.spy(Searchable.args as FinsembleSelectProps, \"updateCallback\");\n\t\tconst wrapper = mount(<Searchable {...(Searchable.args as FinsembleSelectProps)} />);\n\t\twrapper\n\t\t\t.find(\"input.search\")\n\t\t\t.at(0)\n\t\t\t.simulate(\"input\", {\n\t\t\t\ttarget: {\n\t\t\t\t\tvalue: \"north\",\n\t\t\t\t},\n\t\t\t});\n\t\texpect(wrapper.find(\".emperorOption\")).lengthOf(2);\n\t\twrapper.find(\".emperorOption input[type='checkbox']\").at(0).simulate(\"change\");\n\t\texpect(buttonSpy.getCall(0).args[0]).to.deep.equal([\"NC\"]);\n\t});\n});\n"]}
1
+ {"version":3,"file":"FinsembleSelect.spec.js","sourceRoot":"","sources":["../../../../src/components/common/tests/FinsembleSelect.spec.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from \"react\";\nimport { mount } from \"enzyme\";\nimport { describe, it } from \"mocha\";\nimport { expect } from \"chai\";\nimport sinon from \"sinon\";\nimport { FinsembleSelectProps } from \"../FinsembleSelect\";\nimport {\n\tSample,\n\tSeperateValuesFromText,\n\tPreSelected,\n\tPreSelectedValues,\n\tInvalidPreSelected,\n\tSearchable,\n} from \"../stories/FinsembleSelect.stories\";\n\n// Necessary to allow sinon to work with mocked actions (which are shown in the Actions panel in Storybook)\nimport addons, { mockChannel } from \"@storybook/addons\";\nimport { waitTime } from \"../../sdd/sdd_helpers\";\naddons.setChannel(mockChannel());\n\ndescribe(\"<FinsembleSelect/>\", () => {\n\tafterEach(() => {\n\t\tsinon.restore();\n\t});\n\n\tit(\"should display text and a checkbox\", () => {\n\t\tconst wrapper = mount(<Sample {...(Sample.args as FinsembleSelectProps)} />);\n\n\t\texpect(wrapper.find(\".emperorOption span\").exists(), \"Options have text\").to.be.true;\n\t\texpect(wrapper.find(\".emperorOption input[type='checkbox']\").exists(), \"Options have checkboxes\").to.be.true;\n\t});\n\tit(\"should call a function when checkbox is checked\", () => {\n\t\tconst buttonSpy = sinon.spy(Sample.args as FinsembleSelectProps, \"updateCallback\");\n\t\tconst wrapper = mount(<Sample {...(Sample.args as FinsembleSelectProps)} />);\n\t\twrapper.find(\".emperorOption input[type='checkbox']\").at(1).simulate(\"change\");\n\t\texpect(buttonSpy.getCall(0)).to.not.be.null;\n\t});\n\tit(\"should return all items checked when multiple items have been checked\", () => {\n\t\tconst buttonSpy = sinon.spy(Sample.args as FinsembleSelectProps, \"updateCallback\");\n\t\tconst wrapper = mount(<Sample {...(Sample.args as FinsembleSelectProps)} />);\n\t\twrapper.find(\".emperorOption input[type='checkbox']\").at(0).simulate(\"change\");\n\t\twrapper.find(\".emperorOption input[type='checkbox']\").at(2).simulate(\"change\");\n\t\texpect(buttonSpy.getCall(1).args[0]).lengthOf(2);\n\t});\n\tit(\"should limit checked selection\", () => {\n\t\tconst buttonSpy = sinon.spy(Sample.args as FinsembleSelectProps, \"updateCallback\");\n\t\tconst wrapper = mount(<Sample {...{ ...(Sample.args as FinsembleSelectProps), limit: 2 }} />);\n\t\twrapper.find(\".emperorOption input[type='checkbox']\").at(0).simulate(\"change\");\n\t\twrapper.find(\".emperorOption input[type='checkbox']\").at(1).simulate(\"change\");\n\t\twrapper.find(\".emperorOption input[type='checkbox']\").at(2).simulate(\"change\");\n\t\texpect(buttonSpy.getCall(1).args[0]).lengthOf(2);\n\t});\n\tit(\"should return values, not display text, if values are provided\", () => {\n\t\tconst buttonSpy = sinon.spy(SeperateValuesFromText.args as FinsembleSelectProps, \"updateCallback\");\n\t\tconst wrapper = mount(<SeperateValuesFromText {...(SeperateValuesFromText.args as FinsembleSelectProps)} />);\n\t\twrapper.find(\".emperorOption input[type='checkbox']\").at(0).simulate(\"change\");\n\t\texpect(buttonSpy.getCall(0).args[0]).to.deep.equal([\"1\"]);\n\t});\n\tit(\"should start with selected items if pre-selected items are provided\", () => {\n\t\tconst wrapper = mount(<PreSelected {...(PreSelected.args as FinsembleSelectProps)} />);\n\t\texpect(wrapper.find(\".emperorOption input[type='checkbox']\").at(1).prop(\"checked\")).to.be.true;\n\t});\n\tit(\"should show selected items if pre-selected items are provided after initial render\", async () => {\n\t\tconst wrapper = mount(<PreSelected {...(Sample.args as FinsembleSelectProps)} />);\n\n\t\tawait waitTime(10);\n\n\t\twrapper.setProps({ selected: PreSelected.args?.selected });\n\n\t\twrapper.update();\n\n\t\texpect(wrapper.find(\".emperorOption input[type='checkbox']\").at(1).prop(\"checked\")).to.be.true;\n\t});\n\tit(\"should start with selected values if both values and pre-selected values are provided\", () => {\n\t\tconst wrapper = mount(<PreSelectedValues {...(PreSelectedValues.args as FinsembleSelectProps)} />);\n\t\texpect(wrapper.find(\".emperorOption input[type='checkbox']\").at(0).prop(\"checked\")).to.be.false;\n\t\texpect(wrapper.find(\".emperorOption input[type='checkbox']\").at(1).prop(\"checked\")).to.be.true;\n\t\texpect(wrapper.find(\".emperorOption input[type='checkbox']\").at(2).prop(\"checked\")).to.be.true;\n\t\texpect(wrapper.find(\".emperorOption input[type='checkbox']\").at(3).prop(\"checked\")).to.be.false;\n\t});\n\tit(\"should ignore invalid pre-selected items\", () => {\n\t\tconst wrapper = mount(<InvalidPreSelected {...(InvalidPreSelected.args as FinsembleSelectProps)} />);\n\t\texpect(wrapper.find(\".emperorOption input[type='checkbox']\").at(0).prop(\"checked\")).to.be.false;\n\t\texpect(wrapper.find(\".emperorOption input[type='checkbox']\").at(1).prop(\"checked\")).to.be.false;\n\t\texpect(wrapper.find(\".emperorOption input[type='checkbox']\").at(2).prop(\"checked\")).to.be.false;\n\t\texpect(wrapper.find(\".emperorOption input[type='checkbox']\").at(3).prop(\"checked\")).to.be.false;\n\t});\n\tit(\"should filter list on input (case-insensitive)\", () => {\n\t\tconst buttonSpy = sinon.spy(Searchable.args as FinsembleSelectProps, \"updateCallback\");\n\t\tconst wrapper = mount(<Searchable {...(Searchable.args as FinsembleSelectProps)} />);\n\t\twrapper\n\t\t\t.find(\"input.search\")\n\t\t\t.at(0)\n\t\t\t.simulate(\"input\", {\n\t\t\t\ttarget: {\n\t\t\t\t\tvalue: \"north\",\n\t\t\t\t},\n\t\t\t});\n\t\texpect(wrapper.find(\".emperorOption\")).lengthOf(2);\n\t\twrapper.find(\".emperorOption input[type='checkbox']\").at(0).simulate(\"change\");\n\t\texpect(buttonSpy.getCall(0).args[0]).to.deep.equal([\"NC\"]);\n\t});\n});\n"]}
@@ -5,6 +5,7 @@ import { expect } from "chai";
5
5
  import sinon from "sinon";
6
6
  import { Checked, Unchecked } from "../stories/FinsembleToggle.stories";
7
7
  import { accessibilityAssessor } from "../../sdd/tests/a11y_helper";
8
+ // Necessary to allow sinon to work with mocked actions (which are shown in the Actions panel in Storybook)
8
9
  import addons, { mockChannel } from "@storybook/addons";
9
10
  import { waitTime } from "../../sdd/sdd_helpers";
10
11
  addons.setChannel(mockChannel());
@@ -1 +1 @@
1
- {"version":3,"file":"FinsembleToggle.spec.js","sourceRoot":"","sources":["../../../../src/components/common/tests/FinsembleToggle.spec.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAC/B,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAC9B,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,oCAAoC,CAAC;AACxE,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AAGpE,OAAO,MAAM,EAAE,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,MAAM,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC;AAEjC,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IACnC,SAAS,CAAC,GAAG,EAAE;QACd,KAAK,CAAC,OAAO,EAAE,CAAC;IACjB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iCAAiC,EAAE,KAAK,IAAI,EAAE;QAChD,MAAM,OAAO,GAAG,KAAK,CAAC,oBAAC,SAAS,oBAAM,SAAS,CAAC,IAA6B,EAAI,CAAC,CAAC;QAEnF,MAAM,CAAC,MAAM,qBAAqB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;IACzD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yEAAyE,EAAE,KAAK,IAAI,EAAE;;QACxF,MAAM,OAAO,GAAG,KAAK,CAAC,oBAAC,SAAS,oBAAM,SAAS,CAAC,IAA6B,EAAI,CAAC,CAAC;QAEnF,MAAM,QAAQ,CAAC,EAAE,CAAC,CAAC;QAEnB,OAAO,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,MAAA,OAAO,CAAC,IAAI,0CAAE,OAAO,EAAE,CAAC,CAAC;QAErD,OAAO,CAAC,MAAM,EAAE,CAAC;QAEjB,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;IACjF,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC","sourcesContent":["import * as React from \"react\";\nimport { mount } from \"enzyme\";\nimport { describe, it } from \"mocha\";\nimport { expect } from \"chai\";\nimport sinon from \"sinon\";\nimport { FinsembleToggleProps } from \"../FinsembleToggle\";\nimport { Checked, Unchecked } from \"../stories/FinsembleToggle.stories\";\nimport { accessibilityAssessor } from \"../../sdd/tests/a11y_helper\";\n\n// Necessary to allow sinon to work with mocked actions (which are shown in the Actions panel in Storybook)\nimport addons, { mockChannel } from \"@storybook/addons\";\nimport { waitTime } from \"../../sdd/sdd_helpers\";\naddons.setChannel(mockChannel());\n\ndescribe(\"<FinsembleToggle/>\", () => {\n\tafterEach(() => {\n\t\tsinon.restore();\n\t});\n\n\tit(\"should pass accessibility scans\", async () => {\n\t\tconst wrapper = mount(<Unchecked {...(Unchecked.args as FinsembleToggleProps)} />);\n\n\t\texpect(await accessibilityAssessor(wrapper)).to.be.true;\n\t});\n\n\tit(\"should be checked items if checked prop is updated after initial render\", async () => {\n\t\tconst wrapper = mount(<Unchecked {...(Unchecked.args as FinsembleToggleProps)} />);\n\n\t\tawait waitTime(10);\n\n\t\twrapper.setProps({ checked: Checked.args?.checked });\n\n\t\twrapper.update();\n\n\t\texpect(wrapper.find(\"input[type='checkbox']\").at(0).prop(\"checked\")).to.be.true;\n\t});\n});\n"]}
1
+ {"version":3,"file":"FinsembleToggle.spec.js","sourceRoot":"","sources":["../../../../src/components/common/tests/FinsembleToggle.spec.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAC/B,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAC9B,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,oCAAoC,CAAC;AACxE,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AAEpE,2GAA2G;AAC3G,OAAO,MAAM,EAAE,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,MAAM,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC;AAEjC,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IACnC,SAAS,CAAC,GAAG,EAAE;QACd,KAAK,CAAC,OAAO,EAAE,CAAC;IACjB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iCAAiC,EAAE,KAAK,IAAI,EAAE;QAChD,MAAM,OAAO,GAAG,KAAK,CAAC,oBAAC,SAAS,oBAAM,SAAS,CAAC,IAA6B,EAAI,CAAC,CAAC;QAEnF,MAAM,CAAC,MAAM,qBAAqB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;IACzD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yEAAyE,EAAE,KAAK,IAAI,EAAE;;QACxF,MAAM,OAAO,GAAG,KAAK,CAAC,oBAAC,SAAS,oBAAM,SAAS,CAAC,IAA6B,EAAI,CAAC,CAAC;QAEnF,MAAM,QAAQ,CAAC,EAAE,CAAC,CAAC;QAEnB,OAAO,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,MAAA,OAAO,CAAC,IAAI,0CAAE,OAAO,EAAE,CAAC,CAAC;QAErD,OAAO,CAAC,MAAM,EAAE,CAAC;QAEjB,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;IACjF,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC","sourcesContent":["import * as React from \"react\";\nimport { mount } from \"enzyme\";\nimport { describe, it } from \"mocha\";\nimport { expect } from \"chai\";\nimport sinon from \"sinon\";\nimport { FinsembleToggleProps } from \"../FinsembleToggle\";\nimport { Checked, Unchecked } from \"../stories/FinsembleToggle.stories\";\nimport { accessibilityAssessor } from \"../../sdd/tests/a11y_helper\";\n\n// Necessary to allow sinon to work with mocked actions (which are shown in the Actions panel in Storybook)\nimport addons, { mockChannel } from \"@storybook/addons\";\nimport { waitTime } from \"../../sdd/sdd_helpers\";\naddons.setChannel(mockChannel());\n\ndescribe(\"<FinsembleToggle/>\", () => {\n\tafterEach(() => {\n\t\tsinon.restore();\n\t});\n\n\tit(\"should pass accessibility scans\", async () => {\n\t\tconst wrapper = mount(<Unchecked {...(Unchecked.args as FinsembleToggleProps)} />);\n\n\t\texpect(await accessibilityAssessor(wrapper)).to.be.true;\n\t});\n\n\tit(\"should be checked items if checked prop is updated after initial render\", async () => {\n\t\tconst wrapper = mount(<Unchecked {...(Unchecked.args as FinsembleToggleProps)} />);\n\n\t\tawait waitTime(10);\n\n\t\twrapper.setProps({ checked: Checked.args?.checked });\n\n\t\twrapper.update();\n\n\t\texpect(wrapper.find(\"input[type='checkbox']\").at(0).prop(\"checked\")).to.be.true;\n\t});\n});\n"]}
@@ -5,6 +5,7 @@ import { expect } from "chai";
5
5
  import sinon from "sinon";
6
6
  import { TextLabels, MoreThanTwo, LabelsWithChildren } from "../stories/FinsembleToggleButtonBar.stories";
7
7
  import { accessibilityAssessor } from "../../sdd/tests/a11y_helper";
8
+ // Necessary to allow sinon to work with mocked actions (which are shown in the Actions panel in Storybook)
8
9
  import addons, { mockChannel } from "@storybook/addons";
9
10
  addons.setChannel(mockChannel());
10
11
  describe("<FinsembleToggleButtonBar/>", () => {
@@ -1 +1 @@
1
- {"version":3,"file":"FinsembleToggleButtonBar.spec.js","sourceRoot":"","sources":["../../../../src/components/common/tests/FinsembleToggleButtonBar.spec.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAC/B,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAC9B,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,6CAA6C,CAAC;AAC1G,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AAGpE,OAAO,MAAM,EAAE,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACxD,MAAM,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC;AAEjC,QAAQ,CAAC,6BAA6B,EAAE,GAAG,EAAE;IAC5C,SAAS,CAAC,GAAG,EAAE;QACd,KAAK,CAAC,OAAO,EAAE,CAAC;IACjB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iCAAiC,EAAE,KAAK,IAAI,EAAE;QAChD,MAAM,OAAO,GAAG,KAAK,CAAC,oBAAC,UAAU,oBAAM,UAAU,CAAC,IAAsC,EAAI,CAAC,CAAC;QAE9F,MAAM,CAAC,MAAM,qBAAqB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;IACzD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+CAA+C,EAAE,KAAK,IAAI,EAAE;QAC9D,MAAM,OAAO,GAAG,KAAK,CAAC,oBAAC,UAAU,oBAAM,UAAU,CAAC,IAAsC,EAAI,CAAC,CAAC;QAE9F,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,6BAA6B,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;QAChH,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,kCAAkC,CAAC,CAAC,EAAE,CAAC,EAAE;aAC7G,KAAK,CAAC;IACT,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,8CAA8C,EAAE,KAAK,IAAI,EAAE;QAC7D,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,IAAqC,EAAE,UAAU,CAAC,CAAC;QAC1F,MAAM,OAAO,GAAG,KAAK,CAAC,oBAAC,UAAU,oBAAM,UAAU,CAAC,IAAsC,EAAI,CAAC,CAAC;QAE9F,OAAO,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAC3D,MAAM,CAAC,SAAS,CAAC,UAAU,EAAE,kCAAkC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;QAC5E,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,yEAAyE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;IACrH,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,kCAAkC,EAAE,KAAK,IAAI,EAAE;QACjD,MAAM,OAAO,GAAG,KAAK,CAAC,oBAAC,WAAW,oBAAM,WAAW,CAAC,IAAsC,EAAI,CAAC,CAAC;QAEhG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,MAAM,EAAE,4BAA4B,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC7F,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,0DAA0D,EAAE,KAAK,IAAI,EAAE;QACzE,MAAM,OAAO,GAAG,KAAK,CAAC,oBAAC,kBAAkB,oBAAM,kBAAkB,CAAC,IAAsC,EAAI,CAAC,CAAC;QAE9G,MAAM,CACL,OAAO,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,MAAM,EAAE,EACzE,qCAAqC,CACrC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC","sourcesContent":["import * as React from \"react\";\nimport { mount } from \"enzyme\";\nimport { describe, it } from \"mocha\";\nimport { expect } from \"chai\";\nimport sinon from \"sinon\";\nimport { FinsembleToggleButtonBarProps } from \"../FinsembleToggleButtonBar\";\nimport { TextLabels, MoreThanTwo, LabelsWithChildren } from \"../stories/FinsembleToggleButtonBar.stories\";\nimport { accessibilityAssessor } from \"../../sdd/tests/a11y_helper\";\n\n// Necessary to allow sinon to work with mocked actions (which are shown in the Actions panel in Storybook)\nimport addons, { mockChannel } from \"@storybook/addons\";\naddons.setChannel(mockChannel());\n\ndescribe(\"<FinsembleToggleButtonBar/>\", () => {\n\tafterEach(() => {\n\t\tsinon.restore();\n\t});\n\n\tit(\"should pass accessibility scans\", async () => {\n\t\tconst wrapper = mount(<TextLabels {...(TextLabels.args as FinsembleToggleButtonBarProps)} />);\n\n\t\texpect(await accessibilityAssessor(wrapper)).to.be.true;\n\t});\n\n\tit(\"Initial item should display checked initially\", async () => {\n\t\tconst wrapper = mount(<TextLabels {...(TextLabels.args as FinsembleToggleButtonBarProps)} />);\n\n\t\texpect(wrapper.find(\".toggle-text-label\").at(0).prop(\"aria-checked\"), \"The first toggle is checked\").to.be.true;\n\t\texpect(wrapper.find(\".toggle-text-label\").at(1).prop(\"aria-checked\"), \"The second toggle is not checked\").to.be\n\t\t\t.false;\n\t});\n\tit(\"Clicking an item returns the value presented\", async () => {\n\t\tconst buttonSpy = sinon.spy(TextLabels.args as FinsembleToggleButtonBarProps, \"onChange\");\n\t\tconst wrapper = mount(<TextLabels {...(TextLabels.args as FinsembleToggleButtonBarProps)} />);\n\n\t\twrapper.find(\".toggle-text-label\").at(1).simulate(\"click\");\n\t\texpect(buttonSpy.calledOnce, \"The onChange callback was called\").to.be.true;\n\t\texpect(buttonSpy.args[0][0], \"The value assigned to button #2 is the value returned when it's clicked\").to.be.false;\n\t});\n\tit(\"More than 2 items should display\", async () => {\n\t\tconst wrapper = mount(<MoreThanTwo {...(MoreThanTwo.args as FinsembleToggleButtonBarProps)} />);\n\n\t\texpect(wrapper.find(\".toggle-text-label\").length, \"There are 4 toggle buttons\").to.equal(4);\n\t});\n\tit(\"LabelsWithChildren should include icons in their display\", async () => {\n\t\tconst wrapper = mount(<LabelsWithChildren {...(LabelsWithChildren.args as FinsembleToggleButtonBarProps)} />);\n\n\t\texpect(\n\t\t\twrapper.find(\".toggle-text-label\").at(0).find(\".finsemble-icon\").exists(),\n\t\t\t\"There's an icon in the first button\"\n\t\t).to.be.true;\n\t});\n});\n"]}
1
+ {"version":3,"file":"FinsembleToggleButtonBar.spec.js","sourceRoot":"","sources":["../../../../src/components/common/tests/FinsembleToggleButtonBar.spec.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from \"react\";\nimport { mount } from \"enzyme\";\nimport { describe, it } from \"mocha\";\nimport { expect } from \"chai\";\nimport sinon from \"sinon\";\nimport { FinsembleToggleButtonBarProps } from \"../FinsembleToggleButtonBar\";\nimport { TextLabels, MoreThanTwo, LabelsWithChildren } from \"../stories/FinsembleToggleButtonBar.stories\";\nimport { accessibilityAssessor } from \"../../sdd/tests/a11y_helper\";\n\n// Necessary to allow sinon to work with mocked actions (which are shown in the Actions panel in Storybook)\nimport addons, { mockChannel } from \"@storybook/addons\";\naddons.setChannel(mockChannel());\n\ndescribe(\"<FinsembleToggleButtonBar/>\", () => {\n\tafterEach(() => {\n\t\tsinon.restore();\n\t});\n\n\tit(\"should pass accessibility scans\", async () => {\n\t\tconst wrapper = mount(<TextLabels {...(TextLabels.args as FinsembleToggleButtonBarProps)} />);\n\n\t\texpect(await accessibilityAssessor(wrapper)).to.be.true;\n\t});\n\n\tit(\"Initial item should display checked initially\", async () => {\n\t\tconst wrapper = mount(<TextLabels {...(TextLabels.args as FinsembleToggleButtonBarProps)} />);\n\n\t\texpect(wrapper.find(\".toggle-text-label\").at(0).prop(\"aria-checked\"), \"The first toggle is checked\").to.be.true;\n\t\texpect(wrapper.find(\".toggle-text-label\").at(1).prop(\"aria-checked\"), \"The second toggle is not checked\").to.be\n\t\t\t.false;\n\t});\n\tit(\"Clicking an item returns the value presented\", async () => {\n\t\tconst buttonSpy = sinon.spy(TextLabels.args as FinsembleToggleButtonBarProps, \"onChange\");\n\t\tconst wrapper = mount(<TextLabels {...(TextLabels.args as FinsembleToggleButtonBarProps)} />);\n\n\t\twrapper.find(\".toggle-text-label\").at(1).simulate(\"click\");\n\t\texpect(buttonSpy.calledOnce, \"The onChange callback was called\").to.be.true;\n\t\texpect(buttonSpy.args[0][0], \"The value assigned to button #2 is the value returned when it's clicked\").to.be.false;\n\t});\n\tit(\"More than 2 items should display\", async () => {\n\t\tconst wrapper = mount(<MoreThanTwo {...(MoreThanTwo.args as FinsembleToggleButtonBarProps)} />);\n\n\t\texpect(wrapper.find(\".toggle-text-label\").length, \"There are 4 toggle buttons\").to.equal(4);\n\t});\n\tit(\"LabelsWithChildren should include icons in their display\", async () => {\n\t\tconst wrapper = mount(<LabelsWithChildren {...(LabelsWithChildren.args as FinsembleToggleButtonBarProps)} />);\n\n\t\texpect(\n\t\t\twrapper.find(\".toggle-text-label\").at(0).find(\".finsemble-icon\").exists(),\n\t\t\t\"There's an icon in the first button\"\n\t\t).to.be.true;\n\t});\n});\n"]}
@@ -4,11 +4,15 @@ import { describe, it, afterEach } from "mocha";
4
4
  import { expect } from "chai";
5
5
  import DefaultDropdownButton from "../../shared/DefaultDropdownButton";
6
6
  import { Default, Disabled } from "../stories/TimeSelect.stories";
7
+ // For running accessibility scans
7
8
  import { accessibilityAssessor } from "../../sdd/tests/a11y_helper";
9
+ // For testing user interactions (like click events):
8
10
  import sinon from "sinon";
11
+ // Necessary to allow sinon to work with mocked actions (which are shown in the Actions panel in Storybook)
9
12
  import addons, { mockChannel } from "@storybook/addons";
10
13
  addons.setChannel(mockChannel());
11
14
  describe("<TimeSelect/>", () => {
15
+ // Used to clear after each interactive test using sinon
12
16
  afterEach(() => {
13
17
  sinon.restore();
14
18
  });