@zohodesk/library-platform 1.1.13 → 1.2.0-exp.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (131) hide show
  1. package/es/.DS_Store +0 -0
  2. package/es/bc/column-chooser/EventHandlers.js +1 -2
  3. package/es/bc/zform/Properties.js +20 -0
  4. package/es/bc/zform/Symbol.js +3 -0
  5. package/es/bc/zrecord/Constants.js +2 -0
  6. package/es/cc/action-band/Properties.js +37 -0
  7. package/es/cc/action-band/constants/ExternalConstants.js +3 -1
  8. package/es/cc/component/LifeCycleEventsEnum.js +1 -0
  9. package/es/cc/fields/currency/Properties.js +9 -0
  10. package/es/cc/fields/decimal/Properties.js +9 -0
  11. package/es/cc/fields/email/Properties.js +9 -0
  12. package/es/cc/fields/lookup/Properties.js +10 -26
  13. package/es/cc/fields/multi-line/Properties.js +1 -0
  14. package/es/cc/fields/number/Properties.js +10 -1
  15. package/es/cc/fields/phone/Properties.js +9 -0
  16. package/es/cc/fields/text/Properties.js +2 -2
  17. package/es/cc/fields/url/Properties.js +9 -0
  18. package/es/cc/table-column-chooser/Constants.js +2 -1
  19. package/es/cc/table-connected/SdkContract.js +22 -0
  20. package/es/cc/text/Properties.js +100 -0
  21. package/es/cc/textbox/Properties.js +1 -1
  22. package/es/index.js +7 -2
  23. package/es/library/behaviours/clip-wrap/applications/usecases/ClipWrapUpdateUseCase.js +19 -0
  24. package/es/library/behaviours/search/adapters/controllers/UpdatePropertiesController.js +9 -4
  25. package/es/library/custom-component/adapters/gateways/event-manager/EventManager.js +4 -3
  26. package/es/library/custom-component/applications/usecases/DispatchUseCase.js +1 -0
  27. package/es/library/custom-component/applications/usecases/InitializeUseCase.js +1 -0
  28. package/es/library/custom-component/applications/usecases/MountUseCase.js +1 -0
  29. package/es/library/custom-component/applications/usecases/SetRefUseCase.js +7 -0
  30. package/es/library/custom-component/applications/usecases/UnmountUseCase.js +1 -0
  31. package/es/library/custom-component/applications/usecases/UpdatePropertyUseCase.js +1 -0
  32. package/es/library/custom-component/domain/entities/Component.js +1 -0
  33. package/es/library/custom-component/domain/entities/Logger.js +4 -9
  34. package/es/library/dot/components/form-fields/currency/frameworks/ui/CurrencyView.js +2 -0
  35. package/es/library/dot/components/form-fields/decimal/frameworks/ui/DecimalView.js +2 -0
  36. package/es/library/dot/components/form-fields/email/frameworks/ui/Email.js +1 -1
  37. package/es/library/dot/components/form-fields/email/frameworks/ui/EmailView.js +2 -0
  38. package/es/library/dot/components/form-fields/number/frameworks/ui/NumberView.js +2 -0
  39. package/es/library/dot/components/form-fields/phone/frameworks/ui/PhoneView.js +2 -0
  40. package/es/library/dot/components/form-fields/textarea/frameworks/ui/TextArea.js +1 -1
  41. package/es/library/dot/components/form-fields/textarea/frameworks/ui/TextAreaView.js +4 -2
  42. package/es/library/dot/components/form-fields/textbox/frameworks/ui/TextBoxView.js +2 -0
  43. package/es/library/dot/components/form-fields/url/frameworks/ui/UrlView.js +2 -0
  44. package/es/library/dot/components/table-list/frameworks/ui/sub-components/header/HeaderData.js +1 -1
  45. package/es/library/dot/legacy-to-new-arch/table-field-components/text-field/frameworks/ui/TextFieldView.js +20 -0
  46. package/es/library/dot/legacy-to-new-arch/text/frameworks/ui/Text.js +2 -2
  47. package/es/library/dot/legacy-to-new-arch/text/frameworks/ui/TextView.js +22 -1
  48. package/es/platform/.DS_Store +0 -0
  49. package/es/platform/app-context-behaviour/adapters/controllers/AbstractController.js +9 -0
  50. package/es/platform/app-context-behaviour/adapters/controllers/UpdatePropertiesController.js +32 -0
  51. package/es/platform/app-context-behaviour/adapters/gateway/Repository.js +22 -0
  52. package/es/platform/app-context-behaviour/adapters/gateway/Service.js +10 -0
  53. package/es/platform/app-context-behaviour/adapters/presenter/Presenter.js +16 -0
  54. package/es/platform/app-context-behaviour/applications/interfaces/UseCaseDependencies.js +1 -0
  55. package/es/platform/app-context-behaviour/applications/interfaces/gateways/IRepository.js +1 -0
  56. package/es/platform/app-context-behaviour/applications/interfaces/gateways/IService.js +1 -0
  57. package/es/platform/app-context-behaviour/applications/interfaces/input/UpdatePropertiesInputModel.js +1 -0
  58. package/es/platform/app-context-behaviour/applications/interfaces/output/BehaviourOutputModel.js +1 -0
  59. package/es/platform/app-context-behaviour/applications/interfaces/output/IPresenter.js +1 -0
  60. package/es/platform/app-context-behaviour/applications/usecases/AbstractUseCase.js +17 -0
  61. package/es/platform/app-context-behaviour/applications/usecases/UpdatePropertiesUsecase.js +25 -0
  62. package/es/platform/app-context-behaviour/domain/entities/AppContext.js +44 -0
  63. package/es/platform/app-context-behaviour/domain/entities/interfaces/IAppContext.js +1 -0
  64. package/es/platform/app-context-behaviour/frameworks/AppContextBehaviourFactory.js +2 -2
  65. package/es/platform/app-context-behaviour/frameworks/EventHandlerFactory.js +22 -0
  66. package/es/platform/client-actions/behaviour/zclient-actions/adapters/presenters/FilterUtils.js +11 -0
  67. package/es/platform/client-actions/behaviour/zclient-actions/adapters/resources/ClientActionsFetchSDK.js +76 -0
  68. package/es/platform/client-actions/behaviour/zclient-actions/applications/interfaces/ClientActionsAPIGatewayParams.js +1 -0
  69. package/es/platform/client-actions/behaviour/zclient-actions/applications/interfaces/ClientActionsFetchSDKParams.js +10 -0
  70. package/es/platform/client-actions/behaviour/zclient-actions/applications/interfaces/IClientActionsFetchSDK.js +0 -0
  71. package/es/platform/client-scripts/behaviour/zclient-scripts-fetch/adapters/resources/ClientScriptsFetchSDK.js +43 -0
  72. package/es/platform/client-scripts/behaviour/zclient-scripts-fetch/applications/interfaces/ClientScriptsAPIGatewayParams.js +1 -0
  73. package/es/platform/client-scripts/behaviour/zclient-scripts-fetch/applications/interfaces/ClientScriptsSDKFetchParams.js +1 -0
  74. package/es/platform/client-scripts/behaviour/zclient-scripts-fetch/applications/interfaces/IClientScriptsFetchSDK.js +0 -0
  75. package/es/platform/column-chooser/adapters/controllers/ColumnChooserOpenController.js +14 -6
  76. package/es/platform/column-chooser/adapters/controllers/ColumnChooserUpdateController.js +22 -0
  77. package/es/platform/column-chooser/adapters/gateways/Repository.js +12 -1
  78. package/es/platform/column-chooser/adapters/gateways/Service.js +2 -0
  79. package/es/platform/column-chooser/applications/interfaces/input/ColumnChooserUpdateInput.js +1 -0
  80. package/es/platform/column-chooser/applications/usecases/ColumnChooserSaveUseCase.js +8 -1
  81. package/es/platform/column-chooser/applications/usecases/ColumnChooserUpdateUseCase.js +35 -0
  82. package/es/platform/column-chooser/domain/entities/ColumnChooserImp.js +6 -0
  83. package/es/platform/column-chooser/frameworks/EventHandlersFactory.js +6 -4
  84. package/es/platform/components/smart-action-band/adapters/presenters/ActionBandTranslator.js +70 -8
  85. package/es/platform/components/smart-action-band/adapters/presenters/utils/DefaultClientActions.js +32 -0
  86. package/es/platform/components/smart-action-band/frameworks/EventHandlersFactory.js +42 -1
  87. package/es/platform/components/smart-action-band/frameworks/SmartActionBandFactory.js +4 -1
  88. package/es/platform/components/table-connected/adapters/resources/SmartTableResource.js +52 -0
  89. package/es/platform/components/table-connected/frameworks/EventHandlersFactory.js +1 -7
  90. package/es/platform/components/table-connected/frameworks/ListSdkFactory.js +4 -2
  91. package/es/platform/data-source/http-template/fetchLookupFields.js +0 -6
  92. package/es/platform/data-source/http-template/getPageClientActions.js +23 -0
  93. package/es/platform/data-source/http-template/getSingleRecord.js +51 -0
  94. package/es/platform/data-source/index.js +2 -0
  95. package/es/platform/data-source/utils/validation-rules/FieldConditions.js +1 -1
  96. package/es/platform/sdk-behaviour/adapters/controllers/InitializeController.js +7 -2
  97. package/es/platform/sdk-behaviour/applications/usecases/CreateResourceInstanceUseCase.js +10 -1
  98. package/es/platform/zform/adapters/controllers/GetInitialRecordSuccessController.js +31 -0
  99. package/es/platform/zform/adapters/gateway/FormRepository.js +10 -2
  100. package/es/platform/zform/adapters/gateway/Service.js +2 -0
  101. package/es/platform/zform/adapters/presenter/FormTranslator.js +27 -15
  102. package/es/platform/zform/adapters/presenter/translators/SectionTranslator.js +1 -1
  103. package/es/platform/zform/adapters/presenter/translators/fields/CurrencyFieldTranslator.js +1 -0
  104. package/es/platform/zform/adapters/presenter/translators/fields/DecimalFieldTranslator.js +1 -0
  105. package/es/platform/zform/adapters/presenter/translators/fields/EmailFieldTranslator.js +1 -0
  106. package/es/platform/zform/adapters/presenter/translators/fields/LookUpFieldTranslator.js +11 -7
  107. package/es/platform/zform/adapters/presenter/translators/fields/NumberFieldTranslator.js +1 -0
  108. package/es/platform/zform/adapters/presenter/translators/fields/PhoneFieldTranslator.js +1 -0
  109. package/es/platform/zform/adapters/presenter/translators/fields/TextAreaFieldTranslator.js +1 -0
  110. package/es/platform/zform/adapters/presenter/translators/fields/TextFieldTranslator.js +1 -0
  111. package/es/platform/zform/adapters/presenter/translators/fields/URLFieldTranslator.js +1 -0
  112. package/es/platform/zform/adapters/presenter/utils/sanitizeHtmlString.js +2 -2
  113. package/es/platform/zform/applications/interfaces/input/GetInitialRecordSuccessUseCaseInputModel.js +1 -0
  114. package/es/platform/zform/applications/usecases/GetInitialRecordSuccessUseCase.js +132 -0
  115. package/es/platform/zform/applications/usecases/InitializeUseCase.js +54 -30
  116. package/es/platform/zform/applications/usecases/LookupFieldSuccessUseCase.js +5 -0
  117. package/es/platform/zform/applications/usecases/MyFormSuccessUseCase.js +12 -11
  118. package/es/platform/zform/applications/usecases/SubmitValidationCompletedUseCase.js +21 -8
  119. package/es/platform/zform/domain/ZField.js +7 -5
  120. package/es/platform/zform/domain/ZForm.js +97 -20
  121. package/es/platform/zform/frameworks/ui/EventHandlerFactory.js +23 -5
  122. package/es/platform/zform/frameworks/ui/ZFormBehaviourFactory.js +2 -0
  123. package/es/platform/zlist/adapters/presenters/TableTranslator.js +5 -4
  124. package/es/platform/zrecord/adapters/controllers/UpdateRecordController.js +30 -0
  125. package/es/platform/zrecord/adapters/gateways/Service.js +2 -0
  126. package/es/platform/zrecord/applications/interfaces/input/UpdateRecordInputModel.js +0 -0
  127. package/es/platform/zrecord/applications/usecases/UpdateRecordUseCase.js +30 -0
  128. package/es/platform/zrecord/frameworks/ActionsHandlersFactory.js +4 -1
  129. package/package.json +9 -12
  130. package/es/platform/components/table-connected/adapters/controllers/ColumnChooserOpenedController.js +0 -28
  131. package/es/platform/components/table-connected/adapters/controllers/ColumnChooserUpdateController.js +0 -31
