@controleonline/ui-common 1.2.70 → 1.2.75

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 (188) hide show
  1. package/.github/actions/workers/manager/action.yml +147 -0
  2. package/.github/actions/workers/qa/action.yml +44 -0
  3. package/.github/actions/workers/security/action.yml +44 -0
  4. package/.github/actions/workers/technical-documenter/action.yml +51 -0
  5. package/.github/workflows/manager-worker.yml +168 -0
  6. package/.github/workflows/publish-npm.yml +45 -0
  7. package/.gitmodules +3 -0
  8. package/AGENTS.md +6 -0
  9. package/README.md +14 -0
  10. package/package.json +32 -28
  11. package/src/api/fetch.js +1 -1
  12. package/src/api/index.js +328 -58
  13. package/src/react/components/AddImportModal.js +95 -111
  14. package/src/react/components/AnimatedModal.js +171 -0
  15. package/src/react/components/AnimatedModal.styles.js +21 -0
  16. package/src/react/components/AppTypeSwitcher.js +164 -0
  17. package/src/react/components/AppTypeSwitcher.styles.js +109 -0
  18. package/src/react/components/BackgroundRuntimeBridge.js +5 -4
  19. package/src/react/components/BottomNavigationBar.config.js +211 -231
  20. package/src/react/components/BottomNavigationBar.js +86 -31
  21. package/src/react/components/BottomNavigationBar.styles.js +118 -110
  22. package/src/react/components/CategoryForm.js +52 -35
  23. package/src/react/components/DefaultProvider.native.js +194 -156
  24. package/src/react/components/DefaultProvider.web.js +188 -112
  25. package/src/react/components/DeliveryPushBridge.native.js +2 -2
  26. package/src/react/components/DeviceAlertSoundService.js +3 -3
  27. package/src/react/components/KioskModeBridge.js +2 -2
  28. package/src/react/components/LauncherModeBridge.js +2 -2
  29. package/src/react/components/ManagerPushBridge.native.js +2 -2
  30. package/src/react/components/NetworkPrinterPreviewModal.js +249 -0
  31. package/src/react/components/NetworkPrinterPreviewModal.styles.js +159 -0
  32. package/src/react/components/RemoteCheckoutService.js +28 -20
  33. package/src/react/components/RuntimeBottomNavigationBar.js +146 -119
  34. package/src/react/components/RuntimeInfoFooter.js +137 -45
  35. package/src/react/components/RuntimeInfoFooter.styles.js +3 -0
  36. package/src/react/components/StateStore.js +258 -0
  37. package/src/react/components/UnifiedPaymentBar.js +7 -4
  38. package/src/react/components/UserAvatar.js +160 -0
  39. package/src/react/components/WebsocketListener.native.js +11 -11
  40. package/src/react/components/integrations/IntegrationHero/index.js +48 -0
  41. package/src/react/components/integrations/IntegrationHero/styles.js +57 -0
  42. package/src/react/components/integrations/IntegrationTabs/index.js +89 -0
  43. package/src/react/components/integrations/IntegrationTabs/styles.js +44 -0
  44. package/src/react/config/deviceConfigBootstrap.js +71 -30
  45. package/src/react/css/orders.js +72 -0
  46. package/src/react/pages/Connections.js +229 -0
  47. package/src/react/pages/Connections.styles.js +222 -0
  48. package/src/react/pages/DeviceDetailPage.js +2814 -0
  49. package/src/react/pages/DeviceDetailPage.styles.js +308 -0
  50. package/src/react/pages/Devices/currentDevice.js +194 -0
  51. package/src/react/pages/Devices/deviceTypes/DeviceGroupCard.js +257 -0
  52. package/src/react/pages/Devices/deviceTypes/all.js +23 -0
  53. package/src/react/pages/Devices/deviceTypes/device.js +25 -0
  54. package/src/react/pages/Devices/deviceTypes/deviceListHelpers.js +178 -0
  55. package/src/react/pages/Devices/deviceTypes/display.js +26 -0
  56. package/src/react/pages/Devices/deviceTypes/index.js +145 -0
  57. package/src/react/pages/Devices/deviceTypes/ipCamera.js +35 -0
  58. package/src/react/pages/Devices/deviceTypes/pdv.js +88 -0
  59. package/src/react/pages/Devices/deviceTypes/printer.js +37 -0
  60. package/src/react/pages/Devices/deviceTypes/shared.js +453 -0
  61. package/src/react/pages/Devices/deviceTypes/useDeviceNetworkConnectivity.js +145 -0
  62. package/src/react/pages/Devices.js +183 -0
  63. package/src/react/pages/Devices.styles.js +353 -0
  64. package/src/react/pages/Food99IntegrationPage/components/Food99CatalogTab.js +219 -0
  65. package/src/react/pages/Food99IntegrationPage/components/Food99OverviewTab.js +134 -0
  66. package/src/react/pages/Food99IntegrationPage/components/Food99PreviewModal.js +173 -0
  67. package/src/react/pages/Food99IntegrationPage/components/Food99ProductCard.js +1 -0
  68. package/src/react/pages/Food99IntegrationPage/components/Food99QuickWalletModal.js +181 -0
  69. package/src/react/pages/Food99IntegrationPage/components/Food99SettingsTab.js +306 -0
  70. package/src/react/pages/Food99IntegrationPage/components/Food99StoreTab.js +417 -0
  71. package/src/react/pages/Food99IntegrationPage/index.js +1530 -0
  72. package/src/react/pages/Food99IntegrationPage/styles.js +792 -0
  73. package/src/react/pages/Food99IntegrationPage/utils.js +155 -0
  74. package/src/react/pages/Food99IntegrationPage.js +1 -0
  75. package/src/react/pages/Food99IntegrationPage.styles.js +1 -0
  76. package/src/react/pages/GenericLogPage.js +42 -167
  77. package/src/react/pages/IFoodIntegrationPage/components/IFoodCatalogTab.js +8 -0
  78. package/src/react/pages/IFoodIntegrationPage/components/IFoodOperationsTab.js +420 -0
  79. package/src/react/pages/IFoodIntegrationPage/components/IFoodOverviewTab.js +118 -0
  80. package/src/react/pages/IFoodIntegrationPage/components/IFoodPreviewModal.js +103 -0
  81. package/src/react/pages/IFoodIntegrationPage/components/IFoodProductCard.js +1 -0
  82. package/src/react/pages/IFoodIntegrationPage/components/IFoodStoreTab.js +150 -0
  83. package/src/react/pages/IFoodIntegrationPage/index.js +1298 -0
  84. package/src/react/pages/IFoodIntegrationPage/styles.js +764 -0
  85. package/src/react/pages/IFoodIntegrationPage/utils.js +91 -0
  86. package/src/react/pages/IFoodIntegrationPage.js +1 -0
  87. package/src/react/pages/IFoodIntegrationPage.styles.js +1 -0
  88. package/src/react/pages/Imports.js +214 -166
  89. package/src/react/pages/IntegrationConfigPage.js +744 -0
  90. package/src/react/pages/IntegrationConfigPage.styles.js +269 -0
  91. package/src/react/pages/Integrations.js +299 -0
  92. package/src/react/pages/Integrations.styles.js +130 -0
  93. package/src/react/pages/ManagerOrderNotificationsPage.js +642 -0
  94. package/src/react/pages/MarketplaceIntegrationPage/components/MarketplaceProductCard.js +205 -0
  95. package/src/react/pages/MarketplaceIntegrationPage/components/RemoteMarketplaceMenuTab.js +335 -0
  96. package/src/react/pages/MarketplaceIntegrationPage/index.js +60 -0
  97. package/src/react/pages/MarketplaceIntegrationPage/utils.js +137 -0
  98. package/src/react/pages/MercadoLivreIntegrationPage.js +538 -0
  99. package/src/react/pages/PrinterDeviceDetailPage.js +1916 -0
  100. package/src/react/pages/PrinterDeviceDetailPage.styles.js +223 -0
  101. package/src/react/pages/PrinterDeviceFormPage.js +521 -0
  102. package/src/react/pages/PrinterDeviceFormPage.styles.js +159 -0
  103. package/src/react/pages/SettingsPage/PaymentTypesByWalletTab.js +484 -454
  104. package/src/react/pages/SettingsPage/index.js +1266 -1167
  105. package/src/react/pages/WhatsAppConnectionPage.js +459 -0
  106. package/src/react/pages/WhatsAppConnectionPage.styles.js +284 -0
  107. package/src/react/pages/integrationsCatalog.js +399 -0
  108. package/src/react/print/providers/local.js +1 -1
  109. package/src/react/router/publicRoutes.js +25 -0
  110. package/src/react/services/Cielo/Checkout.js +39 -0
  111. package/src/react/services/Cielo/Cielo.js +193 -0
  112. package/src/react/services/Cielo/Print.js +7 -0
  113. package/src/react/services/InfinitePay/Checkout.js +33 -0
  114. package/src/react/services/InfinitePay/InfinitePay.js +24 -0
  115. package/src/react/{utils → services}/paymentGatewayExecution.js +91 -91
  116. package/src/react/styles/global.js +115 -0
  117. package/src/react/utils/categoryContexts.js +46 -0
  118. package/src/react/utils/entityDisplay.js +222 -217
  119. package/src/react/utils/fileUrl.js +201 -16
  120. package/src/react/utils/integrationPage.js +16 -0
  121. package/src/react/utils/menuNavigation.js +31 -0
  122. package/src/react/utils/orderIdentity.js +277 -0
  123. package/src/react/utils/remotePayment.js +115 -61
  124. package/src/react/utils/runtimeFooter.js +40 -22
  125. package/src/react/utils/runtimeLanguage.js +50 -9
  126. package/src/react/utils/runtimeMenu.js +190 -98
  127. package/src/react/utils/runtimeZoom.js +43 -0
  128. package/src/react/utils/shopConfig.js +72 -34
  129. package/src/react/utils/shopFranchises.js +182 -23
  130. package/src/react/utils/socketRuntimePipeline.js +14 -14
  131. package/src/react/utils/storeColumns.js +23 -4
  132. package/src/react/utils/userAvatar.js +104 -0
  133. package/src/store/categories/index.js +48 -20
  134. package/src/store/configs/index.js +2 -2
  135. package/src/store/device_config/index.js +62 -21
  136. package/src/store/entity_log/index.js +22 -1
  137. package/src/store/imports/customActions.js +51 -0
  138. package/src/store/imports/index.js +89 -88
  139. package/src/store/status/index.js +11 -11
  140. package/src/store/themes/index.js +22 -0
  141. package/src/store/timezones/index.js +3 -1
  142. package/src/tests/browser/manager/connections.spec.js +143 -0
  143. package/src/tests/browser/manager/devices-current.spec.js +343 -0
  144. package/src/tests/browser/manager/mercado-livre-integration.spec.js +268 -0
  145. package/src/tests/react/api/deviceHeaders.test.js +114 -0
  146. package/src/tests/react/api/loadSmokeIndex.test.js +75 -0
  147. package/src/tests/react/components/AddImportModal.test.js +166 -0
  148. package/src/tests/react/components/BottomNavigationBar.config.test.js +20 -0
  149. package/src/tests/react/components/UserAvatar.test.js +52 -0
  150. package/src/tests/react/config/deviceConfigBootstrap.test.js +47 -0
  151. package/src/tests/react/pages/DevicePickerStyles.test.js +47 -0
  152. package/src/tests/react/pages/Devices/deviceListHelpers.test.js +39 -0
  153. package/src/tests/react/pages/DevicesCurrentDevice.test.js +198 -0
  154. package/src/tests/react/pages/connectionsHelpers.test.js +34 -0
  155. package/src/tests/react/pages/mercadoLivreIntegrationPageContract.test.mjs +16 -0
  156. package/src/tests/react/print/localPrintProvider.test.js +1 -1
  157. package/src/tests/react/services/Cielo.test.js +190 -0
  158. package/src/tests/react/store/categoriesOrdering.test.js +26 -0
  159. package/src/tests/react/utils/appDomain.test.js +62 -0
  160. package/src/tests/react/utils/entityDisplay.test.js +2 -2
  161. package/src/tests/react/utils/fileUrl.test.js +62 -0
  162. package/src/tests/react/utils/formatter.test.mjs +33 -0
  163. package/src/tests/react/utils/importStatus.test.js +2 -2
  164. package/src/tests/react/utils/orderIdentity.test.js +139 -0
  165. package/src/tests/react/utils/remotePayment.test.js +62 -0
  166. package/src/tests/react/utils/runtimeFooter.test.js +32 -9
  167. package/src/tests/react/utils/runtimeLanguage.test.js +80 -10
  168. package/src/tests/react/utils/runtimeMenu.test.js +195 -111
  169. package/src/tests/react/utils/runtimeZoom.test.js +38 -0
  170. package/src/tests/react/utils/shopConfig.test.js +75 -0
  171. package/src/tests/react/utils/shopFranchises.test.js +122 -12
  172. package/src/tests/react/utils/translate.discovery.test.mjs +170 -0
  173. package/src/tests/react/utils/translate.test.helpers.mjs +152 -0
  174. package/src/tests/react/utils/translate.test.mjs +252 -396
  175. package/src/tests/react/utils/userAvatar.test.js +63 -0
  176. package/src/utils/appDomain.js +15 -4
  177. package/src/utils/formatter.js +122 -16
  178. package/src/utils/integrationConfigs.js +1 -0
  179. package/src/utils/translate.js +277 -398
  180. package/src/utils/translateDiscovery.js +96 -0
  181. package/src/utils/translateNormalize.js +33 -0
  182. package/src/utils/translatePending.js +92 -0
  183. package/src/utils/translateStorage.js +142 -0
  184. package/.github/agents/developer.agent.md +0 -30
  185. package/.github/agents/devops.agent.md +0 -30
  186. package/.github/agents/qa.agent.md +0 -30
  187. package/.github/agents/security.agent.md +0 -30
  188. package/.github/workflows/npmjs.yml +0 -35
