@controleonline/ui-common 1.2.86 → 1.2.88

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 (73) hide show
  1. package/.github/workflows/integration-source-gate.yml +68 -0
  2. package/.github/workflows/manager-worker.yml +7 -156
  3. package/.github/workflows/publish-npm.yml +73 -27
  4. package/.github/workflows/pull-request-checks.yml +7 -5
  5. package/docs/technical/Device-Detail-Alias-UI-Sync.md +141 -0
  6. package/package.json +13 -8
  7. package/src/react/components/AddImportModal.js +61 -34
  8. package/src/react/components/BottomNavigationBar.js +178 -174
  9. package/src/react/components/BottomNavigationBar.styles.js +139 -118
  10. package/src/react/components/DefaultProvider.native.js +427 -421
  11. package/src/react/components/DefaultProvider.web.js +131 -125
  12. package/src/react/components/RemoteCheckoutService.js +3 -3
  13. package/src/react/components/RuntimeFooterMarqueeText.js +88 -36
  14. package/src/react/components/RuntimeInfoFooter.js +76 -43
  15. package/src/react/components/RuntimeInfoFooter.styles.js +22 -14
  16. package/src/react/config/deviceConfigBootstrap.js +3 -3
  17. package/src/react/pages/Devices/detail/DeviceDetailAlertsCommandsSection.js +4 -22
  18. package/src/react/pages/Devices/detail/DeviceDetailMovementSections.js +6 -2
  19. package/src/react/pages/Devices/detail/DeviceDetailOrdersPrintSection.js +4 -0
  20. package/src/react/pages/Devices/detail/DeviceDetailScreen.js +23 -338
  21. package/src/react/pages/Devices/detail/createDeviceDetailContext.js +20 -0
  22. package/src/react/pages/Devices/detail/useDeviceDetailActions.js +11 -36
  23. package/src/react/pages/Devices/detail/useDeviceDetailLoaders.js +129 -37
  24. package/src/react/pages/Devices/detail/useDeviceDetailSaves.js +11 -38
  25. package/src/react/pages/Devices/detail/useDeviceDetailStateA.js +9 -28
  26. package/src/react/pages/Imports.js +13 -11
  27. package/src/react/pages/IntegrationConfigFields.js +1 -0
  28. package/src/react/pages/IntegrationConfigPage.js +101 -45
  29. package/src/react/pages/IntegrationConfigPage.utils.js +21 -13
  30. package/src/react/pages/fetchPeopleConfigs.js +21 -0
  31. package/src/react/pages/integrationsCatalog.js +15 -110
  32. package/src/react/services/Cielo/Cielo.js +9 -9
  33. package/src/react/services/Getnet/Getnet.web.js +25 -0
  34. package/src/react/utils/companyAuthority.js +36 -0
  35. package/src/react/utils/fileUrl.js +14 -5
  36. package/src/react/utils/paymentDevices.js +375 -270
  37. package/src/react/utils/printerDevices.js +2 -2
  38. package/src/react/utils/runtimeFooter.js +178 -224
  39. package/src/react/utils/runtimeFooterText.js +160 -0
  40. package/src/react/utils/runtimeLanguage.js +5 -5
  41. package/src/react/utils/runtimeZoom.js +29 -5
  42. package/src/react/utils/shopFranchises.js +167 -12
  43. package/src/react/utils/storeColumns.js +235 -217
  44. package/src/react/utils/systemErrorMessage.js +2 -1
  45. package/src/store/imports/customActions.js +42 -2
  46. package/src/store/integration/index.js +43 -0
  47. package/src/tests/browser/manager/device-detail-apply-config-defined.spec.js +31 -0
  48. package/src/tests/browser/manager/device-detail-composition.spec.js +295 -0
  49. package/src/tests/browser/manager/device-detail-copy-config.spec.js +11 -1
  50. package/src/tests/browser/manager/device-detail-pdv-current-company.spec.js +273 -0
  51. package/src/tests/browser/manager/runtime-footer-rotation.spec.js +397 -0
  52. package/src/tests/react/components/DefaultProviderAuthority.test.js +28 -0
  53. package/src/tests/react/components/RuntimeFooterMarqueeText.build.test.js +29 -0
  54. package/src/tests/react/config/deviceConfigBootstrap.test.js +24 -1
  55. package/src/tests/react/pages/applyCurrentDeviceConfig.test.js +85 -0
  56. package/src/tests/react/pages/deviceDetailComposition.test.js +65 -0
  57. package/src/tests/react/pages/deviceDetailHookDependencies.test.mjs +31 -0
  58. package/src/tests/react/pages/deviceDetailLoaderDependencies.test.mjs +28 -0
  59. package/src/tests/react/pages/receitaFederalIntegrationContract.test.mjs +27 -6
  60. package/src/tests/react/services/Cielo.test.js +2 -2
  61. package/src/tests/react/utils/companyAuthority.test.js +53 -0
  62. package/src/tests/react/utils/formatter.test.mjs +6 -0
  63. package/src/tests/react/utils/paymentDevices.test.js +72 -0
  64. package/src/tests/react/utils/runtimeFooter.test.js +35 -0
  65. package/src/tests/react/utils/runtimeFooterText.test.js +88 -0
  66. package/src/tests/react/utils/runtimeLanguage.test.js +4 -4
  67. package/src/tests/react/utils/runtimeZoom.test.js +20 -0
  68. package/src/tests/react/utils/shopFranchises.test.js +32 -13
  69. package/src/tests/react/utils/translate.test.mjs +6 -6
  70. package/src/utils/formatter.js +7 -3
  71. package/src/utils/translate.js +16 -16
  72. package/src/utils/translatePending.js +6 -6
  73. package/src/utils/translateStorage.js +2 -2