@@ -4,20 +4,28 @@ class ColumnChooserOpenController extends AbstractController {
4
4
  handle(event) {
5
5
  const {
6
6
  state,
7
- action,
8
7
  updateState
9
8
  } = event;
10
9
  const {
11
- order,
12
- selectedArray
13
- } = action.payload;
10
+ zfield
11
+ } = state.behaviours;
12
+ const {
13
+ fields: availableFields,
14
+ selectedFields
15
+ } = zfield;
16
+ const columnChooserOptionsOrder = [...selectedFields];
17
+ availableFields.forEach(field => {
18
+ if (!selectedFields.includes(field.name)) {
19
+ columnChooserOptionsOrder.push(field.name);
20
+ }
21
+ });
14
22
  const {
15
23
  columnChooserOpenUseCase
16
24
  } = this.service;
17
25
  columnChooserOpenUseCase.updateDependencies(state, updateState);
18
26
  columnChooserOpenUseCase.execute({
19
- order,
20
- selectedArray
27
+ order: columnChooserOptionsOrder,
28
+ selectedArray: selectedFields
21
29
  });
22
30
  }
23
31
 
@@ -0,0 +1,22 @@
1
+ import AbstractController from "./AbstractController";
2
+ export default class ColumnChooserUpdateController extends AbstractController {
3
+ handle(event) {
4
+ const {
5
+ state,
6
+ dispatch,
7
+ action
8
+ } = event;
9
+ const {
10
+ selectedArray
11
+ } = action.payload;
12
+ const {
13
+ columnChooserUpdateUseCase
14
+ } = this.service;
15
+ columnChooserUpdateUseCase.updateDependencies(state, dispatch);
16
+ columnChooserUpdateUseCase.execute({
17
+ selectedArray,
18
+ dispatch
19
+ });
20
+ }
21
+
22
+ }
@@ -13,10 +13,21 @@ class Repository {
13
13
  const {
14
14
  columnChooser
15
15
  } = this.state.behaviours;
16
+ const {
17
+ context
18
+ } = this.state.behaviours.appContext;
19
+ const {
20
+ viewId,
21
+ departmentId
22
+ } = this.state.properties;
16
23
  const reorderEntity = new ReorderEntityImp(columnChooser.order);
17
24
  const searchEntity = this.createSearchEntity();
18
25
  const selectEntity = new SelectEntityImp(columnChooser.selected, DEFAULT_COLUMN_CHOOSE_MAX_COUNT);
19
- return new ColumnChooserImp(columnChooser.isSaved, reorderEntity, searchEntity, selectEntity);
26
+ return new ColumnChooserImp(columnChooser.isSaved, reorderEntity, searchEntity, selectEntity, {
27
+ context,
28
+ viewId,
29
+ departmentId
30
+ });
20
31
  }
