@hoddy-ui/core 2.5.32 → 2.5.34

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.
@@ -188,6 +188,7 @@ interface PopupProps {
188
188
  open: boolean;
189
189
  onClose?: () => void;
190
190
  style?: ViewStyle;
191
+ disableAutoKeyboardManagement?: boolean;
191
192
  onModalShow?: () => void;
192
193
  onModalHide?: () => void;
193
194
  }
@@ -188,6 +188,7 @@ interface PopupProps {
188
188
  open: boolean;
189
189
  onClose?: () => void;
190
190
  style?: ViewStyle;
191
+ disableAutoKeyboardManagement?: boolean;
191
192
  onModalShow?: () => void;
192
193
  onModalHide?: () => void;
193
194
  }
@@ -452,6 +452,7 @@ var UIThemeContext = (0, import_react3.createContext)({
452
452
  themeState: { mode: "default", value: "light" }
453
453
  });
454
454
  function themeReducer(state, { type, payload }) {
455
+ import_async_storage.default.setItem("theme", type);
455
456
  switch (type) {
456
457
  case "dark":
457
458
  return { mode: "dark", value: "dark" };
@@ -470,12 +471,20 @@ var ConfigureSystemUI = () => {
470
471
  const config2 = getConfig();
471
472
  if (colors2) {
472
473
  SystemUI.setBackgroundColorAsync(colors2.white[1]);
473
- if (import_react_native3.Platform.OS === "android" && !config2.EDGE_TO_EDGE) {
474
- NavigationBar.setBackgroundColorAsync(colors2.white[1]);
475
- if (theme === "dark") {
476
- NavigationBar.setButtonStyleAsync("light");
474
+ if (import_react_native3.Platform.OS === "android") {
475
+ if (config2.EDGE_TO_EDGE) {
476
+ if (theme === "dark") {
477
+ NavigationBar.setStyle("light");
478
+ } else {
479
+ NavigationBar.setStyle("dark");
480
+ }
477
481
  } else {
478
- NavigationBar.setButtonStyleAsync("dark");
482
+ NavigationBar.setBackgroundColorAsync(colors2.white[1]);
483
+ if (theme === "dark") {
484
+ NavigationBar.setButtonStyleAsync("light");
485
+ } else {
486
+ NavigationBar.setButtonStyleAsync("dark");
487
+ }
479
488
  }
480
489
  }
481
490
  }
@@ -523,7 +532,6 @@ var UIThemeProvider = ({ children }) => {
523
532
  };
524
533
 
525
534
  // ../src/hooks.ts
526
- var import_async_storage2 = __toESM(require("@react-native-async-storage/async-storage"));
527
535
  var useColors = () => {
528
536
  const { themeState } = (0, import_react4.useContext)(UIThemeContext);
529
537
  return colors(themeState.value);
@@ -538,10 +546,8 @@ var useThemeContext = () => {
538
546
  const setTheme = (theme2) => {
539
547
  if (theme2 === "default") {
540
548
  themeDispatch?.({ type: "default", payload: colorScheme });
541
- import_async_storage2.default.setItem("theme", "default");
542
549
  } else {
543
550
  themeDispatch?.({ type: theme2 });
544
- import_async_storage2.default.setItem("theme", theme2);
545
551
  }
546
552
  };
547
553
  return { theme, setTheme };
@@ -682,6 +688,7 @@ var Avatar = ({
682
688
  style = {}
683
689
  }) => {
684
690
  const colors2 = useColors();
691
+ const [imageError, setImageError] = (0, import_react7.useState)(false);
685
692
  const styles = import_react_native_size_matters4.ScaledSheet.create({
686
693
  root: {
687
694
  borderRadius: 150,
@@ -700,7 +707,15 @@ var Avatar = ({
700
707
  width: "110%"
701
708
  }
702
709
  });
703
- return /* @__PURE__ */ import_react7.default.createElement(import_react_native7.View, { style: styles.root }, source ? /* @__PURE__ */ import_react7.default.createElement(import_react_native7.Image, { resizeMode: "cover", style: styles.image, source }) : label ? /* @__PURE__ */ import_react7.default.createElement(Typography_default, { style: { color: colors2[color].text } }, label[0]) : /* @__PURE__ */ import_react7.default.createElement(import_vector_icons2.AntDesign, { name: "user", color: "#fff", size: Math.round(size / 1.5) }));
710
+ return /* @__PURE__ */ import_react7.default.createElement(import_react_native7.View, { style: styles.root }, source && !imageError ? /* @__PURE__ */ import_react7.default.createElement(
711
+ import_react_native7.Image,
712
+ {
713
+ resizeMode: "cover",
714
+ style: styles.image,
715
+ source,
716
+ onError: () => setImageError(true)
717
+ }
718
+ ) : label ? /* @__PURE__ */ import_react7.default.createElement(Typography_default, { style: { color: colors2[color].text } }, label[0]) : /* @__PURE__ */ import_react7.default.createElement(import_vector_icons2.AntDesign, { name: "user", color: "#fff", size: Math.round(size / 1.5) }));
704
719
  };
705
720
  var Avatar_default = Avatar;
706
721
 
@@ -969,7 +984,8 @@ var Popup = ({
969
984
  },
970
985
  style,
971
986
  onModalShow,
972
- onModalHide
987
+ onModalHide,
988
+ disableAutoKeyboardManagement = false
973
989
  }) => {
974
990
  const theme = useTheme();
975
991
  const colors2 = useColors();
@@ -1097,27 +1113,34 @@ var Popup = ({
1097
1113
  behavior: import_react_native11.Platform.OS === "ios" ? "padding" : "height",
1098
1114
  keyboardVerticalOffset: keyboardVerticalOffset || keyboardVerticalOffsetValue
1099
1115
  },
1100
- /* @__PURE__ */ import_react11.default.createElement(import_react_native11.TouchableWithoutFeedback, { onPress: import_react_native11.Keyboard.dismiss }, /* @__PURE__ */ import_react11.default.createElement(import_react_native11.View, { style: styles.root }, modalOpen && /* @__PURE__ */ import_react11.default.createElement(
1101
- import_react_native11.Pressable,
1102
- {
1103
- style: [import_react_native11.StyleSheet.absoluteFill, { zIndex: 1 }],
1104
- onPress: closeAction
1105
- }
1106
- ), /* @__PURE__ */ import_react11.default.createElement(
1107
- import_react_native_reanimated2.default.View,
1116
+ /* @__PURE__ */ import_react11.default.createElement(
1117
+ import_react_native11.TouchableWithoutFeedback,
1108
1118
  {
1109
- style: [styles.avoidingView, contentAnimatedStyle],
1110
- layout: modalVisible ? import_react_native_reanimated2.LinearTransition.springify().stiffness(200).mass(0.5).damping(100) : void 0
1119
+ onPress: import_react_native11.Keyboard.dismiss,
1120
+ disabled: disableAutoKeyboardManagement
1111
1121
  },
1112
- /* @__PURE__ */ import_react11.default.createElement(import_react_native11.View, { style: styles.container }, !bare && /* @__PURE__ */ import_react11.default.createElement(import_react_native11.View, { style: styles.title }, /* @__PURE__ */ import_react11.default.createElement(import_react_native11.View, { style: styles.titleIcon }, /* @__PURE__ */ import_react11.default.createElement(
1113
- IconButton,
1122
+ /* @__PURE__ */ import_react11.default.createElement(import_react_native11.View, { style: styles.root }, modalOpen && /* @__PURE__ */ import_react11.default.createElement(
1123
+ import_react_native11.Pressable,
1114
1124
  {
1115
- size: 20,
1116
- icon: "close",
1125
+ style: [import_react_native11.StyleSheet.absoluteFill, { zIndex: 1 }],
1117
1126
  onPress: closeAction
1118
1127
  }
1119
- )), /* @__PURE__ */ import_react11.default.createElement(Typography_default, { align: "center", fontWeight: 500 }, title)), /* @__PURE__ */ import_react11.default.createElement(import_react_native11.View, { style: styles.content }, children))
1120
- )))
1128
+ ), /* @__PURE__ */ import_react11.default.createElement(
1129
+ import_react_native_reanimated2.default.View,
1130
+ {
1131
+ style: [styles.avoidingView, contentAnimatedStyle],
1132
+ layout: modalVisible ? import_react_native_reanimated2.LinearTransition.springify().stiffness(200).mass(0.5).damping(100) : void 0
1133
+ },
1134
+ /* @__PURE__ */ import_react11.default.createElement(import_react_native11.View, { style: styles.container }, !bare && /* @__PURE__ */ import_react11.default.createElement(import_react_native11.View, { style: styles.title }, /* @__PURE__ */ import_react11.default.createElement(import_react_native11.View, { style: styles.titleIcon }, /* @__PURE__ */ import_react11.default.createElement(
1135
+ IconButton,
1136
+ {
1137
+ size: 20,
1138
+ icon: "close",
1139
+ onPress: closeAction
1140
+ }
1141
+ )), /* @__PURE__ */ import_react11.default.createElement(Typography_default, { align: "center", fontWeight: 500 }, title)), /* @__PURE__ */ import_react11.default.createElement(import_react_native11.View, { style: styles.content }, children))
1142
+ ))
1143
+ )
1121
1144
  ))
1122
1145
  );
1123
1146
  };
@@ -1427,27 +1450,36 @@ var SelectMenu = ({
1427
1450
  ),
1428
1451
  [value, colors2]
1429
1452
  );
1430
- return /* @__PURE__ */ import_react15.default.createElement(Popup, { open, onClose, title: label }, /* @__PURE__ */ import_react15.default.createElement(import_react_native15.View, { style: styles.content }, /* @__PURE__ */ import_react15.default.createElement(import_react_native15.View, { style: styles.header }, helperText && /* @__PURE__ */ import_react15.default.createElement(Typography_default, { variant: "body2", color: "textSecondary", gutterBottom: 5 }, helperText), searchEnabled && /* @__PURE__ */ import_react15.default.createElement(
1431
- TextField_default,
1432
- {
1433
- label: searchPlaceholder,
1434
- value: search,
1435
- type: "search",
1436
- onChangeText: setSearch,
1437
- variant: "outlined"
1438
- }
1439
- )), /* @__PURE__ */ import_react15.default.createElement(
1440
- import_react_native15.FlatList,
1453
+ return /* @__PURE__ */ import_react15.default.createElement(
1454
+ Popup,
1441
1455
  {
1442
- removeClippedSubviews: true,
1443
- keyExtractor: (item) => item.value,
1444
- bounces: false,
1445
- renderItem,
1446
- data: options.filter(
1447
- (item) => search.length > 1 ? item.label.toLowerCase().indexOf(search.toLowerCase()) > -1 : item
1448
- ).sort((a, b) => a.label.localeCompare(b.label))
1449
- }
1450
- )));
1456
+ open,
1457
+ onClose,
1458
+ title: label,
1459
+ disableAutoKeyboardManagement: true
1460
+ },
1461
+ /* @__PURE__ */ import_react15.default.createElement(import_react_native15.View, { style: styles.content }, /* @__PURE__ */ import_react15.default.createElement(import_react_native15.View, { style: styles.header }, helperText && /* @__PURE__ */ import_react15.default.createElement(Typography_default, { variant: "body2", color: "textSecondary", gutterBottom: 5 }, helperText), searchEnabled && /* @__PURE__ */ import_react15.default.createElement(
1462
+ TextField_default,
1463
+ {
1464
+ label: searchPlaceholder,
1465
+ value: search,
1466
+ type: "search",
1467
+ onChangeText: setSearch,
1468
+ variant: "outlined"
1469
+ }
1470
+ )), /* @__PURE__ */ import_react15.default.createElement(
1471
+ import_react_native15.FlatList,
1472
+ {
1473
+ removeClippedSubviews: true,
1474
+ keyExtractor: (item) => item.value,
1475
+ bounces: false,
1476
+ renderItem,
1477
+ data: options.filter(
1478
+ (item) => search.length > 1 ? item.label.toLowerCase().indexOf(search.toLowerCase()) > -1 : item
1479
+ ).sort((a, b) => a.label.localeCompare(b.label))
1480
+ }
1481
+ ))
1482
+ );
1451
1483
  };
1452
1484
  var SelectMenu_default = SelectMenu;
1453
1485