aport-tools 4.4.23 → 4.4.24

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/index.esm.js CHANGED
@@ -1,4 +1,4 @@
1
- /*! aport-tools v4.4.23 | ISC */
1
+ /*! aport-tools v4.4.24 | ISC */
2
2
  import React, { useContext, useState, createContext, useRef, useEffect, useMemo, useCallback } 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';
@@ -518,17 +518,19 @@ var Input = function Input(_a) {
518
518
  label = _a.label,
519
519
  inputType = _a.inputType,
520
520
  firstValue = _a.firstValue,
521
+ _b = _a.editable,
522
+ editable = _b === void 0 ? true : _b,
521
523
  style = _a.style,
522
- rest = __rest(_a, ["name", "label", "inputType", "firstValue", "style"]);
523
- var _b = useFormContext(),
524
- formValues = _b.formValues,
525
- setFormValue = _b.setFormValue,
526
- formErrors = _b.errors;
524
+ rest = __rest(_a, ["name", "label", "inputType", "firstValue", "editable", "style"]);
525
+ var _c = useFormContext(),
526
+ formValues = _c.formValues,
527
+ setFormValue = _c.setFormValue,
528
+ formErrors = _c.errors;
527
529
  var theme = useContext(ThemeContext).theme;
528
530
  var colors = theme.colors;
529
- var _c = useState(""),
530
- internalValue = _c[0],
531
- setInternalValue = _c[1];
531
+ var _d = useState(""),
532
+ internalValue = _d[0],
533
+ setInternalValue = _d[1];
532
534
  var isFirstRender = useRef(true); // Track the first render
533
535
  // Initialize the internal value when `firstValue` changes or on first render
534
536
  useEffect(function () {
@@ -589,6 +591,7 @@ var Input = function Input(_a) {
589
591
  value: internalValue,
590
592
  onChangeText: handleChange,
591
593
  placeholder: label,
594
+ editable: editable,
592
595
  placeholderTextColor: colors.placeHolder.hex
593
596
  }, rest)), formErrors[name] && formErrors[name].length > 0 && (/*#__PURE__*/React.createElement(ErrorList, {
594
597
  errors: formErrors[name]
@@ -616,26 +619,32 @@ var TextArea = function TextArea(_a) {
616
619
  label = _a.label;
617
620
  _a.errors;
618
621
  var firstValue = _a.firstValue,
622
+ _b = _a.editable,
623
+ editable = _b === void 0 ? true : _b,
619
624
  style = _a.style,
620
- rest = __rest(_a, ["name", "label", "errors", "firstValue", "style"]);
621
- var _b = useFormContext(),
622
- formValues = _b.formValues,
623
- setFormValue = _b.setFormValue,
624
- formErrors = _b.errors;
625
+ rest = __rest(_a, ["name", "label", "errors", "firstValue", "editable", "style"]);
626
+ var _c = useFormContext(),
627
+ formValues = _c.formValues,
628
+ setFormValue = _c.setFormValue,
629
+ formErrors = _c.errors;
625
630
  var theme = useContext(ThemeContext).theme;
626
631
  var colors = theme.colors;
627
- var _c = useState(""),
628
- internalValue = _c[0],
629
- setInternalValue = _c[1];
630
- // Initialize the internal value based on `firstValue` or `formValues`
632
+ var _d = useState(""),
633
+ internalValue = _d[0],
634
+ setInternalValue = _d[1];
635
+ var isFirstRender = useRef(true); // Track the first render
636
+ // Initialize the internal value when `firstValue` changes or on first render
631
637
  useEffect(function () {
632
- if (firstValue) {
633
- setInternalValue(firstValue);
634
- setFormValue(name, firstValue);
635
- } else {
636
- setInternalValue(formValues[name] || "");
638
+ if (isFirstRender.current) {
639
+ isFirstRender.current = false;
640
+ if (firstValue !== undefined) {
641
+ setInternalValue(firstValue);
642
+ setFormValue(name, firstValue);
643
+ } else {
644
+ setInternalValue(formValues[name] || "");
645
+ }
637
646
  }
638
- }, [firstValue, formValues[name]]);
647
+ }, [firstValue]);
639
648
  var handleChange = function handleChange(text) {
640
649
  setInternalValue(text);
641
650
  setFormValue(name, text);
@@ -657,6 +666,7 @@ var TextArea = function TextArea(_a) {
657
666
  placeholder: label,
658
667
  placeholderTextColor: colors.placeHolder.hex,
659
668
  multiline: true,
669
+ editable: editable,
660
670
  numberOfLines: 4,
661
671
  textAlignVertical: "top"
662
672
  }, rest)), formErrors[name] && formErrors[name].length > 0 && (/*#__PURE__*/React.createElement(ErrorList, {
@@ -760,16 +770,21 @@ var InputList = function InputList(_a) {
760
770
  var _l = useState(multi ? initialSelections : initialSelections[0] || null),
761
771
  selectedOptions = _l[0],
762
772
  setSelectedOptions = _l[1];
763
- // Update form value on mount if firstValue is provided
773
+ // Update form value when firstValue changes
764
774
  useEffect(function () {
765
- if (firstValue && selectedOptions !== firstValue) {
766
- setSelectedOptions(firstValue); // Only update if necessary
775
+ if (multi) {
776
+ setSelectedOptions(initialSelections);
777
+ setFormValue(name, initialSelections);
778
+ } else {
779
+ var singleValue = initialSelections[0] || null;
780
+ setSelectedOptions(singleValue);
781
+ setFormValue(name, singleValue);
767
782
  }
768
- }, [firstValue, selectedOptions]);
783
+ }, [firstValue, multi, initialSelections]);
784
+ // Handle option selection
769
785
  var handleSelectOption = function handleSelectOption(option) {
770
786
  var updatedSelections;
771
787
  if (multi) {
772
- // Ensure selectedOptions is treated as an array
773
788
  var selectedArray = Array.isArray(selectedOptions) ? selectedOptions : [];
774
789
  var alreadySelected = selectedArray.some(function (opt) {
775
790
  return opt.id === option.id;
@@ -782,15 +797,12 @@ var InputList = function InputList(_a) {
782
797
  }
783
798
  setFormValue(name, updatedSelections);
784
799
  } else {
785
- // Handle single-selection case
786
800
  updatedSelections = option;
787
801
  setFormValue(name, option);
788
802
  if (closeOnSelect) setIsDropdownVisible(false);
789
803
  }
790
- // Trigger onChange callback with the updated selection
791
- if (onChange) {
792
- onChange(updatedSelections);
793
- }
804
+ setSelectedOptions(updatedSelections);
805
+ if (onChange) onChange(updatedSelections);
794
806
  };
795
807
  var isItemDisabled = function isItemDisabled(option) {
796
808
  if (!multi) return false; // Disable check only applies for multi-select