21
32
 
22
33
  createSearchEntity() {
@@ -4,6 +4,7 @@ import ColumnChooserReorderUseCase from "../../applications/usecases/ColumnChoos
4
4
  import ColumnChooserSearchUseCase from "../../applications/usecases/ColumnChooserSearchUseCase";
5
5
  import ColumnChooserSaveUseCase from "../../applications/usecases/ColumnChooserSaveUseCase";
6
6
  import ColumnChooserCloseUseCase from "../../applications/usecases/ColumnChooserCloseUseCase";
7
+ import ColumnChooserUpdateUseCase from "../../applications/usecases/ColumnChooserUpdateUseCase";
7
8
 
8
9
  class Service {
9
10
  constructor(dependencies) {
@@ -13,6 +14,7 @@ class Service {
13
14
  this.columnChooserSearchUseCase = new ColumnChooserSearchUseCase(dependencies);
14
15
  this.columnChooserSaveUseCase = new ColumnChooserSaveUseCase(dependencies);
15
16
  this.columnChooserCloseUseCase = new ColumnChooserCloseUseCase(dependencies);
17
+ this.columnChooserUpdateUseCase = new ColumnChooserUpdateUseCase(dependencies);
16
18
  }
17
19
 
18
20
  }
@@ -1,3 +1,4 @@
1
+ import { COLUMN_CHOOSER_SAVED } from "../../../../cc/table-column-chooser/Constants";
1
2
  import AbstractUseCase from "./AbstractUseCase";
2
3
  import { COLUMN_CHOOSER_BEHAVIOUR_UPDATED } from "../../../../bc/column-chooser/Constants";
3
4
 
@@ -16,6 +17,7 @@ class ColumnChooserSaveUseCase extends AbstractUseCase {
16
17
  columnChooser.markAsSaved();
17
18
  presenter.updateView(columnChooser.toObject()); // TODO: exposer.columnChooserUpdated({ fields });
18
19
 
20
+ presenter.updateView(columnChooser.toObject());
19
21
  dispatch({
20
22
  type: COLUMN_CHOOSER_BEHAVIOUR_UPDATED,
21
23
  payload: {
@@ -23,7 +25,12 @@ class ColumnChooserSaveUseCase extends AbstractUseCase {
23
25
  order
24
26
  }
25
27
  });
26
- presenter.updateView(columnChooser.toObject());
28
+ dispatch({
29
+ type: COLUMN_CHOOSER_SAVED,
30
+ payload: {
31
+ selectedArray
32
+ }
33
+ });
27
34
  }
28
35
 
29
36
  }
@@ -0,0 +1,35 @@
1
+ import { FIELD_EXECUTE } from "../../../../bc/zfield/Constants";
2
+ import AbstractUseCase from "./AbstractUseCase";
3
+
4
+ class ColumnChooserUpdateUseCase extends AbstractUseCase {
5
+ execute(_ref) {
6
+ let {
7
+ selectedArray,
8
+ dispatch
9
+ } = _ref;
10
+ const {
11
+ repository
12
+ } = this.dependencies;
13
+ const columnChooser = repository.getColumnChooser();
14
+ const {
15
+ context,
16
+ viewId,
17
+ departmentId
18
+ } = columnChooser.getContexts();
19
+ dispatch({
20
+ type: FIELD_EXECUTE,
21
+ payload: {
22
+ actionName: 'updateSelectedFields',
23
+ props: { ...context,
24
+ fields: selectedArray,
25
+ viewId,
26
+ departmentId
27
+ },
28
+ apiName: 'updateSelectedFields'
29
+ }
30
+ });
31
+ }
32
+
33
+ }
34
+
35
+ export default ColumnChooserUpdateUseCase;
@@ -4,10 +4,16 @@ export default class ColumnChooserImp {
4
4
  let reorderEntity = arguments.length > 1 ? arguments[1] : undefined;
5
5
  let searchEntity = arguments.length > 2 ? arguments[2] : undefined;
6
6
  let selectEntity = arguments.length > 3 ? arguments[3] : undefined;
7
+ let contexts = arguments.length > 4 ? arguments[4] : undefined;
7
8
  this.isSaved = isSaved;
8
9
  this.reorderEntity = reorderEntity;
9
10
  this.searchEntity = searchEntity;
10
11
  this.selectEntity = selectEntity;
12
+ this.contexts = contexts;
13
+ }
14
+
15
+ getContexts() {
16
+ return this.contexts;
11
17
  }
12
18
 
13
19
  markAsSaved() {
@@ -1,14 +1,15 @@
1
1
  import Service from "../adapters/gateways/Service";
2
2
  import Presenter from "../adapters/presenters/Presenter";
3
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";
4
+ import { COLUMN_CHOOSER_BEHAVIOUR_UPDATED } 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, COLUMN_CHOOSER_OPEN_REQUESTED } from "../../../cc/table-column-chooser/Constants";
6
6
  import ColumnChooserOpenController from "../adapters/controllers/ColumnChooserOpenController";
7
7
  import ColumnChooserSelectController from "../adapters/controllers/ColumnChooserSelectController";
8
8
  import ColumnChooserReorderController from "../adapters/controllers/ColumnChooserReorderController";
9
9
  import ColumnChooserSaveController from "../adapters/controllers/ColumnChooserSaveController";
10
10
  import ColumnChooserSearchController from "../adapters/controllers/ColumnChooserSearchController";
11
11
  import ColumnChooserCloseController from "../adapters/controllers/ColumnChooserCloseController";
12
+ import ColumnChooserUpdateController from "../adapters/controllers/ColumnChooserUpdateController";
12
13
  export default class EventHandlersFactory {
13
14
  static create() {
14
15
  const repository = new Repository();
@@ -18,12 +19,13 @@ export default class EventHandlersFactory {
18
19
  presenter
19
20
  });
20
21
  return {
21
- [COLUMN_CHOOSER_BEHAVIOUR_OPENED]: new ColumnChooserOpenController(service).handle,
22
+ [COLUMN_CHOOSER_OPEN_REQUESTED]: new ColumnChooserOpenController(service).handle,
22
23
  [COLUMN_CHOOSER_SELECT_REQUESTED]: new ColumnChooserSelectController(service).handle,
23
24
  [COLUMN_CHOOSER_REORDER_REQUESTED]: new ColumnChooserReorderController(service).handle,
24
25
  [COLUMN_CHOOSER_SEARCH_REQUESTED]: new ColumnChooserSearchController(service).handle,
25
26
  [COLUMN_CHOOSER_SAVE_REQUESTED]: new ColumnChooserSaveController(service).handle,
26
- [COLUMN_CHOOSER_CLOSE_REQUESTED]: new ColumnChooserCloseController(service).handle
27
+ [COLUMN_CHOOSER_CLOSE_REQUESTED]: new ColumnChooserCloseController(service).handle,
28
+ [COLUMN_CHOOSER_BEHAVIOUR_UPDATED]: new ColumnChooserUpdateController(service).handle
27
29
  };
28
30
  }
29
31
 
@@ -1,6 +1,8 @@
1
1
  import ClientActionsTranslator from "../../../../client-actions/translators/client-actions-translator";
2
2
  import DefaultClientActions from "./utils/DefaultClientActions";
3
3
  import { ActionBandLocations } from "../../../../../bc/action-band/Constants";
4
+ import { i18NProviderUtils } from '@zohodesk/i18n';
5
+ import { filterClientActionsByLocation } from "../../../../client-actions/behaviour/zclient-actions/adapters/presenters/FilterUtils";
4
6
  export default class ActionBandTranslator {
5
7
  static transformState(state) {
6
8
  const {
@@ -8,13 +10,17 @@ export default class ActionBandTranslator {
8
10
  moduleName,
9
11
  reloadConfig,
10
12
  searchConfig,
11
- sortConfig
13
+ sortConfig,
14
+ columnChooserConfig,
15
+ textOverflowConfig
12
16
  } = state.properties;
13
17
  const {
14
18
  zclientAction,
15
19
  zclientScriptsEventMapping,
16
20
  zfield,
17
- sortBy
21
+ sortBy,
22
+ textOverflow,
23
+ columnChooser
18
24
  } = state.behaviours;
19
25
  const {
20
26
  context
@@ -25,15 +31,26 @@ export default class ActionBandTranslator {
25
31
  } = zclientAction || {};
26
32
  let sorttableFields = zfield.fields.filter(field => field.isSortable === true);
27
33
  const combinedClientActions = Array.isArray(clientActions) ? [...clientActions] : [];
34
+ const availableFields = zfield.fields;
35
+ const columnChooserProps = getColumnChooserProps(columnChooser, availableFields, context, moduleName, columnChooserConfig);
28
36
 
29
- if (reloadConfig?.isEnabled) {
30
- combinedClientActions.push(DefaultClientActions.createReloadAction());
37
+ if (columnChooserConfig?.isEnabled) {
38
+ combinedClientActions.push(DefaultClientActions.createColumnChooserAction({ ...columnChooserProps,
39
+ textOverflowConfig: {
40
+ isEnabled: textOverflowConfig.isEnabled,
41
+ mode: textOverflow.mode
42
+ }
43
+ }));
31
44
  }
32
45
 
33
46
  if (searchConfig?.isEnabled) {
34
47
  combinedClientActions.push(DefaultClientActions.createSearchAction());
35
48
  }
36
49
 
50
+ if (reloadConfig?.isEnabled) {
51
+ combinedClientActions.push(DefaultClientActions.createReloadAction());
52
+ }
53
+
37
54
  if (sortConfig?.isEnabled) {
38
55
  combinedClientActions.push(DefaultClientActions.createSortByAction(sortBy, sortConfig, sorttableFields));
39
56
  }
@@ -67,7 +84,52 @@ export default class ActionBandTranslator {
67
84
 
68
85
  }
69
86
 
70
- const mapper = clientAction => ({
71
- actionBandLeftActions: clientAction.filter(action => action.location === ActionBandLocations.LEFT_ACTIONS),
72
- actionBandRightActions: clientAction.filter(action => action.location === ActionBandLocations.RIGHT_ACTIONS)
73
- });
87
+ function mapper(clientActions) {
88
+ return {
89
+ actionBandLeftActions: filterClientActionsByLocation(clientActions, ActionBandLocations.LEFT_ACTIONS),
90
+ actionBandRightActions: filterClientActionsByLocation(clientActions, ActionBandLocations.RIGHT_ACTIONS)
91
+ };
92
+ }
93
+
94
+ function getColumnChooserProps(columnChooser) {
95
+ let availableFields = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
96
+ let context = arguments.length > 2 ? arguments[2] : undefined;
97
+ let moduleName = arguments.length > 3 ? arguments[3] : undefined;
98
+ let columnChooserConfig = arguments.length > 4 ? arguments[4] : undefined;
99
+ const {
100
+ searchText: searchString,
101
+ fieldsOrder,
102
+ selected,
103
+ isMaxSelectionReached
104
+ } = columnChooser;
105
+ const fieldMap = mapFieldsToObject(availableFields);
106
+ const moduleConfig = context.modules?.find(module => module.apiKey === moduleName);
107
+ const disabledFieldName = moduleConfig?.nameField;
108
+ const restrictedFields = columnChooserConfig?.fieldRestrictionConfig || [];
109
+ const hasRestrictions = Array.isArray(restrictedFields) && restrictedFields.length > 0;
110
+ const columnChooserOptions = fieldsOrder.map(fieldName => getOption(fieldMap[fieldName], restrictedFields.includes(fieldName) || !!selected[fieldName], restrictedFields.includes(fieldName) || !hasRestrictions && disabledFieldName === fieldName));
111
+ return {
112
+ options: columnChooserOptions,
113
+ searchString,
114
+ hasSearch: searchString !== '' || columnChooserOptions.length > 3,
115
+ errorMessage: isMaxSelectionReached ? i18NProviderUtils.getI18NValue("support.ticket.table.max.colmun") : ''
116
+ };
117
+ }
118
+
119
+ function getOption(field, checked, disabled) {
120
+ return {
121
+ id: field?.name || '',
122
+ disabled,
123
+ locked: false,
124
+ // TODO - field.isLocked,
125
+ value: field?.i18NLabel || '',
126
+ checked
127
+ };
128
+ }
129
+
130
+ function mapFieldsToObject(availableFields) {
131
+ return availableFields.reduce((acc, field) => {
132
+ acc[field.name] = field;
133
+ return acc;
134
+ }, {});
135
+ }
@@ -142,6 +142,38 @@ class DefaultClientActions {
142
142
  });
143
143
  }
144
144
 
145
+ static createColumnChooserAction(_ref) {
146
+ let {
147
+ options,
148
+ searchString,
149
+ hasSearch,
150
+ errorMessage,
151
+ textOverflowConfig
152
+ } = _ref;
153
+ return this.constructAction({
154
+ uiComponentMapping: {
155
+ component: 'TableColumnChooser',
156
+ name: 'ColumnChooser',
157
+ propertiesValueMapping: {
158
+ options,
159
+ searchString,
160
+ hasSearch,
161
+ errorMessage,
162
+ textOverflowConfig
163
+ },
164
+ eventMappings: [],
165
+ id: '4000000080013'
166
+ },
167
+ conditions: {
168
+ fields: [],
169
+ pattern: '1'
170
+ },
171
+ location: ActionBandLocations.LEFT_ACTIONS,
172
+ id: '4000000080019',
173
+ name: 'ColumnChooser Action'
174
+ });
175
+ }
176
+
145
177
  }
146
178
 
147
179
  export default DefaultClientActions;
@@ -5,7 +5,10 @@ import { platformSDK } from "../../../sdk/frameworks/Sdk";
5
5
  import ActionBandSdkFactory from "./SmartActionBandSdkFactory";
6
6
  import { SEARCH_TYPE_CLEARED } from "../../../../bc/search-box/Constants";
7
7
  import { SmartActionBandConstants } from "../../../../cc/action-band";
8
- import { SORT_BY_UPDATED } from "../../../../bc/sort-by/Constants"; // NOTE: Remove unused import
8
+ import { SORT_BY_UPDATED } from "../../../../bc/sort-by/Constants";
9
+ import { TableTextOverflowConstants } from "../../../../cc/table-text-overflow";
10
+ import { TEXT_OVERFLOW_BEHAVIOUR_UPDATE_REQUESTED, TEXT_OVERFLOW_BEHAVIOUR_UPDATED } from "../../../../bc/clip-wrap/Constants";
11
+ import { COLUMN_CHOOSER_SAVED } from "../../../../cc/table-column-chooser/Constants"; // NOTE: Remove unused import
9
12
  // import SortByInitializeController from '@platform/components/smart-action-band/adapters/controllers/SortByInitializeController';
10
13
 
11
14
  function createHandlerWithSdk(handler) {
@@ -36,6 +39,17 @@ export default class EventHandlersFactory {
36
39
  // const presenter = new Presenter();
37
40
  // const service = new Service({ repository, presenter });
38
41
 
42
+ const textOverFlowUpdate = args => {
43
+ const {
44
+ action,
45
+ dispatch
46
+ } = args;
47
+ dispatch({
48
+ type: TEXT_OVERFLOW_BEHAVIOUR_UPDATE_REQUESTED,
49
+ payload: action.payload
50
+ });
51
+ };
52
+
39
53
  const defaultEventHandlers = {
40
54
  // [SEARCH_TYPE_UPDATED]: ({ action, dispatch }) => {
41
55
  // const { payload } = action;
@@ -67,6 +81,33 @@ export default class EventHandlersFactory {
67
81
  type: SmartActionBandConstants.ExternalConstants.SMART_ACTION_BAND_SORT_APPLIED,
68
82
  payload
69
83
  });
84
+ },
85
+ [TableTextOverflowConstants.TEXT_OVERFLOW_UPDATED]: textOverFlowUpdate,
86
+ [TEXT_OVERFLOW_BEHAVIOUR_UPDATED]: _ref3 => {
87
+ let {
88
+ action,
89
+ dispatch
90
+ } = _ref3;
91
+ const {
92
+ payload
93
+ } = action;
94
+ dispatch({
95
+ type: SmartActionBandConstants.ExternalConstants.SMART_ACTION_BAND_TEXT_OVERFLOW_UPDATED,
96
+ payload
97
+ });
98
+ },
99
+ [COLUMN_CHOOSER_SAVED]: _ref4 => {
100
+ let {
101
+ action,
102
+ dispatch
103
+ } = _ref4;
104
+ const {
105
+ payload
106
+ } = action;
107
+ dispatch({
108
+ type: SmartActionBandConstants.ExternalConstants.SMART_ACTION_BAND_COLUMN_CHOOSER_SAVED,
109
+ payload
110
+ });
70
111
  }
71
112
  };
72
113
  return mergeEventHandlers([defaultEventHandlers, wrapped]);
@@ -14,6 +14,8 @@ import ZHttpBehaviourFactory from "../../../zhttp/frameworks/ZHttpBehaviourFacto
14
14
  import ActionBandBehaviourFactory from "../../../../library/behaviours/action-band/frameworks/ActionBandBehaviourFactory";
15
15
  import ZFieldBehaviourFactory from "../../../zfield/frameworks/ZFieldBehaviourFactory";
16
16
  import SortByBehaviourFactory from "../../../../library/behaviours/sort-by/frameworks/ui/SortByBehaviourFactory";
17
+ import ClipWrapBehaviourFactory from "../../../../library/behaviours/clip-wrap/frameworks/ui/ClipWrapBehaviourFactory";
18
+ import ColumnChooserBehaviourFactory from "../../../column-chooser/frameworks/ColumnChooserBehaviourFactory";
17
19
 
18
20
  function combineDataSourceWithDefault(dataSource) {
19
21
  return { ...defaultDataSource,
@@ -47,8 +49,9 @@ export default class SmartActionBandFactory {
47
49
  getClientScripts: _dataSource.httpTemplates.getClientScripts
48
50
  }), ZFieldBehaviourFactory.create({
49
51
  availableFields: _dataSource.httpTemplates.getAvailableFields,
52
+ updateSelectedFields: _dataSource.httpTemplates.updateSelectedFields,
50
53
  selectedFields: _dataSource.httpTemplates.getSelectedFields
51
- }), ActionBandBehaviourFactory.create(), SortByBehaviourFactory.create()]
54
+ }), ActionBandBehaviourFactory.create(), ClipWrapBehaviourFactory.create(), SortByBehaviourFactory.create(), ColumnChooserBehaviourFactory.create()]
52
55
  });
