ferns-ui 0.31.0 → 0.32.0

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/Toast.d.ts CHANGED
@@ -6,5 +6,7 @@ export declare function Toast({ message, data, }: {
6
6
  variant?: "default" | "warning" | "error";
7
7
  buttonText?: string;
8
8
  buttonOnClick?: () => void | Promise<void>;
9
+ persistent?: boolean;
10
+ onDismiss?: () => void;
9
11
  };
10
12
  }): React.ReactElement;
package/dist/Toast.js CHANGED
@@ -4,6 +4,7 @@ import { useToast as useRNToast } from "react-native-toast-notifications";
4
4
  import { Box } from "./Box";
5
5
  import { Button } from "./Button";
6
6
  import { Icon } from "./Icon";
7
+ import { IconButton } from "./IconButton";
7
8
  import { Text } from "./Text";
8
9
  const TOAST_DURATION_MS = 3 * 1000;
9
10
  export function useToast() {
@@ -12,7 +13,8 @@ export function useToast() {
12
13
  show: (text, options) => {
13
14
  return toast.show(text, {
14
15
  data: options,
15
- duration: TOAST_DURATION_MS,
16
+ // a duration of 0 keeps the toast up infinitely until hidden
17
+ duration: (options === null || options === void 0 ? void 0 : options.persistent) ? 0 : TOAST_DURATION_MS,
16
18
  });
17
19
  },
18
20
  hide: (id) => toast.hide(id),
@@ -21,7 +23,7 @@ export function useToast() {
21
23
  export function Toast({ message, data, }) {
22
24
  // margin 8 on either side, times the standard 4px we multiply by.
23
25
  const width = Math.min(Dimensions.get("window").width - 16 * 4, 712);
24
- const { variant, buttonText, buttonOnClick } = data !== null && data !== void 0 ? data : {};
26
+ const { variant, buttonText, buttonOnClick, persistent, onDismiss } = data !== null && data !== void 0 ? data : {};
25
27
  let color = "darkGray";
26
28
  if (variant === "warning") {
27
29
  color = "orange";
@@ -37,6 +39,8 @@ export function Toast({ message, data, }) {
37
39
  React.createElement(Box, { alignItems: "center", direction: "column", flex: "shrink", justifyContent: "center" },
38
40
  React.createElement(Text, { color: "white", size: "lg", weight: "bold" }, message)),
39
41
  Boolean(buttonOnClick && buttonText) && (React.createElement(Box, { alignItems: "center", justifyContent: "center", marginLeft: 4 },
40
- React.createElement(Button, { color: "lightGray", shape: "pill", text: buttonText, onClick: buttonOnClick })))));
42
+ React.createElement(Button, { color: "lightGray", shape: "pill", text: buttonText, onClick: buttonOnClick }))),
43
+ Boolean(onDismiss && persistent) && (React.createElement(Box, { alignItems: "center", justifyContent: "center", marginLeft: 4 },
44
+ React.createElement(IconButton, { accessibilityLabel: "Dismiss notification", icon: "times", iconColor: "white", onClick: onDismiss })))));
41
45
  }
42
46
  //# sourceMappingURL=Toast.js.map
package/dist/Toast.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"Toast.js","sourceRoot":"","sources":["../src/Toast.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Toast.js","sourceRoot":"","sources":["../src/Toast.tsx"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ferns-ui",
3
- "version": "0.31.0",
3
+ "version": "0.32.0",
4
4
  "main": "dist/index.js",
5
5
  "license": "Apache-2.0",
6
6
  "scripts": {
package/src/Toast.tsx CHANGED
@@ -6,6 +6,7 @@ import {Box} from "./Box";
6
6
  import {Button} from "./Button";
7
7
  import {AllColors} from "./Common";
8
8
  import {Icon} from "./Icon";
9
+ import {IconButton} from "./IconButton";
9
10
  import {Text} from "./Text";
10
11
 
11
12
  const TOAST_DURATION_MS = 3 * 1000;
@@ -19,11 +20,14 @@ export function useToast(): any {
19
20
  variant?: "default" | "warning" | "error";
20
21
  buttonText?: string;
21
22
  buttonOnClick: () => void | Promise<void>;
23
+ persistent?: boolean;
24
+ onDismiss?: () => void | Promise<void>;
22
25
  }
23
26
  ): string => {
24
27
  return toast.show(text, {
25
28
  data: options,
26
- duration: TOAST_DURATION_MS,
29
+ // a duration of 0 keeps the toast up infinitely until hidden
30
+ duration: options?.persistent ? 0 : TOAST_DURATION_MS,
27
31
  });
28
32
  },
29
33
  hide: (id: string) => toast.hide(id),
@@ -39,11 +43,13 @@ export function Toast({
39
43
  variant?: "default" | "warning" | "error";
40
44
  buttonText?: string;
41
45
  buttonOnClick?: () => void | Promise<void>;
46
+ persistent?: boolean;
47
+ onDismiss?: () => void;
42
48
  };
43
49
  }): React.ReactElement {
44
50
  // margin 8 on either side, times the standard 4px we multiply by.
45
51
  const width = Math.min(Dimensions.get("window").width - 16 * 4, 712);
46
- const {variant, buttonText, buttonOnClick} = data ?? {};
52
+ const {variant, buttonText, buttonOnClick, persistent, onDismiss} = data ?? {};
47
53
  let color: AllColors = "darkGray";
48
54
  if (variant === "warning") {
49
55
  color = "orange";
@@ -85,6 +91,16 @@ export function Toast({
85
91
  <Button color="lightGray" shape="pill" text={buttonText!} onClick={buttonOnClick} />
86
92
  </Box>
87
93
  )}
94
+ {Boolean(onDismiss && persistent) && (
95
+ <Box alignItems="center" justifyContent="center" marginLeft={4}>
96
+ <IconButton
97
+ accessibilityLabel="Dismiss notification"
98
+ icon="times"
99
+ iconColor="white"
100
+ onClick={onDismiss!}
101
+ />
102
+ </Box>
103
+ )}
88
104
  </Box>
89
105
  );
90
106
  }