@axelor/aos-mobile-ui 8.3.8 → 8.4.1

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 (94) hide show
  1. package/README.md +2 -199
  2. package/lib/components/atoms/BlockInteractionScreen/BlockInteractionScreen.js +5 -5
  3. package/lib/components/atoms/BlockInteractionScreen/BlockInteractionScreen.js.map +1 -1
  4. package/lib/components/atoms/BootstrapIcon/BootstrapIcon.js +2 -2
  5. package/lib/components/atoms/BootstrapIcon/BootstrapIcon.js.map +1 -1
  6. package/lib/components/atoms/Card/Card.js +3 -1
  7. package/lib/components/atoms/Card/Card.js.map +1 -1
  8. package/lib/components/atoms/DottedLine/DottedLine.js +1 -1
  9. package/lib/components/atoms/DottedLine/DottedLine.js.map +1 -1
  10. package/lib/components/atoms/HorizontalRule/HorizontalRule.js +1 -1
  11. package/lib/components/atoms/HorizontalRule/HorizontalRule.js.map +1 -1
  12. package/lib/components/atoms/HtmlInput/HtmlInput.js +4 -4
  13. package/lib/components/atoms/HtmlInput/HtmlInput.js.map +1 -1
  14. package/lib/components/atoms/Icon/Icon.d.ts +1 -9
  15. package/lib/components/atoms/Icon/Icon.js +7 -26
  16. package/lib/components/atoms/Icon/Icon.js.map +1 -1
  17. package/lib/components/atoms/KeyboardAvoidingScrollView/KeyboardAvoidingScrollView.d.ts +4 -0
  18. package/lib/components/atoms/KeyboardAvoidingScrollView/KeyboardAvoidingScrollView.js +3 -3
  19. package/lib/components/atoms/KeyboardAvoidingScrollView/KeyboardAvoidingScrollView.js.map +1 -1
  20. package/lib/components/atoms/ProgressCircle/ProgressCircle.d.ts +12 -0
  21. package/lib/components/atoms/ProgressCircle/ProgressCircle.js +54 -0
  22. package/lib/components/atoms/ProgressCircle/ProgressCircle.js.map +1 -0
  23. package/lib/components/atoms/RadioButton/RadioButton.js +2 -2
  24. package/lib/components/atoms/RadioButton/RadioButton.js.map +1 -1
  25. package/lib/components/atoms/Screen/Screen.js +3 -3
  26. package/lib/components/atoms/Screen/Screen.js.map +1 -1
  27. package/lib/components/atoms/ScrollView/ScrollView.js +1 -1
  28. package/lib/components/atoms/ScrollView/ScrollView.js.map +1 -1
  29. package/lib/components/atoms/Slider/Slider.js +4 -4
  30. package/lib/components/atoms/Slider/Slider.js.map +1 -1
  31. package/lib/components/atoms/Switch/Switch.d.ts +3 -3
  32. package/lib/components/atoms/Switch/Switch.js +1 -1
  33. package/lib/components/atoms/Switch/Switch.js.map +1 -1
  34. package/lib/components/atoms/index.d.ts +3 -2
  35. package/lib/components/atoms/index.js +3 -2
  36. package/lib/components/atoms/index.js.map +1 -1
  37. package/lib/components/molecules/Button/Button.js +1 -1
  38. package/lib/components/molecules/Button/Button.js.map +1 -1
  39. package/lib/components/molecules/DropdownMenu/DropdownMenu.d.ts +3 -1
  40. package/lib/components/molecules/DropdownMenu/DropdownMenu.js +4 -7
  41. package/lib/components/molecules/DropdownMenu/DropdownMenu.js.map +1 -1
  42. package/lib/components/molecules/Image/Image.js +1 -1
  43. package/lib/components/molecules/Image/Image.js.map +1 -1
  44. package/lib/components/molecules/RightIconButton/RightIconButton.js +1 -1
  45. package/lib/components/molecules/Stepper/StepList.d.ts +8 -0
  46. package/lib/components/molecules/Stepper/StepList.js +80 -0
  47. package/lib/components/molecules/Stepper/StepList.js.map +1 -0
  48. package/lib/components/molecules/Stepper/Stepper.d.ts +11 -0
  49. package/lib/components/molecules/Stepper/Stepper.js +87 -0
  50. package/lib/components/molecules/Stepper/Stepper.js.map +1 -0
  51. package/lib/components/molecules/Stepper/index.d.ts +2 -0
  52. package/lib/components/molecules/Stepper/index.js +20 -0
  53. package/lib/components/molecules/Stepper/index.js.map +1 -0
  54. package/lib/components/molecules/Stepper/types.d.ts +10 -0
  55. package/lib/components/molecules/Stepper/types.js +25 -0
  56. package/lib/components/molecules/Stepper/types.js.map +1 -0
  57. package/lib/components/molecules/index.d.ts +1 -2
  58. package/lib/components/molecules/index.js +1 -2
  59. package/lib/components/molecules/index.js.map +1 -1
  60. package/lib/components/organisms/DropdownMenuItem/DropdownMenuItem.d.ts +4 -1
  61. package/lib/components/organisms/DropdownMenuItem/DropdownMenuItem.js +8 -12
  62. package/lib/components/organisms/DropdownMenuItem/DropdownMenuItem.js.map +1 -1
  63. package/lib/components/organisms/Picker/Picker.js +0 -2
  64. package/lib/components/organisms/Picker/Picker.js.map +1 -1
  65. package/lib/components/templates/ObjectCard/ObjectCard.js +1 -1
  66. package/lib/components/templates/ObjectCard/ObjectCard.js.map +1 -1
  67. package/lib/config/index.d.ts +1 -0
  68. package/lib/config/index.js +19 -0
  69. package/lib/config/index.js.map +1 -0
  70. package/lib/hooks/index.d.ts +3 -0
  71. package/lib/hooks/index.js +21 -0
  72. package/lib/hooks/index.js.map +1 -0
  73. package/lib/hooks/use-click-outside.d.ts +23 -6
  74. package/lib/hooks/use-click-outside.js +42 -45
  75. package/lib/hooks/use-click-outside.js.map +1 -1
  76. package/lib/index.d.ts +4 -6
  77. package/lib/index.js +4 -6
  78. package/lib/index.js.map +1 -1
  79. package/lib/tools/index.d.ts +1 -0
  80. package/lib/tools/index.js +19 -0
  81. package/lib/tools/index.js.map +1 -0
  82. package/lib/types/index.d.ts +0 -1
  83. package/lib/types/index.js +0 -1
  84. package/lib/types/index.js.map +1 -1
  85. package/package.json +15 -17
  86. package/lib/components/molecules/AttachmentCard/AttachmentCard.d.ts +0 -9
  87. package/lib/components/molecules/AttachmentCard/AttachmentCard.js +0 -61
  88. package/lib/components/molecules/AttachmentCard/AttachmentCard.js.map +0 -1
  89. package/lib/components/molecules/MessageBox/MessageBox.d.ts +0 -10
  90. package/lib/components/molecules/MessageBox/MessageBox.js +0 -69
  91. package/lib/components/molecules/MessageBox/MessageBox.js.map +0 -1
  92. package/lib/types/file.d.ts +0 -5
  93. package/lib/types/file.js +0 -62
  94. package/lib/types/file.js.map +0 -1
package/README.md CHANGED
@@ -20,6 +20,7 @@ It contains:
20
20
  - Writing themes management system with basic theme
21
21
  - UseOutsideClick hook to notify components when the user clicked outside of itself
22
22
  - Basic animation tools
23
+ - and many more...
23
24
 
24
25
  ## Usage
25
26
 
@@ -29,207 +30,9 @@ Install the library :
29
30
  yarn add @axelor/aos-mobile-ui