53
56
  }
54
57
 
@@ -3,6 +3,10 @@ import ZListRepository from "../../../../zlist/adapters/gateways/Repository";
3
3
  import ZListPresenters from "../../../../zlist/adapters/presenters/Presenters";
4
4
  import ZRecordRepository from "../../../../zrecord/adapters/gateways/Repository";
5
5
  import ZRecordPresenter from "../../../../zrecord/adapters/presenters/Presenter";
6
+ import ColumnChooserRepository from "../../../../column-chooser/adapters/gateways/Repository";
7
+ import ColumnChooserPresenter from "../../../../column-chooser/adapters/presenters/Presenter";
8
+ import TextOverflowRepository from "../../../../../library/behaviours/clip-wrap/adapters/gateway/Repository";
9
+ import TextOverflowPresenter from "../../../../../library/behaviours/clip-wrap/adapters/presenter/Presenter";
6
10
  import ListSelectRepository from "../../../../../library/behaviours/list-selection/adapters/gateways/Repository";
7
11
  import ListSelectPresenter from "../../../../../library/behaviours/list-selection/adapters/presenters/Presenter";
8
12
  import ListSelectSelectUsecase from "../../../../../library/behaviours/list-selection/applications/usecases/Select";
@@ -27,6 +31,8 @@ import GetFilterConfigUseCase from "../../../../zrecord/applications/usecases/Ge
27
31
  import { initialSortConfig } from "../../../../../bc/zlist/Types";
