@zohodesk/library-platform 1.1.13 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (119) 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 +1 -0
  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/column-chooser/adapters/controllers/ColumnChooserOpenController.js +14 -6
  67. package/es/platform/column-chooser/adapters/controllers/ColumnChooserUpdateController.js +22 -0
  68. package/es/platform/column-chooser/adapters/gateways/Repository.js +12 -1
  69. package/es/platform/column-chooser/adapters/gateways/Service.js +2 -0
  70. package/es/platform/column-chooser/applications/interfaces/input/ColumnChooserUpdateInput.js +1 -0
  71. package/es/platform/column-chooser/applications/usecases/ColumnChooserSaveUseCase.js +8 -1
  72. package/es/platform/column-chooser/applications/usecases/ColumnChooserUpdateUseCase.js +35 -0
  73. package/es/platform/column-chooser/domain/entities/ColumnChooserImp.js +6 -0
  74. package/es/platform/column-chooser/frameworks/EventHandlersFactory.js +6 -4
  75. package/es/platform/components/smart-action-band/adapters/presenters/ActionBandTranslator.js +64 -5
  76. package/es/platform/components/smart-action-band/adapters/presenters/utils/DefaultClientActions.js +32 -0
  77. package/es/platform/components/smart-action-band/frameworks/EventHandlersFactory.js +42 -1
  78. package/es/platform/components/smart-action-band/frameworks/SmartActionBandFactory.js +4 -1
  79. package/es/platform/components/table-connected/adapters/resources/SmartTableResource.js +52 -0
  80. package/es/platform/components/table-connected/frameworks/EventHandlersFactory.js +1 -7
  81. package/es/platform/components/table-connected/frameworks/ListSdkFactory.js +4 -2
  82. package/es/platform/data-source/http-template/fetchLookupFields.js +0 -6
  83. package/es/platform/data-source/http-template/getSingleRecord.js +51 -0
  84. package/es/platform/data-source/index.js +2 -0
  85. package/es/platform/data-source/utils/validation-rules/FieldConditions.js +1 -1
  86. package/es/platform/sdk-behaviour/adapters/controllers/InitializeController.js +7 -2
  87. package/es/platform/sdk-behaviour/applications/usecases/CreateResourceInstanceUseCase.js +10 -1
  88. package/es/platform/zform/adapters/controllers/GetInitialRecordSuccessController.js +31 -0
  89. package/es/platform/zform/adapters/gateway/FormRepository.js +10 -2
  90. package/es/platform/zform/adapters/gateway/Service.js +2 -0
  91. package/es/platform/zform/adapters/presenter/FormTranslator.js +9 -0
  92. package/es/platform/zform/adapters/presenter/translators/fields/CurrencyFieldTranslator.js +1 -0
  93. package/es/platform/zform/adapters/presenter/translators/fields/DecimalFieldTranslator.js +1 -0
  94. package/es/platform/zform/adapters/presenter/translators/fields/EmailFieldTranslator.js +1 -0
  95. package/es/platform/zform/adapters/presenter/translators/fields/LookUpFieldTranslator.js +11 -7
  96. package/es/platform/zform/adapters/presenter/translators/fields/NumberFieldTranslator.js +1 -0
  97. package/es/platform/zform/adapters/presenter/translators/fields/PhoneFieldTranslator.js +1 -0
  98. package/es/platform/zform/adapters/presenter/translators/fields/TextAreaFieldTranslator.js +1 -0
  99. package/es/platform/zform/adapters/presenter/translators/fields/TextFieldTranslator.js +1 -0
  100. package/es/platform/zform/adapters/presenter/translators/fields/URLFieldTranslator.js +1 -0
  101. package/es/platform/zform/adapters/presenter/utils/sanitizeHtmlString.js +2 -2
  102. package/es/platform/zform/applications/interfaces/input/GetInitialRecordSuccessUseCaseInputModel.js +1 -0
  103. package/es/platform/zform/applications/usecases/GetInitialRecordSuccessUseCase.js +132 -0
  104. package/es/platform/zform/applications/usecases/InitializeUseCase.js +54 -30
  105. package/es/platform/zform/applications/usecases/LookupFieldSuccessUseCase.js +5 -0
  106. package/es/platform/zform/applications/usecases/MyFormSuccessUseCase.js +12 -11
  107. package/es/platform/zform/applications/usecases/SubmitValidationCompletedUseCase.js +21 -8
  108. package/es/platform/zform/domain/ZField.js +7 -5
  109. package/es/platform/zform/domain/ZForm.js +97 -20
  110. package/es/platform/zform/frameworks/ui/EventHandlerFactory.js +23 -5
  111. package/es/platform/zform/frameworks/ui/ZFormBehaviourFactory.js +2 -0
  112. package/es/platform/zrecord/adapters/controllers/UpdateRecordController.js +30 -0
  113. package/es/platform/zrecord/adapters/gateways/Service.js +2 -0
  114. package/es/platform/zrecord/applications/interfaces/input/UpdateRecordInputModel.js +0 -0
  115. package/es/platform/zrecord/applications/usecases/UpdateRecordUseCase.js +30 -0
  116. package/es/platform/zrecord/frameworks/ActionsHandlersFactory.js +4 -1
  117. package/package.json +8 -11
  118. package/es/platform/components/table-connected/adapters/controllers/ColumnChooserOpenedController.js +0 -28
  119. package/es/platform/components/table-connected/adapters/controllers/ColumnChooserUpdateController.js +0 -31
