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 +2 -0
- package/dist/Toast.js +7 -3
- package/dist/Toast.js.map +1 -1
- package/package.json +1 -1
- package/src/Toast.tsx +18 -2
package/dist/Toast.d.ts
CHANGED
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
|
|
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":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAC,UAAU,EAAC,MAAM,cAAc,CAAC;AACxC,OAAO,EAAC,QAAQ,IAAI,UAAU,EAAC,MAAM,kCAAkC,CAAC;AAExE,OAAO,EAAC,GAAG,EAAC,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAC,MAAM,EAAC,MAAM,UAAU,CAAC;AAEhC,OAAO,EAAC,IAAI,EAAC,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAC,IAAI,EAAC,MAAM,QAAQ,CAAC;AAE5B,MAAM,iBAAiB,GAAG,CAAC,GAAG,IAAI,CAAC;AAEnC,MAAM,UAAU,QAAQ;IACtB,MAAM,KAAK,GAAG,UAAU,EAAE,CAAC;IAC3B,OAAO;QACL,IAAI,EAAE,CACJ,IAAY,EACZ,
|
|
1
|
+
{"version":3,"file":"Toast.js","sourceRoot":"","sources":["../src/Toast.tsx"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
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
|
|
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
|
}
|