28
32
  import GetSortConfigUseCase from "../../../../zlist/applications/usecases/GetSortConfigUseCase";
29
33
  import SetSortConfigUseCase from "../../../../zlist/applications/usecases/SetSortConfigUseCase";
34
+ import ColumnChooserUpdateUseCase from "../../../../column-chooser/applications/usecases/ColumnChooserUpdateUseCase";
35
+ import ClipWrapUpdateUseCase from "../../../../../library/behaviours/clip-wrap/applications/usecases/ClipWrapUpdateUseCase";
30
36
  export class SmartTableResource extends AbstractResource {
31
37
  initialize() {}
32
38
 
@@ -40,6 +46,22 @@ export class SmartTableResource extends AbstractResource {
40
46
  return dependencies;
41
47
  }
42
48
 
49
+ getColumnChooserDependencies() {
50
+ const dependencies = {
51
+ repository: new ColumnChooserRepository(),
52
+ presenter: new ColumnChooserPresenter()
53
+ };
54
+ return dependencies;
55
+ }
56
+
57
+ getTextOverflowDependencies() {
58
+ const dependencies = {
59
+ repository: new TextOverflowRepository(),
60
+ presenter: new TextOverflowPresenter()
61
+ };
62
+ return dependencies;
63
+ }
64
+
43
65
  getListDependencies() {
44
66
  const dependencies = {
45
67
  repository: new ZListRepository(),
@@ -515,4 +537,34 @@ export class SmartTableResource extends AbstractResource {
515
537
  });
516
538
  }
517
539
 
540
+ updateSelectedFields(selectedFields) {
541
+ this.validateInput('updateSelectedFields', {
542
+ selectedFields
543
+ }, SdkContracts.updateSelectedFieldsInputMeta);
544
+ const {
545
+ dispatch
546
+ } = this.dependencies;
547
+ const dependencies = this.getColumnChooserDependencies();
548
+ const usecase = this.createUseCase(dependencies, ColumnChooserUpdateUseCase);
549
+ usecase.execute({
550
+ dispatch,
551
+ selectedArray: selectedFields
552
+ });
553
+ }
554
+
555
+ updateTextOverflow(mode) {
556
+ this.validateInput('updateTextOverflow', {
557
+ mode
558
+ }, SdkContracts.updateTextOverflowInputMeta);
559
+ const {
560
+ dispatch
561
+ } = this.dependencies;
562
+ const dependencies = this.getTextOverflowDependencies();
563
+ const usecase = this.createUseCase(dependencies, ClipWrapUpdateUseCase);
564
+ usecase.execute({
565
+ dispatch,
566
+ mode
567
+ });
568
+ }
569
+
518
570
  }
