@zohodesk/library-platform 1.1.2 → 1.1.3-exp.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 (235) hide show
  1. package/es/bc/column-chooser/Constants.js +4 -0
  2. package/es/bc/column-chooser/EventHandlers.js +2 -0
  3. package/es/bc/column-chooser/Events.js +59 -0
  4. package/es/bc/column-chooser/Properties.js +18 -0
  5. package/es/bc/keyboard-controls/Constants.js +5 -0
  6. package/es/bc/keyboard-controls/Events.js +51 -0
  7. package/es/bc/keyboard-controls/Properties.js +11 -0
  8. package/es/bc/keyboard-controls/types/KeyboardControlBehaviourState.js +1 -0
  9. package/es/bc/sdk/EventHandlers.js +1 -0
  10. package/es/bc/sdk/Properties.js +10 -0
  11. package/es/bc/sdk/ResourceNamesEnum.js +6 -0
  12. package/es/bc/zlist/Properties.js +15 -0
  13. package/es/cc/action-location/Constants.js +5 -3
  14. package/es/cc/architecture/LifeCycleActionEnum.js +2 -8
  15. package/es/cc/component/LifeCycleEventsEnum.js +9 -0
  16. package/es/cc/fields/field/Properties.js +10 -1
  17. package/es/cc/fields/index.js +1 -1
  18. package/es/cc/table-column-chooser/Constants.js +6 -0
  19. package/es/cc/table-column-chooser/Events.js +69 -0
  20. package/es/cc/table-column-chooser/Properties.js +122 -0
  21. package/es/cc/table-column-chooser/index.js +3 -0
  22. package/es/cc/table-connected/Properties.js +16 -0
  23. package/es/cc/table-connected/constants/Events.js +4 -1
  24. package/es/cc/table-list/Properties.js +27 -1
  25. package/es/cc/table-list/data-types/KeyboardControlsConfig.js +1 -0
  26. package/es/cc/table-list/row/Properties.js +18 -0
  27. package/es/desk-frameworks/table-connected/adapters/controllers/ColumnChooserOpenedController.js +36 -0
  28. package/es/desk-frameworks/table-connected/adapters/controllers/ColumnChooserUpdateController.js +25 -0
  29. package/es/desk-frameworks/table-connected/frameworks/EventHandlersFactory.js +18 -7
  30. package/es/desk-frameworks/table-connected/frameworks/ListSdkFactory.js +15 -130
  31. package/es/desk-frameworks/table-connected/frameworks/TableConnectedFactory.js +13 -2
  32. package/es/desk-frameworks/table-connected/frameworks/TableConnectedView.js +9 -6
  33. package/es/desk-frameworks/table-connected/frameworks/resources/ISmartTableResource.js +1 -0
  34. package/es/desk-frameworks/table-connected/frameworks/resources/SmartTableResource.js +233 -0
  35. package/es/index.js +3 -1
  36. package/es/library/behaviours/keyboard-controls/adapters/controllers/AbstractController.js +9 -0
  37. package/es/library/behaviours/keyboard-controls/adapters/controllers/DestructController.js +20 -0
  38. package/es/library/behaviours/keyboard-controls/adapters/controllers/DownArrowPressController.js +20 -0
  39. package/es/library/behaviours/keyboard-controls/adapters/controllers/EnterPressController.js +24 -0
  40. package/es/library/behaviours/keyboard-controls/adapters/controllers/FocusNextController.js +20 -0
  41. package/es/library/behaviours/keyboard-controls/adapters/controllers/FocusPreviousController.js +20 -0
  42. package/es/library/behaviours/keyboard-controls/adapters/controllers/InitializeController.js +20 -0
  43. package/es/library/behaviours/keyboard-controls/adapters/controllers/SpacePressController.js +24 -0
  44. package/es/library/behaviours/keyboard-controls/adapters/controllers/UpArrowPressController.js +20 -0
  45. package/es/library/behaviours/keyboard-controls/adapters/gateways/KeyboardHandler.js +81 -0
  46. package/es/library/behaviours/keyboard-controls/adapters/gateways/Repository.js +47 -0
  47. package/es/library/behaviours/keyboard-controls/adapters/gateways/Service.js +40 -0
  48. package/es/library/behaviours/keyboard-controls/adapters/presenters/Presenter.js +39 -0
  49. package/es/library/behaviours/keyboard-controls/applications/interfaces/UseCase.js +0 -0
  50. package/es/library/behaviours/keyboard-controls/applications/interfaces/UseCaseDependencies.js +1 -0
  51. package/es/library/behaviours/keyboard-controls/applications/interfaces/gateways/IKeyboardHandler.js +1 -0
  52. package/es/library/behaviours/keyboard-controls/applications/interfaces/gateways/IRepository.js +1 -0
  53. package/es/library/behaviours/keyboard-controls/applications/interfaces/gateways/IService.js +1 -0
  54. package/es/library/behaviours/keyboard-controls/applications/interfaces/input/DestructInputModel.js +1 -0
  55. package/es/library/behaviours/keyboard-controls/applications/interfaces/input/DownArrowPressInputModel.js +1 -0
  56. package/es/library/behaviours/keyboard-controls/applications/interfaces/input/EnterPressInputModel.js +1 -0
  57. package/es/library/behaviours/keyboard-controls/applications/interfaces/input/FocusNextInputModel.js +1 -0
  58. package/es/library/behaviours/keyboard-controls/applications/interfaces/input/FocusPreviousInputModel.js +1 -0
  59. package/es/library/behaviours/keyboard-controls/applications/interfaces/input/InitializeInputModel.js +1 -0
  60. package/es/library/behaviours/keyboard-controls/applications/interfaces/input/RowActionInputModel.js +1 -0
  61. package/es/library/behaviours/keyboard-controls/applications/interfaces/input/SelectionInputModel.js +1 -0
  62. package/es/library/behaviours/keyboard-controls/applications/interfaces/input/SpacePressInputModel.js +1 -0
  63. package/es/library/behaviours/keyboard-controls/applications/interfaces/input/UpArrowPressInputModel.js +1 -0
  64. package/es/library/behaviours/keyboard-controls/applications/interfaces/output/IPresenter.js +1 -0
  65. package/es/library/behaviours/keyboard-controls/applications/interfaces/output/OutputModel.js +1 -0
  66. package/es/library/behaviours/keyboard-controls/applications/usecases/AbstractUseCase.js +19 -0
  67. package/es/library/behaviours/keyboard-controls/applications/usecases/DestructUsecase.js +20 -0
  68. package/es/library/behaviours/keyboard-controls/applications/usecases/DownArrowPress.js +16 -0
  69. package/es/library/behaviours/keyboard-controls/applications/usecases/EnterPress.js +19 -0
  70. package/es/library/behaviours/keyboard-controls/applications/usecases/FocusNextUsecase.js +16 -0
  71. package/es/library/behaviours/keyboard-controls/applications/usecases/FocusPreviousUsecase.js +16 -0
  72. package/es/library/behaviours/keyboard-controls/applications/usecases/InitializeUsecase.js +20 -0
  73. package/es/library/behaviours/keyboard-controls/applications/usecases/SpacePress.js +19 -0
  74. package/es/library/behaviours/keyboard-controls/applications/usecases/UpArrowPress.js +16 -0
  75. package/es/library/behaviours/keyboard-controls/domain/entities/KeyboardControls.js +87 -0
  76. package/es/library/behaviours/keyboard-controls/domain/entities/interface/IKeyboardControls.js +1 -0
  77. package/es/library/behaviours/keyboard-controls/domain/entities/interface/KeyboardControlModel.js +1 -0
  78. package/es/library/behaviours/keyboard-controls/frameworks/EventHandlerFactory.js +48 -0
  79. package/es/library/behaviours/keyboard-controls/frameworks/KeyboardControlBehaviourFactory.js +23 -0
  80. package/es/library/behaviours/list-selection/frameworks/ActionHandlerFactory.js +4 -3
  81. package/es/library/custom-component/applications/entities-factory/BehavioursFactory.js +18 -16
  82. package/es/library/custom-component/applications/usecases/UpdatePropertyUseCase.js +3 -0
  83. package/es/library/custom-component/applications/usecases/UpdateStateUseCase.js +5 -1
  84. package/es/library/custom-component/domain/entities/Component.js +4 -0
  85. package/es/library/custom-component/domain/entities/LifeCycleAction.js +14 -3
  86. package/es/library/custom-component/frameworks/ui/ComponentRegistry.js +8 -0
  87. package/es/library/dot/components/action-location/frameworks/ui/ActionComponentMapping.js +4 -0
  88. package/es/library/dot/components/action-location/frameworks/ui/EventHandlersFactory.js +1 -1
  89. package/es/library/dot/components/table-list/adapters/controllers/KeyboardRowClickController.js +36 -0
  90. package/es/library/dot/components/table-list/adapters/controllers/KeyboardRowSelectController.js +31 -0
  91. package/es/library/dot/components/table-list/adapters/controllers/index.js +3 -1
  92. package/es/library/dot/components/table-list/adapters/presenters/TableTranslator.js +5 -3
  93. package/es/library/dot/components/table-list/frameworks/ui/EventHandlersFactory.js +4 -1
  94. package/es/library/dot/components/table-list/frameworks/ui/TableListView.js +10 -3
  95. package/es/library/dot/components/table-list/frameworks/ui/css/TableList.module.css +3 -0
  96. package/es/library/dot/components/table-list/frameworks/ui/sub-components/Header.js +9 -10
  97. package/es/library/dot/components/table-list/frameworks/ui/sub-components/Rows.js +7 -3
  98. package/es/library/dot/components/table-list/frameworks/ui/sub-components/header/HeaderData.js +7 -2
  99. package/es/library/dot/components/table-list/frameworks/ui/sub-components/header/MassAction.js +28 -0
  100. package/es/library/dot/components/table-list/frameworks/ui/sub-components/row/Row.js +5 -0
  101. package/es/library/dot/components/table-list/frameworks/ui/sub-components/row/RowData.js +7 -2
  102. package/es/library/dot/components/table-list/frameworks/ui/sub-components/row/RowSelection.js +1 -0
  103. package/es/library/dot/legacy-to-new-arch/table-column-chooser/frameworks/ui/TableColumnChooser.js +11 -0
  104. package/es/library/dot/legacy-to-new-arch/table-column-chooser/frameworks/ui/TableColumnChooserView.js +79 -0
  105. package/es/library/dot/legacy-to-new-arch/table-column-filter/frameworks/ui/TableColumnFilterView.js +8 -4
  106. package/es/library/dot/legacy-to-new-arch/table-field-components/lookup-field/frameworks/ui/LookupFieldView.js +6 -8
  107. package/es/platform/client-actions/components/action-event-mediator/frameworks/ui/EventHandlersFactory.js +4 -3
  108. package/es/platform/client-actions/components/row-actions-renderer/frameworks/ui/RowActionsRenderer.module.css +0 -6
  109. package/es/platform/client-actions/components/row-actions-renderer/frameworks/ui/RowActionsRendererView.js +1 -1
  110. package/es/platform/column-chooser/adapters/controllers/AbstractController.js +10 -0
  111. package/es/platform/column-chooser/adapters/controllers/ColumnChooserCloseController.js +21 -0
  112. package/es/platform/column-chooser/adapters/controllers/ColumnChooserOpenController.js +26 -0
  113. package/es/platform/column-chooser/adapters/controllers/ColumnChooserReorderController.js +26 -0
  114. package/es/platform/column-chooser/adapters/controllers/ColumnChooserSaveController.js +21 -0
  115. package/es/platform/column-chooser/adapters/controllers/ColumnChooserSearchController.js +24 -0
  116. package/es/platform/column-chooser/adapters/controllers/ColumnChooserSelectController.js +26 -0
  117. package/es/platform/column-chooser/adapters/gateways/Repository.js +38 -0
  118. package/es/platform/column-chooser/adapters/gateways/Service.js +34 -0
  119. package/es/platform/column-chooser/adapters/gateways/State.js +1 -0
  120. package/es/platform/column-chooser/adapters/presenters/Presenter.js +25 -0
  121. package/es/platform/column-chooser/applications/interfaces/UsecaseDependencies.js +1 -0
  122. package/es/platform/column-chooser/applications/interfaces/gateways/IRepository.js +1 -0
  123. package/es/platform/column-chooser/applications/interfaces/gateways/IService.js +1 -0
  124. package/es/platform/column-chooser/applications/interfaces/input/ColumnChooserCloseInput.js +1 -0
  125. package/es/platform/column-chooser/applications/interfaces/input/ColumnChooserOpenInput.js +1 -0
  126. package/es/platform/column-chooser/applications/interfaces/input/ColumnChooserReorderInput.js +1 -0
  127. package/es/platform/column-chooser/applications/interfaces/input/ColumnChooserSaveInput.js +1 -0
  128. package/es/platform/column-chooser/applications/interfaces/input/ColumnChooserSearchInput.js +1 -0
  129. package/es/platform/column-chooser/applications/interfaces/input/ColumnChooserSelectInput.js +1 -0
  130. package/es/platform/column-chooser/applications/interfaces/output/BehaviourState.js +1 -0
  131. package/es/platform/column-chooser/applications/interfaces/output/IPresenter.js +1 -0
  132. package/es/platform/column-chooser/applications/usecases/AbstractUseCase.js +18 -0
  133. package/es/platform/column-chooser/applications/usecases/ColumnChooserCloseUseCase.js +34 -0
  134. package/es/platform/column-chooser/applications/usecases/ColumnChooserOpenUseCase.js +20 -0
  135. package/es/platform/column-chooser/applications/usecases/ColumnChooserReorderUseCase.js +20 -0
  136. package/es/platform/column-chooser/applications/usecases/ColumnChooserSaveUseCase.js +31 -0
  137. package/es/platform/column-chooser/applications/usecases/ColumnChooserSearchUseCase.js +19 -0
  138. package/es/platform/column-chooser/applications/usecases/ColumnChooserSelectUseCase.js +26 -0
  139. package/es/platform/column-chooser/domain/entities/ColumnChooserImp.js +95 -0
  140. package/es/platform/column-chooser/domain/entities/ReorderEntityImp.js +35 -0
  141. package/es/platform/column-chooser/domain/entities/SearchEntityImp.js +28 -0
  142. package/es/platform/column-chooser/domain/entities/SelectEntityImp.js +58 -0
  143. package/es/platform/column-chooser/domain/entities/interfaces/ColumnChooser.js +1 -0
  144. package/es/platform/column-chooser/domain/entities/interfaces/ReorderEntity.js +1 -0
  145. package/es/platform/column-chooser/domain/entities/interfaces/SearchEntity.js +1 -0
  146. package/es/platform/column-chooser/domain/entities/interfaces/SelectEntity.js +1 -0
  147. package/es/platform/column-chooser/frameworks/ColumnChooserBehaviourFactory.js +19 -0
  148. package/es/platform/column-chooser/frameworks/EventHandlersFactory.js +30 -0
  149. package/es/platform/data-source/http-template/updateSelectedFields.js +28 -0
  150. package/es/platform/data-source/index.js +2 -0
  151. package/es/platform/sdk/adapters/gateways/Repository.js +31 -0
  152. package/es/platform/sdk/adapters/gateways/Service.js +27 -0
  153. package/es/platform/sdk/adapters/presenters/Presenter.js +16 -0
  154. package/es/platform/sdk/application/interfaces/UsecaseDependencies.js +1 -0
  155. package/es/platform/sdk/application/interfaces/gateways/IRepository.js +1 -0
  156. package/es/platform/sdk/application/interfaces/gateways/ISdkManager.js +1 -0
  157. package/es/platform/sdk/application/interfaces/gateways/IService.js +1 -0
  158. package/es/platform/sdk/application/interfaces/input/CreateResourceInstanceUseCaseInputModel.js +1 -0
  159. package/es/platform/sdk/application/interfaces/input/DestructResourceInstanceUseCaseInputModel.js +1 -0
  160. package/es/platform/sdk/application/interfaces/input/GetResourceInstanceUseCaseInputModel.js +1 -0
  161. package/es/platform/sdk/application/interfaces/input/RegisterResourceInputModel.js +1 -0
  162. package/es/platform/sdk/application/interfaces/input/SyncStateWithResourceInputModel.js +1 -0
  163. package/es/platform/sdk/application/interfaces/output/ISdkPresenter.js +3 -0
  164. package/es/platform/sdk/application/usecases/AbstractUseCase.js +16 -0
  165. package/es/platform/sdk/application/usecases/CreateResourceInstanceUseCase.js +16 -0
  166. package/es/platform/sdk/application/usecases/DestructResourceInstanceUseCase.js +16 -0
  167. package/es/platform/sdk/application/usecases/GetResourceInstanceUseCase.js +17 -0
  168. package/es/platform/sdk/application/usecases/RegisterResourceUseCase.js +16 -0
  169. package/es/platform/sdk/application/usecases/SyncStateWithResourceUseCase.js +25 -0
  170. package/es/platform/sdk/domain/entities/ResourceManager.js +95 -0
  171. package/es/platform/sdk/domain/entities/interfaces/IResourceManager.js +1 -0
  172. package/es/platform/sdk/domain/entities/interfaces/ResourceManagerRestoreModel.js +1 -0
  173. package/es/platform/sdk/domain/entities/interfaces/SdkResource.js +1 -0
  174. package/es/platform/sdk/domain/entities/interfaces/SdkResourceDependencies.js +1 -0
  175. package/es/platform/sdk/domain/entities/interfaces/StateInterface.js +1 -0
  176. package/es/platform/sdk/frameworks/AbstractResource.js +16 -0
  177. package/es/platform/sdk/frameworks/Sdk.js +11 -0
  178. package/es/platform/sdk/frameworks/SdkRegistry.js +72 -0
  179. package/es/platform/sdk-behaviour/adapters/controllers/AbstractController.js +11 -0
  180. package/es/platform/sdk-behaviour/adapters/controllers/DestructController.js +19 -0
  181. package/es/platform/sdk-behaviour/adapters/controllers/InitializeController.js +19 -0
  182. package/es/platform/sdk-behaviour/adapters/controllers/SyncStateWithResourceController.js +24 -0
  183. package/es/platform/sdk-behaviour/adapters/gateways/Repository.js +25 -0
  184. package/es/platform/sdk-behaviour/adapters/gateways/ResourceManagerGateWay.js +43 -0
  185. package/es/platform/sdk-behaviour/adapters/gateways/Service.js +19 -0
  186. package/es/platform/sdk-behaviour/applications/AbstractUseCase.js +6 -0
  187. package/es/platform/sdk-behaviour/applications/interfaces/UsecaseDependencies.js +1 -0
  188. package/es/platform/sdk-behaviour/applications/interfaces/gateways/IRepository.js +1 -0
  189. package/es/platform/sdk-behaviour/applications/interfaces/gateways/IResourceManagerGateWay.js +3 -0
  190. package/es/platform/sdk-behaviour/applications/interfaces/gateways/IService.js +1 -0
  191. package/es/platform/sdk-behaviour/applications/interfaces/input/CreateResourceInstanceUseCaseInputModel.js +1 -0
  192. package/es/platform/sdk-behaviour/applications/interfaces/input/DestructResourceInstanceUseCaseInputModel.js +1 -0
  193. package/es/platform/sdk-behaviour/applications/interfaces/input/SyncStateWithResourceUseCaseInputModel.js +1 -0
  194. package/es/platform/sdk-behaviour/applications/usecases/CreateResourceInstanceUseCase.js +14 -0
  195. package/es/platform/sdk-behaviour/applications/usecases/DestructResourceInstanceUseCase.js +14 -0
  196. package/es/platform/sdk-behaviour/applications/usecases/SyncStateWithResourceUseCase.js +22 -0
  197. package/es/platform/sdk-behaviour/domain/entities/BehaviourResourceConnector.js +49 -0
  198. package/es/platform/sdk-behaviour/domain/entities/interfaces/IBehaviourResourceConnector.js +1 -0
  199. package/es/platform/sdk-behaviour/domain/entities/interfaces/IResourceManagerProxy.js +2 -0
  200. package/es/platform/sdk-behaviour/frameworks/EventHandlerFactory.js +29 -0
  201. package/es/platform/sdk-behaviour/frameworks/SdkBehaviourFactory.js +16 -0
  202. package/es/platform/zfield/domain/entities/fields-manager/FieldsManager.js +3 -1
  203. package/es/platform/zfield/domain/entities/interfaces/FieldApiName.js +1 -0
  204. package/es/platform/zfield/frameworks/ZFieldBehaviourFactory.js +6 -1
  205. package/es/platform/zform/frameworks/ui/EventHandlerFactory.js +2 -2
  206. package/es/platform/zlist/adapters/gateways/Repository.js +4 -2
  207. package/es/platform/zlist/adapters/presenters/SelectionTranslator.js +94 -0
  208. package/es/platform/zlist/adapters/presenters/TableTranslator.js +35 -19
  209. package/es/platform/zlist/adapters/presenters/translators/ColumnTranslator.js +63 -4
  210. package/es/platform/zlist/adapters/presenters/translators/Header.js +5 -2
  211. package/es/platform/zlist/adapters/presenters/translators/ResizerStateTranslator.js +7 -3
  212. package/es/platform/zlist/adapters/presenters/translators/Row.js +1 -1
  213. package/es/platform/zlist/adapters/presenters/translators/fields/LookUpFieldTranslator.js +6 -6
  214. package/es/platform/zlist/adapters/presenters/translators/interfaces/State.js +2 -1
  215. package/es/platform/zlist/adapters/presenters/utils/DefaultClientActions.js +78 -6
  216. package/es/platform/zlist/applications/entities-factory/ListFactory.js +3 -2
  217. package/es/platform/zlist/applications/interfaces/input/GetContextUseCaseInput.js +1 -0
  218. package/es/platform/zlist/applications/interfaces/input/UpdateMultipleRecordUseCaseInput.js +1 -0
  219. package/es/platform/zlist/applications/usecases/DeleteMultipleRecordUseCase.js +23 -2
  220. package/es/platform/zlist/applications/usecases/DeleteSingleRecordUseCase.js +9 -0
  221. package/es/platform/zlist/applications/usecases/FetchMoreUseCase.js +4 -1
  222. package/es/platform/zlist/applications/usecases/GetContextUseCase.js +18 -0
  223. package/es/platform/zlist/applications/usecases/RecordExecuteFailedUseCase.js +3 -1
  224. package/es/platform/zlist/applications/usecases/RecordUpdateUseCase.js +9 -0
  225. package/es/platform/zlist/applications/usecases/UpdateMultipleRecordUseCase.js +34 -0
  226. package/es/platform/zlist/domain/entities/List.js +26 -2
  227. package/es/platform/zlist/frameworks/EventHandlersFactory.js +3 -3
  228. package/es/platform/zrecord/applications/interfaces/input/GetMultipleRecordUsecaseInputModel.js +1 -0
  229. package/es/platform/zrecord/applications/interfaces/input/GetSingleRecordUseCaseInputModel.js +1 -0
  230. package/es/platform/zrecord/applications/usecases/GetMultipleRecordUseCase.js +16 -0
  231. package/es/platform/zrecord/applications/usecases/GetSingleRecordUseCase.js +17 -0
  232. package/es/platform/zrecord/domain/entities/Records.js +9 -4
  233. package/es/platform/zrecord/domain/entities/RecordsManager.js +8 -0
  234. package/package.json +10 -8
  235. package/es/library/dot/components/table-list/frameworks/ui/sub-components/header/SelectAll.js +0 -26
