@axelor/aos-mobile-core 7.1.2 → 7.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 (209) hide show
  1. package/lib/api/anomaly-api.d.ts +4 -0
  2. package/lib/api/anomaly-api.js +24 -0
  3. package/lib/api/anomaly-api.js.map +1 -0
  4. package/lib/api/login-api.js +2 -3
  5. package/lib/api/login-api.js.map +1 -1
  6. package/lib/api/user-api.d.ts +4 -0
  7. package/lib/api/user-api.js +31 -0
  8. package/lib/api/user-api.js.map +1 -0
  9. package/lib/apiProviders/Standard/ObjectFieldsProvider.d.ts +1 -0
  10. package/lib/apiProviders/Standard/ObjectFieldsProvider.js +21 -4
  11. package/lib/apiProviders/Standard/ObjectFieldsProvider.js.map +1 -1
  12. package/lib/apiProviders/middlewares/fieldParser.d.ts +2 -0
  13. package/lib/apiProviders/middlewares/fieldParser.js +53 -0
  14. package/lib/apiProviders/middlewares/fieldParser.js.map +1 -0
  15. package/lib/apiProviders/middlewares/index.d.ts +1 -0
  16. package/lib/apiProviders/middlewares/index.js +1 -0
  17. package/lib/apiProviders/middlewares/index.js.map +1 -1
  18. package/lib/apiProviders/utils.js +1 -1
  19. package/lib/apiProviders/utils.js.map +1 -1
  20. package/lib/app/ContextsProvider.js +12 -4
  21. package/lib/app/ContextsProvider.js.map +1 -1
  22. package/lib/app/Module.d.ts +2 -0
  23. package/lib/app/context.helper.js +6 -1
  24. package/lib/app/context.helper.js.map +1 -1
  25. package/lib/auth/models/objectFields.js +3 -3
  26. package/lib/auth/models/objectFields.js.map +1 -1
  27. package/lib/auth/screens/UserScreen.js +7 -4
  28. package/lib/auth/screens/UserScreen.js.map +1 -1
  29. package/lib/components/index.d.ts +1 -0
  30. package/lib/components/index.js +1 -0
  31. package/lib/components/index.js.map +1 -1
  32. package/lib/components/molecules/CameraButton/CameraButton.js +3 -3
  33. package/lib/components/molecules/CameraButton/CameraButton.js.map +1 -1
  34. package/lib/components/molecules/UploadFileInput/UploadFileInput.js +3 -1
  35. package/lib/components/molecules/UploadFileInput/UploadFileInput.js.map +1 -1
  36. package/lib/components/organisms/AnomalyBubble/AnomalyBubble.d.ts +11 -0
  37. package/lib/components/organisms/AnomalyBubble/AnomalyBubble.js +60 -0
  38. package/lib/components/organisms/AnomalyBubble/AnomalyBubble.js.map +1 -0
  39. package/lib/components/organisms/AnomalyList/AnomalyList.d.ts +7 -0
  40. package/lib/components/organisms/AnomalyList/AnomalyList.js +59 -0
  41. package/lib/components/organisms/AnomalyList/AnomalyList.js.map +1 -0
  42. package/lib/components/organisms/HeaderOptionsMenu/HeaderOptionsMenu.d.ts +2 -1
  43. package/lib/components/organisms/HeaderOptionsMenu/HeaderOptionsMenu.js +18 -5
  44. package/lib/components/organisms/HeaderOptionsMenu/HeaderOptionsMenu.js.map +1 -1
  45. package/lib/components/organisms/index.d.ts +2 -0
  46. package/lib/components/organisms/index.js +2 -0
  47. package/lib/components/organisms/index.js.map +1 -1
  48. package/lib/components/pages/FormView/Alerts/ConstraintsValidatorPopup.d.ts +11 -0
  49. package/lib/components/pages/FormView/Alerts/ConstraintsValidatorPopup.js +33 -0
  50. package/lib/components/pages/FormView/Alerts/ConstraintsValidatorPopup.js.map +1 -0
  51. package/lib/components/pages/FormView/Alerts/index.d.ts +1 -0
  52. package/lib/{sessions/components/buttons → components/pages/FormView/Alerts}/index.js +1 -3
  53. package/lib/components/pages/FormView/Alerts/index.js.map +1 -0
  54. package/lib/components/pages/FormView/Components/Field.d.ts +9 -0
  55. package/lib/components/pages/FormView/Components/Field.js +149 -0
  56. package/lib/components/pages/FormView/Components/Field.js.map +1 -0
  57. package/lib/components/pages/FormView/Components/Panel.d.ts +8 -0
  58. package/lib/components/pages/FormView/Components/Panel.js +84 -0
  59. package/lib/components/pages/FormView/Components/Panel.js.map +1 -0
  60. package/lib/components/pages/FormView/Components/index.d.ts +2 -0
  61. package/lib/components/pages/FormView/Components/index.js +20 -0
  62. package/lib/components/pages/FormView/Components/index.js.map +1 -0
  63. package/lib/components/pages/FormView/Custom/CustomButton.d.ts +10 -0
  64. package/lib/components/pages/FormView/Custom/CustomButton.js +31 -0
  65. package/lib/components/pages/FormView/Custom/CustomButton.js.map +1 -0
  66. package/lib/components/pages/FormView/Custom/CustomPasswordInput.d.ts +11 -0
  67. package/lib/components/pages/FormView/Custom/CustomPasswordInput.js +40 -0
  68. package/lib/components/pages/FormView/Custom/CustomPasswordInput.js.map +1 -0
  69. package/lib/components/pages/FormView/Custom/CustomPicker.d.ts +12 -0
  70. package/lib/components/pages/FormView/Custom/CustomPicker.js +33 -0
  71. package/lib/components/pages/FormView/Custom/CustomPicker.js.map +1 -0
  72. package/lib/components/pages/FormView/Custom/CustomSearchBar.d.ts +12 -0
  73. package/lib/components/pages/FormView/Custom/CustomSearchBar.js +69 -0
  74. package/lib/components/pages/FormView/Custom/CustomSearchBar.js.map +1 -0
  75. package/lib/components/pages/FormView/Custom/index.d.ts +4 -0
  76. package/lib/components/pages/FormView/Custom/index.js +22 -0
  77. package/lib/components/pages/FormView/Custom/index.js.map +1 -0
  78. package/lib/components/pages/FormView/FormView.d.ts +8 -0
  79. package/lib/components/pages/FormView/FormView.js +199 -0
  80. package/lib/components/pages/FormView/FormView.js.map +1 -0
  81. package/lib/components/pages/index.d.ts +4 -0
  82. package/lib/components/pages/index.js +22 -0
  83. package/lib/components/pages/index.js.map +1 -0
  84. package/lib/components/templates/MailMessageView/MailMessageView.js +8 -2
  85. package/lib/components/templates/MailMessageView/MailMessageView.js.map +1 -1
  86. package/lib/components/templates/PopupApplicationNotConfigured/PopupApplicationNotConfigured.js +10 -13
  87. package/lib/components/templates/PopupApplicationNotConfigured/PopupApplicationNotConfigured.js.map +1 -1
  88. package/lib/components/templates/PopupMinimalRequiredVersion/PopupMinimalRequiredVersion.js +15 -25
  89. package/lib/components/templates/PopupMinimalRequiredVersion/PopupMinimalRequiredVersion.js.map +1 -1
  90. package/lib/components/templates/SocialNetworkLinks/SocialNetworkLinks.d.ts +9 -6
  91. package/lib/components/templates/SocialNetworkLinks/SocialNetworkLinks.js +30 -10
  92. package/lib/components/templates/SocialNetworkLinks/SocialNetworkLinks.js.map +1 -1
  93. package/lib/components/templates/UserSearchBar/UserSearchBar.d.ts +14 -0
  94. package/lib/components/templates/UserSearchBar/UserSearchBar.js +34 -0
  95. package/lib/components/templates/UserSearchBar/UserSearchBar.js.map +1 -0
  96. package/lib/components/templates/index.d.ts +1 -0
  97. package/lib/components/templates/index.js +1 -0
  98. package/lib/components/templates/index.js.map +1 -1
  99. package/lib/config/routes.d.ts +3 -0
  100. package/lib/config/routes.js +2 -0
  101. package/lib/config/routes.js.map +1 -1
  102. package/lib/features/formSlice.d.ts +34 -0
  103. package/lib/features/formSlice.js +70 -0
  104. package/lib/features/formSlice.js.map +1 -0
  105. package/lib/features/index.d.ts +3 -0
  106. package/lib/features/index.js +3 -0
  107. package/lib/features/index.js.map +1 -1
  108. package/lib/features/metaJsonFieldSlice.d.ts +34 -0
  109. package/lib/features/metaJsonFieldSlice.js +68 -0
  110. package/lib/features/metaJsonFieldSlice.js.map +1 -0
  111. package/lib/features/userSlice.d.ts +16 -0
  112. package/lib/features/userSlice.js +49 -0
  113. package/lib/features/userSlice.js.map +1 -0
  114. package/lib/forms/FormConfigsProvider.d.ts +20 -0
  115. package/lib/forms/FormConfigsProvider.js +56 -0
  116. package/lib/forms/FormConfigsProvider.js.map +1 -0
  117. package/lib/forms/api.helpers.d.ts +12 -0
  118. package/lib/forms/api.helpers.js +59 -0
  119. package/lib/forms/api.helpers.js.map +1 -0
  120. package/lib/forms/display.helpers.d.ts +9 -0
  121. package/lib/forms/display.helpers.js +150 -0
  122. package/lib/forms/display.helpers.js.map +1 -0
  123. package/lib/forms/index.d.ts +7 -0
  124. package/lib/forms/index.js +25 -0
  125. package/lib/forms/index.js.map +1 -0
  126. package/lib/forms/register.helpers.d.ts +6 -0
  127. package/lib/forms/register.helpers.js +96 -0
  128. package/lib/forms/register.helpers.js.map +1 -0
  129. package/lib/forms/studio/api.helpers.d.ts +37 -0
  130. package/lib/forms/studio/api.helpers.js +162 -0
  131. package/lib/forms/studio/api.helpers.js.map +1 -0
  132. package/lib/forms/studio/display.helpers.d.ts +7 -0
  133. package/lib/forms/studio/display.helpers.js +256 -0
  134. package/lib/forms/studio/display.helpers.js.map +1 -0
  135. package/lib/forms/studio/index.d.ts +2 -0
  136. package/lib/forms/studio/index.js +20 -0
  137. package/lib/forms/studio/index.js.map +1 -0
  138. package/lib/forms/types.d.ts +100 -0
  139. package/lib/forms/types.js +19 -0
  140. package/lib/forms/types.js.map +1 -0
  141. package/lib/forms/validation.helpers.d.ts +10 -0
  142. package/lib/forms/validation.helpers.js +234 -0
  143. package/lib/forms/validation.helpers.js.map +1 -0
  144. package/lib/header/hooks.d.ts +15 -1
  145. package/lib/header/hooks.js +57 -2
  146. package/lib/header/hooks.js.map +1 -1
  147. package/lib/header/types.d.ts +1 -0
  148. package/lib/hooks/use-navigation.d.ts +1 -0
  149. package/lib/hooks/use-navigation.js +4 -1
  150. package/lib/hooks/use-navigation.js.map +1 -1
  151. package/lib/i18n/translations/en.json +52 -1
  152. package/lib/i18n/translations/fr.json +52 -1
  153. package/lib/index.d.ts +2 -1
  154. package/lib/index.js +2 -1
  155. package/lib/index.js.map +1 -1
  156. package/lib/models/index.d.ts +2 -0
  157. package/lib/models/index.js +2 -0
  158. package/lib/models/index.js.map +1 -1
  159. package/lib/models/objectFields.js +3 -0
  160. package/lib/models/objectFields.js.map +1 -1
  161. package/lib/models/searchFields.d.ts +2 -0
  162. package/lib/{sessions/components/buttons/LoginButton.js → models/searchFields.js} +3 -6
  163. package/lib/models/searchFields.js.map +1 -0
  164. package/lib/models/sortFields.d.ts +2 -0
  165. package/lib/{sessions/components/buttons/UpdateButton.js → models/sortFields.js} +3 -6
  166. package/lib/models/sortFields.js.map +1 -0
  167. package/lib/navigator/drawer/Header.js +1 -1
  168. package/lib/navigator/drawer/Header.js.map +1 -1
  169. package/lib/screens/ErrorScreen.js +1 -1
  170. package/lib/screens/ErrorScreen.js.map +1 -1
  171. package/lib/screens/JsonFieldScreen.d.ts +4 -0
  172. package/lib/screens/JsonFieldScreen.js +92 -0
  173. package/lib/screens/JsonFieldScreen.js.map +1 -0
  174. package/lib/screens/index.d.ts +13 -0
  175. package/lib/screens/index.js +9 -0
  176. package/lib/screens/index.js.map +1 -1
  177. package/lib/sessions/components/alerts/PopupCreateSession.js +8 -16
  178. package/lib/sessions/components/alerts/PopupCreateSession.js.map +1 -1
  179. package/lib/sessions/components/alerts/PopupEditSession.js +8 -16
  180. package/lib/sessions/components/alerts/PopupEditSession.js.map +1 -1
  181. package/lib/sessions/components/alerts/PopupSession.js +7 -16
  182. package/lib/sessions/components/alerts/PopupSession.js.map +1 -1
  183. package/lib/sessions/components/index.d.ts +0 -1
  184. package/lib/sessions/components/index.js +0 -1
  185. package/lib/sessions/components/index.js.map +1 -1
  186. package/lib/sessions/components/inputs/SessionInputs.js +9 -7
  187. package/lib/sessions/components/inputs/SessionInputs.js.map +1 -1
  188. package/lib/types/anomaly-type.d.ts +16 -0
  189. package/lib/types/anomaly-type.js +56 -0
  190. package/lib/types/anomaly-type.js.map +1 -0
  191. package/lib/types/index.d.ts +1 -0
  192. package/lib/types/index.js +1 -0
  193. package/lib/types/index.js.map +1 -1
  194. package/lib/utils/displayers.d.ts +1 -0
  195. package/lib/utils/displayers.js +1 -0
  196. package/lib/utils/displayers.js.map +1 -1
  197. package/lib/utils/index.d.ts +1 -1
  198. package/lib/utils/index.js +1 -1
  199. package/lib/utils/index.js.map +1 -1
  200. package/package.json +3 -3
  201. package/lib/sessions/components/buttons/DisabledButton.d.ts +0 -7
  202. package/lib/sessions/components/buttons/DisabledButton.js +0 -45
  203. package/lib/sessions/components/buttons/DisabledButton.js.map +0 -1
  204. package/lib/sessions/components/buttons/LoginButton.d.ts +0 -6
  205. package/lib/sessions/components/buttons/LoginButton.js.map +0 -1
  206. package/lib/sessions/components/buttons/UpdateButton.d.ts +0 -6
  207. package/lib/sessions/components/buttons/UpdateButton.js.map +0 -1
  208. package/lib/sessions/components/buttons/index.d.ts +0 -3
  209. package/lib/sessions/components/buttons/index.js.map +0 -1
