@webiny/app-aco 6.3.0 → 6.4.0-beta.1

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 (620) hide show
  1. package/app.js +3 -4
  2. package/app.js.map +1 -1
  3. package/components/Actions/DeleteFolder/DeleteFolder.js +21 -26
  4. package/components/Actions/DeleteFolder/DeleteFolder.js.map +1 -1
  5. package/components/Actions/DeleteFolder/index.js +0 -2
  6. package/components/Actions/EditFolder/EditFolder.js +20 -25
  7. package/components/Actions/EditFolder/EditFolder.js.map +1 -1
  8. package/components/Actions/EditFolder/index.js +0 -2
  9. package/components/Actions/SetFolderPemissions/SetFolderPermissions.js +20 -25
  10. package/components/Actions/SetFolderPemissions/SetFolderPermissions.js.map +1 -1
  11. package/components/Actions/SetFolderPemissions/index.js +0 -2
  12. package/components/Actions/index.js +0 -2
  13. package/components/AdvancedSearch/AdvancedSearch.js +67 -75
  14. package/components/AdvancedSearch/AdvancedSearch.js.map +1 -1
  15. package/components/AdvancedSearch/AdvancedSearchConfigs.js +37 -40
  16. package/components/AdvancedSearch/AdvancedSearchConfigs.js.map +1 -1
  17. package/components/AdvancedSearch/AdvancedSearchPresenter.js +178 -199
  18. package/components/AdvancedSearch/AdvancedSearchPresenter.js.map +1 -1
  19. package/components/AdvancedSearch/AdvancedSearchPresenter.test.js +653 -720
  20. package/components/AdvancedSearch/AdvancedSearchPresenter.test.js.map +1 -1
  21. package/components/AdvancedSearch/Button/Button.js +13 -16
  22. package/components/AdvancedSearch/Button/Button.js.map +1 -1
  23. package/components/AdvancedSearch/Button/index.js +0 -2
  24. package/components/AdvancedSearch/GraphQLInputMapper.js +29 -40
  25. package/components/AdvancedSearch/GraphQLInputMapper.js.map +1 -1
  26. package/components/AdvancedSearch/GraphQLInputMapper.test.js +179 -139
  27. package/components/AdvancedSearch/GraphQLInputMapper.test.js.map +1 -1
  28. package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilder/QueryBuilder.js +57 -58
  29. package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilder/QueryBuilder.js.map +1 -1
  30. package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilder/components/Details.js +25 -26
  31. package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilder/components/Details.js.map +1 -1
  32. package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilder/components/Filter.js +51 -71
  33. package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilder/components/Filter.js.map +1 -1
  34. package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilder/components/FilterOperationLabel.js +9 -13
  35. package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilder/components/FilterOperationLabel.js.map +1 -1
  36. package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilder/components/GroupOperationLabel.js +14 -14
  37. package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilder/components/GroupOperationLabel.js.map +1 -1
  38. package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilder/components/InputField.js +11 -20
  39. package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilder/components/InputField.js.map +1 -1
  40. package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilder/components/OperationSelector.js +15 -25
  41. package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilder/components/OperationSelector.js.map +1 -1
  42. package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilder/components/controls/AddFilter.js +14 -17
  43. package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilder/components/controls/AddFilter.js.map +1 -1
  44. package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilder/components/controls/AddGroup.js +11 -14
  45. package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilder/components/controls/AddGroup.js.map +1 -1
  46. package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilder/components/controls/RemoveFilter.js +14 -18
  47. package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilder/components/controls/RemoveFilter.js.map +1 -1
  48. package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilder/components/controls/index.js +0 -2
  49. package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilder/components/index.js +0 -2
  50. package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilder/index.js +0 -2
  51. package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilderDrawer.js +65 -67
  52. package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilderDrawer.js.map +1 -1
  53. package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilderDrawerPresenter.js +110 -139
  54. package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilderDrawerPresenter.js.map +1 -1
  55. package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilderDrawerPresenter.test.js +345 -328
  56. package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilderDrawerPresenter.test.js.map +1 -1
  57. package/components/AdvancedSearch/QueryBuilderDrawer/index.js +0 -2
  58. package/components/AdvancedSearch/QueryManagerDialog/QueryManagerDialog.js +23 -27
  59. package/components/AdvancedSearch/QueryManagerDialog/QueryManagerDialog.js.map +1 -1
  60. package/components/AdvancedSearch/QueryManagerDialog/components/Description.js +8 -10
  61. package/components/AdvancedSearch/QueryManagerDialog/components/Description.js.map +1 -1
  62. package/components/AdvancedSearch/QueryManagerDialog/components/Empty.js +16 -17
  63. package/components/AdvancedSearch/QueryManagerDialog/components/Empty.js.map +1 -1
  64. package/components/AdvancedSearch/QueryManagerDialog/components/FilterList.js +41 -42
  65. package/components/AdvancedSearch/QueryManagerDialog/components/FilterList.js.map +1 -1
  66. package/components/AdvancedSearch/QueryManagerDialog/components/index.js +0 -2
  67. package/components/AdvancedSearch/QueryManagerDialog/index.js +0 -2
  68. package/components/AdvancedSearch/QuerySaverDialog/QuerySaverDialog.js +52 -59
  69. package/components/AdvancedSearch/QuerySaverDialog/QuerySaverDialog.js.map +1 -1
  70. package/components/AdvancedSearch/QuerySaverDialog/QuerySaverDialogPresenter.js +39 -52
  71. package/components/AdvancedSearch/QuerySaverDialog/QuerySaverDialogPresenter.js.map +1 -1
  72. package/components/AdvancedSearch/QuerySaverDialog/QuerySaverDialogPresenter.test.js +58 -66
  73. package/components/AdvancedSearch/QuerySaverDialog/QuerySaverDialogPresenter.test.js.map +1 -1
  74. package/components/AdvancedSearch/QuerySaverDialog/index.js +0 -2
  75. package/components/AdvancedSearch/SelectedFilter/SelectedFilter.js +18 -19
  76. package/components/AdvancedSearch/SelectedFilter/SelectedFilter.js.map +1 -1
  77. package/components/AdvancedSearch/SelectedFilter/index.js +0 -2
  78. package/components/AdvancedSearch/domain/Feedback.js +12 -11
  79. package/components/AdvancedSearch/domain/Feedback.js.map +1 -1
  80. package/components/AdvancedSearch/domain/Field.js +206 -190
  81. package/components/AdvancedSearch/domain/Field.js.map +1 -1
  82. package/components/AdvancedSearch/domain/FieldMapper.js +40 -41
  83. package/components/AdvancedSearch/domain/FieldMapper.js.map +1 -1
  84. package/components/AdvancedSearch/domain/Filter.js +64 -47
  85. package/components/AdvancedSearch/domain/Filter.js.map +1 -1
  86. package/components/AdvancedSearch/domain/FilterMapper.js +35 -34
  87. package/components/AdvancedSearch/domain/FilterMapper.js.map +1 -1
  88. package/components/AdvancedSearch/domain/FilterRepository.js +84 -85
  89. package/components/AdvancedSearch/domain/FilterRepository.js.map +1 -1
  90. package/components/AdvancedSearch/domain/FilterRepositoryFactory.js +8 -9
  91. package/components/AdvancedSearch/domain/FilterRepositoryFactory.js.map +1 -1
  92. package/components/AdvancedSearch/domain/Loading.js +47 -46
  93. package/components/AdvancedSearch/domain/Loading.js.map +1 -1
  94. package/components/AdvancedSearch/domain/Operation.js +5 -4
  95. package/components/AdvancedSearch/domain/Operation.js.map +1 -1
  96. package/components/AdvancedSearch/domain/Sorter.js +17 -16
  97. package/components/AdvancedSearch/domain/Sorter.js.map +1 -1
  98. package/components/AdvancedSearch/domain/index.js +0 -2
  99. package/components/AdvancedSearch/fields/Boolean.js +23 -25
  100. package/components/AdvancedSearch/fields/Boolean.js.map +1 -1
  101. package/components/AdvancedSearch/fields/DateWithTimezone.js +47 -52
  102. package/components/AdvancedSearch/fields/DateWithTimezone.js.map +1 -1
  103. package/components/AdvancedSearch/fields/DateWithoutTimezone.js +26 -30
  104. package/components/AdvancedSearch/fields/DateWithoutTimezone.js.map +1 -1
  105. package/components/AdvancedSearch/fields/Input.js +12 -14
  106. package/components/AdvancedSearch/fields/Input.js.map +1 -1
  107. package/components/AdvancedSearch/fields/PredefinedValues.js +17 -23
  108. package/components/AdvancedSearch/fields/PredefinedValues.js.map +1 -1
  109. package/components/AdvancedSearch/fields/index.js +0 -2
  110. package/components/AdvancedSearch/gateways/FiltersGatewayInterface.js +0 -3
  111. package/components/AdvancedSearch/gateways/FiltersGraphQLGateway.js +69 -121
  112. package/components/AdvancedSearch/gateways/FiltersGraphQLGateway.js.map +1 -1
  113. package/components/AdvancedSearch/gateways/filters.gql.js +9 -8
  114. package/components/AdvancedSearch/gateways/filters.gql.js.map +1 -1
  115. package/components/AdvancedSearch/gateways/filters.types.js +0 -3
  116. package/components/AdvancedSearch/gateways/index.js +0 -2
  117. package/components/AdvancedSearch/index.js +22 -24
  118. package/components/AdvancedSearch/index.js.map +1 -1
  119. package/components/AdvancedSearch/useFilterRepository.js +4 -3
  120. package/components/AdvancedSearch/useFilterRepository.js.map +1 -1
  121. package/components/AdvancedSearch/useInputField.js +4 -6
  122. package/components/AdvancedSearch/useInputField.js.map +1 -1
  123. package/components/Extensions/Extensions.js +23 -26
  124. package/components/Extensions/Extensions.js.map +1 -1
  125. package/components/Extensions/index.js +0 -2
  126. package/components/FolderGrid/FolderGridItem.js +67 -62
  127. package/components/FolderGrid/FolderGridItem.js.map +1 -1
  128. package/components/FolderGrid/index.js +0 -2
  129. package/components/FolderIcons/assets/folder-shared-icon.js +25 -0
  130. package/components/FolderIcons/assets/folder-shared-icon.js.map +1 -0
  131. package/components/FolderIcons/assets/folder.js +21 -0
  132. package/components/FolderIcons/assets/folder.js.map +1 -0
  133. package/components/FolderIcons/index.js +2 -5
  134. package/components/FolderPicker/FolderPicker.js +23 -20
  135. package/components/FolderPicker/FolderPicker.js.map +1 -1
  136. package/components/FolderTree/ButtonCreate/ButtonCreate.d.ts +1 -0
  137. package/components/FolderTree/ButtonCreate/ButtonCreate.js +17 -14
  138. package/components/FolderTree/ButtonCreate/ButtonCreate.js.map +1 -1
  139. package/components/FolderTree/ButtonCreate/index.js +0 -2
  140. package/components/FolderTree/Empty/Empty.js +5 -6
  141. package/components/FolderTree/Empty/Empty.js.map +1 -1
  142. package/components/FolderTree/Empty/index.js +0 -2
  143. package/components/FolderTree/List/List.js +120 -135
  144. package/components/FolderTree/List/List.js.map +1 -1
  145. package/components/FolderTree/List/index.js +0 -2
  146. package/components/FolderTree/List/utils.js +31 -64
  147. package/components/FolderTree/List/utils.js.map +1 -1
  148. package/components/FolderTree/Loader/Loader.js +15 -18
  149. package/components/FolderTree/Loader/Loader.js.map +1 -1
  150. package/components/FolderTree/Loader/index.js +0 -2
  151. package/components/FolderTree/MenuActions/MenuActions.js +19 -27
  152. package/components/FolderTree/MenuActions/MenuActions.js.map +1 -1
  153. package/components/FolderTree/MenuActions/index.js +0 -2
  154. package/components/FolderTree/Node/Node.js +27 -47
  155. package/components/FolderTree/Node/Node.js.map +1 -1
  156. package/components/FolderTree/Node/index.js +0 -2
  157. package/components/FolderTree/NodePreview/NodePreview.js +11 -14
  158. package/components/FolderTree/NodePreview/NodePreview.js.map +1 -1
  159. package/components/FolderTree/NodePreview/index.js +0 -2
  160. package/components/FolderTree/index.d.ts +2 -1
  161. package/components/FolderTree/index.js +47 -57
  162. package/components/FolderTree/index.js.map +1 -1
  163. package/components/Search/Search.js +15 -20
  164. package/components/Search/Search.js.map +1 -1
  165. package/components/Search/index.js +0 -2
  166. package/components/Table/components/Table/ColumnVisibility/ColumnsVisibilityDecorator.js +19 -20
  167. package/components/Table/components/Table/ColumnVisibility/ColumnsVisibilityDecorator.js.map +1 -1
  168. package/components/Table/components/Table/ColumnVisibility/ColumnsVisibilityPresenter.js +17 -18
  169. package/components/Table/components/Table/ColumnVisibility/ColumnsVisibilityPresenter.js.map +1 -1
  170. package/components/Table/components/Table/ColumnVisibility/ColumnsVisibilityPresenter.test.js +113 -130
  171. package/components/Table/components/Table/ColumnVisibility/ColumnsVisibilityPresenter.test.js.map +1 -1
  172. package/components/Table/components/Table/ColumnVisibility/ColumnsVisibilityRepository.js +26 -25
  173. package/components/Table/components/Table/ColumnVisibility/ColumnsVisibilityRepository.js.map +1 -1
  174. package/components/Table/components/Table/ColumnVisibility/ColumnsVisibilityRepositoryFactory.js +12 -11
  175. package/components/Table/components/Table/ColumnVisibility/ColumnsVisibilityRepositoryFactory.js.map +1 -1
  176. package/components/Table/components/Table/ColumnVisibility/ColumnsVisibilityUpdater.js +11 -12
  177. package/components/Table/components/Table/ColumnVisibility/ColumnsVisibilityUpdater.js.map +1 -1
  178. package/components/Table/components/Table/ColumnVisibility/IColumnsVisibilityRepository.js +0 -3
  179. package/components/Table/components/Table/ColumnVisibility/IColumnsVisibilityUpdater.js +0 -3
  180. package/components/Table/components/Table/ColumnVisibility/index.js +0 -2
  181. package/components/Table/components/Table/Columns/Column.js +18 -17
  182. package/components/Table/components/Table/Columns/Column.js.map +1 -1
  183. package/components/Table/components/Table/Columns/ColumnMapper.js +31 -31
  184. package/components/Table/components/Table/Columns/ColumnMapper.js.map +1 -1
  185. package/components/Table/components/Table/Columns/ColumnsPresenter.js +14 -13
  186. package/components/Table/components/Table/Columns/ColumnsPresenter.js.map +1 -1
  187. package/components/Table/components/Table/Columns/ColumnsPresenter.test.js +66 -60
  188. package/components/Table/components/Table/Columns/ColumnsPresenter.test.js.map +1 -1
  189. package/components/Table/components/Table/Columns/ColumnsRepository.js +15 -14
  190. package/components/Table/components/Table/Columns/ColumnsRepository.js.map +1 -1
  191. package/components/Table/components/Table/Columns/ColumnsRepositoryFactory.js +15 -11
  192. package/components/Table/components/Table/Columns/ColumnsRepositoryFactory.js.map +1 -1
  193. package/components/Table/components/Table/Columns/IColumnsRepository.js +0 -3
  194. package/components/Table/components/Table/Columns/index.js +0 -2
  195. package/components/Table/components/Table/Table.js +38 -32
  196. package/components/Table/components/Table/Table.js.map +1 -1
  197. package/components/Table/components/Table/TableInner.js +33 -40
  198. package/components/Table/components/Table/TableInner.js.map +1 -1
  199. package/components/Table/components/Table/TablePresenter.js +12 -9
  200. package/components/Table/components/Table/TablePresenter.js.map +1 -1
  201. package/components/Table/components/Table/gateways/ColumnsVisibilityLocalStorageGateway.js +12 -11
  202. package/components/Table/components/Table/gateways/ColumnsVisibilityLocalStorageGateway.js.map +1 -1
  203. package/components/Table/components/Table/gateways/IColumnsVisibilityGateway.js +0 -3
  204. package/components/Table/components/Table/gateways/index.js +0 -2
  205. package/components/Table/components/Table/index.js +0 -2
  206. package/components/Table/components/index.js +0 -2
  207. package/components/Table/createTableData.js +13 -16
  208. package/components/Table/createTableData.js.map +1 -1
  209. package/components/Table/index.js +0 -2
  210. package/components/Table/useTableRow.js +17 -29
  211. package/components/Table/useTableRow.js.map +1 -1
  212. package/components/index.js +0 -2
  213. package/config/AcoConfig.js +43 -30
  214. package/config/AcoConfig.js.map +1 -1
  215. package/config/advanced-search/FieldRenderer.js +27 -30
  216. package/config/advanced-search/FieldRenderer.js.map +1 -1
  217. package/config/advanced-search/index.js +3 -2
  218. package/config/advanced-search/index.js.map +1 -1
  219. package/config/folder/Action.js +27 -32
  220. package/config/folder/Action.js.map +1 -1
  221. package/config/folder/DropConfirmation.js +12 -13
  222. package/config/folder/DropConfirmation.js.map +1 -1
  223. package/config/folder/createFolderFieldDecoratorFactory.js +14 -18
  224. package/config/folder/createFolderFieldDecoratorFactory.js.map +1 -1
  225. package/config/folder/index.js +4 -3
  226. package/config/folder/index.js.map +1 -1
  227. package/config/index.js +0 -2
  228. package/config/record/Action.js +28 -33
  229. package/config/record/Action.js.map +1 -1
  230. package/config/record/index.js +3 -2
  231. package/config/record/index.js.map +1 -1
  232. package/config/table/Column.js +65 -81
  233. package/config/table/Column.js.map +1 -1
  234. package/config/table/Sorting.js +24 -27
  235. package/config/table/Sorting.js.map +1 -1
  236. package/config/table/index.js +4 -3
  237. package/config/table/index.js.map +1 -1
  238. package/constants.js +0 -2
  239. package/contexts/acoList.js +283 -384
  240. package/contexts/acoList.js.map +1 -1
  241. package/contexts/app.js +40 -53
  242. package/contexts/app.js.map +1 -1
  243. package/contexts/folder.js +11 -15
  244. package/contexts/folder.js.map +1 -1
  245. package/contexts/folders.js +27 -32
  246. package/contexts/folders.js.map +1 -1
  247. package/contexts/index.js +0 -2
  248. package/contexts/navigateFolder.js +49 -57
  249. package/contexts/navigateFolder.js.map +1 -1
  250. package/contexts/records.js +299 -422
  251. package/contexts/records.js.map +1 -1
  252. package/dialogs/DialogSetPermissions/UsersTeamsMultiAutocomplete.js +22 -29
  253. package/dialogs/DialogSetPermissions/UsersTeamsMultiAutocomplete.js.map +1 -1
  254. package/dialogs/DialogSetPermissions/UsersTeamsSelection/ListItemGraphic.js +18 -21
  255. package/dialogs/DialogSetPermissions/UsersTeamsSelection/ListItemGraphic.js.map +1 -1
  256. package/dialogs/DialogSetPermissions/UsersTeamsSelection/ListItemMeta.js +105 -107
  257. package/dialogs/DialogSetPermissions/UsersTeamsSelection/ListItemMeta.js.map +1 -1
  258. package/dialogs/DialogSetPermissions/UsersTeamsSelection/ListItemText.js +11 -16
  259. package/dialogs/DialogSetPermissions/UsersTeamsSelection/ListItemText.js.map +1 -1
  260. package/dialogs/DialogSetPermissions/UsersTeamsSelection.js +29 -34
  261. package/dialogs/DialogSetPermissions/UsersTeamsSelection.js.map +1 -1
  262. package/dialogs/DialogSetPermissions/graphql.js +3 -2
  263. package/dialogs/DialogSetPermissions/graphql.js.map +1 -1
  264. package/dialogs/ParentFolderField.js +12 -13
  265. package/dialogs/ParentFolderField.js.map +1 -1
  266. package/dialogs/index.js +0 -2
  267. package/dialogs/useConfirmMoveFolderDialog.js +16 -19
  268. package/dialogs/useConfirmMoveFolderDialog.js.map +1 -1
  269. package/dialogs/useCreateDialog.js +78 -93
  270. package/dialogs/useCreateDialog.js.map +1 -1
  271. package/dialogs/useDeleteDialog.js +27 -33
  272. package/dialogs/useDeleteDialog.js.map +1 -1
  273. package/dialogs/useEditDialog.js +77 -80
  274. package/dialogs/useEditDialog.js.map +1 -1
  275. package/dialogs/useMoveToFolderDialog.d.ts +1 -1
  276. package/dialogs/useMoveToFolderDialog.js +33 -49
  277. package/dialogs/useMoveToFolderDialog.js.map +1 -1
  278. package/dialogs/useSetPermissionsDialog.js +85 -87
  279. package/dialogs/useSetPermissionsDialog.js.map +1 -1
  280. package/domain/folder/Folder.js +25 -24
  281. package/domain/folder/Folder.js.map +1 -1
  282. package/domain/folder/FolderDto.js +0 -3
  283. package/domain/folder/FolderDtoMapper.js +24 -25
  284. package/domain/folder/FolderDtoMapper.js.map +1 -1
  285. package/domain/folder/FolderIdentity.js +16 -17
  286. package/domain/folder/FolderIdentity.js.map +1 -1
  287. package/domain/folder/RootFolder.js +24 -23
  288. package/domain/folder/RootFolder.js.map +1 -1
  289. package/exports/admin/aco.js +0 -2
  290. package/exports/admin/ui.js +0 -2
  291. package/features/folders/abstractions.js +6 -5
  292. package/features/folders/abstractions.js.map +1 -1
  293. package/features/folders/cache/FoldersCacheFactory.js +13 -12
  294. package/features/folders/cache/FoldersCacheFactory.js.map +1 -1
  295. package/features/folders/cache/ListCache.d.ts +2 -29
  296. package/features/folders/cache/ListCache.js +1 -43
  297. package/features/folders/cache/LoadedCache.js +33 -27
  298. package/features/folders/cache/LoadedCache.js.map +1 -1
  299. package/features/folders/cache/LoadedFoldersCacheFactory.js +13 -12
  300. package/features/folders/cache/LoadedFoldersCacheFactory.js.map +1 -1
  301. package/features/folders/cache/index.js +0 -2
  302. package/features/folders/createFolder/CreateFolder.test.js +44 -48
  303. package/features/folders/createFolder/CreateFolder.test.js.map +1 -1
  304. package/features/folders/createFolder/CreateFolderGqlGateway.js +27 -32
  305. package/features/folders/createFolder/CreateFolderGqlGateway.js.map +1 -1
  306. package/features/folders/createFolder/CreateFolderRepository.js +29 -24
  307. package/features/folders/createFolder/CreateFolderRepository.js.map +1 -1
  308. package/features/folders/createFolder/CreateFolderUseCase.js +20 -17
  309. package/features/folders/createFolder/CreateFolderUseCase.js.map +1 -1
  310. package/features/folders/createFolder/abstractions.js +4 -12
  311. package/features/folders/createFolder/abstractions.js.map +1 -1
  312. package/features/folders/createFolder/feature.js +15 -14
  313. package/features/folders/createFolder/feature.js.map +1 -1
  314. package/features/folders/createFolder/index.js +0 -2
  315. package/features/folders/createFolder/useCreateFolder.js +6 -9
  316. package/features/folders/createFolder/useCreateFolder.js.map +1 -1
  317. package/features/folders/deleteFolder/DeleteFolder.test.js +38 -39
  318. package/features/folders/deleteFolder/DeleteFolder.test.js.map +1 -1
  319. package/features/folders/deleteFolder/DeleteFolderGqlGateway.js +21 -28
  320. package/features/folders/deleteFolder/DeleteFolderGqlGateway.js.map +1 -1
  321. package/features/folders/deleteFolder/DeleteFolderRepository.js +16 -13
  322. package/features/folders/deleteFolder/DeleteFolderRepository.js.map +1 -1
  323. package/features/folders/deleteFolder/DeleteFolderUseCase.js +13 -10
  324. package/features/folders/deleteFolder/DeleteFolderUseCase.js.map +1 -1
  325. package/features/folders/deleteFolder/abstractions.js +4 -12
  326. package/features/folders/deleteFolder/abstractions.js.map +1 -1
  327. package/features/folders/deleteFolder/feature.js +15 -14
  328. package/features/folders/deleteFolder/feature.js.map +1 -1
  329. package/features/folders/deleteFolder/index.js +0 -2
  330. package/features/folders/deleteFolder/useDeleteFolder.js +6 -9
  331. package/features/folders/deleteFolder/useDeleteFolder.js.map +1 -1
  332. package/features/folders/feature.js +23 -29
  333. package/features/folders/feature.js.map +1 -1
  334. package/features/folders/folderModelProvider/FolderModelContext.js +17 -24
  335. package/features/folders/folderModelProvider/FolderModelContext.js.map +1 -1
  336. package/features/folders/folderModelProvider/FolderModelDto.js +0 -3
  337. package/features/folders/folderModelProvider/FolderModelProvider.js +23 -23
  338. package/features/folders/folderModelProvider/FolderModelProvider.js.map +1 -1
  339. package/features/folders/folderModelProvider/GetFolderModelGqlGateway.js +20 -26
  340. package/features/folders/folderModelProvider/GetFolderModelGqlGateway.js.map +1 -1
  341. package/features/folders/folderModelProvider/GetFolderModelRepository.js +25 -22
  342. package/features/folders/folderModelProvider/GetFolderModelRepository.js.map +1 -1
  343. package/features/folders/folderModelProvider/abstractions.js +3 -2
  344. package/features/folders/folderModelProvider/abstractions.js.map +1 -1
  345. package/features/folders/folderModelProvider/feature.js +15 -14
  346. package/features/folders/folderModelProvider/feature.js.map +1 -1
  347. package/features/folders/folderModelProvider/index.js +0 -2
  348. package/features/folders/getDescendantFolders/GetDescendantFolders.test.js +116 -110
  349. package/features/folders/getDescendantFolders/GetDescendantFolders.test.js.map +1 -1
  350. package/features/folders/getDescendantFolders/GetDescendantFoldersRepository.js +35 -35
  351. package/features/folders/getDescendantFolders/GetDescendantFoldersRepository.js.map +1 -1
  352. package/features/folders/getDescendantFolders/GetDescendantFoldersUseCase.js +13 -10
  353. package/features/folders/getDescendantFolders/GetDescendantFoldersUseCase.js.map +1 -1
  354. package/features/folders/getDescendantFolders/abstractions.js +3 -10
  355. package/features/folders/getDescendantFolders/abstractions.js.map +1 -1
  356. package/features/folders/getDescendantFolders/feature.js +14 -13
  357. package/features/folders/getDescendantFolders/feature.js.map +1 -1
  358. package/features/folders/getDescendantFolders/index.js +0 -2
  359. package/features/folders/getDescendantFolders/useGetDescendantFolders.js +6 -9
  360. package/features/folders/getDescendantFolders/useGetDescendantFolders.js.map +1 -1
  361. package/features/folders/getFolder/GetFolderGqlGateway.js +26 -31
  362. package/features/folders/getFolder/GetFolderGqlGateway.js.map +1 -1
  363. package/features/folders/getFolder/GetFolderRepository.js +18 -13
  364. package/features/folders/getFolder/GetFolderRepository.js.map +1 -1
  365. package/features/folders/getFolder/GetFolderUseCase.js +13 -10
  366. package/features/folders/getFolder/GetFolderUseCase.js.map +1 -1
  367. package/features/folders/getFolder/abstractions.js +4 -12
  368. package/features/folders/getFolder/abstractions.js.map +1 -1
  369. package/features/folders/getFolder/feature.js +15 -14
  370. package/features/folders/getFolder/feature.js.map +1 -1
  371. package/features/folders/getFolder/index.js +0 -2
  372. package/features/folders/getFolder/useGetFolder.js +6 -9
  373. package/features/folders/getFolder/useGetFolder.js.map +1 -1
  374. package/features/folders/getFolderAncestors/GetFolderAncestors.test.js +108 -103
  375. package/features/folders/getFolderAncestors/GetFolderAncestors.test.js.map +1 -1
  376. package/features/folders/getFolderAncestors/GetFolderAncestorsRepository.js +32 -30
  377. package/features/folders/getFolderAncestors/GetFolderAncestorsRepository.js.map +1 -1
  378. package/features/folders/getFolderAncestors/GetFolderAncestorsUseCase.js +13 -10
  379. package/features/folders/getFolderAncestors/GetFolderAncestorsUseCase.js.map +1 -1
  380. package/features/folders/getFolderAncestors/abstractions.js +3 -10
  381. package/features/folders/getFolderAncestors/abstractions.js.map +1 -1
  382. package/features/folders/getFolderAncestors/feature.js +14 -13
  383. package/features/folders/getFolderAncestors/feature.js.map +1 -1
  384. package/features/folders/getFolderAncestors/index.js +0 -2
  385. package/features/folders/getFolderAncestors/useGetFolderAncestors.js +6 -9
  386. package/features/folders/getFolderAncestors/useGetFolderAncestors.js.map +1 -1
  387. package/features/folders/getFolderExtensionsFields/GetFolderExtensionsFields.test.js +190 -160
  388. package/features/folders/getFolderExtensionsFields/GetFolderExtensionsFields.test.js.map +1 -1
  389. package/features/folders/getFolderExtensionsFields/GetFolderExtensionsFieldsUseCase.js +30 -29
  390. package/features/folders/getFolderExtensionsFields/GetFolderExtensionsFieldsUseCase.js.map +1 -1
  391. package/features/folders/getFolderExtensionsFields/abstractions.js +3 -8
  392. package/features/folders/getFolderExtensionsFields/abstractions.js.map +1 -1
  393. package/features/folders/getFolderExtensionsFields/feature.js +16 -18
  394. package/features/folders/getFolderExtensionsFields/feature.js.map +1 -1
  395. package/features/folders/getFolderExtensionsFields/filters/CmsNamespaceFilter.js +16 -17
  396. package/features/folders/getFolderExtensionsFields/filters/CmsNamespaceFilter.js.map +1 -1
  397. package/features/folders/getFolderExtensionsFields/filters/FmFileNamespaceFilter.js +13 -16
  398. package/features/folders/getFolderExtensionsFields/filters/FmFileNamespaceFilter.js.map +1 -1
  399. package/features/folders/getFolderExtensionsFields/filters/GlobalNamespaceFilter.js +7 -8
  400. package/features/folders/getFolderExtensionsFields/filters/GlobalNamespaceFilter.js.map +1 -1
  401. package/features/folders/getFolderExtensionsFields/index.js +0 -2
  402. package/features/folders/getFolderExtensionsFields/useFolderExtensionsFields.js +13 -14
  403. package/features/folders/getFolderExtensionsFields/useFolderExtensionsFields.js.map +1 -1
  404. package/features/folders/getFolderLevelPermission/GetFolderLevelPermission.test.js +135 -164
  405. package/features/folders/getFolderLevelPermission/GetFolderLevelPermission.test.js.map +1 -1
  406. package/features/folders/getFolderLevelPermission/GetFolderLevelPermissionUseCase.js +8 -7
  407. package/features/folders/getFolderLevelPermission/GetFolderLevelPermissionUseCase.js.map +1 -1
  408. package/features/folders/getFolderLevelPermission/abstractions.js +2 -1
  409. package/features/folders/getFolderLevelPermission/abstractions.js.map +1 -1
  410. package/features/folders/getFolderLevelPermission/decorators/GetFolderLevelPermissionWithFlpDecorator.js +17 -20
  411. package/features/folders/getFolderLevelPermission/decorators/GetFolderLevelPermissionWithFlpDecorator.js.map +1 -1
  412. package/features/folders/getFolderLevelPermission/feature.js +14 -16
  413. package/features/folders/getFolderLevelPermission/feature.js.map +1 -1
  414. package/features/folders/getFolderLevelPermission/index.js +0 -2
  415. package/features/folders/getFolderLevelPermission/useGetFolderLevelPermission.js +9 -10
  416. package/features/folders/getFolderLevelPermission/useGetFolderLevelPermission.js.map +1 -1
  417. package/features/folders/listFolders/ListFolders.test.js +98 -111
  418. package/features/folders/listFolders/ListFolders.test.js.map +1 -1
  419. package/features/folders/listFolders/ListFoldersGqlGateway.js +29 -27
  420. package/features/folders/listFolders/ListFoldersGqlGateway.js.map +1 -1
  421. package/features/folders/listFolders/ListFoldersRepository.js +19 -14
  422. package/features/folders/listFolders/ListFoldersRepository.js.map +1 -1
  423. package/features/folders/listFolders/ListFoldersUseCase.js +13 -10
  424. package/features/folders/listFolders/ListFoldersUseCase.js.map +1 -1
  425. package/features/folders/listFolders/ListFoldersUseCaseWithLoading.js +14 -11
  426. package/features/folders/listFolders/ListFoldersUseCaseWithLoading.js.map +1 -1
  427. package/features/folders/listFolders/abstractions.js +4 -3
  428. package/features/folders/listFolders/abstractions.js.map +1 -1
  429. package/features/folders/listFolders/feature.js +17 -23
  430. package/features/folders/listFolders/feature.js.map +1 -1
  431. package/features/folders/listFolders/index.js +0 -2
  432. package/features/folders/listFolders/useListFolders.js +35 -37
  433. package/features/folders/listFolders/useListFolders.js.map +1 -1
  434. package/features/folders/listFoldersByParentIds/ListFoldersByParentIds.test.js +218 -203
  435. package/features/folders/listFoldersByParentIds/ListFoldersByParentIds.test.js.map +1 -1
  436. package/features/folders/listFoldersByParentIds/ListFoldersByParentIdsGqlGateway.js +31 -33
  437. package/features/folders/listFoldersByParentIds/ListFoldersByParentIdsGqlGateway.js.map +1 -1
  438. package/features/folders/listFoldersByParentIds/ListFoldersByParentIdsRepository.js +18 -13
  439. package/features/folders/listFoldersByParentIds/ListFoldersByParentIdsRepository.js.map +1 -1
  440. package/features/folders/listFoldersByParentIds/ListFoldersByParentIdsUseCase.js +18 -15
  441. package/features/folders/listFoldersByParentIds/ListFoldersByParentIdsUseCase.js.map +1 -1
  442. package/features/folders/listFoldersByParentIds/abstractions.js +4 -3
  443. package/features/folders/listFoldersByParentIds/abstractions.js.map +1 -1
  444. package/features/folders/listFoldersByParentIds/decorators/RepositoryWithLoadedCache.js +20 -22
  445. package/features/folders/listFoldersByParentIds/decorators/RepositoryWithLoadedCache.js.map +1 -1
  446. package/features/folders/listFoldersByParentIds/decorators/UseCaseWithLoading.js +17 -18
  447. package/features/folders/listFoldersByParentIds/decorators/UseCaseWithLoading.js.map +1 -1
  448. package/features/folders/listFoldersByParentIds/feature.js +18 -26
  449. package/features/folders/listFoldersByParentIds/feature.js.map +1 -1
  450. package/features/folders/listFoldersByParentIds/index.js +0 -2
  451. package/features/folders/listFoldersByParentIds/useListFoldersByParentIds.js +40 -42
  452. package/features/folders/listFoldersByParentIds/useListFoldersByParentIds.js.map +1 -1
  453. package/features/folders/loadFolderHierarchy/LoadFolderHierarchy.test.js +134 -136
  454. package/features/folders/loadFolderHierarchy/LoadFolderHierarchy.test.js.map +1 -1
  455. package/features/folders/loadFolderHierarchy/LoadFolderHierarchyGqlGateway.js +31 -31
  456. package/features/folders/loadFolderHierarchy/LoadFolderHierarchyGqlGateway.js.map +1 -1
  457. package/features/folders/loadFolderHierarchy/LoadFolderHierarchyRepository.js +35 -40
  458. package/features/folders/loadFolderHierarchy/LoadFolderHierarchyRepository.js.map +1 -1
  459. package/features/folders/loadFolderHierarchy/LoadFolderHierarchyUseCase.js +13 -10
  460. package/features/folders/loadFolderHierarchy/LoadFolderHierarchyUseCase.js.map +1 -1
  461. package/features/folders/loadFolderHierarchy/LoadFolderHierarchyUseCaseWithLoading.js +14 -11
  462. package/features/folders/loadFolderHierarchy/LoadFolderHierarchyUseCaseWithLoading.js.map +1 -1
  463. package/features/folders/loadFolderHierarchy/abstractions.js +4 -3
  464. package/features/folders/loadFolderHierarchy/abstractions.js.map +1 -1
  465. package/features/folders/loadFolderHierarchy/feature.js +17 -23
  466. package/features/folders/loadFolderHierarchy/feature.js.map +1 -1
  467. package/features/folders/loadFolderHierarchy/index.js +0 -2
  468. package/features/folders/loadFolderHierarchy/useLoadFolderHierarchy.js +37 -42
  469. package/features/folders/loadFolderHierarchy/useLoadFolderHierarchy.js.map +1 -1
  470. package/features/folders/updateFolder/UpdateFolder.test.js +372 -384
  471. package/features/folders/updateFolder/UpdateFolder.test.js.map +1 -1
  472. package/features/folders/updateFolder/UpdateFolderGqlGateway.js +33 -45
  473. package/features/folders/updateFolder/UpdateFolderGqlGateway.js.map +1 -1
  474. package/features/folders/updateFolder/UpdateFolderRepository.js +26 -24
  475. package/features/folders/updateFolder/UpdateFolderRepository.js.map +1 -1
  476. package/features/folders/updateFolder/UpdateFolderUseCase.js +13 -10
  477. package/features/folders/updateFolder/UpdateFolderUseCase.js.map +1 -1
  478. package/features/folders/updateFolder/abstractions.js +4 -3
  479. package/features/folders/updateFolder/abstractions.js.map +1 -1
  480. package/features/folders/updateFolder/decorators/RepositoryWithPathChange.js +43 -64
  481. package/features/folders/updateFolder/decorators/RepositoryWithPathChange.js.map +1 -1
  482. package/features/folders/updateFolder/decorators/RepositoryWithPermissionsChange.js +44 -56
  483. package/features/folders/updateFolder/decorators/RepositoryWithPermissionsChange.js.map +1 -1
  484. package/features/folders/updateFolder/decorators/UseCaseWithLoading.js +14 -11
  485. package/features/folders/updateFolder/decorators/UseCaseWithLoading.js.map +1 -1
  486. package/features/folders/updateFolder/decorators/UseCaseWithoutInheritedPermissions.js +15 -15
  487. package/features/folders/updateFolder/decorators/UseCaseWithoutInheritedPermissions.js.map +1 -1
  488. package/features/folders/updateFolder/feature.js +20 -28
  489. package/features/folders/updateFolder/feature.js.map +1 -1
  490. package/features/folders/updateFolder/index.js +0 -2
  491. package/features/folders/updateFolder/useUpdateFolder.js +17 -19
  492. package/features/folders/updateFolder/useUpdateFolder.js.map +1 -1
  493. package/graphql/app.gql.js +3 -4
  494. package/graphql/app.gql.js.map +1 -1
  495. package/graphql/records/common.js +41 -39
  496. package/graphql/records/common.js.map +1 -1
  497. package/graphql/records/getRecord.js +2 -3
  498. package/graphql/records/getRecord.js.map +1 -1
  499. package/graphql/records/listRecords.js +22 -13
  500. package/graphql/records/listRecords.js.map +1 -1
  501. package/graphql/records/moveRecord.js +5 -6
  502. package/graphql/records/moveRecord.js.map +1 -1
  503. package/graphql/records/types.js +0 -3
  504. package/graphql/records.gql.js +0 -2
  505. package/handlers.js +17 -40
  506. package/handlers.js.map +1 -1
  507. package/hooks/index.js +0 -2
  508. package/hooks/useAcoApp.js +11 -12
  509. package/hooks/useAcoApp.js.map +1 -1
  510. package/hooks/useAcoList.js +5 -6
  511. package/hooks/useAcoList.js.map +1 -1
  512. package/hooks/useFolder.js +6 -7
  513. package/hooks/useFolder.js.map +1 -1
  514. package/hooks/useFolderModel.js +11 -13
  515. package/hooks/useFolderModel.js.map +1 -1
  516. package/hooks/useFoldersType.js +7 -12
  517. package/hooks/useFoldersType.js.map +1 -1
  518. package/hooks/useNavigateFolder.js +5 -6
  519. package/hooks/useNavigateFolder.js.map +1 -1
  520. package/hooks/useRecords.js +56 -77
  521. package/hooks/useRecords.js.map +1 -1
  522. package/hooks/useTags.js +21 -30
  523. package/hooks/useTags.js.map +1 -1
  524. package/index.d.ts +1 -0
  525. package/index.js +3 -8
  526. package/package.json +22 -22
  527. package/presentation/folderTree/FolderTree.d.ts +19 -0
  528. package/presentation/folderTree/FolderTree.js +252 -0
  529. package/presentation/folderTree/FolderTree.js.map +1 -0
  530. package/presentation/folderTree/FolderTreeFieldRenderer.d.ts +13 -0
  531. package/presentation/folderTree/FolderTreeFieldRenderer.js +23 -0
  532. package/presentation/folderTree/FolderTreeFieldRenderer.js.map +1 -0
  533. package/presentation/folderTree/FolderTreePresenter.d.ts +51 -0
  534. package/presentation/folderTree/FolderTreePresenter.js +303 -0
  535. package/presentation/folderTree/FolderTreePresenter.js.map +1 -0
  536. package/presentation/folderTree/FolderTreePresenter.test.d.ts +1 -0
  537. package/presentation/folderTree/FolderTreePresenter.test.js +517 -0
  538. package/presentation/folderTree/FolderTreePresenter.test.js.map +1 -0
  539. package/presentation/folderTree/abstractions.d.ts +65 -0
  540. package/presentation/folderTree/abstractions.js +5 -0
  541. package/presentation/folderTree/abstractions.js.map +1 -0
  542. package/presentation/folderTree/feature.d.ts +3 -0
  543. package/presentation/folderTree/feature.js +17 -0
  544. package/presentation/folderTree/feature.js.map +1 -0
  545. package/presentation/folderTree/index.d.ts +5 -0
  546. package/presentation/folderTree/index.js +3 -0
  547. package/sorting.js +25 -28
  548. package/sorting.js.map +1 -1
  549. package/static/svg/folder-shared-icon.5d947e49.svg +5 -0
  550. package/static/svg/folder.f3d5c400.svg +4 -0
  551. package/table.types.js +0 -3
  552. package/types.js +10 -13
  553. package/types.js.map +1 -1
  554. package/components/Actions/DeleteFolder/index.js.map +0 -1
  555. package/components/Actions/EditFolder/index.js.map +0 -1
  556. package/components/Actions/SetFolderPemissions/index.js.map +0 -1
  557. package/components/Actions/index.js.map +0 -1
  558. package/components/AdvancedSearch/Button/index.js.map +0 -1
  559. package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilder/components/controls/index.js.map +0 -1
  560. package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilder/components/index.js.map +0 -1
  561. package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilder/index.js.map +0 -1
  562. package/components/AdvancedSearch/QueryBuilderDrawer/index.js.map +0 -1
  563. package/components/AdvancedSearch/QueryManagerDialog/components/index.js.map +0 -1
  564. package/components/AdvancedSearch/QueryManagerDialog/index.js.map +0 -1
  565. package/components/AdvancedSearch/QuerySaverDialog/index.js.map +0 -1
  566. package/components/AdvancedSearch/SelectedFilter/index.js.map +0 -1
  567. package/components/AdvancedSearch/domain/index.js.map +0 -1
  568. package/components/AdvancedSearch/fields/index.js.map +0 -1
  569. package/components/AdvancedSearch/gateways/FiltersGatewayInterface.js.map +0 -1
  570. package/components/AdvancedSearch/gateways/filters.types.js.map +0 -1
  571. package/components/AdvancedSearch/gateways/index.js.map +0 -1
  572. package/components/Extensions/index.js.map +0 -1
  573. package/components/FolderGrid/index.js.map +0 -1
  574. package/components/FolderIcons/index.js.map +0 -1
  575. package/components/FolderTree/ButtonCreate/index.js.map +0 -1
  576. package/components/FolderTree/Empty/index.js.map +0 -1
  577. package/components/FolderTree/List/index.js.map +0 -1
  578. package/components/FolderTree/Loader/index.js.map +0 -1
  579. package/components/FolderTree/MenuActions/index.js.map +0 -1
  580. package/components/FolderTree/Node/index.js.map +0 -1
  581. package/components/FolderTree/NodePreview/index.js.map +0 -1
  582. package/components/Search/index.js.map +0 -1
  583. package/components/Table/components/Table/ColumnVisibility/IColumnsVisibilityRepository.js.map +0 -1
  584. package/components/Table/components/Table/ColumnVisibility/IColumnsVisibilityUpdater.js.map +0 -1
  585. package/components/Table/components/Table/ColumnVisibility/index.js.map +0 -1
  586. package/components/Table/components/Table/Columns/IColumnsRepository.js.map +0 -1
  587. package/components/Table/components/Table/Columns/index.js.map +0 -1
  588. package/components/Table/components/Table/gateways/IColumnsVisibilityGateway.js.map +0 -1
  589. package/components/Table/components/Table/gateways/index.js.map +0 -1
  590. package/components/Table/components/Table/index.js.map +0 -1
  591. package/components/Table/components/index.js.map +0 -1
  592. package/components/Table/index.js.map +0 -1
  593. package/components/index.js.map +0 -1
  594. package/config/index.js.map +0 -1
  595. package/constants.js.map +0 -1
  596. package/contexts/index.js.map +0 -1
  597. package/dialogs/index.js.map +0 -1
  598. package/domain/folder/FolderDto.js.map +0 -1
  599. package/exports/admin/aco.js.map +0 -1
  600. package/exports/admin/ui.js.map +0 -1
  601. package/features/folders/cache/ListCache.js.map +0 -1
  602. package/features/folders/cache/index.js.map +0 -1
  603. package/features/folders/createFolder/index.js.map +0 -1
  604. package/features/folders/deleteFolder/index.js.map +0 -1
  605. package/features/folders/folderModelProvider/FolderModelDto.js.map +0 -1
  606. package/features/folders/folderModelProvider/index.js.map +0 -1
  607. package/features/folders/getDescendantFolders/index.js.map +0 -1
  608. package/features/folders/getFolder/index.js.map +0 -1
  609. package/features/folders/getFolderAncestors/index.js.map +0 -1
  610. package/features/folders/getFolderExtensionsFields/index.js.map +0 -1
  611. package/features/folders/getFolderLevelPermission/index.js.map +0 -1
  612. package/features/folders/listFolders/index.js.map +0 -1
  613. package/features/folders/listFoldersByParentIds/index.js.map +0 -1
  614. package/features/folders/loadFolderHierarchy/index.js.map +0 -1
  615. package/features/folders/updateFolder/index.js.map +0 -1
  616. package/graphql/records/types.js.map +0 -1
  617. package/graphql/records.gql.js.map +0 -1
  618. package/hooks/index.js.map +0 -1
  619. package/index.js.map +0 -1
  620. package/table.types.js.map +0 -1