@@ -0,0 +1,95 @@
1
+ export default class ColumnChooserImp {
2
+ constructor() {
3
+ let isSaved = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
4
+ let reorderEntity = arguments.length > 1 ? arguments[1] : undefined;
5
+ let searchEntity = arguments.length > 2 ? arguments[2] : undefined;
6
+ let selectEntity = arguments.length > 3 ? arguments[3] : undefined;
7
+ this.isSaved = isSaved;
8
+ this.reorderEntity = reorderEntity;
9
+ this.searchEntity = searchEntity;
10
+ this.selectEntity = selectEntity;
11
+ }
12
+
13
+ markAsSaved() {
14
+ this.isSaved = true;
15
+ }
16
+
17
+ hasBeenSaved() {
18
+ return this.isSaved;
19
+ }
20
+
21
+ markAsUnsaved() {
22
+ this.isSaved = false;
23
+ }
24
+
25
+ init(order, selectedArray) {
26
+ this.reorderEntity.initOrder(order);
27
+ this.selectEntity.resetSelection(selectedArray);
28
+ this.searchEntity.setSearchText('');
29
+ }
30
+
31
+ setSearchText(searchStr) {
32
+ this.searchEntity.setSearchText(searchStr);
33
+ }
34
+
35
+ select(id) {
36
+ if (!this.selectEntity.isMaxSelectionReached()) {
37
+ this.selectEntity.select(id);
38
+ this.rearrangeSelectedFirst();
39
+ }
40
+ }
41
+
42
+ deselect(id) {
43
+ if (this.selectEntity.getSelectedCount() > 1) {
44
+ this.selectEntity.deselect(id);
45
+ this.rearrangeSelectedFirst();
46
+ }
47
+ }
48
+
49
+ rearrangeSelectedFirst() {
50
+ const order = this.reorderEntity.getOrder();
51
+ const selected = this.selectEntity.getSelected();
52
+ const selectedArray = [];
53
+ const unselectedArray = [];
54
+ order.forEach(field => {
55
+ if (selected[field]) {
56
+ selectedArray.push(field);
57
+ } else {
58
+ unselectedArray.push(field);
59
+ }
60
+ });
61
+ this.reorderEntity.initOrder([...selectedArray, ...unselectedArray]);
62
+ }
63
+
64
+ arrayMoveImmutable(fromIndex, toIndex) {
65
+ this.reorderEntity.arrayMoveImmutable(fromIndex, toIndex);
66
+ }
67
+
68
+ getOrder() {
69
+ return this.reorderEntity.getOrder();
70
+ }
71
+
72
+ getSelectedWithOrder() {
73
+ const order = this.reorderEntity.getOrder();
74
+ const selected = this.selectEntity.getSelected();
75
+ return order.filter(field => selected[field]);
76
+ }
77
+
78
+ toObject() {
79
+ const isSaved = this.hasBeenSaved();
80
+ const order = this.reorderEntity.getOrder();
81
+ const selected = this.selectEntity.getSelected();
82
+ const fieldsOrder = this.searchEntity.filterOptions(order);
83
+ const searchText = this.searchEntity.getSearchText();
84
+ const isMaxSelectionReached = this.selectEntity.isMaxSelectionReached();
85
+ return {
86
+ order,
87
+ selected,
88
+ isSaved,
89
+ isMaxSelectionReached,
90
+ fieldsOrder,
91
+ searchText
92
+ };
93
+ }
94
+
95
+ }
@@ -0,0 +1,35 @@
1
+ export default class ReorderEntityImp {
2
+ constructor(order) {
3
+ this.order = order;
4
+ }
5
+
6
+ initOrder(order) {
7
+ this.order = [...order];
8
+ }
9
+
10
+ moveTo(id, index) {
11
+ const currentIndex = this.order.indexOf(id);
12
+ this.arrayMoveImmutable(currentIndex, index);
13
+ }
14
+
15
+ arrayMoveImmutable(fromIndex, toIndex) {
16
+ if (fromIndex === toIndex) {
17
+ return;
18
+ }
19
+
20
+ const newOrder = [...this.order];
21
+ const startIndex = fromIndex < 0 ? newOrder.length + fromIndex : fromIndex;
22
+
23
+ if (startIndex >= 0 && startIndex < newOrder.length) {
24
+ const endIndex = toIndex < 0 ? newOrder.length + toIndex : toIndex;
25
+ const [item] = newOrder.splice(fromIndex, 1);
26
+ newOrder.splice(endIndex, 0, item);
27
+ this.order = newOrder;
28
+ }
29
+ }
30
+
31
+ getOrder() {
32
+ return this.order;
33
+ }
34
+
35
+ }
@@ -0,0 +1,28 @@
1
+ export default class SearchEntityImp {
2
+ constructor(searchText, getValue) {
3
+ this.searchText = searchText;
4
+ this.getValue = getValue;
5
+ }
6
+
7
+ getSearchText() {
8
+ return this.searchText;
9
+ }
10
+
11
+ setSearchText(term) {
12
+ this.searchText = term;
13
+ }
14
+
15
+ filterOptions(options) {
16
+ if (!this.searchText) {
17
+ return options;
18
+ }
19
+
20
+ return options.filter(option => this.matches(this.getValue(option)));
21
+ }
22
+
23
+ matches(value) {
24
+ if (!this.searchText) return true;
25
+ return value.toLowerCase().includes(this.searchText.toLowerCase());
26
+ }
27
+
28
+ }
@@ -0,0 +1,58 @@
1
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
2
+
3
+ export default class SelectEntityImp {
4
+ constructor(selected, maxCount) {
5
+ this.selected = selected;
6
+ this.maxCount = maxCount;
7
+
8
+ _defineProperty(this, "selectedCount", void 0);
9
+
10
+ this.calculateSelectedCount();
11
+ }
12
+
13
+ getSelectedCount() {
14
+ this.calculateSelectedCount();
15
+ return this.selectedCount;
16
+ }
17
+
18
+ resetSelection(selectedArray) {
19
+ // Clear all current selections
20
+ this.selected = {}; // Select items in the given order, up to maxCount
21
+
22
+ for (let i = 0; i < selectedArray.length && (this.maxCount === 0 || i < this.maxCount); i++) {
23
+ this.selected[selectedArray[i]] = true;
24
+ }
25
+
26
+ this.calculateSelectedCount();
27
+ }
28
+
29
+ calculateSelectedCount() {
30
+ this.selectedCount = Object.values(this.selected).filter(Boolean).length;
31
+ return this.selectedCount;
32
+ }
33
+
34
+ select(item) {
35
+ if (this.isMaxSelectionReached()) {
36
+ return; // throw new Error(`Cannot select more than ${this.maxCount} items`);
37
+ }
38
+
39
+ this.selected[item] = true;
40
+ this.calculateSelectedCount();
41
+ }
42
+
43
+ isMaxSelectionReached() {
44
+ return this.maxCount > 0 && this.selectedCount >= this.maxCount;
45
+ }
46
+
47
+ deselect(item) {
48
+ if (this.selected[item]) {
49
+ delete this.selected[item];
50
+ this.calculateSelectedCount();
51
+ }
52
+ }
53
+
54
+ getSelected() {
55
+ return this.selected;
56
+ }
57
+
58
+ }
@@ -0,0 +1,19 @@
1
+ import Properties from "../../../bc/column-chooser/Properties";
2
+ import EventHandlersFactory from "./EventHandlersFactory";
3
+ export default class ColumnChooserBehaviourFactory {
4
+ static create() {
5
+ return {
6
+ name: 'columnChooser',
7
+ setInitialState: () => ({
8
+ order: [],
9
+ selected: {},
10
+ isMaxSelectionReached: false,
11
+ fieldsOrder: [],
12
+ searchText: ''
13
+ }),
14
+ eventHandlers: EventHandlersFactory.create(),
15
+ properties: Properties
16
+ };
17
+ }
18
+
19
+ }
@@ -0,0 +1,30 @@
1
+ import Service from "../adapters/gateways/Service";
2
+ import Presenter from "../adapters/presenters/Presenter";
3
+ import Repository from "../adapters/gateways/Repository";
4
+ import { COLUMN_CHOOSER_BEHAVIOUR_OPENED } from "../../../bc/column-chooser/Constants";
5
+ import { COLUMN_CHOOSER_SELECT_REQUESTED, COLUMN_CHOOSER_REORDER_REQUESTED, COLUMN_CHOOSER_SEARCH_REQUESTED, COLUMN_CHOOSER_SAVE_REQUESTED, COLUMN_CHOOSER_CLOSE_REQUESTED } from "../../../cc/table-column-chooser/Constants";
6
+ import ColumnChooserOpenController from "../adapters/controllers/ColumnChooserOpenController";
7
+ import ColumnChooserSelectController from "../adapters/controllers/ColumnChooserSelectController";
8
+ import ColumnChooserReorderController from "../adapters/controllers/ColumnChooserReorderController";
9
+ import ColumnChooserSaveController from "../adapters/controllers/ColumnChooserSaveController";
10
+ import ColumnChooserSearchController from "../adapters/controllers/ColumnChooserSearchController";
11
+ import ColumnChooserCloseController from "../adapters/controllers/ColumnChooserCloseController";
12
+ export default class EventHandlersFactory {
13
+ static create() {
14
+ const repository = new Repository();
15
+ const presenter = new Presenter();
16
+ const service = new Service({
17
+ repository,
18
+ presenter
19
+ });
20
+ return {
21
+ [COLUMN_CHOOSER_BEHAVIOUR_OPENED]: new ColumnChooserOpenController(service).handle,
22
+ [COLUMN_CHOOSER_SELECT_REQUESTED]: new ColumnChooserSelectController(service).handle,
23
+ [COLUMN_CHOOSER_REORDER_REQUESTED]: new ColumnChooserReorderController(service).handle,
24
+ [COLUMN_CHOOSER_SEARCH_REQUESTED]: new ColumnChooserSearchController(service).handle,
25
+ [COLUMN_CHOOSER_SAVE_REQUESTED]: new ColumnChooserSaveController(service).handle,
26
+ [COLUMN_CHOOSER_CLOSE_REQUESTED]: new ColumnChooserCloseController(service).handle
27
+ };
28
+ }
29
+
30
+ }
@@ -0,0 +1,28 @@
1
+ const updateSelectedFields = {
2
+ name: 'selectedFields',
3
+ api: '/{{servicePrefix}}/{{orgName}}/api/v1/views/{{viewId}}/selectedFields',
4
+ parameters: `{}`,
5
+ type: 'PUT',
6
+ requestBody: '{"fields": {{fields}}}',
7
+ transformer: res => res.fields,
8
+ properties: {
9
+ viewId: {
10
+ required: true,
11
+ typeMetadata: {
12
+ schema: {
13
+ type: 'string'
14
+ }
15
+ }
16
+ },
17
+ departmentId: {
18
+ required: true,
19
+ defaultValue: 1,
20
+ typeMetadata: {
21
+ schema: {
22
+ type: 'number'
23
+ }
24
+ }
25
+ }
26
+ }
27
+ };
28
+ export default updateSelectedFields;
@@ -13,6 +13,7 @@ import fetchLayoutRules from "./http-template/fetchLayoutRules";
13
13
  import fetchDependencyMappings from "./http-template/fetchDependencyMappings";
