@fovestta2/mobile-react-native 1.0.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.
- package/dist/components/FvCheckbox.d.ts +14 -0
- package/dist/components/FvCheckbox.d.ts.map +1 -0
- package/dist/components/FvCheckbox.js +73 -0
- package/dist/components/FvCheckbox.js.map +1 -0
- package/dist/components/FvDateField.d.ts +22 -0
- package/dist/components/FvDateField.d.ts.map +1 -0
- package/dist/components/FvDateField.js +117 -0
- package/dist/components/FvDateField.js.map +1 -0
- package/dist/components/FvDropdown.d.ts +25 -0
- package/dist/components/FvDropdown.d.ts.map +1 -0
- package/dist/components/FvDropdown.js +213 -0
- package/dist/components/FvDropdown.js.map +1 -0
- package/dist/components/FvEntryField.d.ts +21 -0
- package/dist/components/FvEntryField.d.ts.map +1 -0
- package/dist/components/FvEntryField.js +124 -0
- package/dist/components/FvEntryField.js.map +1 -0
- package/dist/components/FvFileSelector.d.ts +28 -0
- package/dist/components/FvFileSelector.d.ts.map +1 -0
- package/dist/components/FvFileSelector.js +205 -0
- package/dist/components/FvFileSelector.js.map +1 -0
- package/dist/components/FvImageSelector.d.ts +32 -0
- package/dist/components/FvImageSelector.d.ts.map +1 -0
- package/dist/components/FvImageSelector.js +268 -0
- package/dist/components/FvImageSelector.js.map +1 -0
- package/dist/components/FvMonthYearField.d.ts +22 -0
- package/dist/components/FvMonthYearField.d.ts.map +1 -0
- package/dist/components/FvMonthYearField.js +115 -0
- package/dist/components/FvMonthYearField.js.map +1 -0
- package/dist/components/FvNumberField.d.ts +23 -0
- package/dist/components/FvNumberField.d.ts.map +1 -0
- package/dist/components/FvNumberField.js +140 -0
- package/dist/components/FvNumberField.js.map +1 -0
- package/dist/components/FvRadioGroup.d.ts +20 -0
- package/dist/components/FvRadioGroup.d.ts.map +1 -0
- package/dist/components/FvRadioGroup.js +95 -0
- package/dist/components/FvRadioGroup.js.map +1 -0
- package/dist/components/FvRichTextEditor.d.ts +25 -0
- package/dist/components/FvRichTextEditor.d.ts.map +1 -0
- package/dist/components/FvRichTextEditor.js +246 -0
- package/dist/components/FvRichTextEditor.js.map +1 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +27 -0
- package/dist/index.js.map +1 -0
- package/package.json +36 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FvEntryField.js","sourceRoot":"","sources":["../../src/components/FvEntryField.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { ViewStyle, TextStyle } from "react-native";
|
|
3
|
+
import { ValidationSchema } from "@fovestta2/validation-engine";
|
|
4
|
+
export interface FileInfo {
|
|
5
|
+
uri: string;
|
|
6
|
+
name: string;
|
|
7
|
+
size: number;
|
|
8
|
+
mimeType: string;
|
|
9
|
+
}
|
|
10
|
+
export interface FvFileSelectorProps {
|
|
11
|
+
label?: string;
|
|
12
|
+
placeholder?: string;
|
|
13
|
+
value: FileInfo | null;
|
|
14
|
+
schema?: ValidationSchema;
|
|
15
|
+
disabled?: boolean;
|
|
16
|
+
accept?: string[];
|
|
17
|
+
maxSize?: number;
|
|
18
|
+
onChange: (file: FileInfo | null) => void;
|
|
19
|
+
onBlur?: () => void;
|
|
20
|
+
containerStyle?: ViewStyle;
|
|
21
|
+
buttonStyle?: ViewStyle;
|
|
22
|
+
buttonTextStyle?: TextStyle;
|
|
23
|
+
labelStyle?: TextStyle;
|
|
24
|
+
errorStyle?: TextStyle;
|
|
25
|
+
fileInfoStyle?: TextStyle;
|
|
26
|
+
}
|
|
27
|
+
export declare const FvFileSelector: React.FC<FvFileSelectorProps>;
|
|
28
|
+
//# sourceMappingURL=FvFileSelector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FvFileSelector.d.ts","sourceRoot":"","sources":["../../src/components/FvFileSelector.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AACnD,OAAO,EAMH,SAAS,EACT,SAAS,EACZ,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAa,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAE3E,MAAM,WAAW,QAAQ;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,mBAAmB;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,QAAQ,GAAG,IAAI,CAAC;IACvB,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,KAAK,IAAI,CAAC;IAC1C,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,cAAc,CAAC,EAAE,SAAS,CAAC;IAC3B,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,eAAe,CAAC,EAAE,SAAS,CAAC;IAC5B,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,aAAa,CAAC,EAAE,SAAS,CAAC;CAC7B;AAED,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,CAgJxD,CAAC"}
|
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.FvFileSelector = void 0;
|
|
27
|
+
const react_1 = __importStar(require("react"));
|
|
28
|
+
const react_native_1 = require("react-native");
|
|
29
|
+
const DocumentPicker = __importStar(require("expo-document-picker"));
|
|
30
|
+
const validation_engine_1 = require("@fovestta2/validation-engine");
|
|
31
|
+
const FvFileSelector = ({ label, placeholder = "Select a file", value, schema, disabled = false, accept = ["*/*"], maxSize, onChange, onBlur, containerStyle, buttonStyle, buttonTextStyle, labelStyle, errorStyle, fileInfoStyle, }) => {
|
|
32
|
+
const [errorMessage, setErrorMessage] = (0, react_1.useState)(null);
|
|
33
|
+
(0, react_1.useEffect)(() => {
|
|
34
|
+
if (schema) {
|
|
35
|
+
const result = validation_engine_1.Validator.validate(value, schema);
|
|
36
|
+
setErrorMessage(result.errorKey);
|
|
37
|
+
}
|
|
38
|
+
}, [value, schema]);
|
|
39
|
+
const handlePickDocument = async () => {
|
|
40
|
+
try {
|
|
41
|
+
const result = await DocumentPicker.getDocumentAsync({
|
|
42
|
+
type: accept,
|
|
43
|
+
copyToCacheDirectory: true,
|
|
44
|
+
});
|
|
45
|
+
if (result.canceled) {
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
const file = result.assets[0];
|
|
49
|
+
// Check file size if maxSize is specified
|
|
50
|
+
if (maxSize && file.size > maxSize) {
|
|
51
|
+
react_native_1.Alert.alert("File Too Large", `File size exceeds the maximum allowed size of ${formatFileSize(maxSize)}`);
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
const fileInfo = {
|
|
55
|
+
uri: file.uri,
|
|
56
|
+
name: file.name,
|
|
57
|
+
size: file.size,
|
|
58
|
+
mimeType: file.mimeType || "application/octet-stream",
|
|
59
|
+
};
|
|
60
|
+
onChange(fileInfo);
|
|
61
|
+
onBlur?.();
|
|
62
|
+
}
|
|
63
|
+
catch (error) {
|
|
64
|
+
console.error("Error picking document:", error);
|
|
65
|
+
react_native_1.Alert.alert("Error", "Failed to pick document");
|
|
66
|
+
}
|
|
67
|
+
};
|
|
68
|
+
const handleRemoveFile = () => {
|
|
69
|
+
onChange(null);
|
|
70
|
+
onBlur?.();
|
|
71
|
+
};
|
|
72
|
+
const formatFileSize = (bytes) => {
|
|
73
|
+
if (bytes === 0)
|
|
74
|
+
return "0 Bytes";
|
|
75
|
+
const k = 1024;
|
|
76
|
+
const sizes = ["Bytes", "KB", "MB", "GB"];
|
|
77
|
+
const i = Math.floor(Math.log(bytes) / Math.log(k));
|
|
78
|
+
return Math.round(bytes / Math.pow(k, i) * 100) / 100 + " " + sizes[i];
|
|
79
|
+
};
|
|
80
|
+
const getErrorMessage = () => {
|
|
81
|
+
if (!errorMessage)
|
|
82
|
+
return "";
|
|
83
|
+
const errorMessages = {
|
|
84
|
+
ERR_REQUIRED: "This field is required",
|
|
85
|
+
ERR_INVALID_FILE: "Invalid file",
|
|
86
|
+
};
|
|
87
|
+
return errorMessages[errorMessage] || errorMessage;
|
|
88
|
+
};
|
|
89
|
+
const isRequired = schema?.rules?.some((r) => r.name === "required" && r.params?.enabled);
|
|
90
|
+
return (<react_native_1.View style={[styles.container, containerStyle]}>
|
|
91
|
+
{label && (<react_native_1.View style={styles.labelContainer}>
|
|
92
|
+
<react_native_1.Text style={[styles.label, labelStyle]}>
|
|
93
|
+
{label}
|
|
94
|
+
{isRequired && <react_native_1.Text style={styles.requiredAsterisk}> *</react_native_1.Text>}
|
|
95
|
+
</react_native_1.Text>
|
|
96
|
+
</react_native_1.View>)}
|
|
97
|
+
|
|
98
|
+
<react_native_1.TouchableOpacity style={[
|
|
99
|
+
styles.button,
|
|
100
|
+
errorMessage && styles.buttonError,
|
|
101
|
+
disabled && styles.buttonDisabled,
|
|
102
|
+
buttonStyle,
|
|
103
|
+
]} onPress={handlePickDocument} disabled={disabled}>
|
|
104
|
+
<react_native_1.Text style={[styles.buttonText, buttonTextStyle]}>
|
|
105
|
+
{placeholder}
|
|
106
|
+
</react_native_1.Text>
|
|
107
|
+
</react_native_1.TouchableOpacity>
|
|
108
|
+
|
|
109
|
+
{value && (<react_native_1.View style={styles.fileInfoContainer}>
|
|
110
|
+
<react_native_1.View style={styles.fileInfo}>
|
|
111
|
+
<react_native_1.Text style={[styles.fileName, fileInfoStyle]} numberOfLines={1}>
|
|
112
|
+
📄 {value.name}
|
|
113
|
+
</react_native_1.Text>
|
|
114
|
+
<react_native_1.Text style={[styles.fileSize, fileInfoStyle]}>
|
|
115
|
+
{formatFileSize(value.size)}
|
|
116
|
+
</react_native_1.Text>
|
|
117
|
+
</react_native_1.View>
|
|
118
|
+
<react_native_1.TouchableOpacity style={styles.removeButton} onPress={handleRemoveFile} disabled={disabled}>
|
|
119
|
+
<react_native_1.Text style={styles.removeButtonText}>✕</react_native_1.Text>
|
|
120
|
+
</react_native_1.TouchableOpacity>
|
|
121
|
+
</react_native_1.View>)}
|
|
122
|
+
|
|
123
|
+
{errorMessage && (<react_native_1.Text style={[styles.errorText, errorStyle]}>
|
|
124
|
+
⚠ {getErrorMessage()}
|
|
125
|
+
</react_native_1.Text>)}
|
|
126
|
+
</react_native_1.View>);
|
|
127
|
+
};
|
|
128
|
+
exports.FvFileSelector = FvFileSelector;
|
|
129
|
+
const styles = react_native_1.StyleSheet.create({
|
|
130
|
+
container: {
|
|
131
|
+
marginBottom: 16,
|
|
132
|
+
width: "100%",
|
|
133
|
+
},
|
|
134
|
+
labelContainer: {
|
|
135
|
+
marginBottom: 6,
|
|
136
|
+
},
|
|
137
|
+
label: {
|
|
138
|
+
fontSize: 14,
|
|
139
|
+
fontWeight: "500",
|
|
140
|
+
color: "#333333",
|
|
141
|
+
},
|
|
142
|
+
requiredAsterisk: {
|
|
143
|
+
color: "#dc3545",
|
|
144
|
+
fontWeight: "bold",
|
|
145
|
+
},
|
|
146
|
+
button: {
|
|
147
|
+
padding: 10,
|
|
148
|
+
borderWidth: 1,
|
|
149
|
+
borderColor: "#007bff",
|
|
150
|
+
borderRadius: 4,
|
|
151
|
+
backgroundColor: "#007bff",
|
|
152
|
+
alignItems: "center",
|
|
153
|
+
},
|
|
154
|
+
buttonError: {
|
|
155
|
+
borderColor: "#dc3545",
|
|
156
|
+
backgroundColor: "#dc3545",
|
|
157
|
+
},
|
|
158
|
+
buttonDisabled: {
|
|
159
|
+
backgroundColor: "#cccccc",
|
|
160
|
+
borderColor: "#cccccc",
|
|
161
|
+
opacity: 0.6,
|
|
162
|
+
},
|
|
163
|
+
buttonText: {
|
|
164
|
+
fontSize: 14,
|
|
165
|
+
fontWeight: "500",
|
|
166
|
+
color: "#ffffff",
|
|
167
|
+
},
|
|
168
|
+
fileInfoContainer: {
|
|
169
|
+
flexDirection: "row",
|
|
170
|
+
marginTop: 8,
|
|
171
|
+
padding: 10,
|
|
172
|
+
backgroundColor: "#f8f9fa",
|
|
173
|
+
borderRadius: 4,
|
|
174
|
+
borderWidth: 1,
|
|
175
|
+
borderColor: "#dee2e6",
|
|
176
|
+
alignItems: "center",
|
|
177
|
+
},
|
|
178
|
+
fileInfo: {
|
|
179
|
+
flex: 1,
|
|
180
|
+
},
|
|
181
|
+
fileName: {
|
|
182
|
+
fontSize: 14,
|
|
183
|
+
color: "#333333",
|
|
184
|
+
marginBottom: 4,
|
|
185
|
+
},
|
|
186
|
+
fileSize: {
|
|
187
|
+
fontSize: 12,
|
|
188
|
+
color: "#6c757d",
|
|
189
|
+
},
|
|
190
|
+
removeButton: {
|
|
191
|
+
padding: 4,
|
|
192
|
+
marginLeft: 8,
|
|
193
|
+
},
|
|
194
|
+
removeButtonText: {
|
|
195
|
+
fontSize: 18,
|
|
196
|
+
color: "#dc3545",
|
|
197
|
+
fontWeight: "bold",
|
|
198
|
+
},
|
|
199
|
+
errorText: {
|
|
200
|
+
marginTop: 4,
|
|
201
|
+
fontSize: 12,
|
|
202
|
+
color: "#dc3545",
|
|
203
|
+
},
|
|
204
|
+
});
|
|
205
|
+
//# sourceMappingURL=FvFileSelector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FvFileSelector.js","sourceRoot":"","sources":["../../src/components/FvFileSelector.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { ViewStyle, TextStyle, ImageStyle } from "react-native";
|
|
3
|
+
import { ValidationSchema } from "@fovestta2/validation-engine";
|
|
4
|
+
export interface ImageInfo {
|
|
5
|
+
uri: string;
|
|
6
|
+
width: number;
|
|
7
|
+
height: number;
|
|
8
|
+
type?: string;
|
|
9
|
+
fileSize?: number;
|
|
10
|
+
}
|
|
11
|
+
export interface FvImageSelectorProps {
|
|
12
|
+
label?: string;
|
|
13
|
+
placeholder?: string;
|
|
14
|
+
value: ImageInfo | null;
|
|
15
|
+
schema?: ValidationSchema;
|
|
16
|
+
disabled?: boolean;
|
|
17
|
+
allowCamera?: boolean;
|
|
18
|
+
allowGallery?: boolean;
|
|
19
|
+
maxWidth?: number;
|
|
20
|
+
maxHeight?: number;
|
|
21
|
+
quality?: number;
|
|
22
|
+
onChange: (image: ImageInfo | null) => void;
|
|
23
|
+
onBlur?: () => void;
|
|
24
|
+
containerStyle?: ViewStyle;
|
|
25
|
+
buttonStyle?: ViewStyle;
|
|
26
|
+
buttonTextStyle?: TextStyle;
|
|
27
|
+
labelStyle?: TextStyle;
|
|
28
|
+
errorStyle?: TextStyle;
|
|
29
|
+
previewStyle?: ImageStyle;
|
|
30
|
+
}
|
|
31
|
+
export declare const FvImageSelector: React.FC<FvImageSelectorProps>;
|
|
32
|
+
//# sourceMappingURL=FvImageSelector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FvImageSelector.d.ts","sourceRoot":"","sources":["../../src/components/FvImageSelector.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AACnD,OAAO,EAOH,SAAS,EACT,SAAS,EACT,UAAU,EACb,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAa,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAE3E,MAAM,WAAW,SAAS;IACtB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,oBAAoB;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,SAAS,GAAG,IAAI,CAAC;IACxB,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,KAAK,IAAI,CAAC;IAC5C,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,cAAc,CAAC,EAAE,SAAS,CAAC;IAC3B,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,eAAe,CAAC,EAAE,SAAS,CAAC;IAC5B,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,YAAY,CAAC,EAAE,UAAU,CAAC;CAC7B;AAED,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,oBAAoB,CAgN1D,CAAC"}
|
|
@@ -0,0 +1,268 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.FvImageSelector = void 0;
|
|
27
|
+
const react_1 = __importStar(require("react"));
|
|
28
|
+
const react_native_1 = require("react-native");
|
|
29
|
+
const ImagePicker = __importStar(require("expo-image-picker"));
|
|
30
|
+
const validation_engine_1 = require("@fovestta2/validation-engine");
|
|
31
|
+
const FvImageSelector = ({ label, placeholder = "Select an image", value, schema, disabled = false, allowCamera = true, allowGallery = true, maxWidth = 1920, maxHeight = 1920, quality = 0.8, onChange, onBlur, containerStyle, buttonStyle, buttonTextStyle, labelStyle, errorStyle, previewStyle, }) => {
|
|
32
|
+
const [errorMessage, setErrorMessage] = (0, react_1.useState)(null);
|
|
33
|
+
(0, react_1.useEffect)(() => {
|
|
34
|
+
if (schema) {
|
|
35
|
+
const result = validation_engine_1.Validator.validate(value, schema);
|
|
36
|
+
setErrorMessage(result.errorKey);
|
|
37
|
+
}
|
|
38
|
+
}, [value, schema]);
|
|
39
|
+
const requestPermissions = async (type) => {
|
|
40
|
+
if (type === "camera") {
|
|
41
|
+
const { status } = await ImagePicker.requestCameraPermissionsAsync();
|
|
42
|
+
if (status !== "granted") {
|
|
43
|
+
react_native_1.Alert.alert("Permission Required", "Camera permission is required to take photos");
|
|
44
|
+
return false;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
const { status } = await ImagePicker.requestMediaLibraryPermissionsAsync();
|
|
49
|
+
if (status !== "granted") {
|
|
50
|
+
react_native_1.Alert.alert("Permission Required", "Gallery permission is required to select photos");
|
|
51
|
+
return false;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
return true;
|
|
55
|
+
};
|
|
56
|
+
const handlePickFromGallery = async () => {
|
|
57
|
+
const hasPermission = await requestPermissions("gallery");
|
|
58
|
+
if (!hasPermission)
|
|
59
|
+
return;
|
|
60
|
+
try {
|
|
61
|
+
const result = await ImagePicker.launchImageLibraryAsync({
|
|
62
|
+
mediaTypes: ImagePicker.MediaTypeOptions.Images,
|
|
63
|
+
allowsEditing: true,
|
|
64
|
+
quality,
|
|
65
|
+
});
|
|
66
|
+
if (!result.canceled && result.assets[0]) {
|
|
67
|
+
const asset = result.assets[0];
|
|
68
|
+
const imageInfo = {
|
|
69
|
+
uri: asset.uri,
|
|
70
|
+
width: asset.width,
|
|
71
|
+
height: asset.height,
|
|
72
|
+
type: asset.type || undefined,
|
|
73
|
+
fileSize: asset.fileSize || undefined,
|
|
74
|
+
};
|
|
75
|
+
onChange(imageInfo);
|
|
76
|
+
onBlur?.();
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
catch (error) {
|
|
80
|
+
console.error("Error picking image:", error);
|
|
81
|
+
react_native_1.Alert.alert("Error", "Failed to pick image");
|
|
82
|
+
}
|
|
83
|
+
};
|
|
84
|
+
const handleTakePhoto = async () => {
|
|
85
|
+
const hasPermission = await requestPermissions("camera");
|
|
86
|
+
if (!hasPermission)
|
|
87
|
+
return;
|
|
88
|
+
try {
|
|
89
|
+
const result = await ImagePicker.launchCameraAsync({
|
|
90
|
+
allowsEditing: true,
|
|
91
|
+
quality,
|
|
92
|
+
});
|
|
93
|
+
if (!result.canceled && result.assets[0]) {
|
|
94
|
+
const asset = result.assets[0];
|
|
95
|
+
const imageInfo = {
|
|
96
|
+
uri: asset.uri,
|
|
97
|
+
width: asset.width,
|
|
98
|
+
height: asset.height,
|
|
99
|
+
type: asset.type || undefined,
|
|
100
|
+
fileSize: asset.fileSize || undefined,
|
|
101
|
+
};
|
|
102
|
+
onChange(imageInfo);
|
|
103
|
+
onBlur?.();
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
catch (error) {
|
|
107
|
+
console.error("Error taking photo:", error);
|
|
108
|
+
react_native_1.Alert.alert("Error", "Failed to take photo");
|
|
109
|
+
}
|
|
110
|
+
};
|
|
111
|
+
const handleSelectImage = () => {
|
|
112
|
+
if (disabled)
|
|
113
|
+
return;
|
|
114
|
+
if (allowCamera && allowGallery) {
|
|
115
|
+
react_native_1.Alert.alert("Select Image", "Choose an option", [
|
|
116
|
+
{ text: "Camera", onPress: handleTakePhoto },
|
|
117
|
+
{ text: "Gallery", onPress: handlePickFromGallery },
|
|
118
|
+
{ text: "Cancel", style: "cancel" },
|
|
119
|
+
]);
|
|
120
|
+
}
|
|
121
|
+
else if (allowCamera) {
|
|
122
|
+
handleTakePhoto();
|
|
123
|
+
}
|
|
124
|
+
else if (allowGallery) {
|
|
125
|
+
handlePickFromGallery();
|
|
126
|
+
}
|
|
127
|
+
};
|
|
128
|
+
const handleRemoveImage = () => {
|
|
129
|
+
onChange(null);
|
|
130
|
+
onBlur?.();
|
|
131
|
+
};
|
|
132
|
+
const getErrorMessage = () => {
|
|
133
|
+
if (!errorMessage)
|
|
134
|
+
return "";
|
|
135
|
+
const errorMessages = {
|
|
136
|
+
ERR_REQUIRED: "This field is required",
|
|
137
|
+
ERR_INVALID_IMAGE: "Invalid image",
|
|
138
|
+
};
|
|
139
|
+
return errorMessages[errorMessage] || errorMessage;
|
|
140
|
+
};
|
|
141
|
+
const isRequired = schema?.rules?.some((r) => r.name === "required" && r.params.enabled);
|
|
142
|
+
return (<react_native_1.View style={[styles.container, containerStyle]}>
|
|
143
|
+
{label && (<react_native_1.View style={styles.labelContainer}>
|
|
144
|
+
<react_native_1.Text style={[styles.label, labelStyle]}>
|
|
145
|
+
{label}
|
|
146
|
+
{isRequired && <react_native_1.Text style={styles.requiredAsterisk}> *</react_native_1.Text>}
|
|
147
|
+
</react_native_1.Text>
|
|
148
|
+
</react_native_1.View>)}
|
|
149
|
+
|
|
150
|
+
{!value ? (<react_native_1.TouchableOpacity style={[
|
|
151
|
+
styles.button,
|
|
152
|
+
errorMessage && styles.buttonError,
|
|
153
|
+
disabled && styles.buttonDisabled,
|
|
154
|
+
buttonStyle,
|
|
155
|
+
]} onPress={handleSelectImage} disabled={disabled}>
|
|
156
|
+
<react_native_1.Text style={[styles.buttonText, buttonTextStyle]}>
|
|
157
|
+
📷 {placeholder}
|
|
158
|
+
</react_native_1.Text>
|
|
159
|
+
</react_native_1.TouchableOpacity>) : (<react_native_1.View style={styles.previewContainer}>
|
|
160
|
+
<react_native_1.Image source={{ uri: value.uri }} style={[styles.preview, previewStyle]} resizeMode="cover"/>
|
|
161
|
+
<react_native_1.View style={styles.imageActions}>
|
|
162
|
+
<react_native_1.TouchableOpacity style={styles.changeButton} onPress={handleSelectImage} disabled={disabled}>
|
|
163
|
+
<react_native_1.Text style={styles.changeButtonText}>Change</react_native_1.Text>
|
|
164
|
+
</react_native_1.TouchableOpacity>
|
|
165
|
+
<react_native_1.TouchableOpacity style={styles.removeButton} onPress={handleRemoveImage} disabled={disabled}>
|
|
166
|
+
<react_native_1.Text style={styles.removeButtonText}>Remove</react_native_1.Text>
|
|
167
|
+
</react_native_1.TouchableOpacity>
|
|
168
|
+
</react_native_1.View>
|
|
169
|
+
<react_native_1.Text style={styles.imageInfo}>
|
|
170
|
+
{value.width} × {value.height}
|
|
171
|
+
{value.fileSize && ` • ${(value.fileSize / 1024).toFixed(0)} KB`}
|
|
172
|
+
</react_native_1.Text>
|
|
173
|
+
</react_native_1.View>)}
|
|
174
|
+
|
|
175
|
+
{errorMessage && (<react_native_1.Text style={[styles.errorText, errorStyle]}>
|
|
176
|
+
⚠ {getErrorMessage()}
|
|
177
|
+
</react_native_1.Text>)}
|
|
178
|
+
</react_native_1.View>);
|
|
179
|
+
};
|
|
180
|
+
exports.FvImageSelector = FvImageSelector;
|
|
181
|
+
const styles = react_native_1.StyleSheet.create({
|
|
182
|
+
container: {
|
|
183
|
+
marginBottom: 16,
|
|
184
|
+
width: "100%",
|
|
185
|
+
},
|
|
186
|
+
labelContainer: {
|
|
187
|
+
marginBottom: 6,
|
|
188
|
+
},
|
|
189
|
+
label: {
|
|
190
|
+
fontSize: 14,
|
|
191
|
+
fontWeight: "500",
|
|
192
|
+
color: "#333333",
|
|
193
|
+
},
|
|
194
|
+
requiredAsterisk: {
|
|
195
|
+
color: "#dc3545",
|
|
196
|
+
fontWeight: "bold",
|
|
197
|
+
},
|
|
198
|
+
button: {
|
|
199
|
+
padding: 40,
|
|
200
|
+
borderWidth: 2,
|
|
201
|
+
borderStyle: "dashed",
|
|
202
|
+
borderColor: "#007bff",
|
|
203
|
+
borderRadius: 8,
|
|
204
|
+
backgroundColor: "#f8f9fa",
|
|
205
|
+
alignItems: "center",
|
|
206
|
+
justifyContent: "center",
|
|
207
|
+
},
|
|
208
|
+
buttonError: {
|
|
209
|
+
borderColor: "#dc3545",
|
|
210
|
+
},
|
|
211
|
+
buttonDisabled: {
|
|
212
|
+
borderColor: "#cccccc",
|
|
213
|
+
backgroundColor: "#f5f5f5",
|
|
214
|
+
opacity: 0.6,
|
|
215
|
+
},
|
|
216
|
+
buttonText: {
|
|
217
|
+
fontSize: 14,
|
|
218
|
+
fontWeight: "500",
|
|
219
|
+
color: "#007bff",
|
|
220
|
+
},
|
|
221
|
+
previewContainer: {
|
|
222
|
+
alignItems: "center",
|
|
223
|
+
},
|
|
224
|
+
preview: {
|
|
225
|
+
width: "100%",
|
|
226
|
+
height: 200,
|
|
227
|
+
borderRadius: 8,
|
|
228
|
+
backgroundColor: "#f0f0f0",
|
|
229
|
+
},
|
|
230
|
+
imageActions: {
|
|
231
|
+
flexDirection: "row",
|
|
232
|
+
marginTop: 8,
|
|
233
|
+
gap: 8,
|
|
234
|
+
},
|
|
235
|
+
changeButton: {
|
|
236
|
+
paddingVertical: 8,
|
|
237
|
+
paddingHorizontal: 16,
|
|
238
|
+
backgroundColor: "#007bff",
|
|
239
|
+
borderRadius: 4,
|
|
240
|
+
},
|
|
241
|
+
changeButtonText: {
|
|
242
|
+
color: "#ffffff",
|
|
243
|
+
fontSize: 14,
|
|
244
|
+
fontWeight: "500",
|
|
245
|
+
},
|
|
246
|
+
removeButton: {
|
|
247
|
+
paddingVertical: 8,
|
|
248
|
+
paddingHorizontal: 16,
|
|
249
|
+
backgroundColor: "#dc3545",
|
|
250
|
+
borderRadius: 4,
|
|
251
|
+
},
|
|
252
|
+
removeButtonText: {
|
|
253
|
+
color: "#ffffff",
|
|
254
|
+
fontSize: 14,
|
|
255
|
+
fontWeight: "500",
|
|
256
|
+
},
|
|
257
|
+
imageInfo: {
|
|
258
|
+
marginTop: 4,
|
|
259
|
+
fontSize: 12,
|
|
260
|
+
color: "#6c757d",
|
|
261
|
+
},
|
|
262
|
+
errorText: {
|
|
263
|
+
marginTop: 4,
|
|
264
|
+
fontSize: 12,
|
|
265
|
+
color: "#dc3545",
|
|
266
|
+
},
|
|
267
|
+
});
|
|
268
|
+
//# sourceMappingURL=FvImageSelector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FvImageSelector.js","sourceRoot":"","sources":["../../src/components/FvImageSelector.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { ViewStyle, TextStyle } from "react-native";
|
|
3
|
+
import { ValidationSchema } from "@fovestta2/validation-engine";
|
|
4
|
+
export interface FvMonthYearFieldProps {
|
|
5
|
+
label?: string;
|
|
6
|
+
placeholder?: string;
|
|
7
|
+
value: string;
|
|
8
|
+
schema?: ValidationSchema;
|
|
9
|
+
disabled?: boolean;
|
|
10
|
+
readonly?: boolean;
|
|
11
|
+
min?: string;
|
|
12
|
+
max?: string;
|
|
13
|
+
onChange: (value: string) => void;
|
|
14
|
+
onBlur?: () => void;
|
|
15
|
+
onFocus?: () => void;
|
|
16
|
+
containerStyle?: ViewStyle;
|
|
17
|
+
inputStyle?: TextStyle;
|
|
18
|
+
labelStyle?: TextStyle;
|
|
19
|
+
errorStyle?: TextStyle;
|
|
20
|
+
}
|
|
21
|
+
export declare const FvMonthYearField: React.FC<FvMonthYearFieldProps>;
|
|
22
|
+
//# sourceMappingURL=FvMonthYearField.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FvMonthYearField.d.ts","sourceRoot":"","sources":["../../src/components/FvMonthYearField.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AACnD,OAAO,EAKH,SAAS,EACT,SAAS,EACZ,MAAM,cAAc,CAAC;AACtB,OAAO,EAAa,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAE3E,MAAM,WAAW,qBAAqB;IAClC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,cAAc,CAAC,EAAE,SAAS,CAAC;IAC3B,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,UAAU,CAAC,EAAE,SAAS,CAAC;CAC1B;AAED,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC,qBAAqB,CAkF5D,CAAC"}
|