bootstrap-rn 0.2.1 → 0.2.2

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.
@@ -3669,7 +3669,7 @@ var propTypes$1n = {
3669
3669
  styleName: PropTypes__default["default"].any
3670
3670
  };
3671
3671
  var styles$15 = StyleSheet.create({
3672
- body: css(_templateObject$13 || (_templateObject$13 = _taggedTemplateLiteral(["\n background-color: $body-bg;\n flex-grow: 1; // added for bootstrap-rn\n "]))),
3672
+ body: css(_templateObject$13 || (_templateObject$13 = _taggedTemplateLiteral(["\n background-color: $body-bg;\n height: 100%; // added for bootstrap-rn\n "]))),
3673
3673
  'body --text': css(_templateObject2$N || (_templateObject2$N = _taggedTemplateLiteral(["\n color: $body-color;\n text-align: $body-text-align;\n "])))
3674
3674
  });
3675
3675
  var Body = /*#__PURE__*/React__default["default"].forwardRef(function (props, ref) {
@@ -4262,26 +4262,28 @@ function useIdentifier(prefix) {
4262
4262
  }
4263
4263
 
4264
4264
  function useControlledState(defaultValue, controlledValue) {
4265
- var onChange = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : function () {};
4265
+ var handleChange = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : function () {};
4266
4266
 
4267
4267
  var _useState = React.useState(defaultValue),
4268
4268
  _useState2 = _slicedToArray(_useState, 2),
4269
4269
  stateValue = _useState2[0],
4270
4270
  setStateValue = _useState2[1];
4271
4271
 
4272
- var isControlled = typeof controlledValue === 'boolean';
4272
+ var isControlled = controlledValue !== undefined && controlledValue !== null;
4273
4273
  var value = isControlled ? controlledValue : stateValue;
4274
4274
 
4275
- var setValue = function setValue(nextValue) {
4275
+ var setValue = function setValue(next) {
4276
+ var nextValue = typeof next === 'function' ? next(value) : next;
4277
+
4276
4278
  if (value === nextValue) {
4277
4279
  return;
4278
4280
  }
4279
4281
 
4280
4282
  if (!isControlled) {
4281
- setStateValue(nextValue);
4283
+ setStateValue(next);
4282
4284
  }
4283
4285
 
4284
- onChange(nextValue);
4286
+ handleChange(nextValue);
4285
4287
  };
4286
4288
 
4287
4289
  return [value, setValue];
@@ -7669,11 +7671,11 @@ PickerWeb.propTypes = propTypes$m;
7669
7671
  var PickerNativeContext = /*#__PURE__*/React__default["default"].createContext();
7670
7672
  PickerNativeContext.displayName = 'PickerNativeContext';
7671
7673
 
7672
- var _excluded$h = ["children", "selectedValue", "onValueChange", "onFocus", "onBlur", "placeholder", "placeholderTextColor", "disabled", "style"];
7674
+ var _excluded$h = ["children", "selectedValue", "onValueChange", "onFocus", "onBlur", "placeholder", "placeholderTextColor", "disabled", "renderText", "renderMenu", "style"];
7673
7675
 
7674
7676
  var _templateObject$f;
7675
7677
  var propTypes$l = {
7676
- children: PropTypes__default["default"].node.isRequired,
7678
+ children: PropTypes__default["default"].node,
7677
7679
  selectedValue: PropTypes__default["default"].oneOfType([PropTypes__default["default"].bool, PropTypes__default["default"].number, PropTypes__default["default"].string, PropTypes__default["default"].object]),
7678
7680
  onValueChange: PropTypes__default["default"].func,
7679
7681
  onFocus: PropTypes__default["default"].func,
@@ -7681,6 +7683,8 @@ var propTypes$l = {
7681
7683
  placeholder: PropTypes__default["default"].string,
7682
7684
  placeholderTextColor: PropTypes__default["default"].string,
7683
7685
  disabled: PropTypes__default["default"].bool,
7686
+ renderText: PropTypes__default["default"].func,
7687
+ renderMenu: PropTypes__default["default"].func,
7684
7688
  // eslint-disable-next-line react/forbid-prop-types
7685
7689
  style: PropTypes__default["default"].any
7686
7690
  };
@@ -7704,11 +7708,45 @@ var extractTextStyles = function extractTextStyles(style) {
7704
7708
  return textStyles;
7705
7709
  };
7706
7710
 
7711
+ var renderTextDefault = function renderTextDefault(_ref3) {
7712
+ var children = _ref3.children,
7713
+ selectedValue = _ref3.selectedValue;
7714
+ var items = React__default["default"].Children.map(children, function (child) {
7715
+ return {
7716
+ label: child.props.label,
7717
+ value: child.props.value
7718
+ };
7719
+ });
7720
+ var selectedItem = items.find(function (item) {
7721
+ return item.value === selectedValue;
7722
+ });
7723
+ return selectedItem === null || selectedItem === void 0 ? void 0 : selectedItem.label;
7724
+ };
7725
+
7726
+ var renderMenuDefault = function renderMenuDefault(_ref4) {
7727
+ var children = _ref4.children,
7728
+ selectedValue = _ref4.selectedValue,
7729
+ handleValueChange = _ref4.handleValueChange,
7730
+ handleClose = _ref4.handleClose;
7731
+ return /*#__PURE__*/React__default["default"].createElement(Offcanvas, {
7732
+ placement: "bottom",
7733
+ visible: true,
7734
+ onToggle: handleClose
7735
+ }, /*#__PURE__*/React__default["default"].createElement(Offcanvas.Body, {
7736
+ contentContainerStyle: styles$f.menu
7737
+ }, /*#__PURE__*/React__default["default"].createElement(PickerNativeContext.Provider, {
7738
+ value: {
7739
+ selectedValue: selectedValue,
7740
+ handleValueChange: handleValueChange
7741
+ }
7742
+ }, children)));
7743
+ };
7744
+
7707
7745
  var PickerNative = /*#__PURE__*/React__default["default"].forwardRef(function (props, ref) {
7708
7746
  var children = props.children,
7709
7747
  selectedValue = props.selectedValue,
7710
7748
  _props$onValueChange = props.onValueChange,
7711
- _onValueChange = _props$onValueChange === void 0 ? function () {} : _props$onValueChange,
7749
+ onValueChange = _props$onValueChange === void 0 ? function () {} : _props$onValueChange,
7712
7750
  _props$onFocus = props.onFocus,
7713
7751
  onFocus = _props$onFocus === void 0 ? function () {} : _props$onFocus,
7714
7752
  _props$onBlur = props.onBlur,
@@ -7718,6 +7756,10 @@ var PickerNative = /*#__PURE__*/React__default["default"].forwardRef(function (p
7718
7756
  placeholderTextColor = _props$placeholderTex === void 0 ? StyleSheet.value('input-placeholder-color') : _props$placeholderTex,
7719
7757
  _props$disabled = props.disabled,
7720
7758
  disabled = _props$disabled === void 0 ? false : _props$disabled,
7759
+ _props$renderText = props.renderText,
7760
+ renderText = _props$renderText === void 0 ? renderTextDefault : _props$renderText,
7761
+ _props$renderMenu = props.renderMenu,
7762
+ renderMenu = _props$renderMenu === void 0 ? renderMenuDefault : _props$renderMenu,
7721
7763
  style = props.style,
7722
7764
  elementProps = _objectWithoutProperties(props, _excluded$h);
7723
7765
 
@@ -7725,20 +7767,21 @@ var PickerNative = /*#__PURE__*/React__default["default"].forwardRef(function (p
7725
7767
 
7726
7768
  var _useState = React.useState(false),
7727
7769
  _useState2 = _slicedToArray(_useState, 2),
7728
- open = _useState2[0],
7729
- setOpen = _useState2[1];
7770
+ visible = _useState2[0],
7771
+ setVisible = _useState2[1];
7730
7772
 
7731
- var items = React__default["default"].Children.map(children, function (child) {
7732
- return {
7733
- label: child.props.label,
7734
- value: child.props.value
7735
- };
7736
- });
7737
- var selectedItem = items.find(function (item) {
7738
- return item.value === selectedValue;
7739
- });
7740
7773
  var textStyle = extractTextStyles(background.style);
7741
7774
  var showPlaceholder = placeholder && (selectedValue === undefined || selectedValue === null);
7775
+
7776
+ var handleValueChange = function handleValueChange(nextValue) {
7777
+ onValueChange(nextValue);
7778
+ setVisible(false);
7779
+ };
7780
+
7781
+ var handleClose = function handleClose() {
7782
+ setVisible(false);
7783
+ };
7784
+
7742
7785
  return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement(Pressable, _extends({}, elementProps, {
7743
7786
  ref: ref,
7744
7787
  accessibilityRole: "combobox",
@@ -7747,7 +7790,7 @@ var PickerNative = /*#__PURE__*/React__default["default"].forwardRef(function (p
7747
7790
  focusable: !disabled,
7748
7791
  selectable: false,
7749
7792
  onPress: function onPress() {
7750
- setOpen(true);
7793
+ setVisible(true);
7751
7794
  },
7752
7795
  onFocus: onFocus,
7753
7796
  onBlur: onBlur,
@@ -7758,24 +7801,15 @@ var PickerNative = /*#__PURE__*/React__default["default"].forwardRef(function (p
7758
7801
  style: [textStyle, showPlaceholder && {
7759
7802
  color: placeholderTextColor
7760
7803
  }]
7761
- }, selectedItem ? selectedItem.label : placeholder)), /*#__PURE__*/React__default["default"].createElement(Offcanvas, {
7762
- placement: "bottom",
7763
- visible: open,
7764
- onToggle: function onToggle() {
7765
- setOpen(false);
7766
- }
7767
- }, /*#__PURE__*/React__default["default"].createElement(Offcanvas.Body, {
7768
- contentContainerStyle: styles$f.menu
7769
- }, /*#__PURE__*/React__default["default"].createElement(PickerNativeContext.Provider, {
7770
- value: {
7771
- selectedValue: selectedValue,
7772
- onValueChange: function onValueChange(nextValue) {
7773
- _onValueChange(nextValue);
7774
-
7775
- setOpen(false);
7776
- }
7777
- }
7778
- }, children))));
7804
+ }, showPlaceholder ? placeholder : renderText({
7805
+ children: children,
7806
+ selectedValue: selectedValue
7807
+ }))), visible && renderMenu({
7808
+ children: children,
7809
+ selectedValue: selectedValue,
7810
+ handleValueChange: handleValueChange,
7811
+ handleClose: handleClose
7812
+ }));
7779
7813
  });
7780
7814
  PickerNative.propTypes = propTypes$l;
7781
7815
 
@@ -7825,7 +7859,7 @@ var PickerNativeItem = /*#__PURE__*/React__default["default"].forwardRef(functio
7825
7859
 
7826
7860
  var _useForcedContext = useForcedContext(PickerNativeContext),
7827
7861
  selectedValue = _useForcedContext.selectedValue,
7828
- onValueChange = _useForcedContext.onValueChange;
7862
+ handleValueChange = _useForcedContext.handleValueChange;
7829
7863
 
7830
7864
  var media = useMedia();
7831
7865
  var classes = getStyles(styles$e, ['item', disabled && 'itemDisabled']);
@@ -7834,7 +7868,7 @@ var PickerNativeItem = /*#__PURE__*/React__default["default"].forwardRef(functio
7834
7868
  return /*#__PURE__*/React__default["default"].createElement(Pressable, {
7835
7869
  ref: ref,
7836
7870
  onPress: function onPress() {
7837
- onValueChange(value);
7871
+ handleValueChange(value);
7838
7872
  },
7839
7873
  accessibilitySelected: selected,
7840
7874
  disabled: disabled,
@@ -7879,7 +7913,7 @@ var _templateObject$d, _templateObject2$9, _templateObject3$3, _templateObject4$
7879
7913
  /* eslint-disable react/no-unused-prop-types */
7880
7914
 
7881
7915
  var propTypes$h = {
7882
- children: PropTypes__default["default"].node.isRequired,
7916
+ children: PropTypes__default["default"].node,
7883
7917
  onFocus: PropTypes__default["default"].func,
7884
7918
  onBlur: PropTypes__default["default"].func,
7885
7919
  placeholderTextColor: PropTypes__default["default"].string,
@@ -3660,7 +3660,7 @@ var propTypes$1n = {
3660
3660
  styleName: PropTypes.any
3661
3661
  };
3662
3662
  var styles$15 = StyleSheet.create({
3663
- body: css(_templateObject$13 || (_templateObject$13 = _taggedTemplateLiteral(["\n background-color: $body-bg;\n flex-grow: 1; // added for bootstrap-rn\n "]))),
3663
+ body: css(_templateObject$13 || (_templateObject$13 = _taggedTemplateLiteral(["\n background-color: $body-bg;\n height: 100%; // added for bootstrap-rn\n "]))),
3664
3664
  'body --text': css(_templateObject2$N || (_templateObject2$N = _taggedTemplateLiteral(["\n color: $body-color;\n text-align: $body-text-align;\n "])))
3665
3665
  });
3666
3666
  var Body = /*#__PURE__*/React.forwardRef(function (props, ref) {
@@ -4253,26 +4253,28 @@ function useIdentifier(prefix) {
4253
4253
  }
4254
4254
 
4255
4255
  function useControlledState(defaultValue, controlledValue) {
4256
- var onChange = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : function () {};
4256
+ var handleChange = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : function () {};
4257
4257
 
4258
4258
  var _useState = useState(defaultValue),
4259
4259
  _useState2 = _slicedToArray(_useState, 2),
4260
4260
  stateValue = _useState2[0],
4261
4261
  setStateValue = _useState2[1];
4262
4262
 
4263
- var isControlled = typeof controlledValue === 'boolean';
4263
+ var isControlled = controlledValue !== undefined && controlledValue !== null;
4264
4264
  var value = isControlled ? controlledValue : stateValue;
4265
4265
 
4266
- var setValue = function setValue(nextValue) {
4266
+ var setValue = function setValue(next) {
4267
+ var nextValue = typeof next === 'function' ? next(value) : next;
4268
+
4267
4269
  if (value === nextValue) {
4268
4270
  return;
4269
4271
  }
4270
4272
 
4271
4273
  if (!isControlled) {
4272
- setStateValue(nextValue);
4274
+ setStateValue(next);
4273
4275
  }
4274
4276
 
4275
- onChange(nextValue);
4277
+ handleChange(nextValue);
4276
4278
  };
4277
4279
 
4278
4280
  return [value, setValue];
@@ -7660,11 +7662,11 @@ PickerWeb.propTypes = propTypes$m;
7660
7662
  var PickerNativeContext = /*#__PURE__*/React.createContext();
7661
7663
  PickerNativeContext.displayName = 'PickerNativeContext';
7662
7664
 
7663
- var _excluded$h = ["children", "selectedValue", "onValueChange", "onFocus", "onBlur", "placeholder", "placeholderTextColor", "disabled", "style"];
7665
+ var _excluded$h = ["children", "selectedValue", "onValueChange", "onFocus", "onBlur", "placeholder", "placeholderTextColor", "disabled", "renderText", "renderMenu", "style"];
7664
7666
 
7665
7667
  var _templateObject$f;
7666
7668
  var propTypes$l = {
7667
- children: PropTypes.node.isRequired,
7669
+ children: PropTypes.node,
7668
7670
  selectedValue: PropTypes.oneOfType([PropTypes.bool, PropTypes.number, PropTypes.string, PropTypes.object]),
7669
7671
  onValueChange: PropTypes.func,
7670
7672
  onFocus: PropTypes.func,
@@ -7672,6 +7674,8 @@ var propTypes$l = {
7672
7674
  placeholder: PropTypes.string,
7673
7675
  placeholderTextColor: PropTypes.string,
7674
7676
  disabled: PropTypes.bool,
7677
+ renderText: PropTypes.func,
7678
+ renderMenu: PropTypes.func,
7675
7679
  // eslint-disable-next-line react/forbid-prop-types
7676
7680
  style: PropTypes.any
7677
7681
  };
@@ -7695,11 +7699,45 @@ var extractTextStyles = function extractTextStyles(style) {
7695
7699
  return textStyles;
7696
7700
  };
7697
7701
 
7702
+ var renderTextDefault = function renderTextDefault(_ref3) {
7703
+ var children = _ref3.children,
7704
+ selectedValue = _ref3.selectedValue;
7705
+ var items = React.Children.map(children, function (child) {
7706
+ return {
7707
+ label: child.props.label,
7708
+ value: child.props.value
7709
+ };
7710
+ });
7711
+ var selectedItem = items.find(function (item) {
7712
+ return item.value === selectedValue;
7713
+ });
7714
+ return selectedItem === null || selectedItem === void 0 ? void 0 : selectedItem.label;
7715
+ };
7716
+
7717
+ var renderMenuDefault = function renderMenuDefault(_ref4) {
7718
+ var children = _ref4.children,
7719
+ selectedValue = _ref4.selectedValue,
7720
+ handleValueChange = _ref4.handleValueChange,
7721
+ handleClose = _ref4.handleClose;
7722
+ return /*#__PURE__*/React.createElement(Offcanvas, {
7723
+ placement: "bottom",
7724
+ visible: true,
7725
+ onToggle: handleClose
7726
+ }, /*#__PURE__*/React.createElement(Offcanvas.Body, {
7727
+ contentContainerStyle: styles$f.menu
7728
+ }, /*#__PURE__*/React.createElement(PickerNativeContext.Provider, {
7729
+ value: {
7730
+ selectedValue: selectedValue,
7731
+ handleValueChange: handleValueChange
7732
+ }
7733
+ }, children)));
7734
+ };
7735
+
7698
7736
  var PickerNative = /*#__PURE__*/React.forwardRef(function (props, ref) {
7699
7737
  var children = props.children,
7700
7738
  selectedValue = props.selectedValue,
7701
7739
  _props$onValueChange = props.onValueChange,
7702
- _onValueChange = _props$onValueChange === void 0 ? function () {} : _props$onValueChange,
7740
+ onValueChange = _props$onValueChange === void 0 ? function () {} : _props$onValueChange,
7703
7741
  _props$onFocus = props.onFocus,
7704
7742
  onFocus = _props$onFocus === void 0 ? function () {} : _props$onFocus,
7705
7743
  _props$onBlur = props.onBlur,
@@ -7709,6 +7747,10 @@ var PickerNative = /*#__PURE__*/React.forwardRef(function (props, ref) {
7709
7747
  placeholderTextColor = _props$placeholderTex === void 0 ? StyleSheet.value('input-placeholder-color') : _props$placeholderTex,
7710
7748
  _props$disabled = props.disabled,
7711
7749
  disabled = _props$disabled === void 0 ? false : _props$disabled,
7750
+ _props$renderText = props.renderText,
7751
+ renderText = _props$renderText === void 0 ? renderTextDefault : _props$renderText,
7752
+ _props$renderMenu = props.renderMenu,
7753
+ renderMenu = _props$renderMenu === void 0 ? renderMenuDefault : _props$renderMenu,
7712
7754
  style = props.style,
7713
7755
  elementProps = _objectWithoutProperties(props, _excluded$h);
7714
7756
 
@@ -7716,20 +7758,21 @@ var PickerNative = /*#__PURE__*/React.forwardRef(function (props, ref) {
7716
7758
 
7717
7759
  var _useState = useState(false),
7718
7760
  _useState2 = _slicedToArray(_useState, 2),
7719
- open = _useState2[0],
7720
- setOpen = _useState2[1];
7761
+ visible = _useState2[0],
7762
+ setVisible = _useState2[1];
7721
7763
 
7722
- var items = React.Children.map(children, function (child) {
7723
- return {
7724
- label: child.props.label,
7725
- value: child.props.value
7726
- };
7727
- });
7728
- var selectedItem = items.find(function (item) {
7729
- return item.value === selectedValue;
7730
- });
7731
7764
  var textStyle = extractTextStyles(background.style);
7732
7765
  var showPlaceholder = placeholder && (selectedValue === undefined || selectedValue === null);
7766
+
7767
+ var handleValueChange = function handleValueChange(nextValue) {
7768
+ onValueChange(nextValue);
7769
+ setVisible(false);
7770
+ };
7771
+
7772
+ var handleClose = function handleClose() {
7773
+ setVisible(false);
7774
+ };
7775
+
7733
7776
  return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Pressable, _extends({}, elementProps, {
7734
7777
  ref: ref,
7735
7778
  accessibilityRole: "combobox",
@@ -7738,7 +7781,7 @@ var PickerNative = /*#__PURE__*/React.forwardRef(function (props, ref) {
7738
7781
  focusable: !disabled,
7739
7782
  selectable: false,
7740
7783
  onPress: function onPress() {
7741
- setOpen(true);
7784
+ setVisible(true);
7742
7785
  },
7743
7786
  onFocus: onFocus,
7744
7787
  onBlur: onBlur,
@@ -7749,24 +7792,15 @@ var PickerNative = /*#__PURE__*/React.forwardRef(function (props, ref) {
7749
7792
  style: [textStyle, showPlaceholder && {
7750
7793
  color: placeholderTextColor
7751
7794
  }]
7752
- }, selectedItem ? selectedItem.label : placeholder)), /*#__PURE__*/React.createElement(Offcanvas, {
7753
- placement: "bottom",
7754
- visible: open,
7755
- onToggle: function onToggle() {
7756
- setOpen(false);
7757
- }
7758
- }, /*#__PURE__*/React.createElement(Offcanvas.Body, {
7759
- contentContainerStyle: styles$f.menu
7760
- }, /*#__PURE__*/React.createElement(PickerNativeContext.Provider, {
7761
- value: {
7762
- selectedValue: selectedValue,
7763
- onValueChange: function onValueChange(nextValue) {
7764
- _onValueChange(nextValue);
7765
-
7766
- setOpen(false);
7767
- }
7768
- }
7769
- }, children))));
7795
+ }, showPlaceholder ? placeholder : renderText({
7796
+ children: children,
7797
+ selectedValue: selectedValue
7798
+ }))), visible && renderMenu({
7799
+ children: children,
7800
+ selectedValue: selectedValue,
7801
+ handleValueChange: handleValueChange,
7802
+ handleClose: handleClose
7803
+ }));
7770
7804
  });
7771
7805
  PickerNative.propTypes = propTypes$l;
7772
7806
 
@@ -7816,7 +7850,7 @@ var PickerNativeItem = /*#__PURE__*/React.forwardRef(function (props, ref) {
7816
7850
 
7817
7851
  var _useForcedContext = useForcedContext(PickerNativeContext),
7818
7852
  selectedValue = _useForcedContext.selectedValue,
7819
- onValueChange = _useForcedContext.onValueChange;
7853
+ handleValueChange = _useForcedContext.handleValueChange;
7820
7854
 
7821
7855
  var media = useMedia();
7822
7856
  var classes = getStyles(styles$e, ['item', disabled && 'itemDisabled']);
@@ -7825,7 +7859,7 @@ var PickerNativeItem = /*#__PURE__*/React.forwardRef(function (props, ref) {
7825
7859
  return /*#__PURE__*/React.createElement(Pressable, {
7826
7860
  ref: ref,
7827
7861
  onPress: function onPress() {
7828
- onValueChange(value);
7862
+ handleValueChange(value);
7829
7863
  },
7830
7864
  accessibilitySelected: selected,
7831
7865
  disabled: disabled,
@@ -7870,7 +7904,7 @@ var _templateObject$d, _templateObject2$9, _templateObject3$3, _templateObject4$
7870
7904
  /* eslint-disable react/no-unused-prop-types */
7871
7905
 
7872
7906
  var propTypes$h = {
7873
- children: PropTypes.node.isRequired,
7907
+ children: PropTypes.node,
7874
7908
  onFocus: PropTypes.func,
7875
7909
  onBlur: PropTypes.func,
7876
7910
  placeholderTextColor: PropTypes.string,
@@ -7664,7 +7664,7 @@
7664
7664
  styleName: PropTypes.any
7665
7665
  };
7666
7666
  var styles$15 = StyleSheet.create({
7667
- body: css(_templateObject$13 || (_templateObject$13 = _taggedTemplateLiteral(["\n background-color: $body-bg;\n flex-grow: 1; // added for bootstrap-rn\n "]))),
7667
+ body: css(_templateObject$13 || (_templateObject$13 = _taggedTemplateLiteral(["\n background-color: $body-bg;\n height: 100%; // added for bootstrap-rn\n "]))),
7668
7668
  'body --text': css(_templateObject2$N || (_templateObject2$N = _taggedTemplateLiteral(["\n color: $body-color;\n text-align: $body-text-align;\n "])))
7669
7669
  });
7670
7670
  var Body = /*#__PURE__*/React__default["default"].forwardRef(function (props, ref) {
@@ -8257,26 +8257,28 @@
8257
8257
  }
8258
8258
 
8259
8259
  function useControlledState(defaultValue, controlledValue) {
8260
- var onChange = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : function () {};
8260
+ var handleChange = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : function () {};
8261
8261
 
8262
8262
  var _useState = React.useState(defaultValue),
8263
8263
  _useState2 = _slicedToArray(_useState, 2),
8264
8264
  stateValue = _useState2[0],
8265
8265
  setStateValue = _useState2[1];
8266
8266
 
8267
- var isControlled = typeof controlledValue === 'boolean';
8267
+ var isControlled = controlledValue !== undefined && controlledValue !== null;
8268
8268
  var value = isControlled ? controlledValue : stateValue;
8269
8269
 
8270
- var setValue = function setValue(nextValue) {
8270
+ var setValue = function setValue(next) {
8271
+ var nextValue = typeof next === 'function' ? next(value) : next;
8272
+
8271
8273
  if (value === nextValue) {
8272
8274
  return;
8273
8275
  }
8274
8276
 
8275
8277
  if (!isControlled) {
8276
- setStateValue(nextValue);
8278
+ setStateValue(next);
8277
8279
  }
8278
8280
 
8279
- onChange(nextValue);
8281
+ handleChange(nextValue);
8280
8282
  };
8281
8283
 
8282
8284
  return [value, setValue];
@@ -11664,11 +11666,11 @@
11664
11666
  var PickerNativeContext = /*#__PURE__*/React__default["default"].createContext();
11665
11667
  PickerNativeContext.displayName = 'PickerNativeContext';
11666
11668
 
11667
- var _excluded$h = ["children", "selectedValue", "onValueChange", "onFocus", "onBlur", "placeholder", "placeholderTextColor", "disabled", "style"];
11669
+ var _excluded$h = ["children", "selectedValue", "onValueChange", "onFocus", "onBlur", "placeholder", "placeholderTextColor", "disabled", "renderText", "renderMenu", "style"];
11668
11670
 
11669
11671
  var _templateObject$f;
11670
11672
  var propTypes$l = {
11671
- children: PropTypes.node.isRequired,
11673
+ children: PropTypes.node,
11672
11674
  selectedValue: PropTypes.oneOfType([PropTypes.bool, PropTypes.number, PropTypes.string, PropTypes.object]),
11673
11675
  onValueChange: PropTypes.func,
11674
11676
  onFocus: PropTypes.func,
@@ -11676,6 +11678,8 @@
11676
11678
  placeholder: PropTypes.string,
11677
11679
  placeholderTextColor: PropTypes.string,
11678
11680
  disabled: PropTypes.bool,
11681
+ renderText: PropTypes.func,
11682
+ renderMenu: PropTypes.func,
11679
11683
  // eslint-disable-next-line react/forbid-prop-types
11680
11684
  style: PropTypes.any
11681
11685
  };
@@ -11699,11 +11703,45 @@
11699
11703
  return textStyles;
11700
11704
  };
11701
11705
 
11706
+ var renderTextDefault = function renderTextDefault(_ref3) {
11707
+ var children = _ref3.children,
11708
+ selectedValue = _ref3.selectedValue;
11709
+ var items = React__default["default"].Children.map(children, function (child) {
11710
+ return {
11711
+ label: child.props.label,
11712
+ value: child.props.value
11713
+ };
11714
+ });
11715
+ var selectedItem = items.find(function (item) {
11716
+ return item.value === selectedValue;
11717
+ });
11718
+ return selectedItem === null || selectedItem === void 0 ? void 0 : selectedItem.label;
11719
+ };
11720
+
11721
+ var renderMenuDefault = function renderMenuDefault(_ref4) {
11722
+ var children = _ref4.children,
11723
+ selectedValue = _ref4.selectedValue,
11724
+ handleValueChange = _ref4.handleValueChange,
11725
+ handleClose = _ref4.handleClose;
11726
+ return /*#__PURE__*/React__default["default"].createElement(Offcanvas, {
11727
+ placement: "bottom",
11728
+ visible: true,
11729
+ onToggle: handleClose
11730
+ }, /*#__PURE__*/React__default["default"].createElement(Offcanvas.Body, {
11731
+ contentContainerStyle: styles$f.menu
11732
+ }, /*#__PURE__*/React__default["default"].createElement(PickerNativeContext.Provider, {
11733
+ value: {
11734
+ selectedValue: selectedValue,
11735
+ handleValueChange: handleValueChange
11736
+ }
11737
+ }, children)));
11738
+ };
11739
+
11702
11740
  var PickerNative = /*#__PURE__*/React__default["default"].forwardRef(function (props, ref) {
11703
11741
  var children = props.children,
11704
11742
  selectedValue = props.selectedValue,
11705
11743
  _props$onValueChange = props.onValueChange,
11706
- _onValueChange = _props$onValueChange === void 0 ? function () {} : _props$onValueChange,
11744
+ onValueChange = _props$onValueChange === void 0 ? function () {} : _props$onValueChange,
11707
11745
  _props$onFocus = props.onFocus,
11708
11746
  onFocus = _props$onFocus === void 0 ? function () {} : _props$onFocus,
11709
11747
  _props$onBlur = props.onBlur,
@@ -11713,6 +11751,10 @@
11713
11751
  placeholderTextColor = _props$placeholderTex === void 0 ? StyleSheet.value('input-placeholder-color') : _props$placeholderTex,
11714
11752
  _props$disabled = props.disabled,
11715
11753
  disabled = _props$disabled === void 0 ? false : _props$disabled,
11754
+ _props$renderText = props.renderText,
11755
+ renderText = _props$renderText === void 0 ? renderTextDefault : _props$renderText,
11756
+ _props$renderMenu = props.renderMenu,
11757
+ renderMenu = _props$renderMenu === void 0 ? renderMenuDefault : _props$renderMenu,
11716
11758
  style = props.style,
11717
11759
  elementProps = _objectWithoutProperties(props, _excluded$h);
11718
11760
 
@@ -11720,20 +11762,21 @@
11720
11762
 
11721
11763
  var _useState = React.useState(false),
11722
11764
  _useState2 = _slicedToArray(_useState, 2),
11723
- open = _useState2[0],
11724
- setOpen = _useState2[1];
11765
+ visible = _useState2[0],
11766
+ setVisible = _useState2[1];
11725
11767
 
11726
- var items = React__default["default"].Children.map(children, function (child) {
11727
- return {
11728
- label: child.props.label,
11729
- value: child.props.value
11730
- };
11731
- });
11732
- var selectedItem = items.find(function (item) {
11733
- return item.value === selectedValue;
11734
- });
11735
11768
  var textStyle = extractTextStyles(background.style);
11736
11769
  var showPlaceholder = placeholder && (selectedValue === undefined || selectedValue === null);
11770
+
11771
+ var handleValueChange = function handleValueChange(nextValue) {
11772
+ onValueChange(nextValue);
11773
+ setVisible(false);
11774
+ };
11775
+
11776
+ var handleClose = function handleClose() {
11777
+ setVisible(false);
11778
+ };
11779
+
11737
11780
  return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement(Pressable, _extends$1({}, elementProps, {
11738
11781
  ref: ref,
11739
11782
  accessibilityRole: "combobox",
@@ -11742,7 +11785,7 @@
11742
11785
  focusable: !disabled,
11743
11786
  selectable: false,
11744
11787
  onPress: function onPress() {
11745
- setOpen(true);
11788
+ setVisible(true);
11746
11789
  },
11747
11790
  onFocus: onFocus,
11748
11791
  onBlur: onBlur,
@@ -11753,24 +11796,15 @@
11753
11796
  style: [textStyle, showPlaceholder && {
11754
11797
  color: placeholderTextColor
11755
11798
  }]
11756
- }, selectedItem ? selectedItem.label : placeholder)), /*#__PURE__*/React__default["default"].createElement(Offcanvas, {
11757
- placement: "bottom",
11758
- visible: open,
11759
- onToggle: function onToggle() {
11760
- setOpen(false);
11761
- }
11762
- }, /*#__PURE__*/React__default["default"].createElement(Offcanvas.Body, {
11763
- contentContainerStyle: styles$f.menu
11764
- }, /*#__PURE__*/React__default["default"].createElement(PickerNativeContext.Provider, {
11765
- value: {
11766
- selectedValue: selectedValue,
11767
- onValueChange: function onValueChange(nextValue) {
11768
- _onValueChange(nextValue);
11769
-
11770
- setOpen(false);
11771
- }
11772
- }
11773
- }, children))));
11799
+ }, showPlaceholder ? placeholder : renderText({
11800
+ children: children,
11801
+ selectedValue: selectedValue
11802
+ }))), visible && renderMenu({
11803
+ children: children,
11804
+ selectedValue: selectedValue,
11805
+ handleValueChange: handleValueChange,
11806
+ handleClose: handleClose
11807
+ }));
11774
11808
  });
11775
11809
  PickerNative.propTypes = propTypes$l;
11776
11810
 
@@ -11820,7 +11854,7 @@
11820
11854
 
11821
11855
  var _useForcedContext = useForcedContext(PickerNativeContext),
11822
11856
  selectedValue = _useForcedContext.selectedValue,
11823
- onValueChange = _useForcedContext.onValueChange;
11857
+ handleValueChange = _useForcedContext.handleValueChange;
11824
11858
 
11825
11859
  var media = useMedia();
11826
11860
  var classes = getStyles(styles$e, ['item', disabled && 'itemDisabled']);
@@ -11829,7 +11863,7 @@
11829
11863
  return /*#__PURE__*/React__default["default"].createElement(Pressable, {
11830
11864
  ref: ref,
11831
11865
  onPress: function onPress() {
11832
- onValueChange(value);
11866
+ handleValueChange(value);
11833
11867
  },
11834
11868
  accessibilitySelected: selected,
11835
11869
  disabled: disabled,
@@ -11874,7 +11908,7 @@
11874
11908
  /* eslint-disable react/no-unused-prop-types */
11875
11909
 
11876
11910
  var propTypes$h = {
11877
- children: PropTypes.node.isRequired,
11911
+ children: PropTypes.node,
11878
11912
  onFocus: PropTypes.func,
11879
11913
  onBlur: PropTypes.func,
11880
11914
  placeholderTextColor: PropTypes.string,