@ringg/react-native 0.0.1-alpha.7 → 0.0.1-alpha.8
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/lib/module/components/RinggWidget.js +45 -11
- package/lib/module/components/RinggWidget.js.map +1 -1
- package/lib/module/components/steps/ButtonsStep.js +146 -0
- package/lib/module/components/steps/ButtonsStep.js.map +1 -0
- package/lib/module/components/steps/CalendarStep.js +190 -0
- package/lib/module/components/steps/CalendarStep.js.map +1 -0
- package/lib/module/components/steps/ConfirmationStep.js +175 -0
- package/lib/module/components/steps/ConfirmationStep.js.map +1 -0
- package/lib/module/components/steps/FormStep.js +346 -0
- package/lib/module/components/steps/FormStep.js.map +1 -0
- package/lib/module/components/steps/InteractiveFlow.js +249 -0
- package/lib/module/components/steps/InteractiveFlow.js.map +1 -0
- package/lib/module/index.js +7 -0
- package/lib/module/index.js.map +1 -1
- package/lib/typescript/components/RinggWidget.d.ts.map +1 -1
- package/lib/typescript/components/steps/ButtonsStep.d.ts +17 -0
- package/lib/typescript/components/steps/ButtonsStep.d.ts.map +1 -0
- package/lib/typescript/components/steps/CalendarStep.d.ts +16 -0
- package/lib/typescript/components/steps/CalendarStep.d.ts.map +1 -0
- package/lib/typescript/components/steps/ConfirmationStep.d.ts +16 -0
- package/lib/typescript/components/steps/ConfirmationStep.d.ts.map +1 -0
- package/lib/typescript/components/steps/FormStep.d.ts +17 -0
- package/lib/typescript/components/steps/FormStep.d.ts.map +1 -0
- package/lib/typescript/components/steps/InteractiveFlow.d.ts +23 -0
- package/lib/typescript/components/steps/InteractiveFlow.d.ts.map +1 -0
- package/lib/typescript/index.d.ts +5 -0
- package/lib/typescript/index.d.ts.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* ConfirmationStep — displays a success/info/warning/error confirmation.
|
|
5
|
+
*
|
|
6
|
+
* Shows an icon badge, title, message, and optional detail rows.
|
|
7
|
+
* Matches CDN confirmation-step.tsx behavior.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
import React from "react";
|
|
11
|
+
import { View, Text, StyleSheet } from "react-native";
|
|
12
|
+
import { colorToSolid } from "@ringg/core";
|
|
13
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
14
|
+
export function ConfirmationStep({
|
|
15
|
+
data,
|
|
16
|
+
theme,
|
|
17
|
+
collectedData
|
|
18
|
+
}) {
|
|
19
|
+
const iconType = data.icon || "success";
|
|
20
|
+
const getIconConfig = () => {
|
|
21
|
+
switch (iconType) {
|
|
22
|
+
case "success":
|
|
23
|
+
return {
|
|
24
|
+
emoji: "✓",
|
|
25
|
+
bgColor: theme.successColor
|
|
26
|
+
};
|
|
27
|
+
case "info":
|
|
28
|
+
return {
|
|
29
|
+
emoji: "i",
|
|
30
|
+
bgColor: colorToSolid(theme.primaryColor)
|
|
31
|
+
};
|
|
32
|
+
case "warning":
|
|
33
|
+
return {
|
|
34
|
+
emoji: "!",
|
|
35
|
+
bgColor: "#f59e0b"
|
|
36
|
+
};
|
|
37
|
+
case "error":
|
|
38
|
+
return {
|
|
39
|
+
emoji: "✕",
|
|
40
|
+
bgColor: theme.errorColor
|
|
41
|
+
};
|
|
42
|
+
default:
|
|
43
|
+
return {
|
|
44
|
+
emoji: "✓",
|
|
45
|
+
bgColor: theme.successColor
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
const {
|
|
50
|
+
emoji,
|
|
51
|
+
bgColor
|
|
52
|
+
} = getIconConfig();
|
|
53
|
+
|
|
54
|
+
// Build details to show
|
|
55
|
+
const priorityKeys = ["slot_date", "slot_time", "name", "email", "phone"];
|
|
56
|
+
const formatValue = value => {
|
|
57
|
+
if (Array.isArray(value)) return value.join(", ");
|
|
58
|
+
if (typeof value === "boolean") return value ? "Yes" : "No";
|
|
59
|
+
return String(value);
|
|
60
|
+
};
|
|
61
|
+
const formattedCollectedData = collectedData ? Object.entries(collectedData).filter(([key]) => priorityKeys.includes(key)).sort((a, b) => priorityKeys.indexOf(a[0]) - priorityKeys.indexOf(b[0])).map(([key, value]) => ({
|
|
62
|
+
label: key.replace(/slot_/g, "").replace(/_/g, " ").replace(/\b\w/g, l => l.toUpperCase()),
|
|
63
|
+
value: formatValue(value)
|
|
64
|
+
})) : [];
|
|
65
|
+
const detailsToShow = data.details && data.details.length > 0 ? data.details : formattedCollectedData;
|
|
66
|
+
return /*#__PURE__*/_jsxs(View, {
|
|
67
|
+
style: styles.container,
|
|
68
|
+
children: [/*#__PURE__*/_jsxs(View, {
|
|
69
|
+
style: styles.headerRow,
|
|
70
|
+
children: [/*#__PURE__*/_jsx(View, {
|
|
71
|
+
style: [styles.iconBadge, {
|
|
72
|
+
backgroundColor: bgColor
|
|
73
|
+
}],
|
|
74
|
+
children: /*#__PURE__*/_jsx(Text, {
|
|
75
|
+
style: styles.iconText,
|
|
76
|
+
children: emoji
|
|
77
|
+
})
|
|
78
|
+
}), /*#__PURE__*/_jsxs(View, {
|
|
79
|
+
style: styles.headerText,
|
|
80
|
+
children: [/*#__PURE__*/_jsx(Text, {
|
|
81
|
+
style: [styles.title, {
|
|
82
|
+
color: theme.textColor
|
|
83
|
+
}],
|
|
84
|
+
children: data.title
|
|
85
|
+
}), data.message ? /*#__PURE__*/_jsx(Text, {
|
|
86
|
+
style: [styles.message, {
|
|
87
|
+
color: theme.mutedTextColor
|
|
88
|
+
}],
|
|
89
|
+
children: data.message
|
|
90
|
+
}) : null]
|
|
91
|
+
})]
|
|
92
|
+
}), detailsToShow.length > 0 ? /*#__PURE__*/_jsx(View, {
|
|
93
|
+
style: [styles.detailsCard, {
|
|
94
|
+
backgroundColor: theme.surfaceColor,
|
|
95
|
+
borderColor: theme.borderColor
|
|
96
|
+
}],
|
|
97
|
+
children: detailsToShow.slice(0, 4).map((detail, index) => /*#__PURE__*/_jsxs(View, {
|
|
98
|
+
style: [styles.detailRow, index > 0 && {
|
|
99
|
+
borderTopWidth: StyleSheet.hairlineWidth,
|
|
100
|
+
borderTopColor: theme.borderColor
|
|
101
|
+
}],
|
|
102
|
+
children: [/*#__PURE__*/_jsx(Text, {
|
|
103
|
+
style: [styles.detailLabel, {
|
|
104
|
+
color: theme.mutedTextColor
|
|
105
|
+
}],
|
|
106
|
+
children: detail.label
|
|
107
|
+
}), /*#__PURE__*/_jsx(Text, {
|
|
108
|
+
style: [styles.detailValue, {
|
|
109
|
+
color: theme.textColor
|
|
110
|
+
}],
|
|
111
|
+
numberOfLines: 1,
|
|
112
|
+
children: detail.value
|
|
113
|
+
})]
|
|
114
|
+
}, index))
|
|
115
|
+
}) : null]
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
const styles = StyleSheet.create({
|
|
119
|
+
container: {
|
|
120
|
+
paddingVertical: 4
|
|
121
|
+
},
|
|
122
|
+
headerRow: {
|
|
123
|
+
flexDirection: "row",
|
|
124
|
+
alignItems: "flex-start",
|
|
125
|
+
gap: 10,
|
|
126
|
+
marginBottom: 12
|
|
127
|
+
},
|
|
128
|
+
iconBadge: {
|
|
129
|
+
width: 32,
|
|
130
|
+
height: 32,
|
|
131
|
+
borderRadius: 16,
|
|
132
|
+
alignItems: "center",
|
|
133
|
+
justifyContent: "center"
|
|
134
|
+
},
|
|
135
|
+
iconText: {
|
|
136
|
+
color: "#ffffff",
|
|
137
|
+
fontSize: 16,
|
|
138
|
+
fontWeight: "700"
|
|
139
|
+
},
|
|
140
|
+
headerText: {
|
|
141
|
+
flex: 1,
|
|
142
|
+
paddingTop: 2
|
|
143
|
+
},
|
|
144
|
+
title: {
|
|
145
|
+
fontSize: 14,
|
|
146
|
+
fontWeight: "600"
|
|
147
|
+
},
|
|
148
|
+
message: {
|
|
149
|
+
fontSize: 12,
|
|
150
|
+
marginTop: 2,
|
|
151
|
+
lineHeight: 18
|
|
152
|
+
},
|
|
153
|
+
detailsCard: {
|
|
154
|
+
borderRadius: 8,
|
|
155
|
+
borderWidth: StyleSheet.hairlineWidth,
|
|
156
|
+
overflow: "hidden"
|
|
157
|
+
},
|
|
158
|
+
detailRow: {
|
|
159
|
+
flexDirection: "row",
|
|
160
|
+
alignItems: "center",
|
|
161
|
+
paddingHorizontal: 12,
|
|
162
|
+
paddingVertical: 10,
|
|
163
|
+
gap: 8
|
|
164
|
+
},
|
|
165
|
+
detailLabel: {
|
|
166
|
+
fontSize: 11,
|
|
167
|
+
flexShrink: 0
|
|
168
|
+
},
|
|
169
|
+
detailValue: {
|
|
170
|
+
fontSize: 12,
|
|
171
|
+
fontWeight: "500",
|
|
172
|
+
marginLeft: "auto"
|
|
173
|
+
}
|
|
174
|
+
});
|
|
175
|
+
//# sourceMappingURL=ConfirmationStep.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","View","Text","StyleSheet","colorToSolid","jsx","_jsx","jsxs","_jsxs","ConfirmationStep","data","theme","collectedData","iconType","icon","getIconConfig","emoji","bgColor","successColor","primaryColor","errorColor","priorityKeys","formatValue","value","Array","isArray","join","String","formattedCollectedData","Object","entries","filter","key","includes","sort","a","b","indexOf","map","label","replace","l","toUpperCase","detailsToShow","details","length","style","styles","container","children","headerRow","iconBadge","backgroundColor","iconText","headerText","title","color","textColor","message","mutedTextColor","detailsCard","surfaceColor","borderColor","slice","detail","index","detailRow","borderTopWidth","hairlineWidth","borderTopColor","detailLabel","detailValue","numberOfLines","create","paddingVertical","flexDirection","alignItems","gap","marginBottom","width","height","borderRadius","justifyContent","fontSize","fontWeight","flex","paddingTop","marginTop","lineHeight","borderWidth","overflow","paddingHorizontal","flexShrink","marginLeft"],"sourceRoot":"../../../../src","sources":["components/steps/ConfirmationStep.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,346 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* FormStep — dynamic form renderer supporting 9 field types with validation.
|
|
5
|
+
*
|
|
6
|
+
* Field types: text, email, tel, number, select, multiselect, textarea, date, boolean.
|
|
7
|
+
* Matches CDN form-step.tsx behavior.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
import React, { useState, useCallback } from "react";
|
|
11
|
+
import { View, Text, TextInput, TouchableOpacity, ActivityIndicator, Switch, ScrollView, StyleSheet } from "react-native";
|
|
12
|
+
import { colorToSolid, getButtonRadius } from "@ringg/core";
|
|
13
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
14
|
+
export function FormStep({
|
|
15
|
+
payload,
|
|
16
|
+
theme,
|
|
17
|
+
isProcessing,
|
|
18
|
+
onComplete
|
|
19
|
+
}) {
|
|
20
|
+
const {
|
|
21
|
+
data
|
|
22
|
+
} = payload;
|
|
23
|
+
const buttonRadius = parseInt(getButtonRadius(theme.buttonStyle), 10) || 8;
|
|
24
|
+
const primarySolid = colorToSolid(theme.primaryColor);
|
|
25
|
+
const [formData, setFormData] = useState({});
|
|
26
|
+
const [fieldErrors, setFieldErrors] = useState({});
|
|
27
|
+
const getOptionLabel = option => typeof option === "string" ? option : option.label;
|
|
28
|
+
const getOptionValue = option => typeof option === "string" ? option : option.value;
|
|
29
|
+
const validateField = useCallback((field, value) => {
|
|
30
|
+
if (field.required) {
|
|
31
|
+
if (value === undefined || value === null || value === "" || Array.isArray(value) && value.length === 0 || typeof value === "string" && !value.trim()) {
|
|
32
|
+
return `${field.label} is required`;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
if (typeof value === "string" && value) {
|
|
36
|
+
if (field.validation) {
|
|
37
|
+
if (field.validation.minLength && value.length < field.validation.minLength) {
|
|
38
|
+
return field.validation.message || `${field.label} must be at least ${field.validation.minLength} characters`;
|
|
39
|
+
}
|
|
40
|
+
if (field.validation.maxLength && value.length > field.validation.maxLength) {
|
|
41
|
+
return field.validation.message || `${field.label} must be at most ${field.validation.maxLength} characters`;
|
|
42
|
+
}
|
|
43
|
+
if (field.validation.pattern) {
|
|
44
|
+
const regex = new RegExp(field.validation.pattern);
|
|
45
|
+
if (!regex.test(value)) {
|
|
46
|
+
return field.validation.message || `${field.label} is invalid`;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
if (field.type === "email") {
|
|
51
|
+
const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
|
|
52
|
+
if (!emailRegex.test(value)) {
|
|
53
|
+
return "Please enter a valid email address";
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
if (field.type === "tel") {
|
|
57
|
+
const phoneRegex = /^[\d\s\-+()]{7,}$/;
|
|
58
|
+
if (!phoneRegex.test(value)) {
|
|
59
|
+
return "Please enter a valid phone number";
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
return null;
|
|
64
|
+
}, []);
|
|
65
|
+
const handleFieldChange = useCallback((fieldName, value) => {
|
|
66
|
+
setFormData(prev => ({
|
|
67
|
+
...prev,
|
|
68
|
+
[fieldName]: value
|
|
69
|
+
}));
|
|
70
|
+
setFieldErrors(prev => {
|
|
71
|
+
if (prev[fieldName]) {
|
|
72
|
+
const next = {
|
|
73
|
+
...prev
|
|
74
|
+
};
|
|
75
|
+
delete next[fieldName];
|
|
76
|
+
return next;
|
|
77
|
+
}
|
|
78
|
+
return prev;
|
|
79
|
+
});
|
|
80
|
+
}, []);
|
|
81
|
+
const handleMultiselectToggle = useCallback((fieldName, optionValue, checked) => {
|
|
82
|
+
setFormData(prev => {
|
|
83
|
+
const current = prev[fieldName] || [];
|
|
84
|
+
const next = checked ? [...current, optionValue] : current.filter(v => v !== optionValue);
|
|
85
|
+
return {
|
|
86
|
+
...prev,
|
|
87
|
+
[fieldName]: next
|
|
88
|
+
};
|
|
89
|
+
});
|
|
90
|
+
setFieldErrors(prev => {
|
|
91
|
+
if (prev[fieldName]) {
|
|
92
|
+
const next = {
|
|
93
|
+
...prev
|
|
94
|
+
};
|
|
95
|
+
delete next[fieldName];
|
|
96
|
+
return next;
|
|
97
|
+
}
|
|
98
|
+
return prev;
|
|
99
|
+
});
|
|
100
|
+
}, []);
|
|
101
|
+
const handleSubmit = useCallback(() => {
|
|
102
|
+
const errors = {};
|
|
103
|
+
let valid = true;
|
|
104
|
+
data.fields.forEach(field => {
|
|
105
|
+
const error = validateField(field, formData[field.name]);
|
|
106
|
+
if (error) {
|
|
107
|
+
errors[field.name] = error;
|
|
108
|
+
valid = false;
|
|
109
|
+
}
|
|
110
|
+
});
|
|
111
|
+
setFieldErrors(errors);
|
|
112
|
+
if (valid) {
|
|
113
|
+
onComplete(formData);
|
|
114
|
+
}
|
|
115
|
+
}, [data.fields, formData, validateField, onComplete]);
|
|
116
|
+
const inputStyle = hasError => ({
|
|
117
|
+
backgroundColor: "#ffffff",
|
|
118
|
+
color: theme.textColor,
|
|
119
|
+
borderColor: hasError ? theme.errorColor : theme.borderColor,
|
|
120
|
+
borderWidth: 1,
|
|
121
|
+
borderRadius: buttonRadius
|
|
122
|
+
});
|
|
123
|
+
return /*#__PURE__*/_jsxs(View, {
|
|
124
|
+
children: [/*#__PURE__*/_jsx(Text, {
|
|
125
|
+
style: [styles.title, {
|
|
126
|
+
color: theme.textColor
|
|
127
|
+
}],
|
|
128
|
+
children: data.title
|
|
129
|
+
}), data.description ? /*#__PURE__*/_jsx(Text, {
|
|
130
|
+
style: [styles.description, {
|
|
131
|
+
color: theme.mutedTextColor
|
|
132
|
+
}],
|
|
133
|
+
children: data.description
|
|
134
|
+
}) : null, /*#__PURE__*/_jsx(View, {
|
|
135
|
+
style: styles.fieldsContainer,
|
|
136
|
+
children: data.fields.map(field => {
|
|
137
|
+
const hasError = !!fieldErrors[field.name];
|
|
138
|
+
return /*#__PURE__*/_jsxs(View, {
|
|
139
|
+
style: styles.fieldWrapper,
|
|
140
|
+
children: [/*#__PURE__*/_jsxs(Text, {
|
|
141
|
+
style: [styles.fieldLabel, {
|
|
142
|
+
color: theme.mutedTextColor
|
|
143
|
+
}],
|
|
144
|
+
children: [field.label, field.required ? /*#__PURE__*/_jsx(Text, {
|
|
145
|
+
style: {
|
|
146
|
+
color: theme.errorColor
|
|
147
|
+
},
|
|
148
|
+
children: " *"
|
|
149
|
+
}) : null]
|
|
150
|
+
}), field.type === "select" && field.options ? /*#__PURE__*/_jsx(ScrollView, {
|
|
151
|
+
horizontal: true,
|
|
152
|
+
showsHorizontalScrollIndicator: false,
|
|
153
|
+
children: field.options.map((option, idx) => {
|
|
154
|
+
const val = getOptionValue(option);
|
|
155
|
+
const isSelected = formData[field.name] === val;
|
|
156
|
+
return /*#__PURE__*/_jsx(TouchableOpacity, {
|
|
157
|
+
onPress: () => handleFieldChange(field.name, val),
|
|
158
|
+
style: [styles.selectPill, {
|
|
159
|
+
borderRadius: buttonRadius,
|
|
160
|
+
backgroundColor: isSelected ? primarySolid : "#ffffff",
|
|
161
|
+
borderColor: isSelected ? primarySolid : theme.borderColor,
|
|
162
|
+
borderWidth: 1
|
|
163
|
+
}],
|
|
164
|
+
activeOpacity: 0.8,
|
|
165
|
+
children: /*#__PURE__*/_jsx(Text, {
|
|
166
|
+
style: [styles.selectPillText, {
|
|
167
|
+
color: isSelected ? theme.primaryTextColor : theme.textColor
|
|
168
|
+
}],
|
|
169
|
+
children: getOptionLabel(option)
|
|
170
|
+
})
|
|
171
|
+
}, idx);
|
|
172
|
+
})
|
|
173
|
+
}) : null, field.type === "multiselect" && field.options ? /*#__PURE__*/_jsx(View, {
|
|
174
|
+
style: styles.multiselectContainer,
|
|
175
|
+
children: field.options.map((option, idx) => {
|
|
176
|
+
const val = getOptionValue(option);
|
|
177
|
+
const isChecked = (formData[field.name] || []).includes(val);
|
|
178
|
+
return /*#__PURE__*/_jsx(TouchableOpacity, {
|
|
179
|
+
onPress: () => handleMultiselectToggle(field.name, val, !isChecked),
|
|
180
|
+
style: [styles.selectPill, {
|
|
181
|
+
borderRadius: buttonRadius,
|
|
182
|
+
backgroundColor: isChecked ? primarySolid : "#ffffff",
|
|
183
|
+
borderColor: isChecked ? primarySolid : theme.borderColor,
|
|
184
|
+
borderWidth: 1
|
|
185
|
+
}],
|
|
186
|
+
activeOpacity: 0.8,
|
|
187
|
+
children: /*#__PURE__*/_jsx(Text, {
|
|
188
|
+
style: [styles.selectPillText, {
|
|
189
|
+
color: isChecked ? theme.primaryTextColor : theme.textColor
|
|
190
|
+
}],
|
|
191
|
+
children: getOptionLabel(option)
|
|
192
|
+
})
|
|
193
|
+
}, idx);
|
|
194
|
+
})
|
|
195
|
+
}) : null, field.type === "boolean" ? /*#__PURE__*/_jsxs(View, {
|
|
196
|
+
style: styles.booleanRow,
|
|
197
|
+
children: [/*#__PURE__*/_jsx(Switch, {
|
|
198
|
+
value: formData[field.name] || false,
|
|
199
|
+
onValueChange: v => handleFieldChange(field.name, v),
|
|
200
|
+
trackColor: {
|
|
201
|
+
false: theme.borderColor,
|
|
202
|
+
true: primarySolid
|
|
203
|
+
},
|
|
204
|
+
thumbColor: "#ffffff"
|
|
205
|
+
}), /*#__PURE__*/_jsx(Text, {
|
|
206
|
+
style: [styles.booleanLabel, {
|
|
207
|
+
color: theme.mutedTextColor
|
|
208
|
+
}],
|
|
209
|
+
children: field.placeholder || "Yes"
|
|
210
|
+
})]
|
|
211
|
+
}) : null, field.type === "textarea" ? /*#__PURE__*/_jsx(TextInput, {
|
|
212
|
+
placeholder: field.placeholder || `Enter ${field.label.toLowerCase()}`,
|
|
213
|
+
placeholderTextColor: theme.mutedTextColor,
|
|
214
|
+
value: formData[field.name] || "",
|
|
215
|
+
onChangeText: v => handleFieldChange(field.name, v),
|
|
216
|
+
multiline: true,
|
|
217
|
+
numberOfLines: 3,
|
|
218
|
+
textAlignVertical: "top",
|
|
219
|
+
style: [styles.textArea, inputStyle(hasError)]
|
|
220
|
+
}) : null, field.type === "number" ? /*#__PURE__*/_jsx(TextInput, {
|
|
221
|
+
placeholder: field.placeholder || `Enter ${field.label.toLowerCase()}`,
|
|
222
|
+
placeholderTextColor: theme.mutedTextColor,
|
|
223
|
+
value: formData[field.name] !== undefined ? String(formData[field.name]) : "",
|
|
224
|
+
onChangeText: v => handleFieldChange(field.name, v ? Number(v) : ""),
|
|
225
|
+
keyboardType: "numeric",
|
|
226
|
+
style: [styles.textInput, inputStyle(hasError)]
|
|
227
|
+
}) : null, field.type !== "select" && field.type !== "multiselect" && field.type !== "boolean" && field.type !== "textarea" && field.type !== "number" ? /*#__PURE__*/_jsx(TextInput, {
|
|
228
|
+
placeholder: field.placeholder || `Enter ${field.label.toLowerCase()}`,
|
|
229
|
+
placeholderTextColor: theme.mutedTextColor,
|
|
230
|
+
value: formData[field.name] || "",
|
|
231
|
+
onChangeText: v => handleFieldChange(field.name, v),
|
|
232
|
+
keyboardType: field.type === "email" ? "email-address" : field.type === "tel" ? "phone-pad" : "default",
|
|
233
|
+
autoCapitalize: field.type === "email" ? "none" : "sentences",
|
|
234
|
+
style: [styles.textInput, inputStyle(hasError)]
|
|
235
|
+
}) : null, hasError ? /*#__PURE__*/_jsx(Text, {
|
|
236
|
+
style: [styles.errorText, {
|
|
237
|
+
color: theme.errorColor
|
|
238
|
+
}],
|
|
239
|
+
children: fieldErrors[field.name]
|
|
240
|
+
}) : null]
|
|
241
|
+
}, field.name);
|
|
242
|
+
})
|
|
243
|
+
}), /*#__PURE__*/_jsx(TouchableOpacity, {
|
|
244
|
+
onPress: handleSubmit,
|
|
245
|
+
disabled: isProcessing,
|
|
246
|
+
style: [styles.submitButton, {
|
|
247
|
+
borderRadius: buttonRadius,
|
|
248
|
+
backgroundColor: isProcessing ? theme.borderColor : primarySolid,
|
|
249
|
+
opacity: isProcessing ? 0.5 : 1
|
|
250
|
+
}],
|
|
251
|
+
activeOpacity: 0.9,
|
|
252
|
+
children: isProcessing ? /*#__PURE__*/_jsxs(View, {
|
|
253
|
+
style: styles.loadingRow,
|
|
254
|
+
children: [/*#__PURE__*/_jsx(ActivityIndicator, {
|
|
255
|
+
color: theme.primaryTextColor,
|
|
256
|
+
size: "small"
|
|
257
|
+
}), /*#__PURE__*/_jsx(Text, {
|
|
258
|
+
style: [styles.submitText, {
|
|
259
|
+
color: theme.primaryTextColor
|
|
260
|
+
}],
|
|
261
|
+
children: "Submitting..."
|
|
262
|
+
})]
|
|
263
|
+
}) : /*#__PURE__*/_jsx(Text, {
|
|
264
|
+
style: [styles.submitText, {
|
|
265
|
+
color: theme.primaryTextColor
|
|
266
|
+
}],
|
|
267
|
+
children: data.submit_label || "Next"
|
|
268
|
+
})
|
|
269
|
+
})]
|
|
270
|
+
});
|
|
271
|
+
}
|
|
272
|
+
const styles = StyleSheet.create({
|
|
273
|
+
title: {
|
|
274
|
+
fontSize: 14,
|
|
275
|
+
fontWeight: "500",
|
|
276
|
+
marginBottom: 4
|
|
277
|
+
},
|
|
278
|
+
description: {
|
|
279
|
+
fontSize: 12,
|
|
280
|
+
marginBottom: 10
|
|
281
|
+
},
|
|
282
|
+
fieldsContainer: {
|
|
283
|
+
gap: 10,
|
|
284
|
+
marginBottom: 12
|
|
285
|
+
},
|
|
286
|
+
fieldWrapper: {
|
|
287
|
+
gap: 4
|
|
288
|
+
},
|
|
289
|
+
fieldLabel: {
|
|
290
|
+
fontSize: 11,
|
|
291
|
+
fontWeight: "500"
|
|
292
|
+
},
|
|
293
|
+
textInput: {
|
|
294
|
+
paddingHorizontal: 12,
|
|
295
|
+
paddingVertical: 8,
|
|
296
|
+
fontSize: 13
|
|
297
|
+
},
|
|
298
|
+
textArea: {
|
|
299
|
+
paddingHorizontal: 12,
|
|
300
|
+
paddingVertical: 8,
|
|
301
|
+
fontSize: 13,
|
|
302
|
+
minHeight: 64
|
|
303
|
+
},
|
|
304
|
+
selectPill: {
|
|
305
|
+
paddingHorizontal: 12,
|
|
306
|
+
paddingVertical: 6,
|
|
307
|
+
marginRight: 6,
|
|
308
|
+
marginBottom: 4
|
|
309
|
+
},
|
|
310
|
+
selectPillText: {
|
|
311
|
+
fontSize: 12,
|
|
312
|
+
fontWeight: "500"
|
|
313
|
+
},
|
|
314
|
+
multiselectContainer: {
|
|
315
|
+
flexDirection: "row",
|
|
316
|
+
flexWrap: "wrap"
|
|
317
|
+
},
|
|
318
|
+
booleanRow: {
|
|
319
|
+
flexDirection: "row",
|
|
320
|
+
alignItems: "center",
|
|
321
|
+
gap: 8,
|
|
322
|
+
paddingVertical: 2
|
|
323
|
+
},
|
|
324
|
+
booleanLabel: {
|
|
325
|
+
fontSize: 12
|
|
326
|
+
},
|
|
327
|
+
errorText: {
|
|
328
|
+
fontSize: 11,
|
|
329
|
+
marginTop: 2
|
|
330
|
+
},
|
|
331
|
+
submitButton: {
|
|
332
|
+
height: 36,
|
|
333
|
+
alignItems: "center",
|
|
334
|
+
justifyContent: "center"
|
|
335
|
+
},
|
|
336
|
+
loadingRow: {
|
|
337
|
+
flexDirection: "row",
|
|
338
|
+
alignItems: "center",
|
|
339
|
+
gap: 8
|
|
340
|
+
},
|
|
341
|
+
submitText: {
|
|
342
|
+
fontSize: 13,
|
|
343
|
+
fontWeight: "600"
|
|
344
|
+
}
|
|
345
|
+
});
|
|
346
|
+
//# sourceMappingURL=FormStep.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","useState","useCallback","View","Text","TextInput","TouchableOpacity","ActivityIndicator","Switch","ScrollView","StyleSheet","colorToSolid","getButtonRadius","jsx","_jsx","jsxs","_jsxs","FormStep","payload","theme","isProcessing","onComplete","data","buttonRadius","parseInt","buttonStyle","primarySolid","primaryColor","formData","setFormData","fieldErrors","setFieldErrors","getOptionLabel","option","label","getOptionValue","value","validateField","field","required","undefined","Array","isArray","length","trim","validation","minLength","message","maxLength","pattern","regex","RegExp","test","type","emailRegex","phoneRegex","handleFieldChange","fieldName","prev","next","handleMultiselectToggle","optionValue","checked","current","filter","v","handleSubmit","errors","valid","fields","forEach","error","name","inputStyle","hasError","backgroundColor","color","textColor","borderColor","errorColor","borderWidth","borderRadius","children","style","styles","title","description","mutedTextColor","fieldsContainer","map","fieldWrapper","fieldLabel","options","horizontal","showsHorizontalScrollIndicator","idx","val","isSelected","onPress","selectPill","activeOpacity","selectPillText","primaryTextColor","multiselectContainer","isChecked","includes","booleanRow","onValueChange","trackColor","false","true","thumbColor","booleanLabel","placeholder","toLowerCase","placeholderTextColor","onChangeText","multiline","numberOfLines","textAlignVertical","textArea","String","Number","keyboardType","textInput","autoCapitalize","errorText","disabled","submitButton","opacity","loadingRow","size","submitText","submit_label","create","fontSize","fontWeight","marginBottom","gap","paddingHorizontal","paddingVertical","minHeight","marginRight","flexDirection","flexWrap","alignItems","marginTop","height","justifyContent"],"sourceRoot":"../../../../src","sources":["components/steps/FormStep.tsx"],"mappings":"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","ignoreList":[]}
|