@@ -6,8 +6,8 @@ import * as customActions from './customActions';
6
6
  export default {
7
7
  namespaced: true,
8
8
  state: {
9
- item: null, //Don´t Touch plz....
10
- items: null, //Don´t Touch plz....
9
+ item: null, //Don't Touch plz....
10
+ items: null, //Don't Touch plz....
11
11
  resourceEndpoint: 'configs',
12
12
  isLoading: false,
13
13
  isSaving: false,
@@ -1,28 +1,69 @@
1
- import * as actions from '@controleonline/ui-default/src/store/default/actions';
2
- import * as getters from '@controleonline/ui-default/src/store/default/getters';
3
- import mutations from '@controleonline/ui-default/src/store/default/mutations';
4
- import * as customActions from './customActions';
5
-
6
- export default {
7
- namespaced: true,
8
- state: {
9
- item: {},
10
- items: [],
11
- resourceEndpoint: 'device_configs',
12
- isLoading: false,
1
+ import * as actions from '@controleonline/ui-default/src/store/default/actions';
2
+ import * as getters from '@controleonline/ui-default/src/store/default/getters';
3
+ import mutations from '@controleonline/ui-default/src/store/default/mutations';
4
+ import * as customActions from './customActions';
5
+
6
+ export default {
7
+ namespaced: true,
8
+ state: {
9
+ item: {},
10
+ items: [],
11
+ resourceEndpoint: 'device_configs',
12
+ isLoading: false,
13
13
  isSaving: false,
14
14
  error: '',
15
- totalItems: 0,messages:[], message:{},
15
+ totalItems: 0,
16
+ messages: [],
17
+ message: {},
16
18
  summary: {},
17
19
  loadedKey: '',
18
20
  loadedAt: 0,
19
21
  filters: {},
20
- columns: [],
22
+ columns: [
23
+ {
24
+ editable: false,
25
+ isIdentity: true,
26
+ sortable: true,
27
+ name: 'id',
28
+ align: 'left',
29
+ label: 'id',
30
+ format(value) {
31
+ return value != null ? `#${value}` : '';
32
+ },
33
+ },
34
+ {
35
+ sortable: true,
36
+ name: 'alias',
37
+ align: 'left',
38
+ label: 'device',
39
+ format(value) {
40
+ return value || '';
41
+ },
42
+ },
43
+ {
44
+ sortable: true,
45
+ name: 'typeLabel',
46
+ align: 'left',
47
+ label: 'type',
48
+ format(value) {
49
+ return value || '';
50
+ },
51
+ },
52
+ {
53
+ sortable: true,
54
+ name: 'type',
55
+ align: 'left',
56
+ label: 'configType',
57
+ format(value) {
58
+ return value || '';
59
+ },
60
+ },
61
+ ],
21
62
  },
22
- actions: {
23
- ...customActions,
24
- ...actions,
25
- },
26
- getters,
27
- mutations,
28
- };
63
+ actions: {
64
+ ...customActions,
65
+ ...actions,
66
+ },
67
+ getters,
68
+ mutations,
69
+ };
@@ -17,7 +17,28 @@ export default {
17
17
  messages: [],
18
18
  message: {},
19
19
  filters: {},
20
- columns: [],
20
+ columns: [
21
+ {
22
+ externalFilter: true,
23
+ inputType: 'date-range',
24
+ label: 'period',
25
+ name: 'createdAt',
26
+ table: false,
27
+ },
28
+ {
29
+ externalFilter: true,
30
+ label: 'Tipo de log',
31
+ list: true,
32
+ name: 'type',
33
+ table: false,
34
+ },
35
+ {
36
+ externalFilter: true,
37
+ label: 'Classe / origem',
38
+ name: 'class',
39
+ table: false,
40
+ },
41
+ ],
21
42
  },
22
43
  actions: {...actions, ...customActions},
23
44
  getters,
@@ -0,0 +1,51 @@
1
+ import {Platform} from 'react-native';
2
+ import {api} from '@controleonline/ui-common/src/api';
3
+
4
+ const extractId = value => {
5
+ if (value === null || value === undefined || value === '') {
6
+ return '';
7
+ }
8
+
9
+ if (typeof value === 'number') {
10
+ return String(value);
11
+ }
12
+
13
+ const raw = typeof value === 'string' ? value : value?.id || value?.['@id'];
14
+ const match = String(raw || '').match(/(\d+)$/);
15
+ return match ? match[1] : '';
16
+ };
17
+
18
+ export const uploadImportFile = (_context, payload = {}) => {
19
+ const normalizedPayload = payload && typeof payload === 'object' ? payload : {};
20
+ const file = normalizedPayload.file;
21
+ const importType = String(normalizedPayload.importType || '').trim();
22
+ const peopleId = extractId(normalizedPayload.peopleId || normalizedPayload.people);
23
+
24
+ if (!file) {
25
+ throw new Error('Arquivo de importacao nao informado.');
26
+ }
27
+
28
+ if (!importType) {
29
+ throw new Error('Tipo de importacao nao informado.');
30
+ }
31
+
32
+ if (!peopleId) {
33
+ throw new Error('Empresa nao identificada para a importacao.');
34
+ }
35
+
36
+ const formData = new FormData();
37
+ formData.append('importType', importType);
38
+ formData.append('people', peopleId);
39
+
40
+ if (Platform.OS === 'web') {
41
+ formData.append('file', file);
42
+ } else {
43
+ formData.append('file', {
44
+ uri: file.uri,
45
+ name: file.name || 'import.csv',
46
+ type: file.mimeType || 'text/csv',
47
+ });
48
+ }
49
+
50
+ return api.upload('/imports/upload', formData);
51
+ };
@@ -1,88 +1,89 @@
1
- import * as actions from "@controleonline/ui-default/src/store/default/actions";
2
- import * as getters from "@controleonline/ui-default/src/store/default/getters";
3
- import mutations from "@controleonline/ui-default/src/store/default/mutations";
4
-
5
- export default {
6
- namespaced: true,
7
- state: {
8
- item: {},
9
- items: [],
10
- resourceEndpoint: "imports",
11
- isLoading: false,
12
- error: "",
13
-
14
- totalItems: 0, messages: [], message: {},
15
-
16
- summary: {},
17
- filters: {},
18
- columns: [
19
- {
20
- editable: false,
21
- isIdentity: true,
22
- sortable: true,
23
- name: "id",
24
- align: "left",
25
- label: "id",
26
- sum: false,
27
- format: function (value) {
28
- return "#" + value;
29
- },
30
- },
31
- {
32
- externalFilter: false,
33
- sortable: true,
34
- name: "field_name",
35
- align: "left",
36
- label: "field_name",
37
- sum: false,
38
- format: function (value) {
39
- return value;
40
- },
41
- },
42
- {
43
- externalFilter: false,
44
- sortable: true,
45
- name: "field_type",
46
- align: "left",
47
- label: "field_type",
48
- sum: false,
49
- list: [
50
- { value: "text", label: "text" },
51
- { value: "select", label: "select" },
52
- { value: "date-range", label: "date-range" },
53
- ],
54
- format: function (value) {
55
- return value;
56
- },
57
- },
58
- {
59
- externalFilter: false,
60
- sortable: true,
61
- name: "required",
62
- align: "left",
63
- label: "required",
64
- sum: false,
65
- format: function (value) {
66
- return value;
67
- },
68
- saveFormat: function (value) {
69
- return false;
70
- },
71
- },
72
- {
73
- externalFilter: false,
74
- sortable: true,
75
- name: "field_configs",
76
- align: "left",
77
- label: "field_configs",
78
- sum: false,
79
- format: function (value) {
80
- return value;
81
- },
82
- },
83
- ],
84
- },
85
- actions: actions,
86
- getters,
87
- mutations,
88
- };
1
+ import * as actions from "@controleonline/ui-default/src/store/default/actions";
2
+ import * as getters from "@controleonline/ui-default/src/store/default/getters";
3
+ import mutations from "@controleonline/ui-default/src/store/default/mutations";
4
+ import * as customActions from './customActions';
5
+
6
+ export default {
7
+ namespaced: true,
8
+ state: {
9
+ item: {},
10
+ items: [],
11
+ resourceEndpoint: "imports",
12
+ isLoading: false,
13
+ error: "",
14
+
15
+ totalItems: 0, messages: [], message: {},
16
+
17
+ summary: {},
18
+ filters: {},
19
+ columns: [
20
+ {
21
+ editable: false,
22
+ isIdentity: true,
23
+ sortable: true,
24
+ name: "id",
25
+ align: "left",
26
+ label: "id",
27
+ sum: false,
28
+ format: function (value) {
29
+ return "#" + value;
30
+ },
31
+ },
32
+ {
33
+ externalFilter: false,
34
+ sortable: true,
35
+ name: "field_name",
36
+ align: "left",
37
+ label: "field_name",
38
+ sum: false,
39
+ format: function (value) {
40
+ return value;
41
+ },
42
+ },
43
+ {
44
+ externalFilter: false,
45
+ sortable: true,
46
+ name: "field_type",
47
+ align: "left",
48
+ label: "field_type",
49
+ sum: false,
50
+ list: [
51
+ { value: "text", label: "text" },
52
+ { value: "select", label: "select" },
53
+ { value: "date-range", label: "date-range" },
54
+ ],
55
+ format: function (value) {
56
+ return value;
57
+ },
58
+ },
59
+ {
60
+ externalFilter: false,
61
+ sortable: true,
62
+ name: "required",
63
+ align: "left",
64
+ label: "required",
65
+ sum: false,
66
+ format: function (value) {
67
+ return value;
68
+ },
69
+ saveFormat: function (value) {
70
+ return false;
71
+ },
72
+ },
73
+ {
74
+ externalFilter: false,
75
+ sortable: true,
76
+ name: "field_configs",
77
+ align: "left",
78
+ label: "field_configs",
79
+ sum: false,
80
+ format: function (value) {
81
+ return value;
82
+ },
83
+ },
84
+ ],
85
+ },
86
+ actions: { ...actions, ...customActions },
87
+ getters,
88
+ mutations,
89
+ };
@@ -38,19 +38,19 @@ export default {
38
38
  return value;
39
39
  },
40
40
  },
41
- {
42
- sortable: true,
43
- name: "color",
44
- align: "left",
45
- label: "color",
46
- inputType: "color",
47
- format: function (value) {
48
- return value;
49
- },
50
- },
51
41
  {
52
42
  sortable: true,
53
- name: "realStatus",
43
+ name: "color",
44
+ align: "left",
45
+ label: "color",
46
+ inputType: "color",
47
+ format: function (value) {
48
+ return value;
49
+ },
50
+ },
51
+ {
52
+ sortable: true,
53
+ name: "realStatus",
54
54
  align: "left",
55
55
  label: "realStatus",
56
56
  format: function (value) {
@@ -0,0 +1,22 @@
1
+ import * as actions from '@controleonline/ui-default/src/store/default/actions';
2
+ import * as getters from '@controleonline/ui-default/src/store/default/getters';
3
+ import mutations from '@controleonline/ui-default/src/store/default/mutations';
4
+
5
+ export default {
6
+ namespaced: true,
7
+ state: {
8
+ item: {},
9
+ items: [],
10
+ resourceEndpoint: 'themes',
11
+ isLoading: false,
12
+ isSaving: false,
13
+ error: '',
14
+ totalItems: 0,
15
+ summary: {},
16
+ filters: {},
17
+ columns: [],
18
+ },
19
+ actions,
20
+ getters,
21
+ mutations,
22
+ };
@@ -14,7 +14,9 @@ export default {
14
14
  messages: [],
15
15
  message: {},
16
16
  summary: {},
17
- filters: {},
17
+ filters: {
18
+ enabled: true,
19
+ },
18
20
  columns: [
19
21
  {
20
22
  isIdentity: true,
@@ -0,0 +1,143 @@
1
+ const {expect, test} = require('playwright/test');
2
+ const packageJson = require('../../../../../../../package.json');
3
+ const {API_ORIGIN} = require('../../../../../../../src/tests/browser/apiOrigin');
4
+
5
+ const APP_VERSION = packageJson?.version || '1.0.0';
6
+
7
+ const CORS_HEADERS = {
8
+ 'access-control-allow-origin': '*',
9
+ 'access-control-allow-headers':
10
+ 'API-TOKEN, APP-DOMAIN, DEVICE, ACCEPT, CONTENT-TYPE, X-Requested-With',
11
+ 'access-control-allow-methods': 'GET,POST,PUT,PATCH,DELETE,OPTIONS',
12
+ };
13
+
14
+ const jsonHeaders = () => ({
15
+ ...CORS_HEADERS,
16
+ 'content-type': 'application/ld+json; charset=utf-8',
17
+ });
18
+
19
+ const collection = member => ({
20
+ member,
21
+ 'hydra:member': member,
22
+ totalItems: member.length,
23
+ 'hydra:totalItems': member.length,
24
+ summary: {},
25
+ });
26
+
27
+ const mockConnectionsApi = async page => {
28
+ const company = {
29
+ id: 3,
30
+ name: 'Teste',
31
+ alias: 'TESTE',
32
+ panel_enabled: true,
33
+ enabled: true,
34
+ commercial_enabled: true,
35
+ theme: {colors: {primary: '#0EA5E9', success: '#10b981'}},
36
+ };
37
+
38
+ const connections = [
39
+ {
40
+ id: 21,
41
+ name: 'Atendimento',
42
+ phone: {ddd: '11', phone: '988887777'},
43
+ type: 'crm',
44
+ channel: 'whatsapp',
45
+ status: {status: 'connected'},
46
+ },
47
+ {
48
+ id: 22,
49
+ name: 'Suporte',
50
+ phone: {ddd: '21', phone: '977776666'},
51
+ type: 'support',
52
+ channel: 'whatsapp',
53
+ status: {status: 'pending'},
54
+ },
55
+ ];
56
+
57
+ await page.route(`${API_ORIGIN}/**`, async route => {
58
+ const request = route.request();
59
+ const url = new URL(request.url());
60
+ const pathname = url.pathname.replace(/^\/+/, '');
61
+ const method = request.method().toUpperCase();
62
+
63
+ if (method === 'OPTIONS') {
64
+ return route.fulfill({status: 204, headers: CORS_HEADERS, body: ''});
65
+ }
66
+
67
+ if (pathname === 'companies' || pathname.startsWith('people/')) {
68
+ return route.fulfill({
69
+ status: 200,
70
+ headers: jsonHeaders(),
71
+ body: JSON.stringify(company),
72
+ });
73
+ }
74
+
75
+ if (pathname === 'connections' || pathname.startsWith('connections')) {
76
+ return route.fulfill({
77
+ status: 200,
78
+ headers: jsonHeaders(),
79
+ body: JSON.stringify(collection(connections)),
80
+ });
81
+ }
82
+
83
+ return route.fulfill({
84
+ status: 200,
85
+ headers: jsonHeaders(),
86
+ body: JSON.stringify(collection([])),
87
+ });
88
+ });
89
+
90
+ await page.addInitScript(
91
+ ({appVersion}) => {
92
+ const set = (k, v) => {
93
+ try {
94
+ localStorage.setItem(k, v);
95
+ } catch {}
96
+ };
97
+ set(
98
+ 'session',
99
+ JSON.stringify({
100
+ id: 7,
101
+ people: '/people/7',
102
+ api_key: 'test-api-key',
103
+ active: 1,
104
+ mycompany: 3,
105
+ roles: ['ROLE_ADMIN'],
106
+ }),
107
+ );
108
+ set('config', JSON.stringify({language: 'pt-br'}));
109
+ set('app-type', 'ERP');
110
+ set(
111
+ 'device',
112
+ JSON.stringify({
113
+ id: 'web-erp',
114
+ device: 'web-erp',
115
+ type: 'WEB',
116
+ appName: 'Browser ERP',
117
+ appVersion,
118
+ buildNumber: appVersion,
119
+ systemName: 'web',
120
+ systemVersion: 'web',
121
+ deviceType: 'web',
122
+ metadata: {},
123
+ }),
124
+ );
125
+ },
126
+ {appVersion: APP_VERSION},
127
+ );
128
+ };
129
+
130
+ test.describe('connections browser smoke', () => {
131
+ test('renders connections page with DefaultTable', async ({page}) => {
132
+ await mockConnectionsApi(page);
133
+ await page.goto('/connections-page');
134
+
135
+ await expect(page.getByText(/Conex/i).first()).toBeVisible({timeout: 15000});
136
+ await expect(page.getByText('WhatsApp').first()).toBeVisible();
137
+ await expect(page.getByText('Atendimento')).toBeVisible();
138
+ await expect(page.getByText('Suporte')).toBeVisible();
139
+ await expect(
140
+ page.getByPlaceholder(/Buscar conex/i),
141
+ ).toBeVisible();
142
+ });
143
+ });