@@ -1,8 +1,6 @@
1
1
  import { LIST_SELECTION_RECORDS_DESELECTED, LIST_SELECTION_RECORDS_SELECTED, LIST_SELECTION_SELECTION_LIMIT_EXCEEDED } from "../../../../bc/list-selection/Constants";
2
2
  import { RESIZE_FINISHED } from "../../../../bc/table-column-resizer/Constants";
3
3
  import { ZLIST_SORT } from "../../../../bc/zlist/Constants";
4
- import { COLUMN_CHOOSER_BEHAVIOUR_UPDATED } from "../../../../bc/column-chooser/Constants";
5
- import { COLUMN_CHOOSER_OPEN_REQUESTED } from "../../../../cc/table-column-chooser/Constants";
6
4
  import ListSdkFactory from "./ListSdkFactory";
7
5
  import { SmartTableConstants } from "../../../../cc/table-connected";
8
6
  import TableListEventConstants from "../../../../cc/table-list/Constants";
@@ -12,8 +10,6 @@ import ResizeEndController from "../adapters/controllers/ResizeEndController";
12
10
  import { ResizeFinishController } from "../adapters/controllers/ResizeFinishController";
13
11
  import { ReOrderFinishController } from "../adapters/controllers/ReOrderFinishController";
14
12
  import ScrollController from "../adapters/controllers/ScrollController";