@@ -1,118 +1,139 @@
1
- import {Platform, StyleSheet} from 'react-native';
2
-
3
- const resolveWebShadowColor = shadowColor => {
4
- if (typeof shadowColor !== 'string') {
5
- return 'rgba(0, 0, 0, 0.12)';
6
- }
7
-
8
- const normalized = shadowColor.trim();
9
- if (!normalized) {
10
- return 'rgba(0, 0, 0, 0.12)';
11
- }
12
-
13
- if (/^#[0-9a-f]{3}$/i.test(normalized)) {
14
- return `${normalized[0]}${normalized[1]}${normalized[1]}${normalized[2]}${normalized[2]}${normalized[3]}${normalized[3]}1f`;
15
- }
16
-
17
- if (/^#[0-9a-f]{6}$/i.test(normalized)) {
18
- return `${normalized}1f`;
19
- }
20
-
21
- if (/^#[0-9a-f]{4}$/i.test(normalized) || /^#[0-9a-f]{8}$/i.test(normalized)) {
22
- return normalized;
23
- }
24
-
25
- return normalized;
26
- };
27
-
28
- const createStyles = ({
29
- activeBackground,
30
- dockBackground,
31
- dockBorder,
32
- dockShadow,
33
- activeBorder,
34
- useModernWebChromeProps = false,
35
- }) =>
36
- StyleSheet.create({
37
- host: {
38
- position: Platform.OS === 'web' ? 'fixed' : 'absolute',
39
- left: 0,
40
- right: 0,
41
- bottom: 0,
42
- zIndex: 1000,
43
- backgroundColor: 'transparent',
44
- alignItems: 'stretch',
45
- },
46
- hostPointerEventsBoxNone: {
47
- pointerEvents: 'box-none',
48
- },
49
- stack: {
50
- width: '100%',
51
- alignItems: 'stretch',
52
- },
53
- dock: {
54
- flexDirection: 'row',
55
- alignItems: 'center',
56
- justifyContent: 'space-between',
57
- minHeight: 64,
58
- paddingHorizontal: 8,
59
- paddingTop: 8,
60
- paddingBottom: 8,
61
- borderWidth: 1,
62
- borderBottomWidth: 0,
63
- borderColor: dockBorder,
64
- borderTopLeftRadius: 24,
65
- borderTopRightRadius: 24,
66
- borderBottomLeftRadius: 0,
67
- borderBottomRightRadius: 0,
68
- backgroundColor: dockBackground,
69
- overflow: 'hidden',
70
- ...(Platform.OS === 'android'
71
- ? {elevation: 10}
72
- : Platform.OS === 'web' && useModernWebChromeProps
73
- ? {
74
- boxShadow: `0px -6px 14px ${resolveWebShadowColor(dockShadow)}`,
75
- }
76
- : {
77
- shadowColor: dockShadow,
78
- shadowOpacity: 0.12,
79
- shadowOffset: {width: 0, height: -6},
80
- shadowRadius: 14,
81
- }),
82
- },
83
- item: {
84
- flex: 1,
85
- minHeight: 44,
86
- alignItems: 'center',
87
- justifyContent: 'center',
88
- paddingVertical: 6,
89
- paddingHorizontal: 4,
90
- borderWidth: 1,
91
- borderColor: 'transparent',
92
- borderRadius: 18,
93
- },
94
- itemActive: {
95
- backgroundColor: activeBackground,
96
- borderColor: activeBorder,
97
- },
98
- itemPressed: {
99
- transform: [{scale: 0.99}],
100
- },
101
- itemDisabled: {},
102
- iconWrap: {
103
- width: 24,
104
- height: 24,
105
- borderRadius: 999,
106
- alignItems: 'center',
107
- justifyContent: 'center',
108
- marginBottom: 4,
109
- backgroundColor: 'transparent',
110
- },
111
- itemLabel: {
112
- fontSize: 12,
113
- fontWeight: '600',
114
- textAlign: 'center',
115
- },
116
- });
117
-
118
- export default createStyles;
1
+ import {Platform, StyleSheet} from 'react-native';
2
+
3
+ const resolveWebShadowColor = shadowColor => {
4
+ if (typeof shadowColor !== 'string') {
5
+ return 'rgba(0, 0, 0, 0.12)';
6
+ }
7
+
8
+ const normalized = shadowColor.trim();
9
+ if (!normalized) {
10
+ return 'rgba(0, 0, 0, 0.12)';
11
+ }
12
+
13
+ if (/^#[0-9a-f]{3}$/i.test(normalized)) {
14
+ return `${normalized[0]}${normalized[1]}${normalized[1]}${normalized[2]}${normalized[2]}${normalized[3]}${normalized[3]}1f`;
15
+ }
16
+
17
+ if (/^#[0-9a-f]{6}$/i.test(normalized)) {
18
+ return `${normalized}1f`;
19
+ }
20
+
21
+ if (/^#[0-9a-f]{4}$/i.test(normalized) || /^#[0-9a-f]{8}$/i.test(normalized)) {
22
+ return normalized;
23
+ }
24
+
25
+ return normalized;
26
+ };
27
+
28
+ const createStyles = ({
29
+ activeBackground,
30
+ dockBackground,
31
+ dockBorder,
32
+ dockShadow,
33
+ activeBorder,
34
+ useModernWebChromeProps = false,
35
+ }) =>
36
+ StyleSheet.create({
37
+ host: {
38
+ position: Platform.OS === 'web' ? 'fixed' : 'absolute',
39
+ left: 0,
40
+ right: 0,
41
+ bottom: 0,
42
+ zIndex: 1000,
43
+ backgroundColor: 'transparent',
44
+ alignItems: 'stretch',
45
+ },
46
+ hostPointerEventsBoxNone: {
47
+ pointerEvents: 'box-none',
48
+ },
49
+ stack: {
50
+ width: '100%',
51
+ alignItems: 'stretch',
52
+ },
53
+ dock: {
54
+ // app-community#828: column — buttons on top, runtime footer below.
55
+ // row was crushing nav buttons against the footer strip on the sides.
56
+ flexDirection: 'column',
57
+ alignItems: 'stretch',
58
+ justifyContent: 'flex-start',
59
+ minHeight: 64,
60
+ paddingHorizontal: 8,
61
+ paddingTop: 6,
62
+ paddingBottom: 8,
63
+ borderWidth: 1,
64
+ borderBottomWidth: 0,
65
+ borderColor: dockBorder,
66
+ borderTopLeftRadius: 24,
67
+ borderTopRightRadius: 24,
68
+ borderBottomLeftRadius: 0,
69
+ borderBottomRightRadius: 0,
70
+ backgroundColor: dockBackground,
71
+ overflow: 'visible',
72
+ ...(Platform.OS === 'android'
73
+ ? {elevation: 10}
74
+ : Platform.OS === 'web' && useModernWebChromeProps
75
+ ? {
76
+ boxShadow: `0px -6px 14px ${resolveWebShadowColor(dockShadow)}`,
77
+ }
78
+ : {
79
+ shadowColor: dockShadow,
80
+ shadowOpacity: 0.12,
81
+ shadowOffset: {width: 0, height: -6},
82
+ shadowRadius: 14,
83
+ }),
84
+ },
85
+ footerSlot: {
86
+ // Strip below the nav buttons (#384): text after buttons, same dock chrome
87
+ width: '100%',
88
+ minHeight: 24,
89
+ paddingHorizontal: 4,
90
+ paddingTop: 2,
91
+ paddingBottom: 2,
92
+ flexShrink: 0,
93
+ zIndex: 1,
94
+ },
95
+ itemsRow: {
96
+ flexDirection: 'row',
97
+ alignItems: 'center',
98
+ justifyContent: 'space-between',
99
+ width: '100%',
100
+ minHeight: 52,
101
+ flexShrink: 0,
102
+ },
103
+ item: {
104
+ flex: 1,
105
+ minWidth: 56,
106
+ minHeight: 44,
107
+ alignItems: 'center',
108
+ justifyContent: 'center',
109
+ paddingVertical: 6,
110
+ paddingHorizontal: 4,
111
+ borderWidth: 1,
112
+ borderColor: 'transparent',
113
+ borderRadius: 18,
114
+ },
115
+ itemActive: {
116
+ backgroundColor: activeBackground,
117
+ borderColor: activeBorder,
118
+ },
119
+ itemPressed: {
120
+ transform: [{scale: 0.99}],
121
+ },
122
+ itemDisabled: {},
123
+ iconWrap: {
124
+ width: 24,
125
+ height: 24,
126
+ borderRadius: 999,
127
+ alignItems: 'center',
128
+ justifyContent: 'center',
129
+ marginBottom: 4,
130
+ backgroundColor: 'transparent',
131
+ },
132
+ itemLabel: {
133
+ fontSize: 12,
134
+ fontWeight: '600',
135
+ textAlign: 'center',
136
+ },
137
+ });
138
+
139
+ export default createStyles;