@jescon-technologies/react-native-ui-kit 0.0.4 → 0.0.5

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 (177) hide show
  1. package/index.d.ts +66 -0
  2. package/index.js +0 -4
  3. package/package.json +3 -2
  4. package/src/Alerts/AAlert.js +3 -3
  5. package/src/Alerts/AAlertIOS.js +3 -3
  6. package/src/{common → Common}/NetworkServiceCall.js +1 -1
  7. package/src/CommonStyle/CommonTheme.js +11 -0
  8. package/src/CommonStyle/ComponentFunctions.js +632 -0
  9. package/src/CommonStyle/PopupStyle.js +146 -0
  10. package/src/CommonStyle/commonStyle.js +93 -0
  11. package/src/CommonStyle/componentStyle.js +545 -0
  12. package/src/CommonStyle/optionListStyles.js +175 -0
  13. package/src/Components/ByProductPage.js +200 -0
  14. package/src/Components/CDropDownListNew.js +153 -0
  15. package/src/Components/CSupplierList.js +88 -0
  16. package/src/Components/CVerificationCard.js +2822 -0
  17. package/src/Components/CustomButton.js +67 -0
  18. package/src/Components/CustomCard.js +127 -0
  19. package/src/Components/CustomTextInput.js +47 -0
  20. package/src/Components/EquipmentPage.js +313 -0
  21. package/src/Components/FilterInput.Copy.js +723 -0
  22. package/src/Components/FilterInput.js +569 -0
  23. package/src/Components/HSubHeading.js +68 -0
  24. package/src/Components/HeaderCard.js +40 -0
  25. package/src/Components/MoreOptionsScreen.js +251 -0
  26. package/src/Components/NonSwipableProductCard.js +226 -0
  27. package/src/Components/NonSwipableSupplierCard.js +348 -0
  28. package/src/Components/ProductCard.js +1336 -0
  29. package/src/Components/QualityProductCard.js +1059 -0
  30. package/src/Components/RateProductCard.js +1452 -0
  31. package/src/Components/RawMaterial.js +261 -0
  32. package/src/Components/SDropDownEdited.js +549 -0
  33. package/src/Components/SDropDownNew.js +529 -0
  34. package/src/Components/SHelpDescription.js +147 -0
  35. package/src/Components/STextInputNew.js +510 -0
  36. package/src/Components/SearchProductCard.js +470 -0
  37. package/src/Components/StageByProduct.js +199 -0
  38. package/src/Components/SupplierCard.js +243 -0
  39. package/src/Components/SupplierInvoiceCard.js +405 -0
  40. package/src/Components/SwipableSupplierCard.js +136 -0
  41. package/src/Components/TagTemplate.js +74 -0
  42. package/src/Components/WrappedComponent.js +25 -0
  43. package/src/Custom/CBooking.js +944 -0
  44. package/src/Custom/CBookingPostpone.js +1822 -0
  45. package/src/Custom/CCalendar.js +560 -0
  46. package/src/Custom/CCard.js +880 -0
  47. package/src/Custom/CDetailCard.js +205 -0
  48. package/src/Custom/CHelpImage.js +52 -0
  49. package/src/Custom/CReport.js +569 -0
  50. package/src/Custom/CScrollView.js +73 -0
  51. package/src/Custom/CSignature.js +112 -0
  52. package/src/Custom/CSliderMenu.js +339 -0
  53. package/src/Custom/CSupplierCard.js +99 -0
  54. package/src/Custom/CTemplateCard.js +438 -0
  55. package/src/Custom/CTokenAllocation.js +1402 -0
  56. package/src/Custom/CTokenListOverlay.js +122 -0
  57. package/src/Custom/CWardStatus.js +444 -0
  58. package/src/Custom/Charts/CBarChart.js +218 -0
  59. package/src/Custom/Charts/CDashBoardList.js +133 -0
  60. package/src/Custom/Charts/CDashBoardTable.js +172 -0
  61. package/src/Custom/Charts/CLineChart.js +193 -0
  62. package/src/Custom/Charts/CPieChart.js +186 -0
  63. package/src/Custom/Loader.js +182 -0
  64. package/src/Custom/OUserView.js +1121 -0
  65. package/src/Custom/PreviewDosage.js +115 -0
  66. package/src/Custom/SearchLoader.js +32 -0
  67. package/src/Custom/TableComponent/CActivityTable.js +707 -0
  68. package/src/Custom/TableComponent/CMoreButtonTable.js +197 -0
  69. package/src/Custom/TableComponent/CTable.js +185 -0
  70. package/src/Custom/TableComponent/CTextBody.js +40 -0
  71. package/src/Custom/TableComponent/CTextHeader.js +17 -0
  72. package/src/Custom/TableComponent/PreviewPrescriptionNew.js +1011 -0
  73. package/src/Custom/TableComponent/SDropdownTable.js +491 -0
  74. package/src/Custom/TableComponent/TagTable.js +1200 -0
  75. package/src/CustomComponents/CAddColumn.js +140 -0
  76. package/src/CustomComponents/CAssessmentDelete.js +307 -0
  77. package/src/CustomComponents/CAwesomeButton.js +83 -0
  78. package/src/CustomComponents/CAwesomeMoreButton.js +54 -0
  79. package/src/CustomComponents/CBackHandler.js +273 -0
  80. package/src/CustomComponents/CCalendar.js +243 -0
  81. package/src/CustomComponents/CCommentOverlay.js +202 -0
  82. package/src/CustomComponents/CComments.js +162 -0
  83. package/src/CustomComponents/CContainerView.js +24 -0
  84. package/src/CustomComponents/CCustomTextInput.js +336 -0
  85. package/src/CustomComponents/CDetailView.js +40 -0
  86. package/src/CustomComponents/CDropDownList.js +153 -0
  87. package/src/CustomComponents/CDropdownSelect.js +555 -0
  88. package/src/CustomComponents/CFooterView.js +42 -0
  89. package/src/CustomComponents/CImagePickerSave.js +316 -0
  90. package/src/CustomComponents/CModalOverlay.js +91 -0
  91. package/src/CustomComponents/CNetworkStatus.js +327 -0
  92. package/src/CustomComponents/CNotesInstructions.js +1000 -0
  93. package/src/CustomComponents/COverlay.js +81 -0
  94. package/src/CustomComponents/CRemarks.js +176 -0
  95. package/src/CustomComponents/CRowAdd.js +143 -0
  96. package/src/CustomComponents/CSummaryDropDown.js +327 -0
  97. package/src/CustomComponents/CText.js +9 -0
  98. package/src/CustomComponents/CVectorIcon.js +34 -0
  99. package/src/CustomComponents/HtmlContentViewer.js +65 -0
  100. package/src/CustomComponents/PdfContentViewer.js +90 -0
  101. package/src/CustomComponents/SDropDownDosage.js +1087 -0
  102. package/src/CustomComponents/SwipableProductCard.js +246 -0
  103. package/src/CustomComponents/SwipableProductImageCard.js +254 -0
  104. package/src/CustomComponents/WorkOrderDetails.js +1216 -0
  105. package/src/CustomComponents/WorkOrderDetailsPage.js +1213 -0
  106. package/src/HOC/ConfirmOverlay.js +2 -2
  107. package/src/HOC/HMoreButton.js +1 -1
  108. package/src/HOC/HNatureHeading.js +1 -1
  109. package/src/HOC/HShadowButton.js +1 -1
  110. package/src/HOC/HShadowCountButton.js +1 -1
  111. package/src/Json/Chart.json +818 -0
  112. package/src/Json/Consultation.json +622 -0
  113. package/src/Json/CreditBill.json +490 -0
  114. package/src/Json/Dropdown.json +216 -0
  115. package/src/Json/DropdownConsultation.json +228 -0
  116. package/src/Json/DynamicReports.json +623 -0
  117. package/src/Json/Footer.json +79 -0
  118. package/src/Media/AudioScreen.js +2 -7
  119. package/src/Media/CCaptureImageWithoutEdit.js +1 -1
  120. package/src/Media/CImageGallery.js +2 -2
  121. package/src/Media/CSingleImage.js +2 -2
  122. package/src/Media/CVideoPlay.js +1 -1
  123. package/src/Media/DocumentScreen.js +2 -7
  124. package/src/Media/DrawingScreen.js +2 -6
  125. package/src/Media/ImageScreen.js +2 -6
  126. package/src/Media/VideoScreen.js +2 -7
  127. package/src/Navigation/PageNavigation.js +224 -0
  128. package/src/Navigation/useFocusEffect.js +2 -0
  129. package/src/Navigation/useFocusEffect.native.js +1 -0
  130. package/src/Navigation/useFocusEffect.web.js +1 -0
  131. package/src/Navigation/useIsFocused.js +1 -0
  132. package/src/Navigation/useIsFocused.native.js +1 -0
  133. package/src/Navigation/useIsFocused.web.js +1 -0
  134. package/src/Navigation/useNavigation.js +2 -0
  135. package/src/Navigation/useNavigation.native.js +1 -0
  136. package/src/Navigation/useNavigation.web.js +1 -0
  137. package/src/Screens/CMedications.js +528 -0
  138. package/src/Screens/CWebViewGallery.js +203 -0
  139. package/src/Screens/ChartScan.js +279 -0
  140. package/src/Screens/ChartScreenNew.js +1579 -0
  141. package/src/Screens/Consultation.js +1500 -0
  142. package/src/Screens/Dashboard.js +778 -0
  143. package/src/Screens/FileExplorer.js +288 -0
  144. package/src/Screens/Footer.js +340 -0
  145. package/src/Screens/ForgotPassword.js +288 -0
  146. package/src/Screens/HeaderBlock.js +353 -0
  147. package/src/Screens/Login.js +328 -0
  148. package/src/Screens/Notification.js +149 -0
  149. package/src/Screens/OcrScreen.js +20 -0
  150. package/src/Screens/PdfPreview.js +507 -0
  151. package/src/Screens/RegistrationDetails.js +467 -0
  152. package/src/Screens/SearchScreen.js +582 -0
  153. package/src/Screens/Splash.js +788 -0
  154. package/src/Screens/SwipeLeftView.js +1867 -0
  155. package/src/StaticComponents/SDatePickerLabel.js +1 -1
  156. package/src/StaticComponents/SDatePickerNew.js +1 -1
  157. package/src/StaticComponents/SDateTimePickerNew.js +2 -2
  158. package/src/StaticComponents/SDropDownGenerate.js +3 -3
  159. package/src/StaticComponents/SDropDownHoc.js +4 -4
  160. package/src/StaticComponents/SDropDownIcon.js +1 -1
  161. package/src/StaticComponents/SMenuBox.js +2 -2
  162. package/src/StaticComponents/SSearch.js +2 -2
  163. package/src/StaticComponents/STextInput.js +1 -1
  164. package/src/StaticComponents/STimePicker.js +1 -1
  165. package/src/StaticComponents/STimingDropDownNew.js +2 -6
  166. package/src/StaticComponents/STimingSwitch.js +1 -1
  167. package/src/layout/CContainerView.js +1 -1
  168. package/src/layout/CDetailView.js +3 -3
  169. package/src/layout/HeaderBlock.js +5 -5
  170. package/src/layout/INVLoginLayout.js +3 -4
  171. package/src/layout/Loader.js +2 -2
  172. package/src/HOC/HAbsolute.js +0 -56
  173. package/src/HOC/HDiscontinue.js +0 -105
  174. package/src/HOC/HOverlay.js +0 -99
  175. package/src/layout/FooterBlock.js +0 -821
  176. /package/src/{common → Common}/ErrorBoundary.tsx +0 -0
  177. /package/src/{common → Common}/Icons.js +0 -0
