aport-tools 4.4.4 → 4.4.6
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/forms/FormContext.d.ts +1 -0
- package/dist/index.esm.js +54 -6
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +54 -6
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
@@ -42,6 +42,7 @@ interface FormContextProps {
|
|
42
42
|
* Typically, this function would call `onSubmit` and handle errors by updating the `errors` state.
|
43
43
|
*/
|
44
44
|
handleSubmit: () => void;
|
45
|
+
handleFormSubmit: (formValues: Record<string, any>) => Promise<Record<string, string[]>>;
|
45
46
|
}
|
46
47
|
export declare const useFormContext: () => FormContextProps;
|
47
48
|
interface StepperProps {
|
package/dist/index.esm.js
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
/*! aport-tools v4.4.
|
1
|
+
/*! aport-tools v4.4.6 | ISC */
|
2
2
|
import React, { useContext, useState, createContext, useCallback, useMemo } from 'react';
|
3
3
|
import { StyleSheet, Text as Text$1, Animated, View, TouchableOpacity, Image, TextInput, Modal, Pressable, FlatList, Keyboard, Platform, Alert, ActivityIndicator } from 'react-native';
|
4
4
|
import { ThemeContext } from 'aport-themes';
|
@@ -175,7 +175,7 @@ var Stepper = function Stepper(_a) {
|
|
175
175
|
currentStep = _a.currentStep,
|
176
176
|
_b = _a.presseable,
|
177
177
|
presseable = _b === void 0 ? false : _b,
|
178
|
-
|
178
|
+
onPress = _a.onPress,
|
179
179
|
_c = _a.stepStyle,
|
180
180
|
stepStyle = _c === void 0 ? "circular" : _c,
|
181
181
|
totalSteps = _a.totalSteps,
|
@@ -185,6 +185,37 @@ var Stepper = function Stepper(_a) {
|
|
185
185
|
var progressAnim = React.useRef(new Animated.Value(0)).current;
|
186
186
|
var theme = useContext(ThemeContext).theme;
|
187
187
|
var colors = theme.colors;
|
188
|
+
var _e = useFormContext(),
|
189
|
+
formValues = _e.formValues,
|
190
|
+
handleFormSubmit = _e.handleFormSubmit;
|
191
|
+
var _f = useState(false),
|
192
|
+
errorBack = _f[0],
|
193
|
+
seterrorBack = _f[1];
|
194
|
+
var handleStepPress = function handleStepPress(stepIndex) {
|
195
|
+
return __awaiter(void 0, void 0, void 0, function () {
|
196
|
+
var errors;
|
197
|
+
return __generator(this, function (_a) {
|
198
|
+
switch (_a.label) {
|
199
|
+
case 0:
|
200
|
+
if (!presseable || stepIndex === currentStep) return [2 /*return*/];
|
201
|
+
if (!(stepIndex > currentStep)) return [3 /*break*/, 2];
|
202
|
+
return [4 /*yield*/, handleFormSubmit(formValues)];
|
203
|
+
case 1:
|
204
|
+
errors = _a.sent();
|
205
|
+
if (Object.keys(errors).length > 0) {
|
206
|
+
console.log("Validation failed. Cannot proceed to step", stepIndex);
|
207
|
+
seterrorBack(true);
|
208
|
+
return [2 /*return*/]; // Prevent step change
|
209
|
+
}
|
210
|
+
_a.label = 2;
|
211
|
+
case 2:
|
212
|
+
// Proceed to change step
|
213
|
+
onPress === null || onPress === void 0 ? void 0 : onPress(stepIndex);
|
214
|
+
return [2 /*return*/];
|
215
|
+
}
|
216
|
+
});
|
217
|
+
});
|
218
|
+
};
|
188
219
|
React.useEffect(function () {
|
189
220
|
Animated.timing(progressAnim, {
|
190
221
|
toValue: currentStep,
|
@@ -271,11 +302,11 @@ var Stepper = function Stepper(_a) {
|
|
271
302
|
}],
|
272
303
|
disabled: !presseable,
|
273
304
|
onPress: function onPress() {
|
274
|
-
return
|
305
|
+
return handleStepPress(index);
|
275
306
|
}
|
276
307
|
}, /*#__PURE__*/React.createElement(View, {
|
277
308
|
style: [styles$9.step, stepStyle === "square" && styles$9.squareStep, {
|
278
|
-
backgroundColor: currentStep >= index ? colors.primary.hex : colors.body.hex
|
309
|
+
backgroundColor: !errorBack ? currentStep >= index ? colors.primary.hex : colors.body.hex : colors.error.hex
|
279
310
|
}]
|
280
311
|
}, renderStepContent(index)), steps && /*#__PURE__*/React.createElement(Text, {
|
281
312
|
style: styles$9.stepText
|
@@ -388,13 +419,29 @@ var Form = function Form(_a) {
|
|
388
419
|
});
|
389
420
|
});
|
390
421
|
};
|
422
|
+
var handleFormSubmit = function handleFormSubmit(formValues) {
|
423
|
+
return __awaiter(void 0, void 0, void 0, function () {
|
424
|
+
var validationErrors;
|
425
|
+
return __generator(this, function (_a) {
|
426
|
+
switch (_a.label) {
|
427
|
+
case 0:
|
428
|
+
return [4 /*yield*/, onSubmit(formValues)];
|
429
|
+
case 1:
|
430
|
+
validationErrors = _a.sent();
|
431
|
+
setErrors(validationErrors);
|
432
|
+
return [2 /*return*/, validationErrors];
|
433
|
+
}
|
434
|
+
});
|
435
|
+
});
|
436
|
+
};
|
391
437
|
return /*#__PURE__*/React.createElement(FormContext.Provider, {
|
392
438
|
value: {
|
393
439
|
formValues: formValues,
|
394
440
|
setFormValue: setFormValue,
|
395
441
|
errors: errors,
|
396
442
|
setErrors: setErrors,
|
397
|
-
handleSubmit: handleSubmit
|
443
|
+
handleSubmit: handleSubmit,
|
444
|
+
handleFormSubmit: handleFormSubmit
|
398
445
|
}
|
399
446
|
}, stepper && (/*#__PURE__*/React.createElement(Stepper, {
|
400
447
|
steps: stepper.steps,
|
@@ -403,7 +450,8 @@ var Form = function Form(_a) {
|
|
403
450
|
onPress: stepper.onPress,
|
404
451
|
totalSteps: stepper.totalSteps,
|
405
452
|
stepType: stepper.stepType,
|
406
|
-
icon: stepper.icon
|
453
|
+
icon: stepper.icon,
|
454
|
+
stepStyle: stepper.stepStyle
|
407
455
|
})), children);
|
408
456
|
};
|
409
457
|
|