d9-toast 1.0.8 → 1.0.10
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.js +5 -5
- package/dist/ToastContext.js +19 -29
- package/dist/d9-toast.d.ts +9 -11
- package/dist/index.js +3 -1
- package/package.json +1 -1
package/dist/Toast.js
CHANGED
|
@@ -75,21 +75,21 @@ var Toast = function Toast(_ref) {
|
|
|
75
75
|
// time to left...
|
|
76
76
|
var timeToLeft = remaining.current - elapsed;
|
|
77
77
|
// set shrink bar...
|
|
78
|
-
setProgressWidth(timeToLeft / duration * 100);
|
|
78
|
+
setProgressWidth(Math.max(timeToLeft / duration * 100, 0));
|
|
79
79
|
if (timeToLeft <= 0) {
|
|
80
80
|
// stop timer...
|
|
81
81
|
clearInterval(intervalRef.current);
|
|
82
82
|
// remove toast.
|
|
83
83
|
remove();
|
|
84
84
|
}
|
|
85
|
-
},
|
|
85
|
+
}, 50);
|
|
86
86
|
};
|
|
87
87
|
|
|
88
88
|
// for pause
|
|
89
89
|
var pauseTimer = function pauseTimer() {
|
|
90
90
|
if (isPaused) return;
|
|
91
91
|
clearInterval(intervalRef.current);
|
|
92
|
-
remaining.current
|
|
92
|
+
remaining.current -= Date.now() - start.current;
|
|
93
93
|
setPaused(true);
|
|
94
94
|
};
|
|
95
95
|
|
|
@@ -110,8 +110,8 @@ var Toast = function Toast(_ref) {
|
|
|
110
110
|
loading: theme === "light" ? "bg-gray-950/20 text-gray-950" : "bg-gray-50/20 text-gray-50",
|
|
111
111
|
submit: theme === "light" ? "bg-gray-600/20 text-gray-600" : "bg-gray-600/50 text-gray-200"
|
|
112
112
|
};
|
|
113
|
-
var keyframes = "\n @keyframes downToUp{
|
|
114
|
-
var animation = "".concat(position.
|
|
113
|
+
var keyframes = "\n @keyframes downToUp{ from {transform: translateY(100%); opacity:0} to {transform:translateY(0); opacity:1} }\n @keyframes upToDown{ from {transform: translateY(-100%); opacity:0} to {transform:translateY(0); opacity:1} }\n ";
|
|
114
|
+
var animation = "".concat(position.includes("top") ? "upToDown" : "downToUp", " 0.3s ease-in");
|
|
115
115
|
return /*#__PURE__*/_jsxs(_Fragment, {
|
|
116
116
|
children: [/*#__PURE__*/_jsx("style", {
|
|
117
117
|
children: keyframes
|
package/dist/ToastContext.js
CHANGED
|
@@ -21,8 +21,6 @@ var ToastContext = /*#__PURE__*/createContext();
|
|
|
21
21
|
export var useToast = function useToast() {
|
|
22
22
|
return useContext(ToastContext);
|
|
23
23
|
};
|
|
24
|
-
var id = 0; // For unique toast id.
|
|
25
|
-
|
|
26
24
|
export var ToastProvider = function ToastProvider(_ref) {
|
|
27
25
|
var children = _ref.children,
|
|
28
26
|
_ref$position = _ref.position,
|
|
@@ -32,40 +30,32 @@ export var ToastProvider = function ToastProvider(_ref) {
|
|
|
32
30
|
toasts = _useState2[0],
|
|
33
31
|
setToasts = _useState2[1];
|
|
34
32
|
|
|
35
|
-
//
|
|
33
|
+
// Generate unique ID safely
|
|
34
|
+
var generateId = function generateId() {
|
|
35
|
+
return Date.now() + Math.random();
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
// Position classes
|
|
36
39
|
var getPositionClasses = function getPositionClasses(position) {
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
case "center":
|
|
47
|
-
return "top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 flex-col";
|
|
48
|
-
case "center-top":
|
|
49
|
-
return "top-4 left-1/2 -translate-x-1/2 flex-col";
|
|
50
|
-
case "center-bottom":
|
|
51
|
-
return "bottom-4 left-1/2 -translate-x-1/2 flex-col-reverse";
|
|
52
|
-
default:
|
|
53
|
-
return "top-4 max-sm:right-0 right-4 flex-col";
|
|
54
|
-
}
|
|
40
|
+
var classes = "fixed z-50 flex gap-3 ";
|
|
41
|
+
if (position.includes("top")) classes += "top-4 flex-col ";
|
|
42
|
+
if (position.includes("bottom")) classes += "bottom-4 flex-col-reverse ";
|
|
43
|
+
if (position.includes("right")) classes += "right-4 ";
|
|
44
|
+
if (position.includes("left")) classes += "left-4 ";
|
|
45
|
+
if (position === "center") classes += "top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 flex-col ";
|
|
46
|
+
if (position === "center-top") classes += "top-4 left-1/2 -translate-x-1/2 flex-col ";
|
|
47
|
+
if (position === "center-bottom") classes += "bottom-4 left-1/2 -translate-x-1/2 flex-col-reverse ";
|
|
48
|
+
return classes.trim();
|
|
55
49
|
};
|
|
56
50
|
|
|
57
|
-
// Show toast
|
|
51
|
+
// Show toast
|
|
58
52
|
var showToast = useCallback(function (toast) {
|
|
59
|
-
id++;
|
|
60
|
-
// Set new toast.
|
|
61
53
|
var newToast = _objectSpread({
|
|
62
|
-
id:
|
|
54
|
+
id: generateId()
|
|
63
55
|
}, toast);
|
|
64
|
-
// Add new toast to Toast list.
|
|
65
56
|
setToasts(function (prev) {
|
|
66
57
|
return [].concat(_toConsumableArray(prev), [newToast]);
|
|
67
58
|
});
|
|
68
|
-
// Automatically remove toast.
|
|
69
59
|
if (toast.duration !== 0) {
|
|
70
60
|
setTimeout(function () {
|
|
71
61
|
return removeToast(newToast.id);
|
|
@@ -73,7 +63,7 @@ export var ToastProvider = function ToastProvider(_ref) {
|
|
|
73
63
|
}
|
|
74
64
|
}, []);
|
|
75
65
|
|
|
76
|
-
// Remove toast
|
|
66
|
+
// Remove toast
|
|
77
67
|
var removeToast = useCallback(function (id) {
|
|
78
68
|
setToasts(function (prev) {
|
|
79
69
|
return prev.filter(function (t) {
|
|
@@ -87,7 +77,7 @@ export var ToastProvider = function ToastProvider(_ref) {
|
|
|
87
77
|
removeToast: removeToast
|
|
88
78
|
},
|
|
89
79
|
children: [children, /*#__PURE__*/_jsx("div", {
|
|
90
|
-
className:
|
|
80
|
+
className: getPositionClasses(position),
|
|
91
81
|
children: toasts.map(function (toast) {
|
|
92
82
|
return /*#__PURE__*/_jsx(Toast, _objectSpread(_objectSpread({}, toast), {}, {
|
|
93
83
|
position: position,
|
package/dist/d9-toast.d.ts
CHANGED
|
@@ -1,22 +1,20 @@
|
|
|
1
1
|
declare module "d9-toast" {
|
|
2
|
-
import
|
|
2
|
+
import React from "react";
|
|
3
3
|
|
|
4
|
-
export
|
|
4
|
+
export type ToastType = "success" | "error" | "info" | "warning" | "loading" | "submit";
|
|
5
|
+
|
|
6
|
+
export interface ToastOptions {
|
|
5
7
|
message: string;
|
|
6
|
-
type?:
|
|
8
|
+
type?: ToastType;
|
|
7
9
|
duration?: number;
|
|
8
10
|
actions?: { text: string; callback?: (toast: { id: number }) => void }[];
|
|
9
|
-
closable?: boolean;
|
|
10
|
-
progress?: boolean;
|
|
11
11
|
theme?: "light" | "dark";
|
|
12
|
+
progress?: boolean;
|
|
13
|
+
closable?: boolean;
|
|
12
14
|
pauseOnHover?: boolean;
|
|
13
15
|
pauseOnFocusLoss?: boolean;
|
|
14
16
|
}
|
|
15
17
|
|
|
16
|
-
export const ToastProvider:
|
|
17
|
-
|
|
18
|
-
export const useToast: () => {
|
|
19
|
-
showToast: (toast: Toast) => void;
|
|
20
|
-
removeToast: (id: number) => void;
|
|
21
|
-
};
|
|
18
|
+
export const ToastProvider: React.FC<{ children: React.ReactNode; position?: string }>;
|
|
19
|
+
export const useToast: () => { showToast: (toast: ToastOptions) => void; removeToast: (id: number) => void };
|
|
22
20
|
}
|
package/dist/index.js
CHANGED