15
- import ColumnChooserUpdateController from "../adapters/controllers/ColumnChooserUpdateController";
16
- import ColumnChooserOpenedController from "../adapters/controllers/ColumnChooserOpenedController";
17
13
  import { platformSDK_old } from "../../../sdk/frameworks/Sdk";
18
14
  import { RECORD_MARK_AS_READ, RECORD_MARK_AS_UNREAD, SET_RECORDS_SUCCESS } from "../../../../bc/zrecord/Constants";
19
15
  import ErrorEventHandlersFactory from "./ErrorEventHandlersFactory";
@@ -374,8 +370,6 @@ export default class EventHandlersFactory {
374
370
  },
375
371
  [TABLE_LIST_RESIZE_END_REQUESTED]: new ResizeEndController().handle,
376
372
  [TABLE_LIST_SCROLLED]: new ScrollController().handle,
377
- [COLUMN_CHOOSER_BEHAVIOUR_UPDATED]: new ColumnChooserUpdateController().handle,
378
- [COLUMN_CHOOSER_OPEN_REQUESTED]: new ColumnChooserOpenedController().handle,
379
373
  [LIST_SELECTION_RECORDS_SELECTED]: _ref2 => {
380
374
  let {
381
375
  action,
@@ -450,7 +444,7 @@ function createMergedHandler(eventHandlersList, eventName) {
450
444
  try {
451
445
  handler(...arguments);
452
446
  } catch (error) {
453
- __DEVELOPMENT__ && console.error(error);
447
+ __DEVELOPMENT__ && console.error(`Error in Smart Table handler for event "${eventName}":`, error);
454
448
  }
455
449
  }
456
450
  }
@@ -19,7 +19,8 @@ export default class ListSdkFactory {
19
19
  reOrderRecord: (fromIndex, toIndex) => smartTable.reOrderRecord(fromIndex, toIndex),
20
20
  sortRecords: sortBy => smartTable.sortRecords(sortBy),
21
21
  markAsRead: recordId => smartTable.markAsRead(recordId),
22
- markAsUnRead: recordId => smartTable.markAsUnRead(recordId)
22
+ markAsUnRead: recordId => smartTable.markAsUnRead(recordId),
23
+ updateSelectedFields: selectedFields => smartTable.updateSelectedFields(selectedFields)
23
24
  };
24
25
  }