@@ -0,0 +1,723 @@
1
+ import { View, Text, TextInput, StyleSheet, TouchableOpacity } from 'react-native';
2
+ import React, { useContext, useRef, useState } from 'react';
3
+ import { Icons } from '@jescon-technologies/react-native-ui-kit';;
4
+ import DateTimePicker from '@react-native-community/datetimepicker';
5
+ import { Menu, MenuTrigger, MenuOptions, MenuOption } from 'react-native-popup-menu';
6
+ import moment from 'moment';
7
+ import { normalize } from '../CommonStyle/componentStyle';
8
+ import CDropDownList from '../CustomComponents/CDropDownList';
9
+ import ContextBio from '../ContextAPI/ContextBio';
10
+
11
+ const FilterInput = ({
12
+ label,
13
+ inputValue,
14
+ onChangeText,
15
+ btnBackgroundColor,
16
+ iconName,
17
+ iconSize,
18
+ iconColor,
19
+ btnBorderColor,
20
+ type,
21
+ selected,
22
+ onSelect,
23
+ addTextOperators,
24
+ addOptionsUpdate,
25
+ addOperatorsUpdate }) => {
26
+
27
+ const { invoiceData, setInvoiceData } = useContext(ContextBio);
28
+
29
+ const [isEditable, setIsEditable] = useState(false);
30
+ const [numberOperator, setNumberOperator] = useState(0);
31
+ const [dateOperator, setDateOperator] = useState(0);
32
+ const [textOperator, setTextOperator] = useState(0);
33
+ const [textInput, setTextInput] = useState('');
34
+ const [firstNumber, setFirstNumber] = useState(0);
35
+ const [secondNumber, setSecondNumber] = useState(0);
36
+ const [date, setDate] = useState(new Date());
37
+ const [secondDate, setSecondDate] = useState(new Date());
38
+ const [dateVisibility, setDateVisibility] = useState(false);
39
+ const [secondDateVisibility, setSecondDateVisibility] = useState(false);
40
+ const [option, setOption] = useState('');
41
+ const inputRef = useRef(null);
42
+ const secondNumberRef = useRef(null);
43
+ const menuRef = useRef(null);
44
+ const menuInputRef = useRef(null);
45
+
46
+ // const textOperators = {
47
+ // data: {
48
+ // data: [
49
+ // { "datavalue": 1, "icon": '', "displayvalue": "Exact", "value": 1, "selected": false },
50
+ // { "datavalue": 2, "icon": '', "displayvalue": "Like", "value": 2, "selected": false },
51
+ // { "datavalue": 3, "icon": '', "displayvalue": "Middle", "value": 3, "selected": false },
52
+ // { "datavalue": 4, "icon": '', "displayvalue": "Last", "value": 4, "selected": false },
53
+ // ]
54
+ // }
55
+ // };
56
+
57
+ const textOperators = [
58
+ { 'datavalue': 1, 'icon': '', 'displayvalue': 'Exact', 'value': 1, 'selected': false },
59
+ { 'datavalue': 2, 'icon': '', 'displayvalue': 'Like', 'value': 2, 'selected': false },
60
+ { 'datavalue': 3, 'icon': '', 'displayvalue': 'Middle', 'value': 3, 'selected': false },
61
+ { 'datavalue': 4, 'icon': '', 'displayvalue': 'Last', 'value': 4, 'selected': false },
62
+ ];
63
+
64
+ // const genderLabels = {
65
+ // data: {
66
+ // data: [
67
+ // { "datavalue": 1, "icon": '', "displayvalue": "Male", "value": 1, "selected": false },
68
+ // { "datavalue": 2, "icon": '', "displayvalue": "Female", "value": 2, "selected": false }
69
+ // ]
70
+ // }
71
+ // };
72
+
73
+ const genderLabels = [
74
+ { 'datavalue': 'M', 'icon': '', 'displayvalue': 'Male', 'value': 'M', 'selected': false },
75
+ { 'datavalue': 'F', 'icon': '', 'displayvalue': 'Female', 'value': 'F', 'selected': false },
76
+ ];
77
+
78
+ // const checkingOperators = {
79
+ // data: {
80
+ // data: [
81
+ // { "datavalue": 1, "icon": '', "displayvalue": "Exact", "value": 1, "selected": false },
82
+ // { "datavalue": 2, "icon": '', "displayvalue": "Less Than", "value": 2, "selected": false },
83
+ // { "datavalue": 3, "icon": '', "displayvalue": "Greater Than", "value": 3, "selected": false },
84
+ // { "datavalue": 4, "icon": '', "displayvalue": "Less Than or Equal to", "value": 4, "selected": false },
85
+ // { "datavalue": 5, "icon": '', "displayvalue": "Greater Than or Equal to", "value": 5, "selected": false },
86
+ // { "datavalue": 6, "icon": '', "displayvalue": "Between", "value": 6, "selected": false },
87
+ // ]
88
+ // }
89
+ // };
90
+
91
+ const checkingOperators = [
92
+ { 'datavalue': 1, 'icon': '', 'displayvalue': 'Exact', 'value': 1, 'selected': false },
93
+ { 'datavalue': 5, 'icon': '', 'displayvalue': 'Less Than', 'value': 5, 'selected': false },
94
+ { 'datavalue': 7, 'icon': '', 'displayvalue': 'Greater Than', 'value': 7, 'selected': false },
95
+ { 'datavalue': 8, 'icon': '', 'displayvalue': 'Less Than or Equal to', 'value': 8, 'selected': false },
96
+ { 'datavalue': 9, 'icon': '', 'displayvalue': 'Greater Than or Equal to', 'value': 9, 'selected': false },
97
+ { 'datavalue': 6, 'icon': '', 'displayvalue': 'Between', 'value': 6, 'selected': false },
98
+ ];
99
+
100
+ const menuOpen = () => {
101
+ menuRef.current.open();
102
+ };
103
+
104
+ const menuClose = () => {
105
+ menuRef.current.close();
106
+ };
107
+
108
+ const handleOpenMenu = () => {
109
+ onSelect();
110
+ setTimeout(() => {
111
+ menuInputRef.current?.focus();
112
+ }, 300);
113
+ };
114
+
115
+ const handleButtonClick = () => {
116
+ if (type === 'date') {
117
+ setDateVisibility(true);
118
+ } else if (type === 'number') {
119
+ // setIsEditable(true);
120
+ inputRef.current?.focus();
121
+ } else if (type !== 'select') {
122
+ // setIsEditable(true);
123
+ inputRef.current?.focus();
124
+ menuOpen();
125
+ } else if (type === 'select') {
126
+ menuOpen();
127
+ }
128
+ onSelect();
129
+ };
130
+
131
+ const handleNumberOperatorClick = (value) => {
132
+ setNumberOperator(value);
133
+ handleInputChange(firstNumber, secondNumber, value);
134
+ if (value === 6) {
135
+ setTimeout(() => {
136
+ secondNumberRef.current?.focus();
137
+ }, 300);
138
+ }
139
+ };
140
+
141
+ const handleTextInputChange = (text, operator) => {
142
+ const textInput = {
143
+ firstValue: text,
144
+ operator: operator,
145
+ };
146
+ onChangeText(textInput);
147
+ setTextOperator(0);
148
+ };
149
+
150
+ const handleDateChange = (event, selectedDate) => {
151
+ const currentDate = selectedDate || date;
152
+ setDateVisibility(false);
153
+ setDate(currentDate);
154
+ handleDateInputChange(currentDate, secondDate, dateOperator);
155
+ };
156
+
157
+ const handleSecondDateChange = (event, selectedDate) => {
158
+ const currentDate = selectedDate || secondDate;
159
+ setSecondDateVisibility(false);
160
+ setSecondDate(currentDate);
161
+ handleDateInputChange(date, currentDate, dateOperator);
162
+ };
163
+
164
+ const handleDateOperatorClick = (value) => {
165
+ setDateOperator(value);
166
+ handleDateInputChange(date, secondDate, value);
167
+ if (value === 6) {
168
+ setSecondDateVisibility(true);
169
+ }
170
+ };
171
+
172
+ const getValues = (firstValue, secondValue, operator) => {
173
+ if (operator === 6) {
174
+ return { firstValue, operator, secondValue };
175
+ }
176
+ return { firstValue, operator, secondValue };
177
+ };
178
+
179
+ const handleInputChange = (firstValue, secondValue, operator) => {
180
+ const numberArray = getValues(firstValue, secondValue, operator);
181
+ onChangeText(numberArray);
182
+ };
183
+
184
+ const handleDateInputChange = (firstValue, secondValue, operator) => {
185
+ const dateArray = getValues(firstValue, secondValue, operator);
186
+ onChangeText(dateArray);
187
+ };
188
+
189
+ // const handleOpenDropdown = async () => {
190
+ // if (options.length === 0) {
191
+ // await selectOptionsApi();
192
+ // }
193
+ // };
194
+
195
+ // const handleOperatorsDropdown = async () => {
196
+ // if (operators.length === 0) {
197
+ // await operatorsApi();
198
+ // }
199
+ // };
200
+
201
+ // const handleTextOperatorsDropDown = async () => {
202
+ // if (operators.length === 0) {
203
+ // await textOperatorsApi();
204
+ // }
205
+ // }
206
+
207
+ const handleSelectChange = (value) => {
208
+ const data = {
209
+ firstValue: value,
210
+ };
211
+ onChangeText(data);
212
+ };
213
+
214
+ const renderInputField = () => {
215
+ switch (type) {
216
+ case 'text':
217
+ return (
218
+ <View style={{ flexDirection: 'row', alignItems: 'center' }}>
219
+ <Menu ref={menuRef} onOpen={handleOpenMenu}>
220
+ <MenuTrigger>
221
+ <View style={styles.input}>
222
+ <Text style={{ paddingVertical: 10, color: 'gray' }}>{inputValue.firstValue || label}</Text>
223
+ </View>
224
+ </MenuTrigger>
225
+ <MenuOptions>
226
+ <View style={{ width: '100%', padding: 10 }}>
227
+ <TextInput
228
+ ref={menuInputRef}
229
+ style={[styles.menuInput]}
230
+ placeholder={label}
231
+ placeholderTextColor="gray"
232
+ onChangeText={(value) => {
233
+ setTextInput(value);
234
+ handleTextInputChange(value, textOperator);
235
+ setInvoiceData(prevState => ({
236
+ ...prevState,
237
+ EditStatus: true,
238
+ }));
239
+
240
+ }}
241
+ value={inputValue.firstValue}
242
+ onSubmitEditing={menuClose}
243
+ />
244
+ </View>
245
+ </MenuOptions>
246
+ </Menu>
247
+ {/* <TouchableOpacity
248
+ onPress={handleTextOperatorsDropDown}>
249
+ <Picker
250
+ selectedValue={textOperator}
251
+ onValueChange={(value) => {
252
+ setTextOperator(value);
253
+ handleTextInputChange(textInput, value);
254
+ }}
255
+ style={styles.operatorPicker}
256
+ >
257
+ {operators.map((operator, index) => (
258
+ <Picker.Item key={operator?.label + index} label={operator?.label} value={operator?.value} />
259
+ ))}
260
+ </Picker>
261
+ </TouchableOpacity> */}
262
+ <Menu>
263
+ <MenuTrigger
264
+ customStyles={{
265
+ triggerWrapper: {
266
+ borderWidth: 0,
267
+ width: normalize(25),
268
+ justifyContent: 'center',
269
+ alignItems: 'center',
270
+ // height: '100%'
271
+ },
272
+ }}
273
+ >
274
+ <Icons.FontAwesome5 name="chevron-down" size={14} color="gray" />
275
+ </MenuTrigger>
276
+ <MenuOptions>
277
+ <CDropDownList
278
+ dropdownarray={textOperators}
279
+ callback={(val) => {
280
+ addTextOperators(val);
281
+ setTextOperator(val.datavalue);
282
+ handleTextInputChange(textInput, val.datavalue);
283
+ setInvoiceData(prevState => ({
284
+ ...prevState,
285
+ EditStatus: true,
286
+ }));
287
+ }}
288
+ />
289
+ </MenuOptions>
290
+ </Menu>
291
+ </View>
292
+ );
293
+ case 'mobile':
294
+ return (
295
+ <View style={{ flexDirection: 'row', alignItems: 'center' }}>
296
+ <Menu ref={menuRef} onOpen={handleOpenMenu}>
297
+ <MenuTrigger>
298
+ <View style={styles.input}>
299
+ <Text style={{ paddingVertical: 10, color: 'gray' }}>{inputValue.firstValue || label}</Text>
300
+ </View>
301
+ </MenuTrigger>
302
+ <MenuOptions>
303
+ <View style={{ width: '100%', padding: 10 }}>
304
+ <TextInput
305
+ ref={menuInputRef}
306
+ style={styles.menuInput}
307
+ placeholder={label}
308
+ placeholderTextColor="gray"
309
+ onChangeText={(value) => {
310
+ setTextInput(value);
311
+ handleTextInputChange(value, textOperator);
312
+ setInvoiceData(prevState => ({
313
+ ...prevState,
314
+ EditStatus: true,
315
+ }));
316
+ }}
317
+ value={inputValue.firstValue}
318
+ keyboardType={type === 'mobile' ? 'phone-pad' : 'default'}
319
+ onSubmitEditing={menuClose}
320
+ />
321
+ </View>
322
+ </MenuOptions>
323
+ </Menu>
324
+ {/* <TouchableOpacity
325
+ onPress={handleTextOperatorsDropDown}>
326
+ <Picker
327
+ selectedValue={textOperator}
328
+ onValueChange={(value) => {
329
+ setTextOperator(value);
330
+ handleTextInputChange(textInput, value);
331
+ }}
332
+ style={styles.operatorPicker}
333
+ >
334
+ {operators.map((operator, index) => (
335
+ <Picker.Item key={operator?.label + index} label={operator?.label} value={operator?.value} />
336
+ ))}
337
+ </Picker>
338
+ </TouchableOpacity> */}
339
+ <Menu>
340
+ <MenuTrigger
341
+ customStyles={{
342
+ triggerWrapper: {
343
+ borderWidth: 0,
344
+ width: normalize(25),
345
+ justifyContent: 'center',
346
+ alignItems: 'center',
347
+ // height: '100%'
348
+ },
349
+ }}
350
+ >
351
+ <Icons.FontAwesome5 name="chevron-down" size={14} color="gray" />
352
+ </MenuTrigger>
353
+ <MenuOptions>
354
+ {/* {operators.map((operator, index) => (
355
+ <MenuOption
356
+ key={operators?.label + index}
357
+ onSelect={() => {
358
+ setTextOperator(operator?.value);
359
+ handleTextInputChange('', operator?.value);
360
+ }}
361
+ >
362
+ <Text>{operator?.label}</Text>
363
+ </MenuOption>
364
+ ))} */}
365
+ <CDropDownList
366
+ dropdownarray={textOperators}
367
+ // callback={val => val == undefined ? null : (fnFilesFunction(val))}
368
+ callback={(val) => {
369
+ addTextOperators(val);
370
+ setTextOperator(val.datavalue);
371
+ handleTextInputChange(textInput, val.datavalue);
372
+ setInvoiceData(prevState => ({
373
+ ...prevState,
374
+ EditStatus: true,
375
+ }));
376
+ }}
377
+ />
378
+ </MenuOptions>
379
+ </Menu>
380
+ </View>
381
+ );
382
+ case 'number':
383
+ return (
384
+ <View style={[styles.inputContainer, { marginTop: 0 }]}>
385
+ {/* First age */}
386
+ <View>
387
+ <TextInput
388
+ ref={inputRef}
389
+ style={styles.ageInput}
390
+ placeholder={label}
391
+ keyboardType="numeric"
392
+ value={firstNumber}
393
+ placeholderTextColor="gray"
394
+ onChangeText={(value) => {
395
+ setFirstNumber(value);
396
+ handleInputChange(value, secondNumber, numberOperator);
397
+ onSelect();
398
+ setInvoiceData(prevState => ({
399
+ ...prevState,
400
+ EditStatus: true,
401
+ }));
402
+ }}
403
+ />
404
+ </View>
405
+ {/* Operator */}
406
+ {/* <TouchableOpacity onPress={handleOperatorsDropdown}>
407
+ <Picker
408
+ selectedValue={numberOperator}
409
+ onValueChange={(value) => handleNumberOperatorClick(value)}
410
+ style={styles.operatorPicker}
411
+ >
412
+ {operators.map((operator, index) => (
413
+ <Picker.Item key={operator?.label + index} label={operator?.label} value={operator?.value} />
414
+ ))}
415
+ </Picker>
416
+ </TouchableOpacity> */}
417
+ <Menu>
418
+ <MenuTrigger
419
+ customStyles={{
420
+ triggerWrapper: {
421
+ borderWidth: 0,
422
+ width: normalize(25),
423
+ justifyContent: 'center',
424
+ alignItems: 'center',
425
+ // height: '100%'
426
+ },
427
+ }}
428
+ >
429
+ <Icons.FontAwesome5 name="chevron-down" size={14} color="gray" />
430
+ </MenuTrigger>
431
+ <MenuOptions>
432
+ <CDropDownList
433
+ dropdownarray={checkingOperators}
434
+ callback={(val) => {
435
+ addOperatorsUpdate(val);
436
+ handleNumberOperatorClick(val.datavalue);
437
+ setInvoiceData(prevState => ({
438
+ ...prevState,
439
+ EditStatus: true,
440
+ }));
441
+ }}
442
+ />
443
+ </MenuOptions>
444
+ </Menu>
445
+ {/* Second age */}
446
+ {
447
+ numberOperator === 6 && <View>
448
+ <TextInput
449
+ ref={secondNumberRef}
450
+ style={styles.ageInput}
451
+ placeholder={label}
452
+ keyboardType="numeric"
453
+ value={secondNumber}
454
+ placeholderTextColor="gray"
455
+ onChangeText={(value) => {
456
+ setSecondNumber(value);
457
+ handleInputChange(firstNumber, value, numberOperator);
458
+ }}
459
+ />
460
+ </View>
461
+ }
462
+ </View>
463
+ );
464
+ case 'select':
465
+ return (
466
+ // <TouchableOpacity style={[styles.input, { justifyContent: 'center', paddingHorizontal: 0, width: 115 }]}
467
+ // onPress={handleOpenDropdown}>
468
+ // <Picker
469
+ // selectedValue={inputValue}
470
+ // onValueChange={onChangeText}
471
+ // style={{ width: '100%' }}
472
+ // >
473
+ // {options.map((option, index) => (
474
+ // <Picker.Item key={option?.label + index} label={option?.label} value={option?.value} />
475
+ // ))}
476
+ // </Picker>
477
+ // </TouchableOpacity>
478
+ <View style={[styles.input, { alignItems: 'center', width: 115, flexDirection: 'row', justifyContent: 'space-between' }]}>
479
+ <Text style={{ color: 'gray' }}>{option ? option : 'Select'}</Text>
480
+ <Menu ref={menuRef}>
481
+ <MenuTrigger
482
+ customStyles={{
483
+ triggerWrapper: {
484
+ borderWidth: 0,
485
+ width: normalize(25),
486
+ justifyContent: 'center',
487
+ alignItems: 'center',
488
+ // height: '100%'
489
+ },
490
+ }}
491
+ >
492
+ <Icons.FontAwesome5 name="chevron-down" size={14} color="gray" />
493
+ </MenuTrigger>
494
+ <MenuOptions>
495
+ <CDropDownList
496
+ dropdownarray={genderLabels}
497
+ callback={(val) => {
498
+ handleSelectChange(val.value);
499
+ addOptionsUpdate(val);
500
+ setOption(val.displayvalue);
501
+ onSelect();
502
+ setInvoiceData(prevState => ({
503
+ ...prevState,
504
+ EditStatus: true,
505
+ }));
506
+ }}
507
+ />
508
+ </MenuOptions>
509
+ </Menu>
510
+ </View>
511
+ );
512
+ case 'date':
513
+ return (
514
+ <View style={{ flexDirection: 'row', alignItems: 'center' }}>
515
+ {/* Date Input */}
516
+ <TouchableOpacity onPress={() => {
517
+ setDateVisibility(true);
518
+ onSelect();
519
+ setInvoiceData(prevState => ({
520
+ ...prevState,
521
+ EditStatus: true,
522
+ }));
523
+ }}>
524
+ <TextInput
525
+ style={styles.dateInput}
526
+ placeholder={label}
527
+ placeholderTextColor="gray"
528
+ value={moment(date).format('DD-MM-YYYY')}
529
+ editable={false}
530
+ />
531
+ </TouchableOpacity>
532
+ {/* Date Picker */}
533
+ {dateVisibility && (
534
+ <DateTimePicker
535
+ value={date}
536
+ mode="date"
537
+ display="default"
538
+ onChange={handleDateChange}
539
+ />
540
+ )}
541
+ {/* <TouchableOpacity
542
+ onPress={handleOperatorsDropdown}>
543
+ <Picker
544
+ selectedValue={dateOperator}
545
+ onValueChange={handleDateOperatorClick}
546
+ style={styles.operatorPicker}
547
+ >
548
+ {operators.map((operator, index) => (
549
+ <Picker.Item key={operator?.label + index} label={operator?.label} value={operator?.value} />
550
+ ))}
551
+ </Picker>
552
+ </TouchableOpacity> */}
553
+
554
+ <Menu>
555
+ <MenuTrigger
556
+ customStyles={{
557
+ triggerWrapper: {
558
+ borderWidth: 0,
559
+ width: normalize(25),
560
+ justifyContent: 'center',
561
+ alignItems: 'center',
562
+ // height: '100%'
563
+ },
564
+ }}
565
+ >
566
+ <Icons.FontAwesome5 name="chevron-down" size={14} color="gray" />
567
+ </MenuTrigger>
568
+ <MenuOptions>
569
+ <CDropDownList
570
+ dropdownarray={checkingOperators}
571
+ // callback={val => val == undefined ? null : (fnFilesFunction(val))}
572
+ callback={(val) => {
573
+ addOperatorsUpdate(val);
574
+ handleDateOperatorClick(val.datavalue);
575
+ // handleTextInputChange(textInput, val.datavalue);
576
+ setInvoiceData(prevState => ({
577
+ ...prevState,
578
+ EditStatus: true,
579
+ }));
580
+ }}
581
+ />
582
+ </MenuOptions>
583
+ </Menu>
584
+
585
+
586
+ {/* Second Date Input for non-equal operators */}
587
+ {/* {dateOperator !== '=' && (
588
+ <TouchableOpacity onPress={() => setSecondDateVisibility(true)}>
589
+ <TextInput
590
+ style={styles.dateInput}
591
+ placeholder="Select second date"
592
+ value={secondDate.toISOString().split('T')[0]}
593
+ editable={false}
594
+ />
595
+ </TouchableOpacity>
596
+ )} */}
597
+ {/* Second Date Picker */}
598
+ {secondDateVisibility && (
599
+ <DateTimePicker
600
+ value={secondDate}
601
+ mode="date"
602
+ display="default"
603
+ onChange={handleSecondDateChange}
604
+ />
605
+ )}
606
+ </View>
607
+ );
608
+ default:
609
+ return null;
610
+ }
611
+ };
612
+
613
+ return (
614
+ <View style={styles.container}>
615
+ {/* Custom button */}
616
+ <TouchableOpacity onPress={handleButtonClick} style={[styles.button,
617
+ { backgroundColor: btnBackgroundColor ? btnBackgroundColor : '', borderColor: selected ? '#0288d1' : (btnBorderColor ? btnBorderColor : '#094485') }]}>
618
+ {/* Custom icon */}
619
+ <Icons.FontAwesome5
620
+ name={iconName != undefined ? iconName : 'file'}
621
+ size={iconSize != undefined ? iconSize : 14}
622
+ color={selected ? '#0288d1' : (iconColor != undefined ? iconColor : '#094485')}
623
+ />
624
+
625
+ <Text numberOfLines={1} style={[styles.buttonText, { color: selected ? '#0288d1' : '#094485' }]}>{label}</Text>
626
+ </TouchableOpacity>
627
+ {/* Input Box */}
628
+ <View style={styles.inputContainer}>
629
+ {renderInputField()}
630
+ </View>
631
+ </View>
632
+ );
633
+ };
634
+
635
+ const styles = StyleSheet.create({
636
+ container: {
637
+ marginVertical: normalize(5),
638
+ width: 115,
639
+ alignSelf: 'center',
640
+ height: 95,
641
+ marginHorizontal: 5,
642
+ },
643
+ button: {
644
+ // backgroundColor: '#0317ab',
645
+ paddingVertical: 5,
646
+ paddingHorizontal: 15,
647
+ borderRadius: 8,
648
+ alignItems: 'center',
649
+ borderWidth: 1,
650
+ borderColor: '#094485',
651
+ height: 50,
652
+ // shadowColor: '#000',
653
+ // shadowOffset: { width: 0, height: 2 },
654
+ // shadowOpacity: 0.2,
655
+ // shadowRadius: 4,
656
+ // elevation: 3,
657
+ },
658
+ buttonText: {
659
+ color: '#094485',
660
+ fontSize: 12,
661
+ fontWeight: '400',
662
+ },
663
+ inputContainer: {
664
+ flexDirection: 'row',
665
+ alignItems: 'center',
666
+ marginTop: normalize(5),
667
+ },
668
+ input: {
669
+ height: 40,
670
+ borderColor: '#ccc',
671
+ borderWidth: 1,
672
+ borderRadius: 8,
673
+ paddingHorizontal: 10,
674
+ width: 85,
675
+ // width: '100%',
676
+ backgroundColor: 'white',
677
+ // flex: 1,
678
+ justifyContent: 'center',
679
+ overflow: 'hidden',
680
+ },
681
+ menuInput: {
682
+ height: 40,
683
+ borderColor: '#ccc',
684
+ borderWidth: 1,
685
+ borderRadius: 8,
686
+ paddingHorizontal: 10,
687
+ // width: 85,
688
+ // width: '100%',
689
+ backgroundColor: 'white',
690
+ color: 'gray',
691
+ // flex: 1,
692
+ },
693
+ ageInput: {
694
+ height: 40,
695
+ borderColor: '#ccc',
696
+ borderWidth: 1,
697
+ borderRadius: 8,
698
+ paddingHorizontal: 8,
699
+ width: 40,
700
+ backgroundColor: 'white',
701
+ color: 'gray',
702
+ },
703
+ operatorPicker: {
704
+ height: 40,
705
+ width: 40,
706
+ },
707
+ dateInput: {
708
+ height: 40,
709
+ borderColor: '#ccc',
710
+ borderWidth: 1,
711
+ borderRadius: 8,
712
+ paddingHorizontal: 5,
713
+ width: 82,
714
+ color: 'gray',
715
+ // marginTop: 10,
716
+ // flex: 1,
717
+ },
718
+ selectedInput: {
719
+ borderColor: '#0288d1',
720
+ },
721
+ });
722
+
723
+ export default FilterInput;