@@ -0,0 +1,162 @@
1
+ /*
2
+ * Axelor Business Solutions
3
+ *
4
+ * Copyright (C) 2023 Axelor (<http://axelor.com>).
5
+ *
6
+ * This program is free software: you can redistribute it and/or modify
7
+ * it under the terms of the GNU Affero General Public License, version 3,
8
+ * as published by the Free Software Foundation.
9
+ *
10
+ * This program is distributed in the hope that it will be useful,
11
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
+ * GNU Affero General Public License for more details.
14
+ *
15
+ * You should have received a copy of the GNU Affero General Public License
16
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
17
+ */
18
+ import { axiosApiProvider } from '../../apiProviders';
19
+ export async function fetchJsonFieldsOfModel({ modelName }) {
20
+ if (modelName == null) {
21
+ return null;
22
+ }
23
+ return axiosApiProvider.post({
24
+ url: 'ws/rest/com.axelor.meta.db.MetaJsonField/search',
25
+ data: {
26
+ data: {
27
+ operator: 'and',
28
+ criteria: [
29
+ {
30
+ fieldName: 'model',
31
+ operator: '=',
32
+ value: modelName,
33
+ },
34
+ {
35
+ fieldName: 'isVisibleInMobileApp',
36
+ operator: '=',
37
+ value: true,
38
+ },
39
+ ],
40
+ },
41
+ limit: null,
42
+ },
43
+ });
44
+ }
45
+ export async function fetchObject({ modelName, id, }) {
46
+ if (modelName == null || id == null) {
47
+ return null;
48
+ }
49
+ return axiosApiProvider.get({
50
+ url: `ws/rest/${modelName}/${id}`,
51
+ });
52
+ }
53
+ export async function updateJsonFieldsObject({ modelName, id, version, values, }) {
54
+ if (modelName == null || id == null) {
55
+ return null;
56
+ }
57
+ return axiosApiProvider.post({
58
+ url: `ws/rest/${modelName}`,
59
+ data: {
60
+ data: {
61
+ id: id,
62
+ version: version,
63
+ ...values,
64
+ },
65
+ },
66
+ });
67
+ }
68
+ export async function fetchData({ modelName, domain, searchValue = null, page = 0, searchFields, }) {
69
+ if (modelName == null) {
70
+ return null;
71
+ }
72
+ let criteria = [];
73
+ if (searchValue != null) {
74
+ searchFields.forEach(_field => {
75
+ criteria.push({
76
+ fieldName: _field,
77
+ operator: 'like',
78
+ value: searchValue,
79
+ });
80
+ });
81
+ }
82
+ return axiosApiProvider
83
+ .post({
84
+ url: `ws/rest/${modelName}/search`,
85
+ data: {
86
+ data: {
87
+ _domain: domain,
88
+ criteria: [
89
+ {
90
+ criteria,
91
+ operator: 'or',
92
+ },
93
+ ],
94
+ },
95
+ fields: searchFields,
96
+ limit: 10,
97
+ offset: 10 * page,
98
+ translate: true,
99
+ },
100
+ })
101
+ .then(res => res?.data?.data);
102
+ }
103
+ export async function fetchMetaConfig({ modelName, }) {
104
+ if (modelName == null) {
105
+ return null;
106
+ }
107
+ return axiosApiProvider
108
+ .get({
109
+ url: `ws/meta/fields/${modelName}`,
110
+ })
111
+ .catch(console.warn);
112
+ }
113
+ export async function fetchModelFields({ modelName, }) {
114
+ if (modelName == null) {
115
+ return null;
116
+ }
117
+ return fetchMetaConfig({ modelName })
118
+ .then(res => res?.data?.data)
119
+ .then(res => res?.fields)
120
+ .then(_fields => {
121
+ if (!Array.isArray(_fields)) {
122
+ return [];
123
+ }
124
+ return _fields.filter(_item => _item.nameColumn);
125
+ })
126
+ .then(targetFields => targetFields.map(_item => _item.name));
127
+ }
128
+ export async function fetchSelectionOptions({ modelName, attrsPanelName, fieldName, }) {
129
+ if (modelName == null) {
130
+ return null;
131
+ }
132
+ return fetchMetaConfig({ modelName })
133
+ .then(res => res?.data?.data)
134
+ .then(res => res?.jsonFields)
135
+ .then(_attrsPanels => _attrsPanels?.[attrsPanelName])
136
+ .then(_panel => _panel?.[fieldName])
137
+ .then(_field => _field?.selectionList)
138
+ .then(_selection => {
139
+ if (!Array.isArray(_selection)) {
140
+ return [];
141
+ }
142
+ return _selection
143
+ .sort((a, b) => a.order - b.order)
144
+ .map(_item => ({
145
+ name: _item?.title,
146
+ id: _item?.value,
147
+ }));
148
+ });
149
+ }
150
+ export async function executeButtonAction(actions, model, object) {
151
+ return axiosApiProvider.post({
152
+ url: 'ws/action',
153
+ data: {
154
+ action: actions,
155
+ data: {
156
+ context: { ...object },
157
+ },
158
+ model,
159
+ },
160
+ });
161
+ }
162
+ //# sourceMappingURL=api.helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.helpers.js","sourceRoot":"","sources":["../../../src/forms/studio/api.helpers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { Field, JSONObject, Panel } from '../types';
2
+ export declare const mapStudioFields: (items: any[], Colors: any) => {
3
+ panels: JSONObject<Panel>;
4
+ fields: JSONObject<Field>;
5
+ defaults: any;
6
+ };
7
+ export declare const mapFormToStudioFields: (fields: any[], formValues: any) => JSONObject<string>;
@@ -0,0 +1,256 @@
1
+ /*
2
+ * Axelor Business Solutions
3
+ *
4
+ * Copyright (C) 2023 Axelor (<http://axelor.com>).
5
+ *
6
+ * This program is free software: you can redistribute it and/or modify
7
+ * it under the terms of the GNU Affero General Public License, version 3,
8
+ * as published by the Free Software Foundation.
9
+ *
10
+ * This program is distributed in the hope that it will be useful,
11
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
+ * GNU Affero General Public License for more details.
14
+ *
15
+ * You should have received a copy of the GNU Affero General Public License
16
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
17
+ */
18
+ import { HorizontalRule, Label } from '@axelor/aos-mobile-ui';
19
+ import { CustomButton, CustomPicker, CustomSearchBar } from '../../components';
20
+ export const mapStudioFields = (items, Colors) => {
21
+ let formFields = {};
22
+ let formPanels = {};
23
+ let defaults = {};
24
+ if (Array.isArray(items)) {
25
+ const metaJsonFields = [...items];
26
+ const modelFields = metaJsonFields
27
+ .map(_item => _item.modelField)
28
+ .filter((item, index, self) => self.indexOf(item) === index)
29
+ .sort();
30
+ for (const modelField of modelFields) {
31
+ const { _fields, _panels, _defaults } = manageContentOfModel(metaJsonFields.filter(_item => _item.modelField === modelField), Colors);
32
+ formFields = { ...formFields, ..._fields };
33
+ formPanels = { ...formPanels, ..._panels };
34
+ defaults = { ...defaults, ..._defaults };
35
+ }
36
+ }
37
+ return { fields: formFields, panels: formPanels, defaults };
38
+ };
39
+ export const mapFormToStudioFields = (fields, formValues) => {
40
+ let items = {};
41
+ if (Array.isArray(fields)) {
42
+ const metaJsonFields = [...fields];
43
+ const modelFields = metaJsonFields
44
+ .map(_item => _item.modelField)
45
+ .filter((item, index, self) => self.indexOf(item) === index)
46
+ .sort();
47
+ for (const modelField of modelFields) {
48
+ let panelValues = {};
49
+ const keys = Object.keys(formValues);
50
+ metaJsonFields
51
+ .filter(_item => _item.modelField === modelField)
52
+ .forEach(_item => {
53
+ const fieldKey = _item.name;
54
+ if (keys.includes(fieldKey)) {
55
+ panelValues[fieldKey] = formValues[fieldKey];
56
+ }
57
+ });
58
+ items = { ...items, [modelField]: JSON.stringify(panelValues) };
59
+ }
60
+ }
61
+ return items;
62
+ };
63
+ const mapStudioTypeToInputType = (type) => {
64
+ switch (type) {
65
+ case 'integer':
66
+ case 'decimal':
67
+ return 'number';
68
+ case 'many-to-one':
69
+ return 'object';
70
+ default:
71
+ return type;
72
+ }
73
+ };
74
+ const mapStudioWidgetToWidget = (widget) => {
75
+ let result = { widget: undefined, inputType: undefined };
76
+ switch (widget) {
77
+ case 'Email':
78
+ result.inputType = 'email';
79
+ break;
80
+ case 'Url':
81
+ result.inputType = 'url';
82
+ break;
83
+ case 'Html':
84
+ result.widget = 'HTML';
85
+ break;
86
+ case 'Password':
87
+ result.widget = 'password';
88
+ break;
89
+ default:
90
+ break;
91
+ }
92
+ return result;
93
+ };
94
+ const getWidgetAttrs = (item) => {
95
+ return item?.widgetAttrs == null ? null : JSON.parse(item.widgetAttrs);
96
+ };
97
+ const BootstrapMapper = {
98
+ error: ['warning'],
99
+ danger: ['danger'],
100
+ info: ['info'],
101
+ success: ['primary', 'success'],
102
+ light: ['light', 'secondary'],
103
+ dark: ['dark'],
104
+ };
105
+ const mapStudioCSSToLabelOptions = (item, Colors) => {
106
+ const css = getWidgetAttrs(item)?.css;
107
+ let result = {};
108
+ Object.entries(BootstrapMapper).forEach(([key, values]) => {
109
+ if (Array.isArray(values) && values.some(_item => css.includes(_item))) {
110
+ if (key === 'light') {
111
+ result.color = Colors.secondaryColor;
112
+ }
113
+ else if (key === 'dark') {
114
+ result.color = Colors.secondaryColor_dark;
115
+ }
116
+ else {
117
+ result.type = key;
118
+ }
119
+ }
120
+ });
121
+ return result;
122
+ };
123
+ const isPanelCollapsible = (item) => {
124
+ return getWidgetAttrs(item)?.canCollapse;
125
+ };
126
+ const isPanelTab = (item) => {
127
+ return getWidgetAttrs(item)?.tab;
128
+ };
129
+ const isMultiLinesInput = (item) => {
130
+ return getWidgetAttrs(item)?.multiline;
131
+ };
132
+ const hasPanelTitle = (item) => {
133
+ return (isPanelCollapsible(item) ||
134
+ isPanelTab(item) ||
135
+ !getWidgetAttrs(item)?.showTitle);
136
+ };
137
+ const manageContentOfModel = (items, Colors) => {
138
+ const formFields = {};
139
+ const formPanels = {};
140
+ const defaults = {};
141
+ let lastPanel = null;
142
+ items
143
+ .sort((a, b) => a.sequence - b.sequence)
144
+ .forEach(item => {
145
+ switch (item.type) {
146
+ case 'panel':
147
+ lastPanel = item.name;
148
+ formPanels[item.name] = {
149
+ titleKey: hasPanelTitle(item) ? item.title : null,
150
+ order: item.sequence,
151
+ colSpan: 12,
152
+ direction: 'column',
153
+ isCollaspible: isPanelCollapsible(item),
154
+ };
155
+ break;
156
+ case 'spacer':
157
+ formPanels[item.name] = {
158
+ titleKey: item.title,
159
+ order: item.sequence,
160
+ colSpan: 12,
161
+ direction: 'column',
162
+ };
163
+ break;
164
+ case 'label':
165
+ formFields[item.name] = {
166
+ titleKey: item.title,
167
+ type: 'string',
168
+ order: item.sequence,
169
+ parentPanel: lastPanel,
170
+ widget: 'custom',
171
+ customComponent: () => Label({
172
+ message: item.title,
173
+ type: 'info',
174
+ ...mapStudioCSSToLabelOptions(item, Colors),
175
+ }),
176
+ };
177
+ break;
178
+ case 'separator':
179
+ formFields[item.name] = {
180
+ titleKey: item.title,
181
+ type: 'string',
182
+ order: item.sequence,
183
+ parentPanel: lastPanel,
184
+ widget: 'custom',
185
+ customComponent: () => HorizontalRule({
186
+ style: {
187
+ marginVertical: 5,
188
+ width: '60%',
189
+ alignSelf: 'center',
190
+ },
191
+ }),
192
+ };
193
+ break;
194
+ case 'button':
195
+ formFields[item.name] = {
196
+ titleKey: item.title,
197
+ type: 'object',
198
+ order: item.sequence,
199
+ parentPanel: lastPanel,
200
+ widget: 'custom',
201
+ customComponent: CustomButton,
202
+ options: { item },
203
+ };
204
+ break;
205
+ default:
206
+ const fieldType = mapStudioTypeToInputType(item.type);
207
+ const { widget, inputType } = mapStudioWidgetToWidget(item.widget);
208
+ if (item.defaultValue != null) {
209
+ defaults[item.name] = item.defaultValue;
210
+ }
211
+ const config = {
212
+ titleKey: item.title,
213
+ helperKey: item.help,
214
+ type: inputType || fieldType,
215
+ required: item.required,
216
+ readonly: item.readonly,
217
+ order: item.sequence,
218
+ parentPanel: lastPanel,
219
+ widget: widget,
220
+ };
221
+ if (item.contextField != null) {
222
+ config.hideIf = ({ storeState }) => {
223
+ const obejctValue = storeState?.metaJsonField?.object?.[item.contextField];
224
+ const targetValue = parseInt(item.contextFieldValue, 10);
225
+ return obejctValue?.id !== targetValue;
226
+ };
227
+ }
228
+ if (item.type === 'integer') {
229
+ config.validationOptions = {
230
+ integer: {},
231
+ };
232
+ config.options = { scale: 0 };
233
+ }
234
+ if (item.type === 'decimal' && item.scale != null) {
235
+ config.options = { scale: item.scale };
236
+ }
237
+ if (isMultiLinesInput(item)) {
238
+ config.options = { multiline: true, adjustHeightWithLines: true };
239
+ }
240
+ if (item.isSelectionField) {
241
+ config.widget = 'custom';
242
+ config.customComponent = CustomPicker;
243
+ config.options = { item };
244
+ }
245
+ if (fieldType === 'object') {
246
+ config.widget = 'custom';
247
+ config.customComponent = CustomSearchBar;
248
+ config.options = { item };
249
+ }
250
+ formFields[item.name] = config;
251
+ break;
252
+ }
253
+ });
254
+ return { _fields: formFields, _panels: formPanels, _defaults: defaults };
255
+ };
256
+ //# sourceMappingURL=display.helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"display.helpers.js","sourceRoot":"","sources":["../../../src/forms/studio/display.helpers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export * from './api.helpers';
2
+ export * from './display.helpers';
@@ -0,0 +1,20 @@
1
+ /*
2
+ * Axelor Business Solutions
3
+ *
4
+ * Copyright (C) 2023 Axelor (<http://axelor.com>).
5
+ *
6
+ * This program is free software: you can redistribute it and/or modify
7
+ * it under the terms of the GNU Affero General Public License, version 3,
8
+ * as published by the Free Software Foundation.
9
+ *
10
+ * This program is distributed in the hope that it will be useful,
11
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
+ * GNU Affero General Public License for more details.
14
+ *
15
+ * You should have received a copy of the GNU Affero General Public License
16
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
17
+ */
18
+ export * from './api.helpers';
19
+ export * from './display.helpers';
20
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/forms/studio/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC"}
@@ -0,0 +1,100 @@
1
+ import { Dispatch } from '@reduxjs/toolkit';
2
+ import { ReactElement } from 'react';
3
+ import { Color } from '@axelor/aos-mobile-ui';
4
+ export declare const DEFAULT_COLSPAN = 12;
5
+ export interface States {
6
+ objectState?: any;
7
+ storeState?: any;
8
+ }
9
+ export interface DependsOnStates extends States {
10
+ newValue?: any;
11
+ dispatch?: any;
12
+ }
13
+ export interface customComponentOptions {
14
+ style?: any;
15
+ title?: string;
16
+ defaultValue?: any;
17
+ onChange: (value?: any) => void;
18
+ required?: boolean;
19
+ readonly?: boolean;
20
+ }
21
+ export interface Field {
22
+ parentPanel?: string;
23
+ order?: number;
24
+ titleKey?: string;
25
+ helperKey?: string;
26
+ type: InputType;
27
+ required?: boolean;
28
+ requiredIf?: (values?: States) => boolean;
29
+ readonly?: boolean;
30
+ readonlyIf?: (values?: States) => boolean;
31
+ hideIf?: (values?: States) => boolean;
32
+ dependsOn?: {
33
+ [fieldName: string]: (values: DependsOnStates) => any;
34
+ };
35
+ widget?: Widget;
36
+ customComponent?: (options?: customComponentOptions) => ReactElement | JSX.Element;
37
+ options?: {
38
+ [propsKey: string]: any;
39
+ };
40
+ validationOptions?: {
41
+ [key: string]: {
42
+ value?: any;
43
+ customErrorKey?: string;
44
+ };
45
+ };
46
+ }
47
+ export type Widget = 'default' | 'increment' | 'star' | 'HTML' | 'label' | 'password' | 'file' | 'date' | 'checkbox' | 'custom';
48
+ export type InputType = 'string' | 'email' | 'url' | 'phone' | 'date' | 'datetime' | 'time' | 'number' | 'boolean' | 'array' | 'object';
49
+ export interface Panel {
50
+ titleKey?: string;
51
+ isCollaspible?: boolean;
52
+ order?: number;
53
+ colSpan?: number;
54
+ direction?: 'row' | 'column';
55
+ parent?: string;
56
+ }
57
+ export interface JSONObject<Type> {
58
+ [Key: string]: Type;
59
+ }
60
+ export interface Form {
61
+ readonlyIf?: (values?: States) => boolean;
62
+ modelName?: string;
63
+ panels?: JSONObject<Panel>;
64
+ /** Fields attribut is a JSON object contening all fields of object.
65
+ * When defining a field you need to define as key in the JSON object
66
+ * the fieldName of the object.
67
+ */
68
+ fields: JSONObject<Field>;
69
+ }
70
+ export interface FormConfigs {
71
+ [formKey: string]: Form;
72
+ }
73
+ export interface DisplayPanel extends Panel {
74
+ key: string;
75
+ content?: (DisplayPanel | DisplayField)[];
76
+ }
77
+ export interface DisplayField extends Field {
78
+ key: string;
79
+ }
80
+ export interface Action {
81
+ key: string;
82
+ type: FormActionType;
83
+ titleKey?: string;
84
+ iconName?: string;
85
+ color?: Color;
86
+ hideIf?: (_states: States) => boolean;
87
+ disabledIf?: (_states: States) => boolean;
88
+ customAction?: (_options: ActionProps) => void;
89
+ needValidation?: boolean;
90
+ needRequiredFields?: boolean;
91
+ }
92
+ interface ActionProps {
93
+ handleReset?: () => void;
94
+ objectState?: any;
95
+ storeState?: any;
96
+ handleObjectChange?: (newValue?: any) => void;
97
+ dispatch?: Dispatch<any>;
98
+ }
99
+ export type FormActionType = 'update' | 'create' | 'reset' | 'refresh' | 'custom';
100
+ export {};
@@ -0,0 +1,19 @@
1
+ /*
2
+ * Axelor Business Solutions
3
+ *
4
+ * Copyright (C) 2023 Axelor (<http://axelor.com>).
5
+ *
6
+ * This program is free software: you can redistribute it and/or modify
7
+ * it under the terms of the GNU Affero General Public License, version 3,
8
+ * as published by the Free Software Foundation.
9
+ *
10
+ * This program is distributed in the hope that it will be useful,
11
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
+ * GNU Affero General Public License for more details.
14
+ *
15
+ * You should have received a copy of the GNU Affero General Public License
16
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
17
+ */
18
+ export const DEFAULT_COLSPAN = 12;
19
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/forms/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAMH,MAAM,CAAC,MAAM,eAAe,GAAG,EAAE,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { DisplayField, Form } from './types';
2
+ export declare const updateRequiredFieldsOfConfig: (config: Form, { objectState, storeState }: {
3
+ objectState: any;
4
+ storeState: any;
5
+ }) => Form;
6
+ export declare const isObjectMissingRequiredField: (content: any, config: Form) => boolean;
7
+ export declare const mapErrorWithTranslationKey: () => void;
8
+ export declare function validateSchema(content: Form, value: any): Promise<any>;
9
+ export declare function validateFieldSchema(field: DisplayField, value: any): Promise<any>;
10
+ export declare function getValidationErrors(err: any): any[];