aport-tools 4.4.22 → 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,5 +1,5 @@
1
- /*! aport-tools v4.4.22 | ISC */
2
- import React, { useContext, useState, createContext, useEffect, useMemo, useCallback } from 'react';
1
+ /*! aport-tools v4.4.24 | ISC */
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';
5
5
  import * as ImagePicker from 'expo-image-picker';
@@ -518,26 +518,32 @@ 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];
532
- // Initialize the internal value based on `firstValue` or `formValues`
531
+ var _d = useState(""),
532
+ internalValue = _d[0],
533
+ setInternalValue = _d[1];
534
+ var isFirstRender = useRef(true); // Track the first render
535
+ // Initialize the internal value when `firstValue` changes or on first render
533
536
  useEffect(function () {
534
- if (firstValue) {
535
- setInternalValue(firstValue);
536
- setFormValue(name, firstValue);
537
- } else {
538
- setInternalValue(formValues[name] || "");
537
+ if (isFirstRender.current) {
538
+ isFirstRender.current = false;
539
+ if (firstValue !== undefined) {
540
+ setInternalValue(firstValue);
541
+ setFormValue(name, firstValue);
542
+ } else {
543
+ setInternalValue(formValues[name] || "");
544
+ }
539
545
  }
540
- }, [firstValue, formValues[name]]);
546
+ }, [firstValue]); // Only re-run if `firstValue` changes
541
547
  /**
542
548
  * Handles text changes in the input field, applying formatting based on the inputType.
543
549
  *
@@ -585,6 +591,7 @@ var Input = function Input(_a) {
585
591
  value: internalValue,
586
592
  onChangeText: handleChange,
587
593
  placeholder: label,
594
+ editable: editable,
588
595
  placeholderTextColor: colors.placeHolder.hex
589
596
  }, rest)), formErrors[name] && formErrors[name].length > 0 && (/*#__PURE__*/React.createElement(ErrorList, {
590
597
  errors: formErrors[name]
@@ -612,26 +619,32 @@ var TextArea = function TextArea(_a) {
612
619
  label = _a.label;
613
620
  _a.errors;
614
621
  var firstValue = _a.firstValue,
622
+ _b = _a.editable,
623
+ editable = _b === void 0 ? true : _b,
615
624
  style = _a.style,
616
- rest = __rest(_a, ["name", "label", "errors", "firstValue", "style"]);
617
- var _b = useFormContext(),
618
- formValues = _b.formValues,
619
- setFormValue = _b.setFormValue,
620
- 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;
621
630
  var theme = useContext(ThemeContext).theme;
622
631
  var colors = theme.colors;
623
- var _c = useState(""),
624
- internalValue = _c[0],
625
- setInternalValue = _c[1];
626
- // 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
627
637
  useEffect(function () {
628
- if (firstValue) {
629
- setInternalValue(firstValue);
630
- setFormValue(name, firstValue);
631
- } else {
632
- 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
+ }
633
646
  }
634
- }, [firstValue, formValues[name]]);
647
+ }, [firstValue]);
635
648
  var handleChange = function handleChange(text) {
636
649
  setInternalValue(text);
637
650
  setFormValue(name, text);
@@ -653,6 +666,7 @@ var TextArea = function TextArea(_a) {
653
666
  placeholder: label,
654
667
  placeholderTextColor: colors.placeHolder.hex,
655
668
  multiline: true,
669
+ editable: editable,
656
670
  numberOfLines: 4,
657
671
  textAlignVertical: "top"
658
672
  }, rest)), formErrors[name] && formErrors[name].length > 0 && (/*#__PURE__*/React.createElement(ErrorList, {
@@ -756,16 +770,21 @@ var InputList = function InputList(_a) {
756
770
  var _l = useState(multi ? initialSelections : initialSelections[0] || null),
757
771
  selectedOptions = _l[0],
758
772
  setSelectedOptions = _l[1];
759
- // Update form value on mount if firstValue is provided
773
+ // Update form value when firstValue changes
760
774
  useEffect(function () {
761
- if (firstValue && selectedOptions !== firstValue) {
762
- 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);
763
782
  }
764
- }, [firstValue, selectedOptions]);
783
+ }, [firstValue, multi, initialSelections]);
784
+ // Handle option selection
765
785
  var handleSelectOption = function handleSelectOption(option) {
766
786
  var updatedSelections;
767
787
  if (multi) {
768
- // Ensure selectedOptions is treated as an array
769
788
  var selectedArray = Array.isArray(selectedOptions) ? selectedOptions : [];
770
789
  var alreadySelected = selectedArray.some(function (opt) {
771
790
  return opt.id === option.id;
@@ -778,15 +797,12 @@ var InputList = function InputList(_a) {
778
797
  }
779
798
  setFormValue(name, updatedSelections);
780
799
  } else {
781
- // Handle single-selection case
782
800
  updatedSelections = option;
783
801
  setFormValue(name, option);
784
802
  if (closeOnSelect) setIsDropdownVisible(false);
785
803
  }
786
- // Trigger onChange callback with the updated selection
787
- if (onChange) {
788
- onChange(updatedSelections);
789
- }
804
+ setSelectedOptions(updatedSelections);
805
+ if (onChange) onChange(updatedSelections);
790
806
  };
791
807
  var isItemDisabled = function isItemDisabled(option) {
792
808
  if (!multi) return false; // Disable check only applies for multi-select