@@ -1,733 +1,666 @@
1
- import { describe, it, vi, expect, beforeEach } from "vitest";
1
+ import { beforeEach, describe, expect, it, vi } from "vitest";
2
2
  import { AdvancedSearchPresenter } from "./AdvancedSearchPresenter.js";
3
3
  import { FilterRepository, Operation } from "./domain/index.js";
4
4
  const mockGateway = {
5
- list: vi.fn(),
6
- get: vi.fn(),
7
- create: vi.fn(),
8
- update: vi.fn(),
9
- delete: vi.fn()
5
+ list: vi.fn(),
6
+ get: vi.fn(),
7
+ create: vi.fn(),
8
+ update: vi.fn(),
9
+ delete: vi.fn()
10
10
  };
11
- const createMockGateway = ({
12
- list,
13
- get,
14
- create,
15
- update,
16
- delete: deleteFn
17
- }) => ({
18
- ...mockGateway,
19
- ...(list && {
20
- list
21
- }),
22
- ...(get && {
23
- get
24
- }),
25
- ...(create && {
26
- create
27
- }),
28
- ...(update && {
29
- update
30
- }),
31
- ...(deleteFn && {
32
- delete: deleteFn
33
- })
34
- });
35
- describe("AdvancedSearchPresenter", () => {
36
- const namespace = "namespace";
37
- const demoFilter = {
38
- field: "any-field",
39
- value: "any-value",
40
- condition: "any-condition"
41
- };
42
- const demoGroup = {
43
- operation: Operation.AND,
44
- filters: [demoFilter]
45
- };
46
- const filter1 = {
47
- id: "filter-1",
48
- name: "Filter 1",
49
- description: "Filter description",
50
- operation: Operation.AND,
51
- groups: [demoGroup],
52
- createdOn: new Date().toString()
53
- };
54
- const filter2 = {
55
- id: "filter-2",
56
- name: "Filter 2",
57
- operation: Operation.AND,
58
- groups: [demoGroup],
59
- createdOn: new Date().toString()
60
- };
61
- const gateway = createMockGateway({
62
- list: vi.fn().mockImplementation(() => {
63
- return Promise.resolve([filter1, filter2]);
64
- }),
65
- get: vi.fn().mockImplementation(() => {
66
- return Promise.resolve(filter1);
67
- }),
68
- create: vi.fn().mockImplementation(() => {
69
- return Promise.resolve(filter1);
70
- }),
71
- update: vi.fn().mockImplementation(() => {
72
- return Promise.resolve({
73
- ...filter1,
74
- name: "Filter 1 - Edit"
75
- });
76
- }),
77
- delete: vi.fn().mockImplementation(() => {
78
- return Promise.resolve(true);
79
- })
80
- });
81
- let presenter;
82
- beforeEach(() => {
83
- vi.clearAllMocks();
84
- const repository = new FilterRepository(gateway, namespace);
85
- presenter = new AdvancedSearchPresenter(repository);
86
- });
87
- it("should create a presenter and list filters from the gateway", async () => {
88
- // let's load some filters
89
- await presenter.load();
90
- expect(gateway.list).toBeCalledTimes(1);
91
- expect(presenter.vm).toEqual({
92
- appliedFilter: null,
93
- currentFilter: null,
94
- feedbackVm: {
95
- isOpen: false,
96
- message: ""
97
- },
98
- managerVm: {
99
- isOpen: false,
100
- view: "LIST",
101
- isLoading: false,
102
- loadingLabel: "",
103
- filters: [{
104
- id: filter1.id,
105
- name: filter1.name,
106
- description: filter1.description,
107
- createdOn: filter1.createdOn
108
- }, {
109
- id: filter2.id,
110
- name: filter2.name,
111
- description: "",
112
- createdOn: filter2.createdOn
113
- }]
114
- },
115
- builderVm: {
116
- isOpen: false
117
- },
118
- saverVm: {
119
- isOpen: false,
120
- isLoading: false,
121
- loadingLabel: ""
122
- }
123
- });
124
- });
125
- it("should transition to loading state and then to list state", async () => {
126
- const loadPromise = presenter.load();
127
- expect(presenter.vm.managerVm).toMatchObject({
128
- isOpen: false,
129
- isLoading: true,
130
- loadingLabel: "Listing filters",
131
- view: "EMPTY",
132
- filters: []
133
- });
134
- await loadPromise;
135
- expect(presenter.vm.managerVm).toMatchObject({
136
- isOpen: false,
137
- isLoading: false,
138
- loadingLabel: "",
139
- view: "LIST"
140
- });
141
- });
142
- it("should be able to apply a filter via filterId", async () => {
143
- // let's load some filters
144
- await presenter.load();
145
-
146
- // Let's apply a filter
147
- await presenter.applyFilter("filter-1");
148
- expect(presenter.vm).toMatchObject({
149
- appliedFilter: filter1,
150
- currentFilter: null,
151
- managerVm: {
152
- isOpen: false
153
- },
154
- builderVm: {
155
- isOpen: false
156
- },
157
- saverVm: {
158
- isOpen: false
159
- }
160
- });
161
- });
162
- it("should be able to apply directly a filter", async () => {
163
- // let's load some filters
164
- await presenter.load();
165
-
166
- // Let's apply a filter
167
- presenter.applyFilter(filter2);
168
- expect(presenter.vm).toMatchObject({
169
- appliedFilter: filter2,
170
- managerVm: {
171
- isOpen: false
172
- },
173
- builderVm: {
174
- isOpen: false
175
- },
176
- saverVm: {
177
- isOpen: false
178
- }
179
- });
180
- });
181
- it("should be able to unset a filter", async () => {
182
- // let's load some filters
183
- await presenter.load();
184
-
185
- // Let's apply and unset the filter
186
- await presenter.applyFilter("filter-1");
187
- presenter.unsetFilter();
188
- expect(presenter.vm).toMatchObject({
189
- appliedFilter: null,
190
- currentFilter: null
191
- });
192
- });
193
- it("should be able to edit an already applied filter", async () => {
194
- // let's load some filters
195
- await presenter.load();
196
-
197
- // Let's apply and unset the filter
198
- await presenter.applyFilter("filter-1");
199
- presenter.editAppliedFilter();
200
- expect(presenter.vm).toMatchObject({
201
- appliedFilter: filter1,
202
- currentFilter: filter1,
203
- builderVm: {
204
- isOpen: true
205
- }
206
- });
207
- });
208
- it("should be create a new filter", async () => {
209
- // let's load some filters
210
- await presenter.load();
211
-
212
- // Let's open the filter manager
213
- presenter.openManager();
214
- expect(presenter.vm).toMatchObject({
215
- managerVm: {
216
- isOpen: true
217
- }
218
- });
219
-
220
- // Let's create a new filter via builder
221
- presenter.createFilter();
222
- expect(presenter.vm).toMatchObject({
223
- currentFilter: {
224
- id: "",
225
- name: "Draft filter",
226
- description: "",
11
+ const createMockGateway = ({ list, get, create, update, delete: deleteFn })=>({
12
+ ...mockGateway,
13
+ ...list && {
14
+ list
15
+ },
16
+ ...get && {
17
+ get
18
+ },
19
+ ...create && {
20
+ create
21
+ },
22
+ ...update && {
23
+ update
24
+ },
25
+ ...deleteFn && {
26
+ delete: deleteFn
27
+ }
28
+ });
29
+ describe("AdvancedSearchPresenter", ()=>{
30
+ const namespace = "namespace";
31
+ const demoFilter = {
32
+ field: "any-field",
33
+ value: "any-value",
34
+ condition: "any-condition"
35
+ };
36
+ const demoGroup = {
227
37
  operation: Operation.AND,
228
- groups: [{
229
- operation: Operation.AND,
230
- filters: [{
231
- field: "",
232
- condition: "",
233
- value: ""
234
- }]
235
- }]
236
- },
237
- managerVm: {
238
- isOpen: false
239
- },
240
- builderVm: {
241
- isOpen: true
242
- },
243
- saverVm: {
244
- isOpen: false
245
- }
246
- });
247
-
248
- // Let's change the Filter and open the saver
249
- const filter = {
250
- id: "",
251
- name: "Draft filter",
252
- description: "",
253
- operation: Operation.AND,
254
- groups: [{
255
- operation: Operation.OR,
256
- filters: [{
257
- field: "Field value",
258
- condition: "field_condition",
259
- value: "Any value"
260
- }]
261
- }]
38
+ filters: [
39
+ demoFilter
40
+ ]
262
41
  };
263
- presenter.saveFilter(filter);
264
- expect(presenter.vm).toMatchObject({
265
- currentFilter: filter,
266
- managerVm: {
267
- isOpen: false
268
- },
269
- builderVm: {
270
- isOpen: true
271
- },
272
- saverVm: {
273
- isOpen: true
274
- }
275
- });
276
-
277
- // Let's save it via the gateway
278
- const persistPromise = presenter.persistFilter(filter);
279
-
280
- // Let's check the transition to loading state
281
- expect(presenter.vm.saverVm).toMatchObject({
282
- isOpen: true,
283
- isLoading: true,
284
- loadingLabel: "Creating filter..."
285
- });
286
- await persistPromise;
287
- expect(gateway.create).toBeCalledTimes(1);
288
- expect(gateway.create).toHaveBeenCalledWith({
289
- id: expect.any(String),
290
- name: "Draft filter",
291
- description: "",
292
- namespace,
293
- operation: Operation.AND,
294
- groups: [filter.groups[0]]
295
- });
296
- expect(presenter.vm).toMatchObject({
297
- managerVm: {
298
- isOpen: false
299
- },
300
- builderVm: {
301
- isOpen: false
302
- },
303
- saverVm: {
304
- isOpen: false
305
- },
306
- feedbackVm: {
307
- isOpen: true,
308
- message: 'Filter "Draft filter" was successfully created.'
309
- }
310
- });
311
-
312
- // Let's open the manager again and check if the new filter is there.
313
- // Be aware: data comes from the mocked gateway
314
- presenter.openManager();
315
- expect(presenter.vm.managerVm.filters.length).toBe(3);
316
- expect(presenter.vm.managerVm.filters[0]).toEqual({
317
- id: filter1.id,
318
- name: filter1.name,
319
- description: filter1.description,
320
- createdOn: filter1.createdOn
321
- });
322
- });
323
- it("should be able to update an existing filter", async () => {
324
- // let's load some filters
325
- await presenter.load();
326
-
327
- // Let's open the filter manager
328
- presenter.openManager();
329
- expect(presenter.vm).toMatchObject({
330
- managerVm: {
331
- isOpen: true
332
- }
333
- });
334
-
335
- // Let's select a filter to edit in the builder
336
- await presenter.editFilter("filter-1");
337
- expect(presenter.vm).toMatchObject({
338
- currentFilter: filter1,
339
- managerVm: {
340
- isOpen: false
341
- },
342
- builderVm: {
343
- isOpen: true
344
- },
345
- saverVm: {
346
- isOpen: false
347
- }
348
- });
349
-
350
- // Let's change the Filter and open the saver
351
- const filter = {
352
- ...filter1,
353
- groups: [{
354
- operation: Operation.OR,
355
- filters: [{
356
- field: "Field value",
357
- condition: "field_condition",
358
- value: "Any value"
359
- }]
360
- }]
42
+ const filter1 = {
43
+ id: "filter-1",
44
+ name: "Filter 1",
45
+ description: "Filter description",
46
+ operation: Operation.AND,
47
+ groups: [
48
+ demoGroup
49
+ ],
50
+ createdOn: new Date().toString()
361
51
  };
362
- presenter.saveFilter(filter);
363
- expect(presenter.vm).toMatchObject({
364
- currentFilter: filter,
365
- managerVm: {
366
- isOpen: false
367
- },
368
- builderVm: {
369
- isOpen: true
370
- },
371
- saverVm: {
372
- isOpen: true
373
- }
374
- });
375
-
376
- // Let's save it via the gateway
377
- const persistPromise = presenter.persistFilter(filter);
378
-
379
- // Let's check the transition to loading state
380
- expect(presenter.vm.saverVm).toMatchObject({
381
- isOpen: true,
382
- isLoading: true,
383
- loadingLabel: "Updating filter..."
384
- });
385
- await persistPromise;
386
- expect(gateway.update).toBeCalledTimes(1);
387
- expect(gateway.update).toHaveBeenCalledWith({
388
- id: "filter-1",
389
- name: "Filter 1",
390
- description: "Filter description",
391
- operation: Operation.AND,
392
- groups: [filter.groups[0]]
393
- });
394
- expect(presenter.vm).toMatchObject({
395
- managerVm: {
396
- isOpen: false
397
- },
398
- builderVm: {
399
- isOpen: false
400
- },
401
- saverVm: {
402
- isOpen: false
403
- },
404
- feedbackVm: {
405
- isOpen: true,
406
- message: 'Filter "Filter 1" was successfully updated.'
407
- }
408
- });
409
-
410
- // Let's open the manager again and check if the new data is there.
411
- // Be aware: data comes from the mocked gateway
412
- presenter.openManager();
413
- expect(presenter.vm.managerVm.filters.length).toBe(2);
414
- expect(presenter.vm.managerVm.filters[0]).toEqual({
415
- id: filter1.id,
416
- name: "Filter 1 - Edit",
417
- description: filter1.description,
418
- createdOn: filter1.createdOn
419
- });
420
- });
421
- it("should be able to rename a filter", async () => {
422
- // let's load some filters
423
- await presenter.load();
424
-
425
- // Let's open the filter manager
426
- presenter.openManager();
427
- expect(presenter.vm).toMatchObject({
428
- managerVm: {
429
- isOpen: true
430
- }
431
- });
432
-
433
- // Let's rename a filter
434
- await presenter.renameFilter("filter-1");
435
- expect(presenter.vm).toMatchObject({
436
- currentFilter: filter1,
437
- managerVm: {
438
- isOpen: false
439
- },
440
- builderVm: {
441
- isOpen: false
442
- },
443
- saverVm: {
444
- isOpen: true
445
- }
446
- });
447
-
448
- // Let's save it via the gateway
449
- const persistPromise = presenter.persistFilter({
450
- ...filter1,
451
- name: `${filter1.name} - Edit`
452
- });
453
-
454
- // Let's check the transition to loading state
455
- expect(presenter.vm.saverVm).toMatchObject({
456
- isOpen: true,
457
- isLoading: true,
458
- loadingLabel: "Updating filter..."
459
- });
460
- await persistPromise;
461
- expect(gateway.update).toBeCalledTimes(1);
462
- expect(gateway.update).toHaveBeenCalledWith({
463
- id: "filter-1",
464
- name: `${filter1.name} - Edit`,
465
- description: "Filter description",
466
- operation: Operation.AND,
467
- groups: [filter1.groups[0]]
468
- });
469
- expect(presenter.vm).toMatchObject({
470
- managerVm: {
471
- isOpen: false
472
- },
473
- builderVm: {
474
- isOpen: false
475
- },
476
- saverVm: {
477
- isOpen: false
478
- },
479
- feedbackVm: {
480
- isOpen: true,
481
- message: `Filter "${filter1.name} - Edit" was successfully updated.`
482
- }
483
- });
484
-
485
- // Let's open the manager again and check if the new data is there.
486
- // Be aware: data comes from the mocked gateway
487
- presenter.openManager();
488
- expect(presenter.vm.managerVm.filters.length).toBe(2);
489
- expect(presenter.vm.managerVm.filters[0]).toEqual({
490
- id: filter1.id,
491
- name: `${filter1.name} - Edit`,
492
- description: filter1.description,
493
- createdOn: filter1.createdOn
494
- });
495
- });
496
- it("should be able to clone a filter", async () => {
497
- // let's load some filters
498
- await presenter.load();
499
-
500
- // Let's open the filter manager
501
- presenter.openManager();
502
- expect(presenter.vm).toMatchObject({
503
- managerVm: {
504
- isOpen: true
505
- }
506
- });
507
-
508
- // Let's clone a filter
509
- await presenter.cloneFilter("filter-1");
510
- const clonedFilter = {
511
- ...filter1,
512
- id: "",
513
- name: `Clone of ${filter1.name}`
52
+ const filter2 = {
53
+ id: "filter-2",
54
+ name: "Filter 2",
55
+ operation: Operation.AND,
56
+ groups: [
57
+ demoGroup
58
+ ],
59
+ createdOn: new Date().toString()
514
60
  };
515
- expect(presenter.vm).toMatchObject({
516
- currentFilter: clonedFilter,
517
- managerVm: {
518
- isOpen: false
519
- },
520
- builderVm: {
521
- isOpen: true
522
- },
523
- saverVm: {
524
- isOpen: false
525
- }
526
- });
527
- presenter.saveFilter(clonedFilter);
528
- expect(presenter.vm).toMatchObject({
529
- currentFilter: clonedFilter,
530
- managerVm: {
531
- isOpen: false
532
- },
533
- builderVm: {
534
- isOpen: true
535
- },
536
- saverVm: {
537
- isOpen: true
538
- }
539
- });
540
-
541
- // Let's save it via the gateway
542
- const persistPromise = presenter.persistFilter(clonedFilter);
543
-
544
- // Let's check the transition to loading state
545
- expect(presenter.vm.saverVm).toMatchObject({
546
- isOpen: true,
547
- isLoading: true,
548
- loadingLabel: "Creating filter..."
549
- });
550
- await persistPromise;
551
- expect(gateway.create).toBeCalledTimes(1);
552
- expect(gateway.create).toHaveBeenCalledWith({
553
- id: expect.any(String),
554
- name: `Clone of ${filter1.name}`,
555
- description: "Filter description",
556
- namespace,
557
- operation: Operation.AND,
558
- groups: [filter1.groups[0]]
559
- });
560
- expect(presenter.vm).toMatchObject({
561
- managerVm: {
562
- isOpen: false
563
- },
564
- builderVm: {
565
- isOpen: false
566
- },
567
- saverVm: {
568
- isOpen: false
569
- },
570
- feedbackVm: {
571
- isOpen: true,
572
- message: `Filter "Clone of ${filter1.name}" was successfully created.`
573
- }
574
- });
575
-
576
- // Let's open the manager again and check if the new data is there
577
- presenter.openManager();
578
- expect(presenter.vm.managerVm.filters.length).toBe(3);
579
- });
580
- it("should be able to delete a filter", async () => {
581
- // let's load some filters
582
- await presenter.load();
583
-
584
- // Let's open the filter manager
585
- presenter.openManager();
586
- expect(presenter.vm).toMatchObject({
587
- managerVm: {
588
- isOpen: true
589
- }
590
- });
591
-
592
- // Let's delete a filter
593
- await presenter.deleteFilter("filter-1");
594
- expect(gateway.delete).toBeCalledTimes(1);
595
- expect(gateway.delete).toHaveBeenCalledWith("filter-1");
596
- expect(presenter.vm).toMatchObject({
597
- currentFilter: null,
598
- feedbackVm: {
599
- isOpen: true,
600
- message: 'Filter "Filter 1" was successfully deleted.'
601
- }
602
- });
603
-
604
- // Let's check if the filter has been deleted and is not in the manager.
605
- // Be aware: data comes from the mocked gateway
606
- presenter.openManager();
607
- expect(presenter.vm.managerVm.filters.length).toBe(1);
608
- expect(presenter.vm.managerVm.filters[0]).toEqual({
609
- id: filter2.id,
610
- name: filter2.name,
611
- description: "",
612
- createdOn: filter2.createdOn
613
- });
614
- });
615
- it("should be able to handle an empty list - error from the gateway", async () => {
616
- const message = "Gateway error while listing filters";
617
61
  const gateway = createMockGateway({
618
- list: vi.fn().mockRejectedValue(new Error(message))
619
- });
620
- const repository = new FilterRepository(gateway, namespace);
621
- const presenter = new AdvancedSearchPresenter(repository);
622
-
623
- // Let's load the app, without filters
624
- await presenter.load();
625
- expect(presenter.vm).toMatchObject({
626
- managerVm: {
627
- isOpen: false,
628
- view: "EMPTY",
629
- loadingLabel: "",
630
- filters: []
631
- },
632
- feedbackVm: {
633
- isOpen: true,
634
- message
635
- }
636
- });
637
- });
638
- it("should be able to handle error while creating the filter", async () => {
639
- const message = "Gateway error while creating filter";
640
- const createGateway = createMockGateway({
641
- ...gateway,
642
- create: vi.fn().mockRejectedValue(new Error(message))
643
- });
644
- const repository = new FilterRepository(createGateway, namespace);
645
- const presenter = new AdvancedSearchPresenter(repository);
646
-
647
- // Let's load some filters
648
- await presenter.load();
649
-
650
- // Let's try to save a Filter
651
- const filter = {
652
- id: "",
653
- name: "Draft filter",
654
- description: "",
655
- operation: Operation.AND,
656
- groups: [{
657
- operation: Operation.OR,
658
- filters: [{
659
- field: "Field value",
660
- condition: "field_condition",
661
- value: "Any value"
662
- }]
663
- }]
664
- };
665
- await presenter.persistFilter(filter);
666
- expect(presenter.vm).toMatchObject({
667
- feedbackVm: {
668
- isOpen: true,
669
- message
670
- }
671
- });
672
- });
673
- it("should be able to handle error while updating a filter", async () => {
674
- const message = "Gateway error while updating filter";
675
- const updateGateway = createMockGateway({
676
- ...gateway,
677
- update: vi.fn().mockRejectedValue(new Error(message))
678
- });
679
- const repository = new FilterRepository(updateGateway, namespace);
680
- const presenter = new AdvancedSearchPresenter(repository);
681
-
682
- // Let's load some filters
683
- await presenter.load();
684
-
685
- // Let's try to save a Filter
686
- const filter = {
687
- ...filter1,
688
- name: filter1 + " - Edit"
689
- };
690
- await presenter.persistFilter(filter);
691
- expect(presenter.vm).toMatchObject({
692
- feedbackVm: {
693
- isOpen: true,
694
- message
695
- }
696
- });
697
- });
698
- it("should be able to handle error while deleting a filter", async () => {
699
- const message = "Gateway error while deleting filter";
700
- const updateGateway = createMockGateway({
701
- ...gateway,
702
- delete: vi.fn().mockRejectedValue(new Error(message))
703
- });
704
- const repository = new FilterRepository(updateGateway, namespace);
705
- const presenter = new AdvancedSearchPresenter(repository);
706
-
707
- // Let's load some filters
708
- await presenter.load();
709
- await presenter.deleteFilter(filter1.id);
710
- expect(presenter.vm).toMatchObject({
711
- feedbackVm: {
712
- isOpen: true,
713
- message
714
- }
715
- });
716
- });
717
- it("should be able to show a feedback message", async () => {
718
- // let's load some filters
719
- await presenter.load();
720
-
721
- // Let's show any random feedback message
722
- presenter.showFeedback("Any message");
723
- expect(presenter.vm).toMatchObject({
724
- currentFilter: null,
725
- feedbackVm: {
726
- isOpen: true,
727
- message: "Any message"
728
- }
62
+ list: vi.fn().mockImplementation(()=>Promise.resolve([
63
+ filter1,
64
+ filter2
65
+ ])),
66
+ get: vi.fn().mockImplementation(()=>Promise.resolve(filter1)),
67
+ create: vi.fn().mockImplementation(()=>Promise.resolve(filter1)),
68
+ update: vi.fn().mockImplementation(()=>Promise.resolve({
69
+ ...filter1,
70
+ name: "Filter 1 - Edit"
71
+ })),
72
+ delete: vi.fn().mockImplementation(()=>Promise.resolve(true))
73
+ });
74
+ let presenter;
75
+ beforeEach(()=>{
76
+ vi.clearAllMocks();
77
+ const repository = new FilterRepository(gateway, namespace);
78
+ presenter = new AdvancedSearchPresenter(repository);
79
+ });
80
+ it("should create a presenter and list filters from the gateway", async ()=>{
81
+ await presenter.load();
82
+ expect(gateway.list).toBeCalledTimes(1);
83
+ expect(presenter.vm).toEqual({
84
+ appliedFilter: null,
85
+ currentFilter: null,
86
+ feedbackVm: {
87
+ isOpen: false,
88
+ message: ""
89
+ },
90
+ managerVm: {
91
+ isOpen: false,
92
+ view: "LIST",
93
+ isLoading: false,
94
+ loadingLabel: "",
95
+ filters: [
96
+ {
97
+ id: filter1.id,
98
+ name: filter1.name,
99
+ description: filter1.description,
100
+ createdOn: filter1.createdOn
101
+ },
102
+ {
103
+ id: filter2.id,
104
+ name: filter2.name,
105
+ description: "",
106
+ createdOn: filter2.createdOn
107
+ }
108
+ ]
109
+ },
110
+ builderVm: {
111
+ isOpen: false
112
+ },
113
+ saverVm: {
114
+ isOpen: false,
115
+ isLoading: false,
116
+ loadingLabel: ""
117
+ }
118
+ });
119
+ });
120
+ it("should transition to loading state and then to list state", async ()=>{
121
+ const loadPromise = presenter.load();
122
+ expect(presenter.vm.managerVm).toMatchObject({
123
+ isOpen: false,
124
+ isLoading: true,
125
+ loadingLabel: "Listing filters",
126
+ view: "EMPTY",
127
+ filters: []
128
+ });
129
+ await loadPromise;
130
+ expect(presenter.vm.managerVm).toMatchObject({
131
+ isOpen: false,
132
+ isLoading: false,
133
+ loadingLabel: "",
134
+ view: "LIST"
135
+ });
136
+ });
137
+ it("should be able to apply a filter via filterId", async ()=>{
138
+ await presenter.load();
139
+ await presenter.applyFilter("filter-1");
140
+ expect(presenter.vm).toMatchObject({
141
+ appliedFilter: filter1,
142
+ currentFilter: null,
143
+ managerVm: {
144
+ isOpen: false
145
+ },
146
+ builderVm: {
147
+ isOpen: false
148
+ },
149
+ saverVm: {
150
+ isOpen: false
151
+ }
152
+ });
153
+ });
154
+ it("should be able to apply directly a filter", async ()=>{
155
+ await presenter.load();
156
+ presenter.applyFilter(filter2);
157
+ expect(presenter.vm).toMatchObject({
158
+ appliedFilter: filter2,
159
+ managerVm: {
160
+ isOpen: false
161
+ },
162
+ builderVm: {
163
+ isOpen: false
164
+ },
165
+ saverVm: {
166
+ isOpen: false
167
+ }
168
+ });
169
+ });
170
+ it("should be able to unset a filter", async ()=>{
171
+ await presenter.load();
172
+ await presenter.applyFilter("filter-1");
173
+ presenter.unsetFilter();
174
+ expect(presenter.vm).toMatchObject({
175
+ appliedFilter: null,
176
+ currentFilter: null
177
+ });
178
+ });
179
+ it("should be able to edit an already applied filter", async ()=>{
180
+ await presenter.load();
181
+ await presenter.applyFilter("filter-1");
182
+ presenter.editAppliedFilter();
183
+ expect(presenter.vm).toMatchObject({
184
+ appliedFilter: filter1,
185
+ currentFilter: filter1,
186
+ builderVm: {
187
+ isOpen: true
188
+ }
189
+ });
190
+ });
191
+ it("should be create a new filter", async ()=>{
192
+ await presenter.load();
193
+ presenter.openManager();
194
+ expect(presenter.vm).toMatchObject({
195
+ managerVm: {
196
+ isOpen: true
197
+ }
198
+ });
199
+ presenter.createFilter();
200
+ expect(presenter.vm).toMatchObject({
201
+ currentFilter: {
202
+ id: "",
203
+ name: "Draft filter",
204
+ description: "",
205
+ operation: Operation.AND,
206
+ groups: [
207
+ {
208
+ operation: Operation.AND,
209
+ filters: [
210
+ {
211
+ field: "",
212
+ condition: "",
213
+ value: ""
214
+ }
215
+ ]
216
+ }
217
+ ]
218
+ },
219
+ managerVm: {
220
+ isOpen: false
221
+ },
222
+ builderVm: {
223
+ isOpen: true
224
+ },
225
+ saverVm: {
226
+ isOpen: false
227
+ }
228
+ });
229
+ const filter = {
230
+ id: "",
231
+ name: "Draft filter",
232
+ description: "",
233
+ operation: Operation.AND,
234
+ groups: [
235
+ {
236
+ operation: Operation.OR,
237
+ filters: [
238
+ {
239
+ field: "Field value",
240
+ condition: "field_condition",
241
+ value: "Any value"
242
+ }
243
+ ]
244
+ }
245
+ ]
246
+ };
247
+ presenter.saveFilter(filter);
248
+ expect(presenter.vm).toMatchObject({
249
+ currentFilter: filter,
250
+ managerVm: {
251
+ isOpen: false
252
+ },
253
+ builderVm: {
254
+ isOpen: true
255
+ },
256
+ saverVm: {
257
+ isOpen: true
258
+ }
259
+ });
260
+ const persistPromise = presenter.persistFilter(filter);
261
+ expect(presenter.vm.saverVm).toMatchObject({
262
+ isOpen: true,
263
+ isLoading: true,
264
+ loadingLabel: "Creating filter..."
265
+ });
266
+ await persistPromise;
267
+ expect(gateway.create).toBeCalledTimes(1);
268
+ expect(gateway.create).toHaveBeenCalledWith({
269
+ id: expect.any(String),
270
+ name: "Draft filter",
271
+ description: "",
272
+ namespace,
273
+ operation: Operation.AND,
274
+ groups: [
275
+ filter.groups[0]
276
+ ]
277
+ });
278
+ expect(presenter.vm).toMatchObject({
279
+ managerVm: {
280
+ isOpen: false
281
+ },
282
+ builderVm: {
283
+ isOpen: false
284
+ },
285
+ saverVm: {
286
+ isOpen: false
287
+ },
288
+ feedbackVm: {
289
+ isOpen: true,
290
+ message: 'Filter "Draft filter" was successfully created.'
291
+ }
292
+ });
293
+ presenter.openManager();
294
+ expect(presenter.vm.managerVm.filters.length).toBe(3);
295
+ expect(presenter.vm.managerVm.filters[0]).toEqual({
296
+ id: filter1.id,
297
+ name: filter1.name,
298
+ description: filter1.description,
299
+ createdOn: filter1.createdOn
300
+ });
301
+ });
302
+ it("should be able to update an existing filter", async ()=>{
303
+ await presenter.load();
304
+ presenter.openManager();
305
+ expect(presenter.vm).toMatchObject({
306
+ managerVm: {
307
+ isOpen: true
308
+ }
309
+ });
310
+ await presenter.editFilter("filter-1");
311
+ expect(presenter.vm).toMatchObject({
312
+ currentFilter: filter1,
313
+ managerVm: {
314
+ isOpen: false
315
+ },
316
+ builderVm: {
317
+ isOpen: true
318
+ },
319
+ saverVm: {
320
+ isOpen: false
321
+ }
322
+ });
323
+ const filter = {
324
+ ...filter1,
325
+ groups: [
326
+ {
327
+ operation: Operation.OR,
328
+ filters: [
329
+ {
330
+ field: "Field value",
331
+ condition: "field_condition",
332
+ value: "Any value"
333
+ }
334
+ ]
335
+ }
336
+ ]
337
+ };
338
+ presenter.saveFilter(filter);
339
+ expect(presenter.vm).toMatchObject({
340
+ currentFilter: filter,
341
+ managerVm: {
342
+ isOpen: false
343
+ },
344
+ builderVm: {
345
+ isOpen: true
346
+ },
347
+ saverVm: {
348
+ isOpen: true
349
+ }
350
+ });
351
+ const persistPromise = presenter.persistFilter(filter);
352
+ expect(presenter.vm.saverVm).toMatchObject({
353
+ isOpen: true,
354
+ isLoading: true,
355
+ loadingLabel: "Updating filter..."
356
+ });
357
+ await persistPromise;
358
+ expect(gateway.update).toBeCalledTimes(1);
359
+ expect(gateway.update).toHaveBeenCalledWith({
360
+ id: "filter-1",
361
+ name: "Filter 1",
362
+ description: "Filter description",
363
+ operation: Operation.AND,
364
+ groups: [
365
+ filter.groups[0]
366
+ ]
367
+ });
368
+ expect(presenter.vm).toMatchObject({
369
+ managerVm: {
370
+ isOpen: false
371
+ },
372
+ builderVm: {
373
+ isOpen: false
374
+ },
375
+ saverVm: {
376
+ isOpen: false
377
+ },
378
+ feedbackVm: {
379
+ isOpen: true,
380
+ message: 'Filter "Filter 1" was successfully updated.'
381
+ }
382
+ });
383
+ presenter.openManager();
384
+ expect(presenter.vm.managerVm.filters.length).toBe(2);
385
+ expect(presenter.vm.managerVm.filters[0]).toEqual({
386
+ id: filter1.id,
387
+ name: "Filter 1 - Edit",
388
+ description: filter1.description,
389
+ createdOn: filter1.createdOn
390
+ });
391
+ });
392
+ it("should be able to rename a filter", async ()=>{
393
+ await presenter.load();
394
+ presenter.openManager();
395
+ expect(presenter.vm).toMatchObject({
396
+ managerVm: {
397
+ isOpen: true
398
+ }
399
+ });
400
+ await presenter.renameFilter("filter-1");
401
+ expect(presenter.vm).toMatchObject({
402
+ currentFilter: filter1,
403
+ managerVm: {
404
+ isOpen: false
405
+ },
406
+ builderVm: {
407
+ isOpen: false
408
+ },
409
+ saverVm: {
410
+ isOpen: true
411
+ }
412
+ });
413
+ const persistPromise = presenter.persistFilter({
414
+ ...filter1,
415
+ name: `${filter1.name} - Edit`
416
+ });
417
+ expect(presenter.vm.saverVm).toMatchObject({
418
+ isOpen: true,
419
+ isLoading: true,
420
+ loadingLabel: "Updating filter..."
421
+ });
422
+ await persistPromise;
423
+ expect(gateway.update).toBeCalledTimes(1);
424
+ expect(gateway.update).toHaveBeenCalledWith({
425
+ id: "filter-1",
426
+ name: `${filter1.name} - Edit`,
427
+ description: "Filter description",
428
+ operation: Operation.AND,
429
+ groups: [
430
+ filter1.groups[0]
431
+ ]
432
+ });
433
+ expect(presenter.vm).toMatchObject({
434
+ managerVm: {
435
+ isOpen: false
436
+ },
437
+ builderVm: {
438
+ isOpen: false
439
+ },
440
+ saverVm: {
441
+ isOpen: false
442
+ },
443
+ feedbackVm: {
444
+ isOpen: true,
445
+ message: `Filter "${filter1.name} - Edit" was successfully updated.`
446
+ }
447
+ });
448
+ presenter.openManager();
449
+ expect(presenter.vm.managerVm.filters.length).toBe(2);
450
+ expect(presenter.vm.managerVm.filters[0]).toEqual({
451
+ id: filter1.id,
452
+ name: `${filter1.name} - Edit`,
453
+ description: filter1.description,
454
+ createdOn: filter1.createdOn
455
+ });
456
+ });
457
+ it("should be able to clone a filter", async ()=>{
458
+ await presenter.load();
459
+ presenter.openManager();
460
+ expect(presenter.vm).toMatchObject({
461
+ managerVm: {
462
+ isOpen: true
463
+ }
464
+ });
465
+ await presenter.cloneFilter("filter-1");
466
+ const clonedFilter = {
467
+ ...filter1,
468
+ id: "",
469
+ name: `Clone of ${filter1.name}`
470
+ };
471
+ expect(presenter.vm).toMatchObject({
472
+ currentFilter: clonedFilter,
473
+ managerVm: {
474
+ isOpen: false
475
+ },
476
+ builderVm: {
477
+ isOpen: true
478
+ },
479
+ saverVm: {
480
+ isOpen: false
481
+ }
482
+ });
483
+ presenter.saveFilter(clonedFilter);
484
+ expect(presenter.vm).toMatchObject({
485
+ currentFilter: clonedFilter,
486
+ managerVm: {
487
+ isOpen: false
488
+ },
489
+ builderVm: {
490
+ isOpen: true
491
+ },
492
+ saverVm: {
493
+ isOpen: true
494
+ }
495
+ });
496
+ const persistPromise = presenter.persistFilter(clonedFilter);
497
+ expect(presenter.vm.saverVm).toMatchObject({
498
+ isOpen: true,
499
+ isLoading: true,
500
+ loadingLabel: "Creating filter..."
501
+ });
502
+ await persistPromise;
503
+ expect(gateway.create).toBeCalledTimes(1);
504
+ expect(gateway.create).toHaveBeenCalledWith({
505
+ id: expect.any(String),
506
+ name: `Clone of ${filter1.name}`,
507
+ description: "Filter description",
508
+ namespace,
509
+ operation: Operation.AND,
510
+ groups: [
511
+ filter1.groups[0]
512
+ ]
513
+ });
514
+ expect(presenter.vm).toMatchObject({
515
+ managerVm: {
516
+ isOpen: false
517
+ },
518
+ builderVm: {
519
+ isOpen: false
520
+ },
521
+ saverVm: {
522
+ isOpen: false
523
+ },
524
+ feedbackVm: {
525
+ isOpen: true,
526
+ message: `Filter "Clone of ${filter1.name}" was successfully created.`
527
+ }
528
+ });
529
+ presenter.openManager();
530
+ expect(presenter.vm.managerVm.filters.length).toBe(3);
531
+ });
532
+ it("should be able to delete a filter", async ()=>{
533
+ await presenter.load();
534
+ presenter.openManager();
535
+ expect(presenter.vm).toMatchObject({
536
+ managerVm: {
537
+ isOpen: true
538
+ }
539
+ });
540
+ await presenter.deleteFilter("filter-1");
541
+ expect(gateway.delete).toBeCalledTimes(1);
542
+ expect(gateway.delete).toHaveBeenCalledWith("filter-1");
543
+ expect(presenter.vm).toMatchObject({
544
+ currentFilter: null,
545
+ feedbackVm: {
546
+ isOpen: true,
547
+ message: 'Filter "Filter 1" was successfully deleted.'
548
+ }
549
+ });
550
+ presenter.openManager();
551
+ expect(presenter.vm.managerVm.filters.length).toBe(1);
552
+ expect(presenter.vm.managerVm.filters[0]).toEqual({
553
+ id: filter2.id,
554
+ name: filter2.name,
555
+ description: "",
556
+ createdOn: filter2.createdOn
557
+ });
558
+ });
559
+ it("should be able to handle an empty list - error from the gateway", async ()=>{
560
+ const message = "Gateway error while listing filters";
561
+ const gateway = createMockGateway({
562
+ list: vi.fn().mockRejectedValue(new Error(message))
563
+ });
564
+ const repository = new FilterRepository(gateway, namespace);
565
+ const presenter = new AdvancedSearchPresenter(repository);
566
+ await presenter.load();
567
+ expect(presenter.vm).toMatchObject({
568
+ managerVm: {
569
+ isOpen: false,
570
+ view: "EMPTY",
571
+ loadingLabel: "",
572
+ filters: []
573
+ },
574
+ feedbackVm: {
575
+ isOpen: true,
576
+ message
577
+ }
578
+ });
579
+ });
580
+ it("should be able to handle error while creating the filter", async ()=>{
581
+ const message = "Gateway error while creating filter";
582
+ const createGateway = createMockGateway({
583
+ ...gateway,
584
+ create: vi.fn().mockRejectedValue(new Error(message))
585
+ });
586
+ const repository = new FilterRepository(createGateway, namespace);
587
+ const presenter = new AdvancedSearchPresenter(repository);
588
+ await presenter.load();
589
+ const filter = {
590
+ id: "",
591
+ name: "Draft filter",
592
+ description: "",
593
+ operation: Operation.AND,
594
+ groups: [
595
+ {
596
+ operation: Operation.OR,
597
+ filters: [
598
+ {
599
+ field: "Field value",
600
+ condition: "field_condition",
601
+ value: "Any value"
602
+ }
603
+ ]
604
+ }
605
+ ]
606
+ };
607
+ await presenter.persistFilter(filter);
608
+ expect(presenter.vm).toMatchObject({
609
+ feedbackVm: {
610
+ isOpen: true,
611
+ message
612
+ }
613
+ });
614
+ });
615
+ it("should be able to handle error while updating a filter", async ()=>{
616
+ const message = "Gateway error while updating filter";
617
+ const updateGateway = createMockGateway({
618
+ ...gateway,
619
+ update: vi.fn().mockRejectedValue(new Error(message))
620
+ });
621
+ const repository = new FilterRepository(updateGateway, namespace);
622
+ const presenter = new AdvancedSearchPresenter(repository);
623
+ await presenter.load();
624
+ const filter = {
625
+ ...filter1,
626
+ name: filter1 + " - Edit"
627
+ };
628
+ await presenter.persistFilter(filter);
629
+ expect(presenter.vm).toMatchObject({
630
+ feedbackVm: {
631
+ isOpen: true,
632
+ message
633
+ }
634
+ });
635
+ });
636
+ it("should be able to handle error while deleting a filter", async ()=>{
637
+ const message = "Gateway error while deleting filter";
638
+ const updateGateway = createMockGateway({
639
+ ...gateway,
640
+ delete: vi.fn().mockRejectedValue(new Error(message))
641
+ });
642
+ const repository = new FilterRepository(updateGateway, namespace);
643
+ const presenter = new AdvancedSearchPresenter(repository);
644
+ await presenter.load();
645
+ await presenter.deleteFilter(filter1.id);
646
+ expect(presenter.vm).toMatchObject({
647
+ feedbackVm: {
648
+ isOpen: true,
649
+ message
650
+ }
651
+ });
652
+ });
653
+ it("should be able to show a feedback message", async ()=>{
654
+ await presenter.load();
655
+ presenter.showFeedback("Any message");
656
+ expect(presenter.vm).toMatchObject({
657
+ currentFilter: null,
658
+ feedbackVm: {
659
+ isOpen: true,
660
+ message: "Any message"
661
+ }
662
+ });
729
663
  });
730
- });
731
664
  });
732
665
 
733
666
  //# sourceMappingURL=AdvancedSearchPresenter.test.js.map