30
31
  ```
31
32
 
32
- Compatibility with React v18.2.x and React Native v0.70.x.
33
-
34
33
  This package has a few required libraries as peer dependencies, please check package.json for more informations.
35
34
 
36
- ### Use of basic components
37
-
38
- You can import components from the main bundle:
39
-
40
- ```typescript
41
- import {Button} from '@axelor/aos-mobile-ui';
42
- ```
43
-
44
- Then, you can use it as a regular component with the specified props :
45
-
46
- ```typescript
47
- <Button title="Save" onPress={() => console.log('Pressed')} />
48
- ```
49
-
50
- ### Use themes management system
51
-
52
- This package provides a context to manage themes system. To use this context you need to wrap your application with the ThemeProvider component. You can also define additional themes and the default theme value through the component props:
53
-
54
- ```typescript
55
- import { ThemeProvider } from '@axelor/aos-mobile-ui';
56
-
57
- ...
58
-
59
- <ThemeProvider themes={themes} defaultTheme={defaultTheme}>
60
- ...
61
- </ThemeProvider>
62
- ```
63
-
64
- A theme in the application has the following structure:
65
-
66
- ```typescript
67
- export interface Theme {
68
- key: string;
69
- name: string;
70
- colors: ThemeColors;
71
- }
72
-
73
- export interface ThemeColors {
74
- screenBackgroundColor: string;
75
- backgroundColor: string;
76
- primaryColor: Color;
77
- secondaryColor: Color;
78
- secondaryColor_dark: Color;
79
- errorColor: Color;
80
- cautionColor: Color;
81
- plannedColor: Color;
82
- progressColor: Color;
83
- priorityColor: Color;
84
- defaultColor: Color;
85
- importantColor: Color;
86
- successColor: Color;
87
- warningColor: Color;
88
- inverseColor: Color;
89
- infoColor: Color;
90
- text: string;
91
- placeholderTextColor: string;
92
- }
93
-
94
- export interface Color {
95
- background_light: string; // This color is a lighter variation of the main color
96
- foreground: string; // This color is mainly used for text to maintain a good contrast with the background color
97
- background: string; // This is the main color for this structure
98
- }
99
- ```
100
-
101
- Once the context is in place, you can access current theme colors with the hook `useThemeColor`. Then, you can use the colors directly in your components:
102
-
103
- ```typescript
104
- import { Button, useThemeColor } from '@axelor/aos-mobile-ui';
105
-
106
- ...
107
-
108
- const Colors = useThemeColor();
109
-
110
- ...
111
- <Button
112
- title="Save"
113
- color={Colors.primaryColor}
114
- onPress={() => console.log("Pressed")}
115
- />
116
- ```
117
-
118
- ### Use writing themes management system
119
-
120
- Writing themes management system is based on the same structure as theme system defined above with a context provider called `WritingThemeProvider`.
121
-
122
- A writing theme in the application has the following structure:
123
-
124
- ```typescript
125
- export interface Writing {
126
- key: string;
127
- name: string;
128
- style: WritingStyles;
129
- }
130
-
131
- export interface WritingStyles {
132
- defaultSize: number;
133
- title: TextStyle;
134
- subTitle: TextStyle;
135
- textImportant: TextStyle;
136
- textDetails: TextStyle;
137
- }
138
-
139
- export interface TextStyle {
140
- fontSize?: number;
141
- fontWeight?: 'normal' | 'bold';
142
- fontStyle?: 'normal' | 'italic';
143
- }
144
- ```
145
-
146
- Once the context is in place, you can access the current theme with the hook `useWritingStyle`. Then, you can use the writing styles directly in your components:
147
-
148
- ```typescript
149
- import { Text, useWritingStyle } from '@axelor/aos-mobile-ui';
150
-
151
- ...
152
-
153
- const Writing = useWritingStyle();
154
-
155
- ...
156
- <Text style={Writing.title}>Hello World</Text>
157
- ```
158
-
159
- ### Use outside click notifier
160
-
161
- This package provides a context provider to notify components when the user clicks out, this provider is called `OutsideAlerterProvider` and should wrap the application component.
162
-
163
- Once the context is in place, you can ask to be notified in the component by using the hook `useClickOutside`. This hook needs the reference of the global view of your component and a boolean to know if the component is active:
164
-
165
- ```typescript
166
- import { OUTSIDE_INDICATOR, useClickOutside } from '@axelor/aos-mobile-ui';
167
-
168
- ...
169
-
170
- const ComponentName = (...) => {
171
- const [isOpen, setIsOpen] = useState(false);
172
- const wrapperRef = useRef(null);
173
- const clickOutside = useClickOutside({wrapperRef, visible: isOpen});
174
-
175
- useEffect(() => {
176
- if (clickOutside === OUTSIDE_INDICATOR && isOpen) {
177
- setIsOpen(false);
178
- }
179
- }, [clickOutside, isOpen]);
180
-
181
- return (
182
- <View ref={wrapperRef}>
183
- ...
184
- </View>
185
- );
186
- };
187
- ```
188
-
189
- ### Use animation tools
190
-
191
- This package provides basic tools to create animation in your application.
192
-
193
- All you have to do is to call the method `animateNext` from the object `animationUtil`. This method can take the animation config as an optional parameter or nothing. If nothing is provided, it will use the default config defined in the package:
194
-
195
- ```typescript
196
- {
197
- easeInEaseOut: LayoutAnimation.Presets.easeInEaseOut,
198
- linear: LayoutAnimation.Presets.linear,
199
- spring: LayoutAnimation.Presets.spring,
200
- };
201
- ```
202
-
203
- For example, if you want to animate the appearance and disappearance of a component children:
204
-
205
- ```typescript
206
- import { animationUtil, Icon, useThemeColor } from '@axelor/aos-mobile-ui';
207
-
208
- ...
209
-
210
- const ComponentName = ({children}) => {
211
- const [isVisible, setVisible] = useState(true);
212
- const Colors = useThemeColor();
213
-
214
- const handleExpandPress = useCallback(() => {
215
- animationUtil.animateNext();
216
- setVisible(!isVisible);
217
- }, [isVisible]);
218
-
219
- return (
220
- <View>
221
- {isVisible && children}
222
- <TouchableOpacity onPress={handleExpandPress}>
223
- <Icon
224
- name={isVisible ? 'angle-up' : 'angle-down'}
225
- size={22}
226
- color={Colors.primaryColor.background}
227
- />
228
- </TouchableOpacity>
229
- </View>
230
- );
231
- };
232
- ```
35
+ For more information about how to use the tools, please check the [documentation](https://docs.axelor.com/aos-mobile/).
233
36
 
234
37
  ## Developpment
235
38
 
@@ -18,18 +18,18 @@
18
18
  import React, { useMemo } from 'react';
19
19
  import { View, StyleSheet, Dimensions } from 'react-native';
20
20
  import { useThemeColor } from '../../../theme';
21
- import { useConfig } from '../../../config/ConfigContext';
21
+ import { useConfig } from '../../../config';
22
22
  const DEFAULT_TOP_OFFSET = 0;
23
23
  const BlockInteractionScreen = ({ children, hideHeader = false, }) => {
24
24
  const { headerHeight } = useConfig();
25
25
  const Colors = useThemeColor();
26
- const styles = useMemo(() => getStyles(hideHeader ? DEFAULT_TOP_OFFSET : headerHeight, Colors), [Colors, headerHeight, hideHeader]);
27
- return (<View style={styles.container}>
26
+ const styles = useMemo(() => getStyles(hideHeader ? DEFAULT_TOP_OFFSET : headerHeight, Colors.secondaryColor.background), [Colors, headerHeight, hideHeader]);
27
+ return (<View style={styles.container} testID="blockInteractionContainer">
28
28
  <View style={styles.greyCard}/>
29
29
  {children}
30
30
  </View>);
31
31
  };
32
- const getStyles = (topOffset, Colors) => StyleSheet.create({
32
+ const getStyles = (topOffset, color) => StyleSheet.create({
33
33
  container: {
34
34
  position: 'absolute',
35
35
  top: topOffset,
@@ -40,7 +40,7 @@ const getStyles = (topOffset, Colors) => StyleSheet.create({
40
40
  marginTop: 15,
41
41
  justifyContent: 'center',
42
42
  alignItems: 'center',
43
- backgroundColor: Colors.secondaryColor.background,
43
+ backgroundColor: color,
44
44
  opacity: 0.2,
45
45
  height: Dimensions.get('window').height * 2,
46
46
  top: -50,
@@ -1 +1 @@
1
- {"version":3,"file":"BlockInteractionScreen.js","sourceRoot":"","sources":["../../../../src/components/atoms/BlockInteractionScreen/BlockInteractionScreen.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,EAAY,OAAO,EAAC,MAAM,OAAO,CAAC;AAChD,OAAO,EAAC,IAAI,EAAE,UAAU,EAAE,UAAU,EAAC,MAAM,cAAc,CAAC;AAC1D,OAAO,EAAC,aAAa,EAAC,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAC,SAAS,EAAC,MAAM,+BAA+B,CAAC;AAOxD,MAAM,kBAAkB,GAAG,CAAC,CAAC;AAE7B,MAAM,sBAAsB,GAAG,CAAC,EAC9B,QAAQ,EACR,UAAU,GAAG,KAAK,GACU,EAAE,EAAE;IAChC,MAAM,EAAC,YAAY,EAAC,GAAG,SAAS,EAAE,CAAC;IACnC,MAAM,MAAM,GAAG,aAAa,EAAE,CAAC;IAE/B,MAAM,MAAM,GAAG,OAAO,CACpB,GAAG,EAAE,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,YAAY,EAAE,MAAM,CAAC,EACvE,CAAC,MAAM,EAAE,YAAY,EAAE,UAAU,CAAC,CACnC,CAAC;IAEF,OAAO,CACL,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAC5B;MAAA,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,EAC7B;MAAA,CAAC,QAAQ,CACX;IAAA,EAAE,IAAI,CAAC,CACR,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,SAAS,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,CACtC,UAAU,CAAC,MAAM,CAAC;IAChB,SAAS,EAAE;QACT,QAAQ,EAAE,UAAU;QACpB,GAAG,EAAE,SAAS;QACd,IAAI,EAAE,CAAC;QACP,MAAM,EAAE,GAAG;KACZ;IACD,QAAQ,EAAE;QACR,SAAS,EAAE,EAAE;QACb,cAAc,EAAE,QAAQ;QACxB,UAAU,EAAE,QAAQ;QACpB,eAAe,EAAE,MAAM,CAAC,cAAc,CAAC,UAAU;QACjD,OAAO,EAAE,GAAG;QACZ,MAAM,EAAE,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,MAAM,GAAG,CAAC;QAC3C,GAAG,EAAE,CAAC,EAAE;QACR,KAAK,EAAE,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,KAAK;QACrC,QAAQ,EAAE,UAAU;KACrB;CACF,CAAC,CAAC;AAEL,eAAe,sBAAsB,CAAC"}
1
+ {"version":3,"file":"BlockInteractionScreen.js","sourceRoot":"","sources":["../../../../src/components/atoms/BlockInteractionScreen/BlockInteractionScreen.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,EAAY,OAAO,EAAC,MAAM,OAAO,CAAC;AAChD,OAAO,EAAC,IAAI,EAAE,UAAU,EAAE,UAAU,EAAC,MAAM,cAAc,CAAC;AAC1D,OAAO,EAAC,aAAa,EAAC,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAC,SAAS,EAAC,MAAM,iBAAiB,CAAC;AAO1C,MAAM,kBAAkB,GAAG,CAAC,CAAC;AAE7B,MAAM,sBAAsB,GAAG,CAAC,EAC9B,QAAQ,EACR,UAAU,GAAG,KAAK,GACU,EAAE,EAAE;IAChC,MAAM,EAAC,YAAY,EAAC,GAAG,SAAS,EAAE,CAAC;IACnC,MAAM,MAAM,GAAG,aAAa,EAAE,CAAC;IAE/B,MAAM,MAAM,GAAG,OAAO,CACpB,GAAG,EAAE,CACH,SAAS,CACP,UAAU,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,YAAY,EAC9C,MAAM,CAAC,cAAc,CAAC,UAAU,CACjC,EACH,CAAC,MAAM,EAAE,YAAY,EAAE,UAAU,CAAC,CACnC,CAAC;IAEF,OAAO,CACL,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,2BAA2B,CAC/D;MAAA,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,EAC7B;MAAA,CAAC,QAAQ,CACX;IAAA,EAAE,IAAI,CAAC,CACR,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,SAAS,GAAG,CAAC,SAAiB,EAAE,KAAa,EAAE,EAAE,CACrD,UAAU,CAAC,MAAM,CAAC;IAChB,SAAS,EAAE;QACT,QAAQ,EAAE,UAAU;QACpB,GAAG,EAAE,SAAS;QACd,IAAI,EAAE,CAAC;QACP,MAAM,EAAE,GAAG;KACZ;IACD,QAAQ,EAAE;QACR,SAAS,EAAE,EAAE;QACb,cAAc,EAAE,QAAQ;QACxB,UAAU,EAAE,QAAQ;QACpB,eAAe,EAAE,KAAK;QACtB,OAAO,EAAE,GAAG;QACZ,MAAM,EAAE,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,MAAM,GAAG,CAAC;QAC3C,GAAG,EAAE,CAAC,EAAE;QACR,KAAK,EAAE,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,KAAK;QACrC,QAAQ,EAAE,UAAU;KACrB;CACF,CAAC,CAAC;AAEL,eAAe,sBAAsB,CAAC"}
@@ -16,7 +16,7 @@
16
16
  * along with this program. If not, see <http://www.gnu.org/licenses/>.
17
17
  */
18
18
  import React from 'react';
19
- import Svg, { Path } from 'react-native-svg';
19
+ import { Svg, Path } from 'react-native-svg';
20
20
  import Text from '../Text/Text';
21
21
  import iconsMap from '../../../icons/bootstrap-icon-map.json';
22
22
  import { useThemeColor } from '../../../theme';
@@ -27,7 +27,7 @@ const BootstrapIcon = ({ name, size, color, style }) => {
27
27
  }
28
28
  const _pathList = iconsMap[name];
29
29
  if (_pathList) {
30
- return (<Svg width={size} height={size} viewBox="0 0 16 16" fill={color} style={style}>
30
+ return (<Svg width={size} height={size} viewBox="0 0 16 16" fill={color} style={style} testID={`icon-${name}`}>
31
31
  {_pathList.map((_path, index) => (<Path key={index} d={_path}/>))}
32
32
  </Svg>);
33
33
  }
@@ -1 +1 @@
1
- {"version":3,"file":"BootstrapIcon.js","sourceRoot":"","sources":["../../../../src/components/atoms/BootstrapIcon/BootstrapIcon.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,GAAG,EAAE,EAAC,IAAI,EAAC,MAAM,kBAAkB,CAAC;AAC3C,OAAO,IAAI,MAAM,cAAc,CAAC;AAChC,OAAO,QAAQ,MAAM,wCAAwC,CAAC;AAC9D,OAAO,EAAC,aAAa,EAAC,MAAM,gBAAgB,CAAC;AAS7C,MAAM,aAAa,GAAG,CAAC,EAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAqB,EAAE,EAAE;IACvE,MAAM,MAAM,GAAG,aAAa,EAAE,CAAC;IAE/B,IAAI,QAAQ,IAAI,IAAI,EAAE;QACpB,OAAO,IAAI,CAAC;KACb;IAED,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAEjC,IAAI,SAAS,EAAE;QACb,OAAO,CACL,CAAC,GAAG,CACF,KAAK,CAAC,CAAC,IAAI,CAAC,CACZ,MAAM,CAAC,CAAC,IAAI,CAAC,CACb,OAAO,CAAC,WAAW,CACnB,IAAI,CAAC,CAAC,KAAK,CAAC,CACZ,KAAK,CAAC,CAAC,KAAK,CAAC,CACb;QAAA,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CAC/B,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAG,CAC/B,CAAC,CACJ;MAAA,EAAE,GAAG,CAAC,CACP,CAAC;KACH;IAED,OAAO,CACL,CAAC,IAAI,CACH,SAAS,CAAC,CAAC,MAAM,CAAC,mBAAmB,CAAC,UAAU,CAAC,CACjD,KAAK,CAAC,CAAC;YACL,QAAQ,EAAE,IAAI,GAAG,CAAC;SACnB,CAAC,CACF;;IACF,EAAE,IAAI,CAAC,CACR,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC"}
1
+ {"version":3,"file":"BootstrapIcon.js","sourceRoot":"","sources":["../../../../src/components/atoms/BootstrapIcon/BootstrapIcon.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAC,GAAG,EAAE,IAAI,EAAC,MAAM,kBAAkB,CAAC;AAC3C,OAAO,IAAI,MAAM,cAAc,CAAC;AAChC,OAAO,QAAQ,MAAM,wCAAwC,CAAC;AAC9D,OAAO,EAAC,aAAa,EAAC,MAAM,gBAAgB,CAAC;AAS7C,MAAM,aAAa,GAAG,CAAC,EAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAqB,EAAE,EAAE;IACvE,MAAM,MAAM,GAAG,aAAa,EAAE,CAAC;IAE/B,IAAI,QAAQ,IAAI,IAAI,EAAE;QACpB,OAAO,IAAI,CAAC;KACb;IAED,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAEjC,IAAI,SAAS,EAAE;QACb,OAAO,CACL,CAAC,GAAG,CACF,KAAK,CAAC,CAAC,IAAI,CAAC,CACZ,MAAM,CAAC,CAAC,IAAI,CAAC,CACb,OAAO,CAAC,WAAW,CACnB,IAAI,CAAC,CAAC,KAAK,CAAC,CACZ,KAAK,CAAC,CAAC,KAAK,CAAC,CACb,MAAM,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC,CACvB;QAAA,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CAC/B,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAG,CAC/B,CAAC,CACJ;MAAA,EAAE,GAAG,CAAC,CACP,CAAC;KACH;IAED,OAAO,CACL,CAAC,IAAI,CACH,SAAS,CAAC,CAAC,MAAM,CAAC,mBAAmB,CAAC,UAAU,CAAC,CACjD,KAAK,CAAC,CAAC;YACL,QAAQ,EAAE,IAAI,GAAG,CAAC;SACnB,CAAC,CACF;;IACF,EAAE,IAAI,CAAC,CACR,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC"}
@@ -21,7 +21,9 @@ import { useThemeColor } from '../../../theme';
21
21
  const Card = ({ style, children }) => {
22
22
  const Colors = useThemeColor();
23
23
  const styles = useMemo(() => getStyles(Colors), [Colors]);
24
- return <View style={[styles.container, style]}>{children}</View>;
24
+ return (<View testID="cardContainer" style={[styles.container, style]}>
25
+ {children}
26
+ </View>);
25
27
  };
26
28
  const getStyles = (Colors) => StyleSheet.create({
27
29
  container: {
@@ -1 +1 @@
1
- {"version":3,"file":"Card.js","sourceRoot":"","sources":["../../../../src/components/atoms/Card/Card.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,EAAC,OAAO,EAAC,MAAM,OAAO,CAAC;AACrC,OAAO,EAAC,UAAU,EAAE,IAAI,EAAC,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAc,aAAa,EAAC,MAAM,gBAAgB,CAAC;AAO1D,MAAM,IAAI,GAAG,CAAC,EAAC,KAAK,EAAE,QAAQ,EAAY,EAAE,EAAE;IAC5C,MAAM,MAAM,GAAG,aAAa,EAAE,CAAC;IAE/B,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAE1D,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,CAAC;AACnE,CAAC,CAAC;AAEF,MAAM,SAAS,GAAG,CAAC,MAAmB,EAAE,EAAE,CACxC,UAAU,CAAC,MAAM,CAAC;IAChB,SAAS,EAAE;QACT,iBAAiB,EAAE,EAAE;QACrB,YAAY,EAAE,EAAE;QAChB,eAAe,EAAE,EAAE;QACnB,YAAY,EAAE,EAAE;QAChB,SAAS,EAAE,CAAC;QACZ,aAAa,EAAE,GAAG;QAClB,WAAW,EAAE,MAAM,CAAC,cAAc,CAAC,UAAU;QAC7C,YAAY,EAAE,EAAC,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAC;QACnC,eAAe,EAAE,MAAM,CAAC,eAAe;KACxC;CACF,CAAC,CAAC;AAEL,eAAe,IAAI,CAAC"}
1
+ {"version":3,"file":"Card.js","sourceRoot":"","sources":["../../../../src/components/atoms/Card/Card.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,EAAC,OAAO,EAAC,MAAM,OAAO,CAAC;AACrC,OAAO,EAAC,UAAU,EAAE,IAAI,EAAC,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAc,aAAa,EAAC,MAAM,gBAAgB,CAAC;AAO1D,MAAM,IAAI,GAAG,CAAC,EAAC,KAAK,EAAE,QAAQ,EAAY,EAAE,EAAE;IAC5C,MAAM,MAAM,GAAG,aAAa,EAAE,CAAC;IAE/B,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAE1D,OAAO,CACL,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAC5D;MAAA,CAAC,QAAQ,CACX;IAAA,EAAE,IAAI,CAAC,CACR,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,SAAS,GAAG,CAAC,MAAmB,EAAE,EAAE,CACxC,UAAU,CAAC,MAAM,CAAC;IAChB,SAAS,EAAE;QACT,iBAAiB,EAAE,EAAE;QACrB,YAAY,EAAE,EAAE;QAChB,eAAe,EAAE,EAAE;QACnB,YAAY,EAAE,EAAE;QAChB,SAAS,EAAE,CAAC;QACZ,aAAa,EAAE,GAAG;QAClB,WAAW,EAAE,MAAM,CAAC,cAAc,CAAC,UAAU;QAC7C,YAAY,EAAE,EAAC,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAC;QACnC,eAAe,EAAE,MAAM,CAAC,eAAe;KACxC;CACF,CAAC,CAAC;AAEL,eAAe,IAAI,CAAC"}
@@ -21,7 +21,7 @@ import { useThemeColor } from '../../../theme';
21
21
  function DottedLine({ style }) {
22
22
  const Colors = useThemeColor();
23
23
  const styles = useMemo(() => getStyles(Colors), [Colors]);
24
- return <View style={[styles.dottedLine, style]}/>;
24
+ return <View testID="dottedLine" style={[styles.dottedLine, style]}/>;
25
25
  }
26
26
  const getStyles = (Colors) => StyleSheet.create({
27
27
  dottedLine: {
@@ -1 +1 @@
1
- {"version":3,"file":"DottedLine.js","sourceRoot":"","sources":["../../../../src/components/atoms/DottedLine/DottedLine.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,EAAC,OAAO,EAAC,MAAM,OAAO,CAAC;AACrC,OAAO,EAAC,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAC,MAAM,cAAc,CAAC;AACxD,OAAO,EAAc,aAAa,EAAC,MAAM,gBAAgB,CAAC;AAM1D,SAAS,UAAU,CAAC,EAAC,KAAK,EAAkB;IAC1C,MAAM,MAAM,GAAG,aAAa,EAAE,CAAC;IAC/B,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAC1D,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,EAAG,CAAC;AACrD,CAAC;AAED,MAAM,SAAS,GAAG,CAAC,MAAmB,EAAE,EAAE,CACxC,UAAU,CAAC,MAAM,CAAC;IAChB,UAAU,EAAE;QACV,WAAW,EAAE,QAAQ,CAAC,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ;QACvD,MAAM,EAAE,EAAE;QACV,eAAe,EAAE,CAAC;QAClB,WAAW,EAAE,MAAM,CAAC,mBAAmB,CAAC,UAAU;QAClD,aAAa,EAAE,KAAK;QACpB,cAAc,EAAE,QAAQ;QACxB,UAAU,EAAE,QAAQ;KACrB;CACF,CAAC,CAAC;AAEL,eAAe,UAAU,CAAC"}
1
+ {"version":3,"file":"DottedLine.js","sourceRoot":"","sources":["../../../../src/components/atoms/DottedLine/DottedLine.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,EAAC,OAAO,EAAC,MAAM,OAAO,CAAC;AACrC,OAAO,EAAC,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAC,MAAM,cAAc,CAAC;AACxD,OAAO,EAAc,aAAa,EAAC,MAAM,gBAAgB,CAAC;AAM1D,SAAS,UAAU,CAAC,EAAC,KAAK,EAAkB;IAC1C,MAAM,MAAM,GAAG,aAAa,EAAE,CAAC;IAC/B,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAC1D,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,EAAG,CAAC;AACzE,CAAC;AAED,MAAM,SAAS,GAAG,CAAC,MAAmB,EAAE,EAAE,CACxC,UAAU,CAAC,MAAM,CAAC;IAChB,UAAU,EAAE;QACV,WAAW,EAAE,QAAQ,CAAC,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ;QACvD,MAAM,EAAE,EAAE;QACV,eAAe,EAAE,CAAC;QAClB,WAAW,EAAE,MAAM,CAAC,mBAAmB,CAAC,UAAU;QAClD,aAAa,EAAE,KAAK;QACpB,cAAc,EAAE,QAAQ;QACxB,UAAU,EAAE,QAAQ;KACrB;CACF,CAAC,CAAC;AAEL,eAAe,UAAU,CAAC"}
@@ -23,7 +23,7 @@ const HorizontalRule = ({ style }) => {
23
23
  const styles = useMemo(() => {
24
24
  return getStyles(Colors);
25
25
  }, [Colors]);
26
- return <View style={[styles.line, style]}/>;
26
+ return <View testID="horizontalRule" style={[styles.line, style]}/>;
27
27
  };
28
28
  const getStyles = Colors => StyleSheet.create({
29
29
  line: {
@@ -1 +1 @@
1
- {"version":3,"file":"HorizontalRule.js","sourceRoot":"","sources":["../../../../src/components/atoms/HorizontalRule/HorizontalRule.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,EAAC,OAAO,EAAC,MAAM,OAAO,CAAC;AACrC,OAAO,EAAC,IAAI,EAAE,UAAU,EAAC,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAC,aAAa,EAAC,MAAM,gBAAgB,CAAC;AAM7C,MAAM,cAAc,GAAG,CAAC,EAAC,KAAK,EAAsB,EAAE,EAAE;IACtD,MAAM,MAAM,GAAG,aAAa,EAAE,CAAC;IAE/B,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE;QAC1B,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC;IAC3B,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAEb,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAG,CAAC;AAC/C,CAAC,CAAC;AAEF,MAAM,SAAS,GAAG,MAAM,CAAC,EAAE,CACzB,UAAU,CAAC,MAAM,CAAC;IAChB,IAAI,EAAE;QACJ,iBAAiB,EAAE,MAAM,CAAC,cAAc,CAAC,UAAU;QACnD,iBAAiB,EAAE,CAAC;KACrB;CACF,CAAC,CAAC;AAEL,eAAe,cAAc,CAAC"}
1
+ {"version":3,"file":"HorizontalRule.js","sourceRoot":"","sources":["../../../../src/components/atoms/HorizontalRule/HorizontalRule.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,EAAC,OAAO,EAAC,MAAM,OAAO,CAAC;AACrC,OAAO,EAAC,IAAI,EAAE,UAAU,EAAC,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAC,aAAa,EAAC,MAAM,gBAAgB,CAAC;AAM7C,MAAM,cAAc,GAAG,CAAC,EAAC,KAAK,EAAsB,EAAE,EAAE;IACtD,MAAM,MAAM,GAAG,aAAa,EAAE,CAAC;IAE/B,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE;QAC1B,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC;IAC3B,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAEb,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,EAAG,CAAC;AACvE,CAAC,CAAC;AAEF,MAAM,SAAS,GAAG,MAAM,CAAC,EAAE,CACzB,UAAU,CAAC,MAAM,CAAC;IAChB,IAAI,EAAE;QACJ,iBAAiB,EAAE,MAAM,CAAC,cAAc,CAAC,UAAU;QACnD,iBAAiB,EAAE,CAAC;KACrB;CACF,CAAC,CAAC;AAEL,eAAe,cAAc,CAAC"}
@@ -18,7 +18,7 @@
18
18
  import React, { useCallback, useEffect, useRef, useState } from 'react';
19
19
  import { View, ScrollView } from 'react-native';
20
20
  import { actions, RichEditor, RichToolbar } from 'react-native-pell-rich-editor';
21
- import { OUTSIDE_INDICATOR, useClickOutside, } from '../../../hooks/use-click-outside';
21
+ import { OUTSIDE_INDICATOR, useClickOutside } from '../../../hooks';
22
22
  import { useThemeColor } from '../../../theme';
23
23
  import { Text } from '../../atoms';
24
24
  const HtmlInput = ({ style, styleToolbar, containerStyle, editorBackgroundColor, title, placeholder = '', onChange = () => { }, defaultInput = '', readonly = false, onHeightChange = () => { }, onFocus = () => { }, onBlur = () => { }, }) => {
@@ -41,7 +41,7 @@ const HtmlInput = ({ style, styleToolbar, containerStyle, editorBackgroundColor,
41
41
  onBlur();
42
42
  }, [onBlur]);
43
43
  useEffect(() => {
44
- if (defaultInput == null || defaultInput === '') {
44
+ if (editor.current && (defaultInput == null || defaultInput === '')) {
45
45
  editor.current.setContentHTML('');
46
46
  if (editor.current.isKeyboardOpen) {
47
47
  editor.current.dismissKeyboard();
@@ -58,8 +58,8 @@ const HtmlInput = ({ style, styleToolbar, containerStyle, editorBackgroundColor,
58
58
  editor.current?.blurContentEditor?.();
59
59
  }
60
60
  }, [clickOutside, isFocused]);
61
- return (<ScrollView ref={wrapperRef} contentContainerStyle={containerStyle}>
62
- <ScrollView style={[style]}>
61
+ return (<ScrollView ref={wrapperRef} testID="htmlInputScrollView" contentContainerStyle={containerStyle}>
62
+ <ScrollView testID="htmlInputInnerScroll" style={style}>
63
63
  <View>
64
64
  {title != null ? <Text>{title}</Text> : null}
65
65
  <RichEditor key={key} ref={editor} placeholder={placeholder} androidHardwareAccelerationDisabled={true} androidLayerType="software" initialContentHTML={defaultInput} onChange={onChange} disabled={readonly}
@@ -1 +1 @@
1
- {"version":3,"file":"HtmlInput.js","sourceRoot":"","sources":["../../../../src/components/atoms/HtmlInput/HtmlInput.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"HtmlInput.js","sourceRoot":"","sources":["../../../../src/components/atoms/HtmlInput/HtmlInput.tsx"],"names":[],"mappings":"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"}
@@ -2,19 +2,11 @@ import React from 'react';
2
2
  interface IconProps {
3
3
  style?: any;
4
4
  name: string;
5
- /**
6
- * @deprecated The prop should not be used anymore. FontAwesome icons will be removed in next version.
7
- */
8
- isFontAwesome4?: boolean;
9
- /**
10
- * @deprecated The prop should not be used anymore. FontAwesome icons will be removed in next version.
11
- */
12
- isFontAwesome5?: boolean;
13
5
  color?: string;
14
6
  size?: number;
15
7
  touchable?: boolean;
16
8
  visible?: boolean;
17
9
  onPress?: () => void;
18
10
  }
19
- declare const Icon: ({ style, name, isFontAwesome4, isFontAwesome5, color, size, touchable, visible, onPress, }: IconProps) => React.JSX.Element;
11
+ declare const Icon: ({ style, name, color, size, touchable, visible, onPress, }: IconProps) => React.JSX.Element;
20
12
  export default Icon;
@@ -15,40 +15,21 @@
15
15
  * You should have received a copy of the GNU Affero General Public License
16
16
  * along with this program. If not, see <http://www.gnu.org/licenses/>.
17
17
  */
18
- import React, { useMemo, useCallback } from 'react';
19
- import { Platform, StyleSheet, TouchableOpacity } from 'react-native';
20
- import Icon5 from 'react-native-vector-icons/FontAwesome5';
21
- import Icon4 from 'react-native-vector-icons/FontAwesome';
18
+ import React, { useMemo } from 'react';
19
+ import { StyleSheet, TouchableOpacity } from 'react-native';
22
20
  import { useThemeColor } from '../../../theme';
23
21
  import BootstrapIcon from '../BootstrapIcon/BootstrapIcon';
24
- const Icon = ({ style, name, isFontAwesome4 = false, isFontAwesome5 = false, color, size = 18, touchable = false, visible = true, onPress = () => { }, }) => {
22
+ const Icon = ({ style, name, color, size = 18, touchable = false, visible = true, onPress = () => { }, }) => {
25
23
  const Colors = useThemeColor();
26
- const styles = useMemo(() => {
27
- return getStyles(color == null ? Colors.secondaryColor_dark.background : color, size);
28
- }, [Colors, color, size]);
29
- const renderIcon = useCallback(() => {
30
- if (isFontAwesome5 && Platform.OS !== 'web') {
31
- return <Icon5 name={name} style={styles.icon}/>;
32
- }
33
- else if (isFontAwesome4) {
34
- return <Icon4 name={name} style={styles.icon}/>;
35
- }
36
- else {
37
- return <BootstrapIcon name={name} size={size} color={color}/>;
38
- }
39
- }, [color, isFontAwesome4, isFontAwesome5, name, size, styles]);
24
+ const _color = useMemo(() => color ?? Colors.secondaryColor_dark.background, [Colors.secondaryColor_dark.background, color]);
40
25
  if (!visible) {
41
26
  return null;
42
27
  }
43
- return (<TouchableOpacity style={[styles.container, style]} onPress={onPress} disabled={!touchable}>
44
- {renderIcon()}
28
+ return (<TouchableOpacity style={[styles.container, style]} onPress={onPress} disabled={!touchable} testID="iconTouchable">
29
+ <BootstrapIcon name={name} size={size} color={_color}/>
45
30
  </TouchableOpacity>);
46
31
  };
47
- const getStyles = (color, size) => StyleSheet.create({
48
- icon: {
49
- color: color,
50
- fontSize: size,
51
- },
32
+ const styles = StyleSheet.create({
52
33
  container: {
53
34
  flexDirection: 'row',
54
35
  justifyContent: 'center',
@@ -1 +1 @@
1
- {"version":3,"file":"Icon.js","sourceRoot":"","sources":["../../../../src/components/atoms/Icon/Icon.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,EAAC,OAAO,EAAE,WAAW,EAAC,MAAM,OAAO,CAAC;AAClD,OAAO,EAAC,QAAQ,EAAE,UAAU,EAAE,gBAAgB,EAAC,MAAM,cAAc,CAAC;AACpE,OAAO,KAAK,MAAM,wCAAwC,CAAC;AAC3D,OAAO,KAAK,MAAM,uCAAuC,CAAC;AAC1D,OAAO,EAAC,aAAa,EAAC,MAAM,gBAAgB,CAAC;AAC7C,OAAO,aAAa,MAAM,gCAAgC,CAAC;AAoB3D,MAAM,IAAI,GAAG,CAAC,EACZ,KAAK,EACL,IAAI,EACJ,cAAc,GAAG,KAAK,EACtB,cAAc,GAAG,KAAK,EACtB,KAAK,EACL,IAAI,GAAG,EAAE,EACT,SAAS,GAAG,KAAK,EACjB,OAAO,GAAG,IAAI,EACd,OAAO,GAAG,GAAG,EAAE,GAAE,CAAC,GACR,EAAE,EAAE;IACd,MAAM,MAAM,GAAG,aAAa,EAAE,CAAC;IAE/B,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE;QAC1B,OAAO,SAAS,CACd,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,EAC7D,IAAI,CACL,CAAC;IACJ,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;IAE1B,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE;QAClC,IAAI,cAAc,IAAI,QAAQ,CAAC,EAAE,KAAK,KAAK,EAAE;YAC3C,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAG,CAAC;SAClD;aAAM,IAAI,cAAc,EAAE;YACzB,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAG,CAAC;SAClD;aAAM;YACL,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,EAAG,CAAC;SAChE;IACH,CAAC,EAAE,CAAC,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;IAEhE,IAAI,CAAC,OAAO,EAAE;QACZ,OAAO,IAAI,CAAC;KACb;IAED,OAAO,CACL,CAAC,gBAAgB,CACf,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CACjC,OAAO,CAAC,CAAC,OAAO,CAAC,CACjB,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CACrB;MAAA,CAAC,UAAU,EAAE,CACf;IAAA,EAAE,gBAAgB,CAAC,CACpB,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,SAAS,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CAChC,UAAU,CAAC,MAAM,CAAC;IAChB,IAAI,EAAE;QACJ,KAAK,EAAE,KAAK;QACZ,QAAQ,EAAE,IAAI;KACf;IACD,SAAS,EAAE;QACT,aAAa,EAAE,KAAK;QACpB,cAAc,EAAE,QAAQ;QACxB,UAAU,EAAE,QAAQ;KACrB;CACF,CAAC,CAAC;AAEL,eAAe,IAAI,CAAC"}
1
+ {"version":3,"file":"Icon.js","sourceRoot":"","sources":["../../../../src/components/atoms/Icon/Icon.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,EAAC,OAAO,EAAC,MAAM,OAAO,CAAC;AACrC,OAAO,EAAC,UAAU,EAAE,gBAAgB,EAAC,MAAM,cAAc,CAAC;AAC1D,OAAO,EAAC,aAAa,EAAC,MAAM,gBAAgB,CAAC;AAC7C,OAAO,aAAa,MAAM,gCAAgC,CAAC;AAY3D,MAAM,IAAI,GAAG,CAAC,EACZ,KAAK,EACL,IAAI,EACJ,KAAK,EACL,IAAI,GAAG,EAAE,EACT,SAAS,GAAG,KAAK,EACjB,OAAO,GAAG,IAAI,EACd,OAAO,GAAG,GAAG,EAAE,GAAE,CAAC,GACR,EAAE,EAAE;IACd,MAAM,MAAM,GAAG,aAAa,EAAE,CAAC;IAE/B,MAAM,MAAM,GAAG,OAAO,CACpB,GAAG,EAAE,CAAC,KAAK,IAAI,MAAM,CAAC,mBAAmB,CAAC,UAAU,EACpD,CAAC,MAAM,CAAC,mBAAmB,CAAC,UAAU,EAAE,KAAK,CAAC,CAC/C,CAAC;IAEF,IAAI,CAAC,OAAO,EAAE;QACZ,OAAO,IAAI,CAAC;KACb;IAED,OAAO,CACL,CAAC,gBAAgB,CACf,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CACjC,OAAO,CAAC,CAAC,OAAO,CAAC,CACjB,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CACrB,MAAM,CAAC,eAAe,CACtB;MAAA,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,EACvD;IAAA,EAAE,gBAAgB,CAAC,CACpB,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;IAC/B,SAAS,EAAE;QACT,aAAa,EAAE,KAAK;QACpB,cAAc,EAAE,QAAQ;QACxB,UAAU,EAAE,QAAQ;KACrB;CACF,CAAC,CAAC;AAEH,eAAe,IAAI,CAAC"}
@@ -1,4 +1,8 @@
1
1
  import React, { ReactNode } from 'react';
2
+ export declare const DEFAULT_OFFSET: {
3
+ ios: number;
4
+ android: number;
5
+ };
2
6
  interface Offset {
3
7
  ios: number;
4
8
  android: number;
@@ -17,15 +17,15 @@
17
17
  */
18
18
  import React, { useMemo } from 'react';
19
19
  import { KeyboardAvoidingView, Platform, RefreshControl, ScrollView, StyleSheet, } from 'react-native';
20
- const DEFAULT_OFFSET = { ios: 70, android: 115 };
20
+ export const DEFAULT_OFFSET = { ios: 70, android: 115 };
21
21
  const KeyboardAvoidingScrollView = ({ globalStyle, style, children, keyboardOffset = DEFAULT_OFFSET, refresh, }) => {
22
22
  const keyboardVerticalOffset = useMemo(() => {
23
23
  return { ...DEFAULT_OFFSET, ...keyboardOffset };
24
24
  }, [keyboardOffset]);
25
- return (<KeyboardAvoidingView behavior={Platform.OS === 'ios' ? 'padding' : 'height'} style={[styles.containerKeyboard, getZIndexStyles(5)]} keyboardVerticalOffset={Platform.OS === 'ios'
25
+ return (<KeyboardAvoidingView testID="keyboardAvoidingView" behavior={Platform.OS === 'ios' ? 'padding' : 'height'} style={[styles.containerKeyboard, getZIndexStyles(5)]} keyboardVerticalOffset={Platform.OS === 'ios'
26
26
  ? keyboardVerticalOffset?.ios
27
27
  : keyboardVerticalOffset?.android}>
28
- <ScrollView style={globalStyle} keyboardShouldPersistTaps="handled" contentContainerStyle={[getZIndexStyles(10), style]} refreshControl={refresh != null && (<RefreshControl refreshing={refresh.loading} onRefresh={refresh.fetcher}/>)}>
28
+ <ScrollView testID="keyboardAvoidingScrollView" style={globalStyle} keyboardShouldPersistTaps="handled" contentContainerStyle={[getZIndexStyles(10), style]} refreshControl={refresh != null && (<RefreshControl refreshing={refresh.loading} onRefresh={refresh.fetcher}/>)}>
29
29
  {children}
30
30
  </ScrollView>
31
31
  </KeyboardAvoidingView>);
@@ -1 +1 @@
1
- {"version":3,"file":"KeyboardAvoidingScrollView.js","sourceRoot":"","sources":["../../../../src/components/atoms/KeyboardAvoidingScrollView/KeyboardAvoidingScrollView.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,EAAY,OAAO,EAAC,MAAM,OAAO,CAAC;AAChD,OAAO,EACL,oBAAoB,EACpB,QAAQ,EACR,cAAc,EACd,UAAU,EACV,UAAU,GACX,MAAM,cAAc,CAAC;AAEtB,MAAM,cAAc,GAAG,EAAC,GAAG,EAAE,EAAE,EAAE,OAAO,EAAE,GAAG,EAAC,CAAC;AAY/C,MAAM,0BAA0B,GAAG,CAAC,EAClC,WAAW,EACX,KAAK,EACL,QAAQ,EACR,cAAc,GAAG,cAAc,EAC/B,OAAO,GAOR,EAAE,EAAE;IACH,MAAM,sBAAsB,GAAG,OAAO,CAAC,GAAG,EAAE;QAC1C,OAAO,EAAC,GAAG,cAAc,EAAE,GAAG,cAAc,EAAC,CAAC;IAChD,CAAC,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC;IAErB,OAAO,CACL,CAAC,oBAAoB,CACnB,QAAQ,CAAC,CAAC,QAAQ,CAAC,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CACvD,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,iBAAiB,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CACtD,sBAAsB,CAAC,CACrB,QAAQ,CAAC,EAAE,KAAK,KAAK;YACnB,CAAC,CAAC,sBAAsB,EAAE,GAAG;YAC7B,CAAC,CAAC,sBAAsB,EAAE,OAAO,CACpC,CACD;MAAA,CAAC,UAAU,CACT,KAAK,CAAC,CAAC,WAAW,CAAC,CACnB,yBAAyB,CAAC,SAAS,CACnC,qBAAqB,CAAC,CAAC,CAAC,eAAe,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,CACpD,cAAc,CAAC,CACb,OAAO,IAAI,IAAI,IAAI,CACjB,CAAC,cAAc,CACb,UAAU,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAC5B,SAAS,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,EAC3B,CACH,CACF,CACD;QAAA,CAAC,QAAQ,CACX;MAAA,EAAE,UAAU,CACd;IAAA,EAAE,oBAAoB,CAAC,CACxB,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,eAAe,GAAG,CAAC,KAAa,EAAE,EAAE,CACxC,QAAQ,CAAC,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,EAAC,MAAM,EAAE,KAAK,EAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAEjD,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;IAC/B,iBAAiB,EAAE;QACjB,IAAI,EAAE,CAAC;KACR;CACF,CAAC,CAAC;AAEH,eAAe,0BAA0B,CAAC"}
1
+ {"version":3,"file":"KeyboardAvoidingScrollView.js","sourceRoot":"","sources":["../../../../src/components/atoms/KeyboardAvoidingScrollView/KeyboardAvoidingScrollView.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,EAAY,OAAO,EAAC,MAAM,OAAO,CAAC;AAChD,OAAO,EACL,oBAAoB,EACpB,QAAQ,EACR,cAAc,EACd,UAAU,EACV,UAAU,GACX,MAAM,cAAc,CAAC;AAEtB,MAAM,CAAC,MAAM,cAAc,GAAG,EAAC,GAAG,EAAE,EAAE,EAAE,OAAO,EAAE,GAAG,EAAC,CAAC;AAYtD,MAAM,0BAA0B,GAAG,CAAC,EAClC,WAAW,EACX,KAAK,EACL,QAAQ,EACR,cAAc,GAAG,cAAc,EAC/B,OAAO,GAOR,EAAE,EAAE;IACH,MAAM,sBAAsB,GAAG,OAAO,CAAC,GAAG,EAAE;QAC1C,OAAO,EAAC,GAAG,cAAc,EAAE,GAAG,cAAc,EAAC,CAAC;IAChD,CAAC,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC;IAErB,OAAO,CACL,CAAC,oBAAoB,CACnB,MAAM,CAAC,sBAAsB,CAC7B,QAAQ,CAAC,CAAC,QAAQ,CAAC,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CACvD,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,iBAAiB,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CACtD,sBAAsB,CAAC,CACrB,QAAQ,CAAC,EAAE,KAAK,KAAK;YACnB,CAAC,CAAC,sBAAsB,EAAE,GAAG;YAC7B,CAAC,CAAC,sBAAsB,EAAE,OAAO,CACpC,CACD;MAAA,CAAC,UAAU,CACT,MAAM,CAAC,4BAA4B,CACnC,KAAK,CAAC,CAAC,WAAW,CAAC,CACnB,yBAAyB,CAAC,SAAS,CACnC,qBAAqB,CAAC,CAAC,CAAC,eAAe,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,CACpD,cAAc,CAAC,CACb,OAAO,IAAI,IAAI,IAAI,CACjB,CAAC,cAAc,CACb,UAAU,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAC5B,SAAS,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,EAC3B,CACH,CACF,CACD;QAAA,CAAC,QAAQ,CACX;MAAA,EAAE,UAAU,CACd;IAAA,EAAE,oBAAoB,CAAC,CACxB,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,eAAe,GAAG,CAAC,KAAa,EAAE,EAAE,CACxC,QAAQ,CAAC,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,EAAC,MAAM,EAAE,KAAK,EAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAEjD,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;IAC/B,iBAAiB,EAAE;QACjB,IAAI,EAAE,CAAC;KACR;CACF,CAAC,CAAC;AAEH,eAAe,0BAA0B,CAAC"}
@@ -0,0 +1,12 @@
1
+ import React from 'react';
2
+ interface ProgressCircleProps {
3
+ circleSize?: number;
4
+ strokeWidth?: number;
5
+ isError?: boolean;
6
+ progress: number;
7
+ innerText?: string;
8
+ writingType?: 'title' | 'subtitle' | 'important' | 'details' | undefined;
9
+ textStyle?: any;
10
+ }
11
+ declare const ProgressCircle: ({ circleSize, strokeWidth, isError, progress, innerText, writingType, textStyle, }: ProgressCircleProps) => React.JSX.Element;
12
+ export default ProgressCircle;
@@ -0,0 +1,54 @@
1
+ /*
2
+ * Axelor Business Solutions
3
+ *
4
+ * Copyright (C) 2025 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 React, { useMemo } from 'react';
19
+ import { StyleSheet, View } from 'react-native';
20
+ import { Svg, Circle } from 'react-native-svg';
21
+ import { useThemeColor } from '../../../theme';
22
+ import { Text } from '../../atoms';
23
+ const ProgressCircle = ({ circleSize = 80, strokeWidth = 4, isError = false, progress, innerText, writingType = 'important', textStyle, }) => {
24
+ const Colors = useThemeColor();
25
+ const { radius, circumference, strokeDashoffset } = useMemo(() => {
26
+ const _radius = circleSize / 2 - strokeWidth / 2;
27
+ const _circumference = 2 * Math.PI * _radius;
28
+ return {
29
+ radius: _radius,
30
+ circumference: _circumference,
31
+ strokeDashoffset: _circumference - _circumference * progress,
32
+ };
33
+ }, [circleSize, progress, strokeWidth]);
34
+ return (<Svg width={circleSize} height={circleSize}>
35
+ <Circle cx={circleSize / 2} cy={circleSize / 2} r={radius} stroke={Colors.secondaryColor.background_light} strokeWidth={strokeWidth} fill="none" testID="internalCircle"/>
36
+ <Circle cx={circleSize / 2} cy={circleSize / 2} r={radius} stroke={isError
37
+ ? Colors.errorColor.background
38
+ : Colors.successColor.background} strokeLinecap="round" strokeWidth={strokeWidth} strokeDasharray={`${circumference} ${circumference}`} strokeDashoffset={strokeDashoffset} rotation="-90" origin={`${circleSize / 2}, ${circleSize / 2}`} fill="none" testID="progressCircle"/>
39
+ <View style={styles.textContainer}>
40
+ <Text writingType={writingType} style={textStyle} adjustsFontSizeToFit>
41
+ {innerText}
42
+ </Text>
43
+ </View>
44
+ </Svg>);
45
+ };
46
+ const styles = StyleSheet.create({
47
+ textContainer: {
48
+ height: '100%',
49
+ justifyContent: 'center',
50
+ alignItems: 'center',
51
+ },
52
+ });
53
+ export default ProgressCircle;
54
+ //# sourceMappingURL=ProgressCircle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProgressCircle.js","sourceRoot":"","sources":["../../../../src/components/atoms/ProgressCircle/ProgressCircle.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,EAAC,OAAO,EAAC,MAAM,OAAO,CAAC;AACrC,OAAO,EAAC,UAAU,EAAE,IAAI,EAAC,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAC,GAAG,EAAE,MAAM,EAAC,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAC,aAAa,EAAC,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAC,IAAI,EAAC,MAAM,aAAa,CAAC;AAYjC,MAAM,cAAc,GAAG,CAAC,EACtB,UAAU,GAAG,EAAE,EACf,WAAW,GAAG,CAAC,EACf,OAAO,GAAG,KAAK,EACf,QAAQ,EACR,SAAS,EACT,WAAW,GAAG,WAAW,EACzB,SAAS,GACW,EAAE,EAAE;IACxB,MAAM,MAAM,GAAG,aAAa,EAAE,CAAC;IAE/B,MAAM,EAAC,MAAM,EAAE,aAAa,EAAE,gBAAgB,EAAC,GAAG,OAAO,CAAC,GAAG,EAAE;QAC7D,MAAM,OAAO,GAAG,UAAU,GAAG,CAAC,GAAG,WAAW,GAAG,CAAC,CAAC;QACjD,MAAM,cAAc,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,OAAO,CAAC;QAE7C,OAAO;YACL,MAAM,EAAE,OAAO;YACf,aAAa,EAAE,cAAc;YAC7B,gBAAgB,EAAE,cAAc,GAAG,cAAc,GAAG,QAAQ;SAC7D,CAAC;IACJ,CAAC,EAAE,CAAC,UAAU,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC;IAExC,OAAO,CACL,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,CACzC;MAAA,CAAC,MAAM,CACL,EAAE,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,CACnB,EAAE,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,CACnB,CAAC,CAAC,CAAC,MAAM,CAAC,CACV,MAAM,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAC/C,WAAW,CAAC,CAAC,WAAW,CAAC,CACzB,IAAI,CAAC,MAAM,CACX,MAAM,CAAC,gBAAgB,EAEzB;MAAA,CAAC,MAAM,CACL,EAAE,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,CACnB,EAAE,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,CACnB,CAAC,CAAC,CAAC,MAAM,CAAC,CACV,MAAM,CAAC,CACL,OAAO;YACL,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,UAAU;YAC9B,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,UAAU,CACnC,CACD,aAAa,CAAC,OAAO,CACrB,WAAW,CAAC,CAAC,WAAW,CAAC,CACzB,eAAe,CAAC,CAAC,GAAG,aAAa,IAAI,aAAa,EAAE,CAAC,CACrD,gBAAgB,CAAC,CAAC,gBAAgB,CAAC,CACnC,QAAQ,CAAC,KAAK,CACd,MAAM,CAAC,CAAC,GAAG,UAAU,GAAG,CAAC,KAAK,UAAU,GAAG,CAAC,EAAE,CAAC,CAC/C,IAAI,CAAC,MAAM,CACX,MAAM,CAAC,gBAAgB,EAEzB;MAAA,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAChC;QAAA,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC,oBAAoB,CACpE;UAAA,CAAC,SAAS,CACZ;QAAA,EAAE,IAAI,CACR;MAAA,EAAE,IAAI,CACR;IAAA,EAAE,GAAG,CAAC,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;IAC/B,aAAa,EAAE;QACb,MAAM,EAAE,MAAM;QACd,cAAc,EAAE,QAAQ;QACxB,UAAU,EAAE,QAAQ;KACrB;CACF,CAAC,CAAC;AAEH,eAAe,cAAc,CAAC"}
@@ -23,9 +23,9 @@ const DEFAULT_SIZE = 20;
23
23
  const RadioButton = ({ style, onPress, selected, title, size = DEFAULT_SIZE, readonly = false, }) => {
24
24
  const Colors = useThemeColor();
25
25
  const styles = useMemo(() => getStyles(Colors, size), [Colors, size]);
26
- return (<TouchableOpacity onPress={onPress} disabled={readonly} style={[styles.container, selected ? styles.selectedCard : null, style]}>
26
+ return (<TouchableOpacity accessibilityRole="button" onPress={onPress} disabled={readonly} style={[styles.container, selected ? styles.selectedCard : null, style]}>
27
27
  <View style={styles.buttonExt}>
28
- {selected ? <View style={styles.buttonInt}/> : null}
28
+ {selected ? <View testID="radio" style={styles.buttonInt}/> : null}
29
29
  </View>
30
30
  <Text textColor={readonly ? Colors.secondaryColor.background : Colors.text} style={styles.title}>
31
31
  {title}
@@ -1 +1 @@
1
- {"version":3,"file":"RadioButton.js","sourceRoot":"","sources":["../../../../src/components/atoms/RadioButton/RadioButton.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,EAAC,OAAO,EAAC,MAAM,OAAO,CAAC;AACrC,OAAO,EAAC,UAAU,EAAE,gBAAgB,EAAE,IAAI,EAAC,MAAM,cAAc,CAAC;AAChE,OAAO,EAAC,IAAI,EAAC,MAAM,aAAa,CAAC;AACjC,OAAO,EAAc,aAAa,EAAC,MAAM,gBAAgB,CAAC;AAE1D,MAAM,YAAY,GAAG,EAAE,CAAC;AAExB,MAAM,WAAW,GAAG,CAAC,EACnB,KAAK,EACL,OAAO,EACP,QAAQ,EACR,KAAK,EACL,IAAI,GAAG,YAAY,EACnB,QAAQ,GAAG,KAAK,GAQjB,EAAE,EAAE;IACH,MAAM,MAAM,GAAG,aAAa,EAAE,CAAC;IAE/B,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;IAEtE,OAAO,CACL,CAAC,gBAAgB,CACf,OAAO,CAAC,CAAC,OAAO,CAAC,CACjB,QAAQ,CAAC,CAAC,QAAQ,CAAC,CACnB,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CACxE;MAAA,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAC5B;QAAA,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,EAAG,CAAC,CAAC,CAAC,IAAI,CACtD;MAAA,EAAE,IAAI,CACN;MAAA,CAAC,IAAI,CACH,SAAS,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CACrE,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CACpB;QAAA,CAAC,KAAK,CACR;MAAA,EAAE,IAAI,CACR;IAAA,EAAE,gBAAgB,CAAC,CACpB,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,SAAS,GAAG,CAAC,MAAmB,EAAE,IAAY,EAAE,EAAE,CACtD,UAAU,CAAC,MAAM,CAAC;IAChB,SAAS,EAAE;QACT,aAAa,EAAE,KAAK;QACpB,UAAU,EAAE,QAAQ;QACpB,MAAM,EAAE,CAAC;QACT,IAAI,EAAE,CAAC;QACP,QAAQ,EAAE,GAAG;QACb,OAAO,EAAE,EAAE;KACZ;IACD,YAAY,EAAE;QACZ,eAAe,EAAE,MAAM,CAAC,eAAe;QACvC,WAAW,EAAE,MAAM,CAAC,cAAc,CAAC,UAAU;QAC7C,WAAW,EAAE,CAAC;QACd,YAAY,EAAE,CAAC;QACf,SAAS,EAAE,CAAC;QACZ,aAAa,EAAE,GAAG;QAClB,WAAW,EAAE,MAAM,CAAC,cAAc,CAAC,UAAU;QAC7C,YAAY,EAAE,EAAC,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAC;KACpC;IACD,SAAS,EAAE;QACT,UAAU,EAAE,QAAQ;QACpB,cAAc,EAAE,QAAQ;QACxB,MAAM,EAAE,IAAI;QACZ,KAAK,EAAE,IAAI;QACX,YAAY,EAAE,IAAI;QAClB,WAAW,EAAE,CAAC;QACd,WAAW,EAAE,MAAM,CAAC,cAAc,CAAC,UAAU;QAC7C,eAAe,EAAE,MAAM,CAAC,eAAe;KACxC;IACD,SAAS,EAAE;QACT,MAAM,EAAE,IAAI,GAAG,GAAG;QAClB,KAAK,EAAE,IAAI,GAAG,GAAG;QACjB,YAAY,EAAE,IAAI,GAAG,GAAG;QACxB,eAAe,EAAE,MAAM,CAAC,YAAY,CAAC,UAAU;KAChD;IACD,KAAK,EAAE;QACL,UAAU,EAAE,CAAC;KACd;CACF,CAAC,CAAC;AAEL,eAAe,WAAW,CAAC"}
1
+ {"version":3,"file":"RadioButton.js","sourceRoot":"","sources":["../../../../src/components/atoms/RadioButton/RadioButton.tsx"],"names":[],"mappings":"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"}