@@ -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,7 @@
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';
4
5
  export default class ActionBandTranslator {
5
6
  static transformState(state) {
6
7
  const {
@@ -8,13 +9,17 @@ export default class ActionBandTranslator {
8
9
  moduleName,
9
10
  reloadConfig,
10
11
  searchConfig,
11
- sortConfig
12
+ sortConfig,
13
+ columnChooserConfig,
14
+ textOverflowConfig
12
15
  } = state.properties;
13
16
  const {
14
17
  zclientAction,
15
18
  zclientScriptsEventMapping,
16
19
  zfield,
17
- sortBy
20
+ sortBy,
21
+ textOverflow,
22
+ columnChooser
18
23
  } = state.behaviours;
19
24
  const {
20
25
  context
@@ -25,15 +30,26 @@ export default class ActionBandTranslator {
25
30
  } = zclientAction || {};
26
31
  let sorttableFields = zfield.fields.filter(field => field.isSortable === true);
27
32
  const combinedClientActions = Array.isArray(clientActions) ? [...clientActions] : [];
33
+ const availableFields = zfield.fields;
34
+ const columnChooserProps = getColumnChooserProps(columnChooser, availableFields, context, moduleName, columnChooserConfig);
28
35
 
29
- if (reloadConfig?.isEnabled) {
30
- combinedClientActions.push(DefaultClientActions.createReloadAction());
36
+ if (columnChooserConfig?.isEnabled) {
37
+ combinedClientActions.push(DefaultClientActions.createColumnChooserAction({ ...columnChooserProps,
38
+ textOverflowConfig: {
39
+ isEnabled: textOverflowConfig.isEnabled,
40
+ mode: textOverflow.mode
41
+ }
42
+ }));
31
43
  }
32
44
 
33
45
  if (searchConfig?.isEnabled) {
34
46
  combinedClientActions.push(DefaultClientActions.createSearchAction());
35
47
  }
36
48
 
49
+ if (reloadConfig?.isEnabled) {
50
+ combinedClientActions.push(DefaultClientActions.createReloadAction());
51
+ }
52
+
37
53
  if (sortConfig?.isEnabled) {
38
54
  combinedClientActions.push(DefaultClientActions.createSortByAction(sortBy, sortConfig, sorttableFields));
39
55
  }
@@ -70,4 +86,47 @@ export default class ActionBandTranslator {
70
86
  const mapper = clientAction => ({
71
87
  actionBandLeftActions: clientAction.filter(action => action.location === ActionBandLocations.LEFT_ACTIONS),
72
88
  actionBandRightActions: clientAction.filter(action => action.location === ActionBandLocations.RIGHT_ACTIONS)
73
- });
89
+ });
90
+
91
+ function getColumnChooserProps(columnChooser) {
92
+ let availableFields = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
93
+ let context = arguments.length > 2 ? arguments[2] : undefined;
94
+ let moduleName = arguments.length > 3 ? arguments[3] : undefined;
95
+ let columnChooserConfig = arguments.length > 4 ? arguments[4] : undefined;
96
+ const {
97
+ searchText: searchString,
98
+ fieldsOrder,
99
+ selected,
100
+ isMaxSelectionReached
101
+ } = columnChooser;
102
+ const fieldMap = mapFieldsToObject(availableFields);
103
+ const moduleConfig = context.modules?.find(module => module.apiKey === moduleName);
104
+ const disabledFieldName = moduleConfig?.nameField;
105
+ const restrictedFields = columnChooserConfig?.fieldRestrictionConfig || [];
106
+ const hasRestrictions = Array.isArray(restrictedFields) && restrictedFields.length > 0;
107
+ const columnChooserOptions = fieldsOrder.map(fieldName => getOption(fieldMap[fieldName], restrictedFields.includes(fieldName) || !!selected[fieldName], restrictedFields.includes(fieldName) || !hasRestrictions && disabledFieldName === fieldName));
108
+ return {
109
+ options: columnChooserOptions,
110
+ searchString,
111
+ hasSearch: searchString !== '' || columnChooserOptions.length > 3,
112
+ errorMessage: isMaxSelectionReached ? i18NProviderUtils.getI18NValue("support.ticket.table.max.colmun") : ''
113
+ };
114
+ }
115
+
116
+ function getOption(field, checked, disabled) {
117
+ return {
118
+ id: field?.name || '',
119
+ disabled,
120
+ locked: false,
121
+ // TODO - field.isLocked,
122
+ value: field?.i18NLabel || '',
123
+ checked
124
+ };
125
+ }
126
+
127
+ function mapFieldsToObject(availableFields) {
128
+ return availableFields.reduce((acc, field) => {
129
+ acc[field.name] = field;
130
+ return acc;
131
+ }, {});
132
+ }
@@ -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,51 @@
1
+ const getSingleRecord = {
2
+ name: 'records',
3
+ api: '/{{servicePrefix}}/{{orgName}}/api/v1/{{moduleName}}/{{recordId}}',
4
+ parameters: `{}`,
5
+ // parameters: `{ "include": "{{include}}" }`,
6
+ type: 'GET',
7
+ transformer: data => data,
8
+ properties: {
9
+ servicePrefix: {
10
+ required: true,
11
+ typeMetadata: {
12
+ schema: {
13
+ type: 'string'
14
+ }
15
+ }
16
+ },
17
+ orgName: {
18
+ required: true,
19
+ typeMetadata: {
20
+ schema: {
21
+ type: 'string'
22
+ }
23
+ }
24
+ },
25
+ // include: {
26
+ // required: false,
27
+ // typeMetadata: {
28
+ // schema: {
29
+ // type: 'string'
30
+ // }
31
+ // }
32
+ // },
33
+ moduleName: {
34
+ required: true,
35
+ typeMetadata: {
36
+ schema: {
37
+ type: 'string'
38
+ }
39
+ }
40
+ },
41
+ recordId: {
42
+ required: true,
43
+ typeMetadata: {
44
+ schema: {
45
+ type: 'string'
46
+ }
47
+ }
48
+ }
49
+ }
50
+ };
51
+ export default getSingleRecord;
@@ -22,6 +22,7 @@ import getClientScripts from "./http-template/getClientScripts";
22
22
  import markAsRead from "./http-template/markAsRead";
23
23
  import markAsUnRead from "./http-template/markAsUnRead";
24
24
  import getComponentMapping from "./http-template/getComponentMapping";
25
+ import getSingleRecord from "./http-template/getSingleRecord";
25
26
  let dataSource = {
26
27
  httpTemplates: {
27
28
  [RecordApiActionName.GET_RECORDS]: getRecords,
@@ -38,6 +39,7 @@ let dataSource = {
38
39
  getAvailableFields,
39
40
  getSelectedFields,
40
41
  updateSelectedFields,
42
+ [RecordApiActionName.GET_SINGLE_RECORD]: getSingleRecord,
41
43
  [ZFormApiActionName.getMyLayouts]: getMyLayouts,
42
44
  [ZFormApiActionName.getMyForm]: getMyForm,
43
45
  [ZFormApiActionName.getLayoutRules]: getLayoutRules,
@@ -57,7 +57,7 @@ export function MaxLengthCondition(field) {
57
57
  conditions: [{
58
58
  condition: TextValidationConditions.IsNot,
59
59
  fieldName: apiName,
60
- value: [`maxLength:/(${btoa(`.{0,${maxLength}}`)})/`]
60
+ value: [`maxLength:/(${btoa(`[\\w\\W]{0,${maxLength}}`)})/`]
61
61
  }],
62
62
  actions: {
63
63
  alert: i18NProviderUtils.getI18NValue('support.form.more.than.max.length', [i18NLabel, maxLength])
@@ -2,7 +2,9 @@ import { AbstractController } from "./AbstractController";
2
2
  export class InitializeController extends AbstractController {
3
3
  handle(_ref) {
4
4
  let {
5
- state
5
+ state,
6
+ dispatch,
7
+ updateState
6
8
  } = _ref;
7
9
  const {
8
10
  service
@@ -12,7 +14,10 @@ export class InitializeController extends AbstractController {
12
14
  createResourceInstanceUseCase
13
15
  } = service;
14
16
  createResourceInstanceUseCase.execute({
15
- instanceName
17
+ instanceName,
18
+ state,
19
+ dispatch,
20
+ updateState
16
21
  });
17
22
  }
18
23
 
@@ -2,13 +2,22 @@ import AbstractUseCase from "../AbstractUseCase";
2
2
  export class CreateResourceInstanceUseCase extends AbstractUseCase {
3
3
  execute(_ref) {
4
4
  let {
5
- instanceName
5
+ instanceName,
6
+ state,
7
+ dispatch,
8
+ updateState
6
9
  } = _ref;
7
10
  const {
8
11
  repository
9
12
  } = this.dependencies;
10
13
  const behaviourResourceConnector = repository.getBehaviourResourceConnector();
11
14
  behaviourResourceConnector.createResourceInstances(instanceName);
15
+ behaviourResourceConnector.syncStateWithResources({
16
+ instanceName,
17
+ state,
18
+ dispatch,
19
+ updateState
20
+ });
12
21
  }
13
22
 
14
23
  }
@@ -0,0 +1,31 @@
1
+ import AbstractController from "./AbstractController";
2
+
3
+ class GetInitialRecordSuccessController extends AbstractController {
4
+ handle(event) {
5
+ const {
6
+ getInitialRecordSuccessUseCase
7
+ } = this.service;
8
+ let {
9
+ state,
10
+ updateState,
11
+ action,
12
+ dispatch
13
+ } = event;
14
+ const {
15
+ disableValidationRule,
16
+ disableLayoutRule,
17
+ disableDependencyMapping
18
+ } = state.properties;
19
+ getInitialRecordSuccessUseCase.updateDependency(state, updateState);
20
+ getInitialRecordSuccessUseCase.execute({
21
+ dispatch,
22
+ record: action.payload.response,
23
+ disableValidationRule,
24
+ disableLayoutRule,
25
+ disableDependencyMapping
26
+ });
27
+ }
28
+
29
+ }
30
+
31
+ export default GetInitialRecordSuccessController;
@@ -13,7 +13,8 @@ class FormRepository {
13
13
  getFormEntity() {
14
14
  const {
15
15
  moduleName,
16
- departmentId
16
+ departmentId,
17
+ recordId
17
18
  } = this.state.properties;
18
19
  const {
19
20
  context
@@ -25,7 +26,10 @@ class FormRepository {
25
26
  validationRules = [],
26
27
  sections = [],
27
28
  layoutRules = [],
28
- dependencyMappings = []
29
+ dependencyMappings = [],
30
+ layoutId,
31
+ mode,
32
+ initialRecordData
29
33
  } = zform;
30
34
  let validationRuleEntities = validationRules.map(rule => {
31
35
  return new ZValidationRule(rule);
@@ -59,6 +63,10 @@ class FormRepository {
59
63
  dependencyMappings: dependencyMappingsEntities,
60
64
  layoutRules: layoutRulesEntities,
61
65
  context,
66
+ layoutId: layoutId,
67
+ recordId,
68
+ mode,
69
+ initialRecordData,
62
70
  isMyFormFetching: zform.isMyFormFetching,
63
71
  isDependencyFetching: zform.isDependencyFetching,
64
72
  isLayoutRulesFetching: zform.isLayoutRulesFetching,
@@ -3,6 +3,7 @@ import CreateRecordSuccessUseCase from "../../applications/usecases/CreateRecord
3
3
  import CreateRecordFailedUseCase from "../../applications/usecases/CreateRecordFailedUseCase";
4
4
  import InitializeUseCase from "../../applications/usecases/InitializeUseCase";
5
5
  import MyLayoutSuccessUseCase from "../../applications/usecases/MyLayoutSuccessUseCase";
6
+ import GetInitialRecordSuccessUseCase from "../../applications/usecases/GetInitialRecordSuccessUseCase";
6
7
  import MyFormSuccessUseCase from "../../applications/usecases/MyFormSuccessUseCase";
7
8
  import DependenciesSuccessUseCase from "../../applications/usecases/DependenciesSuccessUseCase";
8
9
  import MyFormRequestUseCase from "../../applications/usecases/MyFormRequestUseCase";
@@ -26,6 +27,7 @@ class Service {
26
27
  this.formSubmitUseCase = new FormSubmitUseCase(dependencies);
27
28
  this.initializeUseCase = new InitializeUseCase(dependencies);
28
29
  this.myLayoutSuccessUseCase = new MyLayoutSuccessUseCase(dependencies);
30
+ this.getInitialRecordSuccessUseCase = new GetInitialRecordSuccessUseCase(dependencies);
29
31
  this.myFormSuccessUseCase = new MyFormSuccessUseCase(dependencies);
30
32
  this.dependenciesSuccessUseCase = new DependenciesSuccessUseCase(dependencies);
31
33
  this.myFormRequestUseCase = new MyFormRequestUseCase(dependencies);
@@ -40,7 +40,16 @@ export default class FormTranslator {
40
40
  });
41
41
  const mappedClientActions = mapper(combinedClientActions || []);
42
42
  const transformedClientActions = {};
43
+ const formValues = zform.formValues ? zform.formValues : {
44
+ cf: {}
45
+ };
46
+ const initialRecordData = zform.initialRecordData ? zform.initialRecordData : {
47
+ cf: {}
48
+ };
43
49
  const actionContext = { ...context,
50
+ mode: zform.mode,
51
+ formValues,
52
+ record: initialRecordData,
44
53
  isSubmitFetching,
45
54
  submitStatus: isSubmitFetching ? 'loading' : 'none'
46
55
  };
@@ -21,6 +21,7 @@ const CurrencyFieldTranslator = _ref => {
21
21
  id: field.id,
22
22
  label: field.i18NLabel,
23
23
  required: field.isMandatory,
24
+ maxLength: field.maxLength,
24
25
  readonly: field.isReadOnly,
25
26
  isVisible: field.isVisible,
26
27
  currencyLocale: prefCurrencyLocale || contextCurrencyLocale,
@@ -16,6 +16,7 @@ const DecimalFieldTranslator = _ref => {
16
16
  label: field.i18NLabel,
17
17
  // ePHI: field.isPHI, //field.ePHI,
18
18
  required: field.isMandatory,
19
+ maxLength: field.maxLength,
19
20
  readonly: field.isReadOnly,
20
21
  isVisible: field.isVisible,
21
22
  errorMessage: field.errorMessage || ''
@@ -16,6 +16,7 @@ const EmailFieldTranslator = _ref => {
16
16
  label: field.i18NLabel,
17
17
  // ePHI: field.isPHI, //field.ePHI,
18
18
  required: field.isMandatory,
19
+ maxLength: field.maxLength,
19
20
  readonly: field.isReadOnly,
20
21
  // visibility: field.isVisible,
21
22
  isVisible: field.isVisible,