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.js CHANGED
@@ -1,4 +1,4 @@
1
- /*! aport-tools v4.4.22 | ISC */
1
+ /*! aport-tools v4.4.24 | ISC */
2
2
  'use strict';
3
3
 
4
4
  var React = require('react');
@@ -539,26 +539,32 @@ var Input = function Input(_a) {
539
539
  label = _a.label,
540
540
  inputType = _a.inputType,
541
541
  firstValue = _a.firstValue,
542
+ _b = _a.editable,
543
+ editable = _b === void 0 ? true : _b,
542
544
  style = _a.style,
543
- rest = __rest(_a, ["name", "label", "inputType", "firstValue", "style"]);
544
- var _b = useFormContext(),
545
- formValues = _b.formValues,
546
- setFormValue = _b.setFormValue,
547
- formErrors = _b.errors;
545
+ rest = __rest(_a, ["name", "label", "inputType", "firstValue", "editable", "style"]);
546
+ var _c = useFormContext(),
547
+ formValues = _c.formValues,
548
+ setFormValue = _c.setFormValue,
549
+ formErrors = _c.errors;
548
550
  var theme = React.useContext(aportThemes.ThemeContext).theme;
549
551
  var colors = theme.colors;
550
- var _c = React.useState(""),
551
- internalValue = _c[0],
552
- setInternalValue = _c[1];
553
- // Initialize the internal value based on `firstValue` or `formValues`
552
+ var _d = React.useState(""),
553
+ internalValue = _d[0],
554
+ setInternalValue = _d[1];
555
+ var isFirstRender = React.useRef(true); // Track the first render
556
+ // Initialize the internal value when `firstValue` changes or on first render
554
557
  React.useEffect(function () {
555
- if (firstValue) {
556
- setInternalValue(firstValue);
557
- setFormValue(name, firstValue);
558
- } else {
559
- setInternalValue(formValues[name] || "");
558
+ if (isFirstRender.current) {
559
+ isFirstRender.current = false;
560
+ if (firstValue !== undefined) {
561
+ setInternalValue(firstValue);
562
+ setFormValue(name, firstValue);
563
+ } else {
564
+ setInternalValue(formValues[name] || "");
565
+ }
560
566
  }
561
- }, [firstValue, formValues[name]]);
567
+ }, [firstValue]); // Only re-run if `firstValue` changes
562
568
  /**
563
569
  * Handles text changes in the input field, applying formatting based on the inputType.
564
570
  *
@@ -606,6 +612,7 @@ var Input = function Input(_a) {
606
612
  value: internalValue,
607
613
  onChangeText: handleChange,
608
614
  placeholder: label,
615
+ editable: editable,
609
616
  placeholderTextColor: colors.placeHolder.hex
610
617
  }, rest)), formErrors[name] && formErrors[name].length > 0 && (/*#__PURE__*/React.createElement(ErrorList, {
611
618
  errors: formErrors[name]
@@ -633,26 +640,32 @@ var TextArea = function TextArea(_a) {
633
640
  label = _a.label;
634
641
  _a.errors;
635
642
  var firstValue = _a.firstValue,
643
+ _b = _a.editable,
644
+ editable = _b === void 0 ? true : _b,
636
645
  style = _a.style,
637
- rest = __rest(_a, ["name", "label", "errors", "firstValue", "style"]);
638
- var _b = useFormContext(),
639
- formValues = _b.formValues,
640
- setFormValue = _b.setFormValue,
641
- formErrors = _b.errors;
646
+ rest = __rest(_a, ["name", "label", "errors", "firstValue", "editable", "style"]);
647
+ var _c = useFormContext(),
648
+ formValues = _c.formValues,
649
+ setFormValue = _c.setFormValue,
650
+ formErrors = _c.errors;
642
651
  var theme = React.useContext(aportThemes.ThemeContext).theme;
643
652
  var colors = theme.colors;
644
- var _c = React.useState(""),
645
- internalValue = _c[0],
646
- setInternalValue = _c[1];
647
- // Initialize the internal value based on `firstValue` or `formValues`
653
+ var _d = React.useState(""),
654
+ internalValue = _d[0],
655
+ setInternalValue = _d[1];
656
+ var isFirstRender = React.useRef(true); // Track the first render
657
+ // Initialize the internal value when `firstValue` changes or on first render
648
658
  React.useEffect(function () {
649
- if (firstValue) {
650
- setInternalValue(firstValue);
651
- setFormValue(name, firstValue);
652
- } else {
653
- setInternalValue(formValues[name] || "");
659
+ if (isFirstRender.current) {
660
+ isFirstRender.current = false;
661
+ if (firstValue !== undefined) {
662
+ setInternalValue(firstValue);
663
+ setFormValue(name, firstValue);
664
+ } else {
665
+ setInternalValue(formValues[name] || "");
666
+ }
654
667
  }
655
- }, [firstValue, formValues[name]]);
668
+ }, [firstValue]);
656
669
  var handleChange = function handleChange(text) {
657
670
  setInternalValue(text);
658
671
  setFormValue(name, text);
@@ -674,6 +687,7 @@ var TextArea = function TextArea(_a) {
674
687
  placeholder: label,
675
688
  placeholderTextColor: colors.placeHolder.hex,
676
689
  multiline: true,
690
+ editable: editable,
677
691
  numberOfLines: 4,
678
692
  textAlignVertical: "top"
679
693
  }, rest)), formErrors[name] && formErrors[name].length > 0 && (/*#__PURE__*/React.createElement(ErrorList, {
@@ -777,16 +791,21 @@ var InputList = function InputList(_a) {
777
791
  var _l = React.useState(multi ? initialSelections : initialSelections[0] || null),
778
792
  selectedOptions = _l[0],
779
793
  setSelectedOptions = _l[1];
780
- // Update form value on mount if firstValue is provided
794
+ // Update form value when firstValue changes
781
795
  React.useEffect(function () {
782
- if (firstValue && selectedOptions !== firstValue) {
783
- setSelectedOptions(firstValue); // Only update if necessary
796
+ if (multi) {
797
+ setSelectedOptions(initialSelections);
798
+ setFormValue(name, initialSelections);
799
+ } else {
800
+ var singleValue = initialSelections[0] || null;
801
+ setSelectedOptions(singleValue);
802
+ setFormValue(name, singleValue);
784
803
  }
785
- }, [firstValue, selectedOptions]);
804
+ }, [firstValue, multi, initialSelections]);
805
+ // Handle option selection
786
806
  var handleSelectOption = function handleSelectOption(option) {
787
807
  var updatedSelections;
788
808
  if (multi) {
789
- // Ensure selectedOptions is treated as an array
790
809
  var selectedArray = Array.isArray(selectedOptions) ? selectedOptions : [];
791
810
  var alreadySelected = selectedArray.some(function (opt) {
792
811
  return opt.id === option.id;
@@ -799,15 +818,12 @@ var InputList = function InputList(_a) {
799
818
  }
800
819
  setFormValue(name, updatedSelections);
801
820
  } else {
802
- // Handle single-selection case
803
821
  updatedSelections = option;
804
822
  setFormValue(name, option);
805
823
  if (closeOnSelect) setIsDropdownVisible(false);
806
824
  }
807
- // Trigger onChange callback with the updated selection
808
- if (onChange) {
809
- onChange(updatedSelections);
810
- }
825
+ setSelectedOptions(updatedSelections);
826
+ if (onChange) onChange(updatedSelections);
811
827
  };
812
828
  var isItemDisabled = function isItemDisabled(option) {
813
829
  if (!multi) return false; // Disable check only applies for multi-select