25
26
 
@@ -55,7 +56,8 @@ export default class ListSdkFactory {
55
56
  reOrderRecord: recordSdks.reOrderRecord,
56
57
  sortRecords: recordSdks.sortRecords,
57
58
  markAsRead: recordSdks.markAsRead,
58
- markAsUnRead: recordSdks.markAsUnRead
59
+ markAsUnRead: recordSdks.markAsUnRead,
60
+ updateSelectedFields: recordSdks.updateSelectedFields
59
61
  }
60
62
  };
61
63
  }
@@ -4,12 +4,6 @@ const fetchLookupFields = {
4
4
  parameters: `{}`,
5
5
  type: 'GET',
6
6
  transformer: data => data,
7
- getResponse: async _ref => {
8
- let {
9
- params,
10
- payload
11
- } = _ref;
12
- },
13
7
  properties: {
14
8
  layoutId: {
15
9
  required: true,
@@ -0,0 +1,23 @@
1
+ let getClientActions = {
2
+ name: 'uiActions',
3
+ api: '/{{servicePrefix}}/{{orgName}}/api/v1/clientActions',
4
+ parameters: `{
5
+ "from":{{from}},
6
+ "limit":{{limit}},
7
+ "modules": "{{modules}}",
8
+ "page": "{{page}}"
9
+ }`,
10
+ type: 'GET',
11
+ transformer: data => data,
12
+ properties: {
13
+ modelName: {
14
+ required: true,
15
+ typeMetadata: {
16
+ schema: {
17
+ type: 'string'
18
+ }
19
+ }
20
+ }
21
+ }
22
+ };
23
+ export default getClientActions;