14
14
  import fetchValidationRules from "./http-template/fetchValidationRules";
15
15
  import createRecord from "./http-template/createRecord";
16
+ import updateSelectedFields from "./http-template/updateSelectedFields";
16
17
  let dataSource = {
17
18
  httpTemplates: {
18
19
  [RecordApiActionName.GET_RECORDS]: getRecords,
@@ -23,6 +24,7 @@ let dataSource = {
23
24
  [RecordApiActionName.GET_CLIENTACTIONS]: getClientActions,
24
25
  getAvailableFields,
25
26
  getSelectedFields,
27
+ updateSelectedFields,
26
28
  fetchMyLayouts,
27
29
  fetchMyForm,
28
30
  fetchLayoutRules,
@@ -0,0 +1,31 @@
1
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
2
+
3
+ import { ResourceManager } from "../../domain/entities/ResourceManager";
4
+ export class Repository {
5
+ constructor(resourceNames) {
6
+ this.resourceNames = resourceNames;
7
+
8
+ _defineProperty(this, "state", void 0);
9
+
10
+ _defineProperty(this, "restoreModel", {
11
+ resourceInstances: {},
12
+ resources: {}
13
+ });
14
+ }
15
+
16
+ init(state) {
17
+ this.state = state;
18
+ }
19
+
20
+ getResourceManager() {
21
+ const {
22
+ restoreModel
23
+ } = this;
24
+ return new ResourceManager(restoreModel.resources, restoreModel.resourceInstances);
25
+ }
26
+
27
+ storeResourceManager(restoreModel) {
28
+ this.restoreModel = restoreModel;
29
+ }
30
+
31
+ }
@@ -0,0 +1,27 @@
1
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
2
+
3
+ import { CreateResourceInstanceUseCase } from "../../application/usecases/CreateResourceInstanceUseCase";
4
+ import { DestructResourceInstanceUseCase } from "../../application/usecases/DestructResourceInstanceUseCase";
5
+ import { GetResourceInstanceUseCase } from "../../application/usecases/GetResourceInstanceUseCase";
6
+ import { RegisterResourceUseCase } from "../../application/usecases/RegisterResourceUseCase";
7
+ import { SyncStateWithResourceUseCase } from "../../application/usecases/SyncStateWithResourceUseCase";
8
+ export class Service {
9
+ constructor(dependencies) {
10
+ _defineProperty(this, "createResourceInstanceUseCase", void 0);
11
+
12
+ _defineProperty(this, "destructResourceInstanceUseCase", void 0);
13
+
14
+ _defineProperty(this, "syncStateWithResourceUseCase", void 0);
15
+
16
+ _defineProperty(this, "registerResourceUseCase", void 0);
17
+
18
+ _defineProperty(this, "getResourceInstanceUseCase", void 0);
19
+
20
+ this.createResourceInstanceUseCase = new CreateResourceInstanceUseCase(dependencies);
21
+ this.destructResourceInstanceUseCase = new DestructResourceInstanceUseCase(dependencies);
22
+ this.syncStateWithResourceUseCase = new SyncStateWithResourceUseCase(dependencies);
23
+ this.registerResourceUseCase = new RegisterResourceUseCase(dependencies);
24
+ this.getResourceInstanceUseCase = new GetResourceInstanceUseCase(dependencies);
25
+ }
26
+
27
+ }
@@ -0,0 +1,16 @@
1
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
2
+
3
+ export class Presenter {
4
+ constructor() {
5
+ _defineProperty(this, "updateState", void 0);
6
+ }
7
+
8
+ updateDependencies(state, updateState) {
9
+ this.updateState = updateState;
10
+ }
11
+
12
+ presentData(data) {
13
+ this.updateState(data);
14
+ }
15
+
16
+ }
@@ -0,0 +1,3 @@
1
+ import { StateInterface } from "../../../domain/entities/interfaces/StateInterface";
2
+ import { SdkResource } from "../../../domain/entities/interfaces/SdkResource";
3
+ export { StateInterface, SdkResource };
@@ -0,0 +1,16 @@
1
+ export class AbstractUseCase {
2
+ constructor(dependencies) {
3
+ this.dependencies = dependencies;
4
+ }
5
+
6
+ // TODO: Add type for state and updateState
7
+ updateDependencies(state, updateState) {
8
+ const {
9
+ repository,
10
+ presenter
11
+ } = this.dependencies;
12
+ repository.init(state);
13
+ presenter.updateDependencies(state, updateState);
14
+ }
15
+
16
+ }
@@ -0,0 +1,16 @@
1
+ import { AbstractUseCase } from "./AbstractUseCase";
2
+ export class CreateResourceInstanceUseCase extends AbstractUseCase {
3
+ execute(_ref) {
4
+ let {
5
+ instanceName,
6
+ resourceName
7
+ } = _ref;
8
+ const {
9
+ repository
10
+ } = this.dependencies;
11
+ const resourceManager = repository.getResourceManager();
12
+ resourceManager.createResourceInstance(resourceName, instanceName);
13
+ repository.storeResourceManager(resourceManager.toObject());
14
+ }
15
+
16
+ }
@@ -0,0 +1,16 @@
1
+ import { AbstractUseCase } from "./AbstractUseCase";
2
+ export class DestructResourceInstanceUseCase extends AbstractUseCase {
3
+ execute(_ref) {
4
+ let {
5
+ instanceName,
6
+ resourceName
7
+ } = _ref;
8
+ const {
9
+ repository
10
+ } = this.dependencies;
11
+ const resourceManager = repository.getResourceManager();
12
+ resourceManager.destructResourceInstance(resourceName, instanceName);
13
+ repository.storeResourceManager(resourceManager.toObject());
14
+ }
15
+
16
+ }
@@ -0,0 +1,17 @@
1
+ import { AbstractUseCase } from "./AbstractUseCase";
2
+ export class GetResourceInstanceUseCase extends AbstractUseCase {
3
+ execute(_ref) {
4
+ let {
5
+ instanceName,
6
+ resourceName
7
+ } = _ref;
8
+ const {
9
+ repository,
10
+ presenter
11
+ } = this.dependencies;
12
+ const resourceManager = repository.getResourceManager();
13
+ resourceManager.getResourceInstance(resourceName, instanceName);
14
+ presenter.presentData(resourceManager.getResourceInstance(resourceName, instanceName));
15
+ }
16
+
17
+ }
@@ -0,0 +1,16 @@
1
+ import { AbstractUseCase } from "../usecases/AbstractUseCase";
2
+ export class RegisterResourceUseCase extends AbstractUseCase {
3
+ execute(_ref) {
4
+ let {
5
+ resourceName,
6
+ resource
7
+ } = _ref;
8
+ const {
9
+ repository
10
+ } = this.dependencies;
11
+ const resourceManager = repository.getResourceManager();
12
+ resourceManager.registerResource(resourceName, resource);
13
+ repository.storeResourceManager(resourceManager.toObject());
14
+ }
15
+
16
+ }
@@ -0,0 +1,25 @@
1
+ import { AbstractUseCase } from "../usecases/AbstractUseCase";
2
+ export class SyncStateWithResourceUseCase extends AbstractUseCase {
3
+ execute(_ref) {
4
+ let {
5
+ instanceName,
6
+ state,
7
+ dispatch,
8
+ resourceName,
9
+ updateState
10
+ } = _ref;
11
+ const {
12
+ repository
13
+ } = this.dependencies;
14
+ const resourceManager = repository.getResourceManager();
15
+ resourceManager.syncStateWithResource({
16
+ resourceName,
17
+ instanceName,
18
+ state,
19
+ dispatch,
20
+ updateState
21
+ });
22
+ repository.storeResourceManager(resourceManager.toObject());
23
+ }
24
+
25
+ }
@@ -0,0 +1,95 @@
1
+ export class ResourceManager {
2
+ constructor() {
3
+ let resources = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
4
+ let resourceInstances = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
5
+ this.resources = resources;
6
+ this.resourceInstances = resourceInstances;
7
+ }
8
+
9
+ getResourceInstance(resourceName, instanceName) {
10
+ var _resourceInstances$re;
11
+
12
+ const {
13
+ resourceInstances
14
+ } = this;
15
+ return ((_resourceInstances$re = resourceInstances[resourceName]) === null || _resourceInstances$re === void 0 ? void 0 : _resourceInstances$re[instanceName]) || null;
16
+ }
17
+
18
+ createResourceInstance(resourceName, instanceName) {
19
+ const {
20
+ resourceInstances,
21
+ resources
22
+ } = this;
23
+ const ResourceClass = resources[resourceName];
24
+
25
+ if (ResourceClass) {
26
+ const instance = new ResourceClass();
27
+ instance.initialize();
28
+
29
+ if (!resourceInstances[resourceName]) {
30
+ resourceInstances[resourceName] = {};
31
+ }
32
+
33
+ resourceInstances[resourceName][instanceName] = instance;
34
+ } else {
35
+ console.warn(`Resource class not found for: ${resourceName}`);
36
+ }
37
+ }
38
+
39
+ destructResourceInstance(resourceName, instanceName) {
40
+ var _resourceInstances$re2;
41
+
42
+ const {
43
+ resourceInstances
44
+ } = this;
45
+ const instance = (_resourceInstances$re2 = resourceInstances[resourceName]) === null || _resourceInstances$re2 === void 0 ? void 0 : _resourceInstances$re2[instanceName];
46
+
47
+ if (instance) {
48
+ instance.destroy();
49
+ delete resourceInstances[resourceName][instanceName];
50
+ } else {
51
+ console.warn(`No resource instance found for: ${resourceName} - ${instanceName}`);
52
+ }
53
+ }
54
+
55
+ registerResource(resourceName, resource) {
56
+ const {
57
+ resources
58
+ } = this;
59
+
60
+ if (resources[resourceName]) {
61
+ console.warn(`Resource with name "${resourceName}" already exists. Overwriting.`);
62
+ }
63
+
64
+ resources[resourceName] = resource;
65
+ }
66
+
67
+ syncStateWithResource(_ref) {
68
+ var _resourceInstances$re3;
69
+
70
+ let {
71
+ resourceName,
72
+ instanceName,
73
+ state,
74
+ dispatch,
75
+ updateState
76
+ } = _ref;
77
+ const {
78
+ resourceInstances
79
+ } = this;
80
+ const instance = (_resourceInstances$re3 = resourceInstances[resourceName]) === null || _resourceInstances$re3 === void 0 ? void 0 : _resourceInstances$re3[instanceName];
81
+ instance.updateDependencies({
82
+ state,
83
+ dispatch,
84
+ updateState
85
+ });
86
+ }
87
+
88
+ toObject() {
89
+ return {
90
+ resourceInstances: this.resourceInstances,
91
+ resources: this.resources
92
+ };
93
+ }
94
+
95
+ }