@trackunit/react-components 0.1.405 → 0.1.407
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/index.cjs.js +54 -25
- package/index.esm.js +54 -25
- package/package.json +1 -1
- package/src/components/Drawer/Drawer.d.ts +1 -1
- package/src/components/Drawer/Drawer.variants.d.ts +4 -2
package/index.cjs.js
CHANGED
|
@@ -1813,23 +1813,28 @@ const cvaDialog = cssClassVarianceUtilities.cvaMerge([
|
|
|
1813
1813
|
bottom: "bottom-0 left-0 right-0 h-fit w-full rounded-t-lg",
|
|
1814
1814
|
},
|
|
1815
1815
|
sidebarMode: {
|
|
1816
|
-
closed: "translate-y-[calc(100%-2.2rem)]
|
|
1817
|
-
|
|
1818
|
-
|
|
1816
|
+
"semi-closed": "translate-y-[calc(100%-2.2rem)]",
|
|
1817
|
+
"1/3": "translate-y-2/3",
|
|
1818
|
+
"2/3": "translate-y-1/3",
|
|
1819
|
+
full: "translate-y-0",
|
|
1820
|
+
"semi-full": "translate-y-5",
|
|
1821
|
+
closed: "translate-y-full",
|
|
1819
1822
|
},
|
|
1820
1823
|
isLargeScreen: {
|
|
1821
1824
|
true: "",
|
|
1822
|
-
false: "bottom-0 left-0 right-0
|
|
1825
|
+
false: "bottom-0 left-0 right-0 h-full w-full rounded-t-lg",
|
|
1823
1826
|
},
|
|
1824
1827
|
open: {
|
|
1825
1828
|
true: "",
|
|
1826
1829
|
false: "",
|
|
1827
1830
|
},
|
|
1828
1831
|
},
|
|
1829
|
-
defaultVariants: {
|
|
1830
|
-
position: "left",
|
|
1831
|
-
},
|
|
1832
1832
|
compoundVariants: [
|
|
1833
|
+
{
|
|
1834
|
+
isLargeScreen: false,
|
|
1835
|
+
open: false,
|
|
1836
|
+
className: "translate-y-full",
|
|
1837
|
+
},
|
|
1833
1838
|
{
|
|
1834
1839
|
isLargeScreen: true,
|
|
1835
1840
|
open: true,
|
|
@@ -1880,10 +1885,21 @@ const cvaDialog = cssClassVarianceUtilities.cvaMerge([
|
|
|
1880
1885
|
},
|
|
1881
1886
|
],
|
|
1882
1887
|
});
|
|
1883
|
-
const cvaDialogContainer = cssClassVarianceUtilities.cvaMerge(["
|
|
1884
|
-
|
|
1888
|
+
const cvaDialogContainer = cssClassVarianceUtilities.cvaMerge(["flex", "flex-col", "overflow-hidden", "rounded-[inherit]"], {
|
|
1889
|
+
variants: {
|
|
1890
|
+
sidebarMode: {
|
|
1891
|
+
"semi-closed": "h-auto",
|
|
1892
|
+
"1/3": "h-[34%]",
|
|
1893
|
+
"2/3": "h-[67%]",
|
|
1894
|
+
"semi-full": "h-[calc(100%-1.25rem)]",
|
|
1895
|
+
full: "h-full",
|
|
1896
|
+
closed: "h-auto",
|
|
1897
|
+
},
|
|
1898
|
+
},
|
|
1899
|
+
});
|
|
1900
|
+
const cvaSwipeContainer = cssClassVarianceUtilities.cvaMerge(["my-4", "flex", "items-center", "justify-center", "lg:hidden"]);
|
|
1885
1901
|
const cvaSwipeIcon = cssClassVarianceUtilities.cvaMerge(["block", "h-1", "w-10", "rounded-full", "bg-gray-400"]);
|
|
1886
|
-
const cvaToogleContainer = cssClassVarianceUtilities.cvaMerge(["z-8", "
|
|
1902
|
+
const cvaToogleContainer = cssClassVarianceUtilities.cvaMerge(["z-8", "absolute"], {
|
|
1887
1903
|
variants: {
|
|
1888
1904
|
position: {
|
|
1889
1905
|
left: "right-[-24px] top-[calc(50%-24px)]",
|
|
@@ -1920,7 +1936,7 @@ const cvaToogleButton = cssClassVarianceUtilities.cvaMerge([
|
|
|
1920
1936
|
},
|
|
1921
1937
|
});
|
|
1922
1938
|
const cvaOverlayContainer = cssClassVarianceUtilities.cvaMerge([
|
|
1923
|
-
"
|
|
1939
|
+
"absolute",
|
|
1924
1940
|
"flex",
|
|
1925
1941
|
"items-center",
|
|
1926
1942
|
"justify-center",
|
|
@@ -2017,15 +2033,14 @@ const Drawer = ({ open = true, onToggle, onClose, disableOverlay, position = "le
|
|
|
2017
2033
|
if (!open) {
|
|
2018
2034
|
return "closed";
|
|
2019
2035
|
}
|
|
2020
|
-
return isLargeScreen ? "full" : "
|
|
2036
|
+
return isLargeScreen ? "full" : "2/3";
|
|
2021
2037
|
};
|
|
2022
2038
|
const [sidebarMode, setSidebarMode] = React.useState(initialSidebarMode);
|
|
2023
2039
|
const [isVisible, setIsVisible] = React.useState(open);
|
|
2024
2040
|
const [isAnimationStart, setStartAnimation] = React.useState(open);
|
|
2025
2041
|
React.useEffect(() => {
|
|
2026
2042
|
if (!isLargeScreen && open) {
|
|
2027
|
-
setSidebarMode("
|
|
2028
|
-
return;
|
|
2043
|
+
setSidebarMode("2/3");
|
|
2029
2044
|
}
|
|
2030
2045
|
if (onToggle) {
|
|
2031
2046
|
setStartAnimation(open);
|
|
@@ -2051,10 +2066,12 @@ const Drawer = ({ open = true, onToggle, onClose, disableOverlay, position = "le
|
|
|
2051
2066
|
const handleSwipedUp = () => {
|
|
2052
2067
|
setSidebarMode(prev => {
|
|
2053
2068
|
switch (prev) {
|
|
2054
|
-
case "closed":
|
|
2055
|
-
return "
|
|
2056
|
-
case "
|
|
2057
|
-
return "
|
|
2069
|
+
case "semi-closed":
|
|
2070
|
+
return "1/3";
|
|
2071
|
+
case "1/3":
|
|
2072
|
+
return "2/3";
|
|
2073
|
+
case "2/3":
|
|
2074
|
+
return "semi-full";
|
|
2058
2075
|
default:
|
|
2059
2076
|
return prev;
|
|
2060
2077
|
}
|
|
@@ -2063,14 +2080,24 @@ const Drawer = ({ open = true, onToggle, onClose, disableOverlay, position = "le
|
|
|
2063
2080
|
const handleSwipedDown = () => {
|
|
2064
2081
|
setSidebarMode(prev => {
|
|
2065
2082
|
switch (prev) {
|
|
2066
|
-
case "full":
|
|
2067
|
-
return "
|
|
2068
|
-
case "
|
|
2069
|
-
return "
|
|
2083
|
+
case "semi-full":
|
|
2084
|
+
return "2/3";
|
|
2085
|
+
case "2/3":
|
|
2086
|
+
return "1/3";
|
|
2087
|
+
case "1/3":
|
|
2088
|
+
return onClose ? "closed" : "semi-closed";
|
|
2070
2089
|
default:
|
|
2071
2090
|
return prev;
|
|
2072
2091
|
}
|
|
2073
2092
|
});
|
|
2093
|
+
/*
|
|
2094
|
+
* Within a mobile device context, when swiping down,
|
|
2095
|
+
* if the Drawer is open a third and no onToggle function is provided,
|
|
2096
|
+
* the Drawer will automatically be closed using the onClose function.
|
|
2097
|
+
*/
|
|
2098
|
+
if (sidebarMode === "1/3" && !onToggle && onClose) {
|
|
2099
|
+
onClose();
|
|
2100
|
+
}
|
|
2074
2101
|
};
|
|
2075
2102
|
const handleAnimationEnd = () => {
|
|
2076
2103
|
if (!open && !onToggle) {
|
|
@@ -2080,13 +2107,15 @@ const Drawer = ({ open = true, onToggle, onClose, disableOverlay, position = "le
|
|
|
2080
2107
|
if (!isVisible && !onToggle) {
|
|
2081
2108
|
return null;
|
|
2082
2109
|
}
|
|
2083
|
-
return (jsxRuntime.jsxs("div", { className: className, "data-testid": dataTestId, children: [!disableOverlay ? jsxRuntime.jsx(Overlay, { onClose: onClose, open: isAnimationStart }) : null, jsxRuntime.
|
|
2110
|
+
return (jsxRuntime.jsxs("div", { className: className, "data-testid": dataTestId, children: [!disableOverlay ? jsxRuntime.jsx(Overlay, { onClose: onClose, open: isAnimationStart }) : null, jsxRuntime.jsxs("div", { ...handlers, className: cvaDialog({
|
|
2084
2111
|
sidebarMode: isLargeScreen ? null : sidebarMode,
|
|
2085
2112
|
isLargeScreen,
|
|
2086
2113
|
open: isAnimationStart,
|
|
2087
|
-
position,
|
|
2114
|
+
position: isLargeScreen ? position : undefined,
|
|
2088
2115
|
className: dialogClassName,
|
|
2089
|
-
}), "data-testid": dataTestId ? `${dataTestId}-container` : undefined, onTransitionEnd: handleAnimationEnd, children:
|
|
2116
|
+
}), "data-testid": dataTestId ? `${dataTestId}-container` : undefined, onTransitionEnd: handleAnimationEnd, children: [isLargeScreen && onToggle ? jsxRuntime.jsx(ToogleButton, { onToggle: onToggle, open: open, position: position }) : null, jsxRuntime.jsxs("div", { className: cvaDialogContainer({
|
|
2117
|
+
sidebarMode: isLargeScreen ? "full" : sidebarMode,
|
|
2118
|
+
}), children: [jsxRuntime.jsx("div", { className: cvaSwipeContainer(), children: jsxRuntime.jsx("div", { className: cvaSwipeIcon() }) }), children] })] })] }));
|
|
2090
2119
|
};
|
|
2091
2120
|
|
|
2092
2121
|
const cvaSkeletonLine = cssClassVarianceUtilities.cvaMerge([
|
package/index.esm.js
CHANGED
|
@@ -1793,23 +1793,28 @@ const cvaDialog = cvaMerge([
|
|
|
1793
1793
|
bottom: "bottom-0 left-0 right-0 h-fit w-full rounded-t-lg",
|
|
1794
1794
|
},
|
|
1795
1795
|
sidebarMode: {
|
|
1796
|
-
closed: "translate-y-[calc(100%-2.2rem)]
|
|
1797
|
-
|
|
1798
|
-
|
|
1796
|
+
"semi-closed": "translate-y-[calc(100%-2.2rem)]",
|
|
1797
|
+
"1/3": "translate-y-2/3",
|
|
1798
|
+
"2/3": "translate-y-1/3",
|
|
1799
|
+
full: "translate-y-0",
|
|
1800
|
+
"semi-full": "translate-y-5",
|
|
1801
|
+
closed: "translate-y-full",
|
|
1799
1802
|
},
|
|
1800
1803
|
isLargeScreen: {
|
|
1801
1804
|
true: "",
|
|
1802
|
-
false: "bottom-0 left-0 right-0
|
|
1805
|
+
false: "bottom-0 left-0 right-0 h-full w-full rounded-t-lg",
|
|
1803
1806
|
},
|
|
1804
1807
|
open: {
|
|
1805
1808
|
true: "",
|
|
1806
1809
|
false: "",
|
|
1807
1810
|
},
|
|
1808
1811
|
},
|
|
1809
|
-
defaultVariants: {
|
|
1810
|
-
position: "left",
|
|
1811
|
-
},
|
|
1812
1812
|
compoundVariants: [
|
|
1813
|
+
{
|
|
1814
|
+
isLargeScreen: false,
|
|
1815
|
+
open: false,
|
|
1816
|
+
className: "translate-y-full",
|
|
1817
|
+
},
|
|
1813
1818
|
{
|
|
1814
1819
|
isLargeScreen: true,
|
|
1815
1820
|
open: true,
|
|
@@ -1860,10 +1865,21 @@ const cvaDialog = cvaMerge([
|
|
|
1860
1865
|
},
|
|
1861
1866
|
],
|
|
1862
1867
|
});
|
|
1863
|
-
const cvaDialogContainer = cvaMerge(["
|
|
1864
|
-
|
|
1868
|
+
const cvaDialogContainer = cvaMerge(["flex", "flex-col", "overflow-hidden", "rounded-[inherit]"], {
|
|
1869
|
+
variants: {
|
|
1870
|
+
sidebarMode: {
|
|
1871
|
+
"semi-closed": "h-auto",
|
|
1872
|
+
"1/3": "h-[34%]",
|
|
1873
|
+
"2/3": "h-[67%]",
|
|
1874
|
+
"semi-full": "h-[calc(100%-1.25rem)]",
|
|
1875
|
+
full: "h-full",
|
|
1876
|
+
closed: "h-auto",
|
|
1877
|
+
},
|
|
1878
|
+
},
|
|
1879
|
+
});
|
|
1880
|
+
const cvaSwipeContainer = cvaMerge(["my-4", "flex", "items-center", "justify-center", "lg:hidden"]);
|
|
1865
1881
|
const cvaSwipeIcon = cvaMerge(["block", "h-1", "w-10", "rounded-full", "bg-gray-400"]);
|
|
1866
|
-
const cvaToogleContainer = cvaMerge(["z-8", "
|
|
1882
|
+
const cvaToogleContainer = cvaMerge(["z-8", "absolute"], {
|
|
1867
1883
|
variants: {
|
|
1868
1884
|
position: {
|
|
1869
1885
|
left: "right-[-24px] top-[calc(50%-24px)]",
|
|
@@ -1900,7 +1916,7 @@ const cvaToogleButton = cvaMerge([
|
|
|
1900
1916
|
},
|
|
1901
1917
|
});
|
|
1902
1918
|
const cvaOverlayContainer = cvaMerge([
|
|
1903
|
-
"
|
|
1919
|
+
"absolute",
|
|
1904
1920
|
"flex",
|
|
1905
1921
|
"items-center",
|
|
1906
1922
|
"justify-center",
|
|
@@ -1997,15 +2013,14 @@ const Drawer = ({ open = true, onToggle, onClose, disableOverlay, position = "le
|
|
|
1997
2013
|
if (!open) {
|
|
1998
2014
|
return "closed";
|
|
1999
2015
|
}
|
|
2000
|
-
return isLargeScreen ? "full" : "
|
|
2016
|
+
return isLargeScreen ? "full" : "2/3";
|
|
2001
2017
|
};
|
|
2002
2018
|
const [sidebarMode, setSidebarMode] = useState(initialSidebarMode);
|
|
2003
2019
|
const [isVisible, setIsVisible] = useState(open);
|
|
2004
2020
|
const [isAnimationStart, setStartAnimation] = useState(open);
|
|
2005
2021
|
useEffect(() => {
|
|
2006
2022
|
if (!isLargeScreen && open) {
|
|
2007
|
-
setSidebarMode("
|
|
2008
|
-
return;
|
|
2023
|
+
setSidebarMode("2/3");
|
|
2009
2024
|
}
|
|
2010
2025
|
if (onToggle) {
|
|
2011
2026
|
setStartAnimation(open);
|
|
@@ -2031,10 +2046,12 @@ const Drawer = ({ open = true, onToggle, onClose, disableOverlay, position = "le
|
|
|
2031
2046
|
const handleSwipedUp = () => {
|
|
2032
2047
|
setSidebarMode(prev => {
|
|
2033
2048
|
switch (prev) {
|
|
2034
|
-
case "closed":
|
|
2035
|
-
return "
|
|
2036
|
-
case "
|
|
2037
|
-
return "
|
|
2049
|
+
case "semi-closed":
|
|
2050
|
+
return "1/3";
|
|
2051
|
+
case "1/3":
|
|
2052
|
+
return "2/3";
|
|
2053
|
+
case "2/3":
|
|
2054
|
+
return "semi-full";
|
|
2038
2055
|
default:
|
|
2039
2056
|
return prev;
|
|
2040
2057
|
}
|
|
@@ -2043,14 +2060,24 @@ const Drawer = ({ open = true, onToggle, onClose, disableOverlay, position = "le
|
|
|
2043
2060
|
const handleSwipedDown = () => {
|
|
2044
2061
|
setSidebarMode(prev => {
|
|
2045
2062
|
switch (prev) {
|
|
2046
|
-
case "full":
|
|
2047
|
-
return "
|
|
2048
|
-
case "
|
|
2049
|
-
return "
|
|
2063
|
+
case "semi-full":
|
|
2064
|
+
return "2/3";
|
|
2065
|
+
case "2/3":
|
|
2066
|
+
return "1/3";
|
|
2067
|
+
case "1/3":
|
|
2068
|
+
return onClose ? "closed" : "semi-closed";
|
|
2050
2069
|
default:
|
|
2051
2070
|
return prev;
|
|
2052
2071
|
}
|
|
2053
2072
|
});
|
|
2073
|
+
/*
|
|
2074
|
+
* Within a mobile device context, when swiping down,
|
|
2075
|
+
* if the Drawer is open a third and no onToggle function is provided,
|
|
2076
|
+
* the Drawer will automatically be closed using the onClose function.
|
|
2077
|
+
*/
|
|
2078
|
+
if (sidebarMode === "1/3" && !onToggle && onClose) {
|
|
2079
|
+
onClose();
|
|
2080
|
+
}
|
|
2054
2081
|
};
|
|
2055
2082
|
const handleAnimationEnd = () => {
|
|
2056
2083
|
if (!open && !onToggle) {
|
|
@@ -2060,13 +2087,15 @@ const Drawer = ({ open = true, onToggle, onClose, disableOverlay, position = "le
|
|
|
2060
2087
|
if (!isVisible && !onToggle) {
|
|
2061
2088
|
return null;
|
|
2062
2089
|
}
|
|
2063
|
-
return (jsxs("div", { className: className, "data-testid": dataTestId, children: [!disableOverlay ? jsx(Overlay, { onClose: onClose, open: isAnimationStart }) : null,
|
|
2090
|
+
return (jsxs("div", { className: className, "data-testid": dataTestId, children: [!disableOverlay ? jsx(Overlay, { onClose: onClose, open: isAnimationStart }) : null, jsxs("div", { ...handlers, className: cvaDialog({
|
|
2064
2091
|
sidebarMode: isLargeScreen ? null : sidebarMode,
|
|
2065
2092
|
isLargeScreen,
|
|
2066
2093
|
open: isAnimationStart,
|
|
2067
|
-
position,
|
|
2094
|
+
position: isLargeScreen ? position : undefined,
|
|
2068
2095
|
className: dialogClassName,
|
|
2069
|
-
}), "data-testid": dataTestId ? `${dataTestId}-container` : undefined, onTransitionEnd: handleAnimationEnd, children:
|
|
2096
|
+
}), "data-testid": dataTestId ? `${dataTestId}-container` : undefined, onTransitionEnd: handleAnimationEnd, children: [isLargeScreen && onToggle ? jsx(ToogleButton, { onToggle: onToggle, open: open, position: position }) : null, jsxs("div", { className: cvaDialogContainer({
|
|
2097
|
+
sidebarMode: isLargeScreen ? "full" : sidebarMode,
|
|
2098
|
+
}), children: [jsx("div", { className: cvaSwipeContainer(), children: jsx("div", { className: cvaSwipeIcon() }) }), children] })] })] }));
|
|
2070
2099
|
};
|
|
2071
2100
|
|
|
2072
2101
|
const cvaSkeletonLine = cvaMerge([
|
package/package.json
CHANGED
|
@@ -8,7 +8,7 @@ export interface DrawerProps extends CommonProps {
|
|
|
8
8
|
/**
|
|
9
9
|
* The onClose handler for the drawer.
|
|
10
10
|
*/
|
|
11
|
-
onClose?: (event
|
|
11
|
+
onClose?: (event?: React.MouseEvent | KeyboardEvent) => void;
|
|
12
12
|
/**
|
|
13
13
|
* The handler for toggling the drawer state.
|
|
14
14
|
*/
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
export declare const cvaDialog: (props?: ({
|
|
2
2
|
position?: "left" | "right" | "top" | "bottom" | null | undefined;
|
|
3
|
-
sidebarMode?: "closed" | "
|
|
3
|
+
sidebarMode?: "semi-closed" | "1/3" | "2/3" | "full" | "semi-full" | "closed" | null | undefined;
|
|
4
4
|
isLargeScreen?: boolean | null | undefined;
|
|
5
5
|
open?: boolean | null | undefined;
|
|
6
6
|
} & import("class-variance-authority/dist/types").ClassProp) | undefined) => string;
|
|
7
|
-
export declare const cvaDialogContainer: (props?:
|
|
7
|
+
export declare const cvaDialogContainer: (props?: ({
|
|
8
|
+
sidebarMode?: "semi-closed" | "1/3" | "2/3" | "full" | "semi-full" | "closed" | null | undefined;
|
|
9
|
+
} & import("class-variance-authority/dist/types").ClassProp) | undefined) => string;
|
|
8
10
|
export declare const cvaSwipeContainer: (props?: import("class-variance-authority/dist/types").ClassProp | undefined) => string;
|
|
9
11
|
export declare const cvaSwipeIcon: (props?: import("class-variance-authority/dist/types").ClassProp | undefined) => string;
|
|
10
12
|
export declare const cvaToogleContainer: (props?: ({
|