aport-tools 4.1.1 → 4.1.21
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/Button.d.ts +4 -0
- package/dist/fonts/Text.d.ts +1 -1
- package/dist/forms/ErrorList.d.ts +6 -0
- package/dist/forms/Form.d.ts +1 -0
- package/dist/forms/FormContext.d.ts +15 -0
- package/dist/forms/Input.d.ts +8 -0
- package/dist/forms/Label.d.ts +7 -0
- package/dist/forms/TextArea.d.ts +9 -0
- package/dist/forms/index.d.ts +5 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.esm.js +257 -15
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +261 -13
- package/dist/index.js.map +1 -1
- package/package.json +3 -2
package/dist/index.js
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
/*! aport-tools v4.1.
|
1
|
+
/*! aport-tools v4.1.21 | ISC */
|
2
2
|
'use strict';
|
3
3
|
|
4
4
|
var React = require('react');
|
@@ -22,6 +22,29 @@ PERFORMANCE OF THIS SOFTWARE.
|
|
22
22
|
/* global Reflect, Promise, SuppressedError, Symbol, Iterator */
|
23
23
|
|
24
24
|
|
25
|
+
var __assign = function() {
|
26
|
+
__assign = Object.assign || function __assign(t) {
|
27
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
28
|
+
s = arguments[i];
|
29
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
|
30
|
+
}
|
31
|
+
return t;
|
32
|
+
};
|
33
|
+
return __assign.apply(this, arguments);
|
34
|
+
};
|
35
|
+
|
36
|
+
function __rest(s, e) {
|
37
|
+
var t = {};
|
38
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
39
|
+
t[p] = s[p];
|
40
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
41
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
42
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
43
|
+
t[p[i]] = s[p[i]];
|
44
|
+
}
|
45
|
+
return t;
|
46
|
+
}
|
47
|
+
|
25
48
|
function __awaiter(thisArg, _arguments, P, generator) {
|
26
49
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
27
50
|
return new (P || (P = Promise))(function (resolve, reject) {
|
@@ -315,9 +338,9 @@ var ThemeToggle = function ThemeToggle() {
|
|
315
338
|
toggleTheme = _a.toggleTheme;
|
316
339
|
var isDarkMode = theme.colors === darkTheme;
|
317
340
|
return /*#__PURE__*/React.createElement(reactNative.View, {
|
318
|
-
style: styles$
|
341
|
+
style: styles$6.container
|
319
342
|
}, /*#__PURE__*/React.createElement(reactNative.Text, {
|
320
|
-
style: [styles$
|
343
|
+
style: [styles$6.text, {
|
321
344
|
color: theme.colors.text.hex
|
322
345
|
}]
|
323
346
|
}, "Dark Mode"), /*#__PURE__*/React.createElement(reactNative.Switch, {
|
@@ -330,7 +353,7 @@ var ThemeToggle = function ThemeToggle() {
|
|
330
353
|
thumbColor: isDarkMode ? darkTheme.secondary.hex : lightTheme.primary.hex
|
331
354
|
}));
|
332
355
|
};
|
333
|
-
var styles$
|
356
|
+
var styles$6 = reactNative.StyleSheet.create({
|
334
357
|
container: {
|
335
358
|
marginTop: 20,
|
336
359
|
flexDirection: 'row',
|
@@ -399,16 +422,18 @@ var Button = function Button(_a) {
|
|
399
422
|
borderRadius = _e === void 0 ? 30 : _e,
|
400
423
|
_f = _a.isFullWidth,
|
401
424
|
isFullWidth = _f === void 0 ? false : _f,
|
425
|
+
_g = _a.loading,
|
426
|
+
loading = _g === void 0 ? false : _g,
|
402
427
|
onPress = _a.onPress;
|
403
428
|
var theme = React.useContext(ThemeContext).theme;
|
404
429
|
var colors = theme.colors;
|
405
430
|
var computedStyles = React.useMemo(function () {
|
406
|
-
return reactNative.StyleSheet.flatten([styles$
|
431
|
+
return reactNative.StyleSheet.flatten([styles$5.button, typeStyles(type, disabled, colors), rounded && {
|
407
432
|
borderRadius: borderRadius
|
408
433
|
}, isFullWidth && {
|
409
434
|
width: '100%'
|
410
|
-
}, disabled && styles$
|
411
|
-
}, [type, disabled, rounded, borderRadius, isFullWidth, colors]);
|
435
|
+
}, (disabled || loading) && styles$5.disabled]);
|
436
|
+
}, [type, disabled, loading, rounded, borderRadius, isFullWidth, colors]);
|
412
437
|
var textColor = React.useMemo(function () {
|
413
438
|
return {
|
414
439
|
color: colors.textButton.hex
|
@@ -416,14 +441,20 @@ var Button = function Button(_a) {
|
|
416
441
|
}, [type, colors]);
|
417
442
|
return /*#__PURE__*/React.createElement(reactNative.TouchableOpacity, {
|
418
443
|
style: computedStyles,
|
419
|
-
disabled: disabled,
|
444
|
+
disabled: disabled || loading,
|
420
445
|
onPress: onPress,
|
421
446
|
activeOpacity: 0.7
|
422
|
-
},
|
447
|
+
}, loading ? (
|
448
|
+
/*#__PURE__*/
|
449
|
+
// Show loading spinner if loading
|
450
|
+
React.createElement(reactNative.ActivityIndicator, {
|
451
|
+
size: "small",
|
452
|
+
color: colors.textButton.hex
|
453
|
+
})) : (/*#__PURE__*/React.createElement(reactNative.Text, {
|
423
454
|
style: textColor
|
424
|
-
}, Array.isArray(children) ? children.join('').toUpperCase() : children === null || children === void 0 ? void 0 : children.toUpperCase()));
|
455
|
+
}, Array.isArray(children) ? children.join('').toUpperCase() : children === null || children === void 0 ? void 0 : children.toUpperCase())));
|
425
456
|
};
|
426
|
-
var styles$
|
457
|
+
var styles$5 = reactNative.StyleSheet.create({
|
427
458
|
button: {
|
428
459
|
justifyContent: 'center',
|
429
460
|
alignItems: 'center',
|
@@ -479,7 +510,7 @@ var Card = function Card(_a) {
|
|
479
510
|
elevation: elevation // Only applies to Android
|
480
511
|
}
|
481
512
|
});
|
482
|
-
var cardStyles = [styles.container, {
|
513
|
+
var cardStyles = [styles$4.container, {
|
483
514
|
borderRadius: borderRadius,
|
484
515
|
backgroundColor: colors.body.hex
|
485
516
|
}, defaultShadow,
|
@@ -494,7 +525,7 @@ var Card = function Card(_a) {
|
|
494
525
|
style: cardStyles
|
495
526
|
}, children));
|
496
527
|
};
|
497
|
-
var styles = reactNative.StyleSheet.create({
|
528
|
+
var styles$4 = reactNative.StyleSheet.create({
|
498
529
|
container: {
|
499
530
|
padding: 16,
|
500
531
|
borderRadius: 12
|
@@ -566,10 +597,227 @@ reactNative.StyleSheet.create({
|
|
566
597
|
// Define any default styles if needed
|
567
598
|
});
|
568
599
|
|
600
|
+
// src/forms/FormContext.tsx
|
601
|
+
var FormContext = /*#__PURE__*/React.createContext(undefined);
|
602
|
+
var useFormContext = function useFormContext() {
|
603
|
+
var context = React.useContext(FormContext);
|
604
|
+
if (!context) {
|
605
|
+
throw new Error("useFormContext must be used within a Form");
|
606
|
+
}
|
607
|
+
return context;
|
608
|
+
};
|
609
|
+
var Form = function Form(_a) {
|
610
|
+
var children = _a.children,
|
611
|
+
onSubmit = _a.onSubmit;
|
612
|
+
var _b = React.useState({}),
|
613
|
+
formValues = _b[0],
|
614
|
+
setFormValues = _b[1];
|
615
|
+
var _c = React.useState({}),
|
616
|
+
errors = _c[0],
|
617
|
+
setErrors = _c[1];
|
618
|
+
var setFormValue = function setFormValue(name, value) {
|
619
|
+
setFormValues(function (prev) {
|
620
|
+
var _a;
|
621
|
+
return __assign(__assign({}, prev), (_a = {}, _a[name] = value, _a));
|
622
|
+
});
|
623
|
+
};
|
624
|
+
var handleSubmit = function handleSubmit() {
|
625
|
+
return __awaiter(void 0, void 0, void 0, function () {
|
626
|
+
var validationErrors;
|
627
|
+
return __generator(this, function (_a) {
|
628
|
+
switch (_a.label) {
|
629
|
+
case 0:
|
630
|
+
return [4 /*yield*/, onSubmit(formValues)];
|
631
|
+
case 1:
|
632
|
+
validationErrors = _a.sent();
|
633
|
+
setErrors(validationErrors);
|
634
|
+
return [2 /*return*/];
|
635
|
+
}
|
636
|
+
});
|
637
|
+
});
|
638
|
+
};
|
639
|
+
return /*#__PURE__*/React.createElement(FormContext.Provider, {
|
640
|
+
value: {
|
641
|
+
formValues: formValues,
|
642
|
+
setFormValue: setFormValue,
|
643
|
+
errors: errors,
|
644
|
+
setErrors: setErrors,
|
645
|
+
handleSubmit: handleSubmit
|
646
|
+
}
|
647
|
+
}, children);
|
648
|
+
};
|
649
|
+
|
650
|
+
// src/forms/ErrorList.tsx
|
651
|
+
var ErrorList = function ErrorList(_a) {
|
652
|
+
var errors = _a.errors;
|
653
|
+
return /*#__PURE__*/React.createElement(reactNative.View, {
|
654
|
+
style: styles$3.container
|
655
|
+
}, errors.map(function (error, index) {
|
656
|
+
return /*#__PURE__*/React.createElement(reactNative.View, {
|
657
|
+
key: index,
|
658
|
+
style: styles$3.errorItem
|
659
|
+
}, /*#__PURE__*/React.createElement(Text, {
|
660
|
+
style: styles$3.bullet
|
661
|
+
}, "\u2022"), /*#__PURE__*/React.createElement(Text, {
|
662
|
+
style: styles$3.errorText
|
663
|
+
}, error));
|
664
|
+
}));
|
665
|
+
};
|
666
|
+
var styles$3 = reactNative.StyleSheet.create({
|
667
|
+
container: {
|
668
|
+
marginTop: 4
|
669
|
+
},
|
670
|
+
errorItem: {
|
671
|
+
flexDirection: 'row',
|
672
|
+
alignItems: 'flex-start',
|
673
|
+
marginBottom: 2
|
674
|
+
},
|
675
|
+
bullet: {
|
676
|
+
marginRight: 4,
|
677
|
+
color: '#FF5252',
|
678
|
+
// Should use 'error' color from theme
|
679
|
+
fontSize: 12
|
680
|
+
},
|
681
|
+
errorText: {
|
682
|
+
flex: 1,
|
683
|
+
color: '#FF5252',
|
684
|
+
// Should use 'error' color from theme
|
685
|
+
fontSize: 12
|
686
|
+
}
|
687
|
+
});
|
688
|
+
|
689
|
+
// src/forms/Input.tsx
|
690
|
+
var Input = function Input(_a) {
|
691
|
+
var name = _a.name,
|
692
|
+
label = _a.label,
|
693
|
+
style = _a.style,
|
694
|
+
rest = __rest(_a, ["name", "label", "style"]);
|
695
|
+
var _b = useFormContext(),
|
696
|
+
formValues = _b.formValues,
|
697
|
+
setFormValue = _b.setFormValue,
|
698
|
+
formErrors = _b.errors;
|
699
|
+
var theme = React.useContext(ThemeContext).theme;
|
700
|
+
var colors = theme.colors;
|
701
|
+
var handleChange = function handleChange(text) {
|
702
|
+
setFormValue(name, text);
|
703
|
+
};
|
704
|
+
return /*#__PURE__*/React.createElement(reactNative.View, {
|
705
|
+
style: styles$2.container
|
706
|
+
}, /*#__PURE__*/React.createElement(Text, {
|
707
|
+
style: [styles$2.label, {
|
708
|
+
color: colors.text.hex
|
709
|
+
}]
|
710
|
+
}, label), /*#__PURE__*/React.createElement(reactNative.TextInput, __assign({
|
711
|
+
style: [styles$2.input, {
|
712
|
+
backgroundColor: colors.body.hex,
|
713
|
+
borderColor: formErrors[name] ? colors.error.hex : '#CCC',
|
714
|
+
color: colors.text.hex
|
715
|
+
}, style],
|
716
|
+
value: formValues[name] || '',
|
717
|
+
onChangeText: handleChange,
|
718
|
+
placeholder: label,
|
719
|
+
placeholderTextColor: colors.text.hex
|
720
|
+
}, rest)), formErrors[name] && formErrors[name].length > 0 && (/*#__PURE__*/React.createElement(ErrorList, {
|
721
|
+
errors: formErrors[name]
|
722
|
+
})));
|
723
|
+
};
|
724
|
+
var styles$2 = reactNative.StyleSheet.create({
|
725
|
+
container: {
|
726
|
+
marginBottom: 16
|
727
|
+
},
|
728
|
+
label: {
|
729
|
+
marginBottom: 4,
|
730
|
+
fontSize: 14
|
731
|
+
},
|
732
|
+
input: {
|
733
|
+
height: 40,
|
734
|
+
borderWidth: 1,
|
735
|
+
borderRadius: 4,
|
736
|
+
paddingHorizontal: 8
|
737
|
+
}
|
738
|
+
});
|
739
|
+
|
740
|
+
// src/forms/TextArea.tsx
|
741
|
+
var TextArea = function TextArea(_a) {
|
742
|
+
var name = _a.name,
|
743
|
+
label = _a.label;
|
744
|
+
_a.errors;
|
745
|
+
var style = _a.style,
|
746
|
+
rest = __rest(_a, ["name", "label", "errors", "style"]);
|
747
|
+
var _b = useFormContext(),
|
748
|
+
formValues = _b.formValues,
|
749
|
+
setFormValue = _b.setFormValue,
|
750
|
+
formErrors = _b.errors;
|
751
|
+
var handleChange = function handleChange(text) {
|
752
|
+
setFormValue(name, text);
|
753
|
+
};
|
754
|
+
return /*#__PURE__*/React.createElement(reactNative.View, {
|
755
|
+
style: styles$1.container
|
756
|
+
}, /*#__PURE__*/React.createElement(Text, {
|
757
|
+
style: styles$1.label
|
758
|
+
}, label), /*#__PURE__*/React.createElement(reactNative.TextInput, __assign({
|
759
|
+
style: [styles$1.textArea, style],
|
760
|
+
value: formValues[name] || '',
|
761
|
+
onChangeText: handleChange,
|
762
|
+
placeholder: label,
|
763
|
+
placeholderTextColor: "#888" // Can be themed if needed
|
764
|
+
,
|
765
|
+
multiline: true,
|
766
|
+
numberOfLines: 4,
|
767
|
+
textAlignVertical: "top"
|
768
|
+
}, rest)), formErrors[name] && formErrors[name].length > 0 && (/*#__PURE__*/React.createElement(ErrorList, {
|
769
|
+
errors: formErrors[name]
|
770
|
+
})));
|
771
|
+
};
|
772
|
+
var styles$1 = reactNative.StyleSheet.create({
|
773
|
+
container: {
|
774
|
+
marginBottom: 16
|
775
|
+
},
|
776
|
+
label: {
|
777
|
+
marginBottom: 4,
|
778
|
+
color: '#000' // Should be themed
|
779
|
+
},
|
780
|
+
textArea: {
|
781
|
+
height: 100,
|
782
|
+
borderColor: '#CCC',
|
783
|
+
// Should be themed
|
784
|
+
borderWidth: 1,
|
785
|
+
borderRadius: 4,
|
786
|
+
paddingHorizontal: 8,
|
787
|
+
paddingVertical: 8,
|
788
|
+
backgroundColor: '#FFFFFF',
|
789
|
+
// Should use 'body' color from theme
|
790
|
+
color: '#000' // Should use 'text' color from theme
|
791
|
+
}
|
792
|
+
});
|
793
|
+
|
794
|
+
// src/forms/Label.tsx
|
795
|
+
var Label = function Label(_a) {
|
796
|
+
var text = _a.text,
|
797
|
+
style = _a.style;
|
798
|
+
return /*#__PURE__*/React.createElement(Text, {
|
799
|
+
style: [styles.label, style]
|
800
|
+
}, text);
|
801
|
+
};
|
802
|
+
var styles = reactNative.StyleSheet.create({
|
803
|
+
label: {
|
804
|
+
marginBottom: 4,
|
805
|
+
color: '#000',
|
806
|
+
// Should be themed
|
807
|
+
fontWeight: '500'
|
808
|
+
}
|
809
|
+
});
|
810
|
+
|
569
811
|
exports.Button = Button;
|
570
812
|
exports.Card = Card;
|
813
|
+
exports.ErrorList = ErrorList;
|
814
|
+
exports.Form = Form;
|
815
|
+
exports.Input = Input;
|
816
|
+
exports.Label = Label;
|
571
817
|
exports.Text = Text;
|
818
|
+
exports.TextArea = TextArea;
|
572
819
|
exports.ThemeContext = ThemeContext;
|
573
820
|
exports.ThemeProvider = ThemeProvider;
|
574
821
|
exports.ThemeToggle = ThemeToggle;
|
822
|
+
exports.useFormContext = useFormContext;
|
575
823
|
//# sourceMappingURL=index.js.map
|