@toptal/picasso-page 5.1.19 → 5.1.20
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-package/src/PageHamburger/PageHamburger.d.ts.map +1 -1
- package/dist-package/src/PageHamburger/PageHamburger.js +2 -2
- package/dist-package/src/PageHamburger/PageHamburger.js.map +1 -1
- package/dist-package/src/PageHamburger/PageHamburgerContext.d.ts +4 -5
- package/dist-package/src/PageHamburger/PageHamburgerContext.d.ts.map +1 -1
- package/dist-package/src/PageHamburger/PageHamburgerContext.js +9 -25
- package/dist-package/src/PageHamburger/PageHamburgerContext.js.map +1 -1
- package/dist-package/src/PageHamburger/PageHamburgerPortal.js +2 -2
- package/dist-package/src/PageHamburger/PageHamburgerPortal.js.map +1 -1
- package/dist-package/src/PageHamburger/index.d.ts +1 -1
- package/dist-package/src/PageHamburger/index.d.ts.map +1 -1
- package/dist-package/src/PageHamburger/index.js +1 -1
- package/dist-package/src/PageHamburger/index.js.map +1 -1
- package/dist-package/src/PageSidebar/PageSidebar.d.ts.map +1 -1
- package/dist-package/src/PageSidebar/PageSidebar.js +9 -29
- package/dist-package/src/PageSidebar/PageSidebar.js.map +1 -1
- package/dist-package/src/PageSidebar/PageSidebarDesktop.d.ts +30 -0
- package/dist-package/src/PageSidebar/PageSidebarDesktop.d.ts.map +1 -0
- package/dist-package/src/PageSidebar/PageSidebarDesktop.js +33 -0
- package/dist-package/src/PageSidebar/PageSidebarDesktop.js.map +1 -0
- package/dist-package/src/PageTopBar/PageTopBar.d.ts.map +1 -1
- package/dist-package/src/PageTopBar/PageTopBar.js +18 -13
- package/dist-package/src/PageTopBar/PageTopBar.js.map +1 -1
- package/dist-package/src/TopBarMenu/TopBarMenu.d.ts.map +1 -1
- package/dist-package/src/TopBarMenu/TopBarMenu.js +0 -2
- package/dist-package/src/TopBarMenu/TopBarMenu.js.map +1 -1
- package/package.json +1 -1
- package/src/PageHamburger/PageHamburger.tsx +1 -2
- package/src/PageHamburger/PageHamburgerContext.tsx +15 -47
- package/src/PageHamburger/PageHamburgerPortal.tsx +2 -2
- package/src/PageHamburger/index.ts +0 -1
- package/src/PageSidebar/PageSidebar.tsx +24 -65
- package/src/PageSidebar/PageSidebarDesktop.tsx +114 -0
- package/src/PageTopBar/PageTopBar.tsx +31 -19
- package/src/PageTopBar/__snapshots__/test.tsx.snap +122 -194
- package/src/PageTopBar/test.tsx +23 -4
- package/src/TopBarMenu/TopBarMenu.tsx +0 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PageHamburger.d.ts","sourceRoot":"","sources":["../../../src/PageHamburger/PageHamburger.tsx"],"names":[],"mappings":";AAOA,UAAU,KAAK;IACb,EAAE,EAAE,MAAM,CAAA;IACV,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB;AAED,QAAA,MAAM,aAAa,sCAAuC,KAAK,
|
|
1
|
+
{"version":3,"file":"PageHamburger.d.ts","sourceRoot":"","sources":["../../../src/PageHamburger/PageHamburger.tsx"],"names":[],"mappings":";AAOA,UAAU,KAAK;IACb,EAAE,EAAE,MAAM,CAAA;IACV,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB;AAED,QAAA,MAAM,aAAa,sCAAuC,KAAK,gBA8C9D,CAAA;AAED,eAAe,aAAa,CAAA"}
|
|
@@ -4,11 +4,11 @@ import { Dropdown } from '@toptal/picasso-dropdown';
|
|
|
4
4
|
import { Close24, Overview24 } from '@toptal/picasso-icons';
|
|
5
5
|
import { useHamburgerContext } from './PageHamburgerContext';
|
|
6
6
|
const PageHamburger = ({ id, 'data-testid': dataTestId }) => {
|
|
7
|
-
const {
|
|
7
|
+
const { hamburgerRef } = useHamburgerContext();
|
|
8
8
|
const [showContent, setShowContent] = useState(false);
|
|
9
9
|
const handleShowContent = () => setShowContent(true);
|
|
10
10
|
const handleHideContent = () => setShowContent(false);
|
|
11
|
-
return (React.createElement(Dropdown, { content: React.createElement("div", { id: id, ref: hamburgerRef }),
|
|
11
|
+
return (React.createElement(Dropdown, { content: React.createElement("div", { id: id, ref: hamburgerRef }), classes: {
|
|
12
12
|
content: `!shadow-[inset_-1px_0px_0px_0px] !shadow-gray-200 max-h-[calc(100vh-var(--header-height,3.5rem))] !bg-gray-100`,
|
|
13
13
|
popper: 'mt-4',
|
|
14
14
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PageHamburger.js","sourceRoot":"","sources":["../../../src/PageHamburger/PageHamburger.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAA;AACnD,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAE3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AAO5D,MAAM,aAAa,GAAG,CAAC,EAAE,EAAE,EAAE,aAAa,EAAE,UAAU,EAAS,EAAE,EAAE;IACjE,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"PageHamburger.js","sourceRoot":"","sources":["../../../src/PageHamburger/PageHamburger.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAA;AACnD,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAE3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AAO5D,MAAM,aAAa,GAAG,CAAC,EAAE,EAAE,EAAE,aAAa,EAAE,UAAU,EAAS,EAAE,EAAE;IACjE,MAAM,EAAE,YAAY,EAAE,GAAG,mBAAmB,EAAE,CAAA;IAC9C,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAU,KAAK,CAAC,CAAA;IAE9D,MAAM,iBAAiB,GAAG,GAAG,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,CAAA;IACpD,MAAM,iBAAiB,GAAG,GAAG,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC,CAAA;IAErD,OAAO,CACL,oBAAC,QAAQ,IACP,OAAO,EAAE,6BAAK,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,YAAY,GAAI,EAC3C,OAAO,EAAE;YACP,OAAO,EAAE,gHAAgH;YACzH,MAAM,EAAE,MAAM;SACf;QACD,oFAAoF;QACpF,uFAAuF;QACvF,gEAAgE;QAChE,aAAa,QACb,aAAa,EAAE;YACb,SAAS,EAAE;gBACT,IAAI,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE;gBACxB,eAAe,EAAE;oBACf,OAAO,EAAE,CAAC;iBACX;aACF;SACF,EACD,WAAW,EAAE;YACX,IAAI,EAAE,YAAY;SACnB,EACD,MAAM,EAAE,iBAAiB,EACzB,OAAO,EAAE,iBAAiB,EAC1B,WAAW;QAEX,oBAAC,cAAc,IACb,IAAI,EACF,WAAW,CAAC,CAAC,CAAC,CACZ,oBAAC,OAAO,OAAG,CACZ,CAAC,CAAC,CAAC,CACF,oBAAC,UAAU,IAAC,SAAS,EAAC,qBAAqB,GAAG,CAC/C,iBAEU,UAAU,EACvB,OAAO,EAAC,aAAa,GACrB,CACO,CACZ,CAAA;AACH,CAAC,CAAA;AAED,eAAe,aAAa,CAAA"}
|
|
@@ -1,18 +1,17 @@
|
|
|
1
1
|
import type { ReactNode } from 'react';
|
|
2
2
|
import React from 'react';
|
|
3
|
-
|
|
3
|
+
interface InternalHamburgerContextProps {
|
|
4
4
|
hamburgerId: string;
|
|
5
|
-
showSidebarMenu: boolean;
|
|
6
|
-
hasTopBar: boolean;
|
|
7
|
-
setHasTopBar: (val: boolean) => void;
|
|
8
5
|
hamburgerRef?: React.RefObject<HTMLDivElement>;
|
|
6
|
+
hasPageHamburger: boolean;
|
|
7
|
+
setHasPageHamburger: (val: boolean) => void;
|
|
9
8
|
}
|
|
9
|
+
export declare type HamburgerContextProps = Omit<InternalHamburgerContextProps, 'menuCount' | 'setMenuCount'>;
|
|
10
10
|
interface Props {
|
|
11
11
|
children: ReactNode;
|
|
12
12
|
hamburgerId: string;
|
|
13
13
|
}
|
|
14
14
|
export declare const PageHamburgerContextProvider: ({ children, hamburgerId, }: Props) => JSX.Element;
|
|
15
15
|
export declare const useHamburgerContext: () => HamburgerContextProps;
|
|
16
|
-
export declare const useRegisterMenu: () => void;
|
|
17
16
|
export {};
|
|
18
17
|
//# sourceMappingURL=PageHamburgerContext.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PageHamburgerContext.d.ts","sourceRoot":"","sources":["../../../src/PageHamburger/PageHamburgerContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AACtC,OAAO,
|
|
1
|
+
{"version":3,"file":"PageHamburgerContext.d.ts","sourceRoot":"","sources":["../../../src/PageHamburger/PageHamburgerContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AACtC,OAAO,KAAsD,MAAM,OAAO,CAAA;AAI1E,UAAU,6BAA6B;IACrC,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,CAAA;IAC9C,gBAAgB,EAAE,OAAO,CAAA;IACzB,mBAAmB,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,IAAI,CAAA;CAC5C;AAED,oBAAY,qBAAqB,GAAG,IAAI,CACtC,6BAA6B,EAC7B,WAAW,GAAG,cAAc,CAC7B,CAAA;AAQD,UAAU,KAAK;IACb,QAAQ,EAAE,SAAS,CAAA;IACnB,WAAW,EAAE,MAAM,CAAA;CACpB;AAED,eAAO,MAAM,4BAA4B,+BAGtC,KAAK,gBAgBP,CAAA;AAED,eAAO,MAAM,mBAAmB,QAAO,qBAUtC,CAAA"}
|
|
@@ -1,44 +1,28 @@
|
|
|
1
|
-
import React, { createContext, useContext,
|
|
1
|
+
import React, { createContext, useContext, useRef, useState } from 'react';
|
|
2
2
|
const noop = () => { };
|
|
3
3
|
const PageHamburgerContext = createContext({
|
|
4
4
|
hamburgerId: 'hamburger',
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
setHasTopBar: noop,
|
|
8
|
-
hasTopBar: false,
|
|
5
|
+
setHasPageHamburger: noop,
|
|
6
|
+
hasPageHamburger: false,
|
|
9
7
|
});
|
|
10
8
|
export const PageHamburgerContextProvider = ({ children, hamburgerId, }) => {
|
|
11
|
-
const [
|
|
12
|
-
const [menuCount, setMenuCount] = useState(0);
|
|
9
|
+
const [hasPageHamburger, setHasPageHamburger] = useState(false);
|
|
13
10
|
const hamburgerRef = useRef(null);
|
|
14
11
|
const context = {
|
|
15
12
|
hamburgerId,
|
|
16
|
-
hasTopBar,
|
|
17
|
-
setHasTopBar,
|
|
18
13
|
hamburgerRef,
|
|
19
|
-
|
|
20
|
-
|
|
14
|
+
setHasPageHamburger,
|
|
15
|
+
hasPageHamburger,
|
|
21
16
|
};
|
|
22
17
|
return (React.createElement(PageHamburgerContext.Provider, { value: context }, children));
|
|
23
18
|
};
|
|
24
19
|
export const useHamburgerContext = () => {
|
|
25
|
-
const { hamburgerId,
|
|
26
|
-
const hasSidebar = menuCount > 0;
|
|
20
|
+
const { hamburgerId, hamburgerRef, setHasPageHamburger, hasPageHamburger } = useContext(PageHamburgerContext);
|
|
27
21
|
return {
|
|
28
22
|
hamburgerId,
|
|
29
|
-
hasTopBar,
|
|
30
|
-
setHasTopBar,
|
|
31
23
|
hamburgerRef,
|
|
32
|
-
|
|
24
|
+
setHasPageHamburger,
|
|
25
|
+
hasPageHamburger,
|
|
33
26
|
};
|
|
34
27
|
};
|
|
35
|
-
export const useRegisterMenu = () => {
|
|
36
|
-
const { setMenuCount } = useContext(PageHamburgerContext);
|
|
37
|
-
useEffect(() => {
|
|
38
|
-
setMenuCount(prev => prev + 1);
|
|
39
|
-
return () => {
|
|
40
|
-
setMenuCount(prev => prev - 1);
|
|
41
|
-
};
|
|
42
|
-
}, [setMenuCount]);
|
|
43
|
-
};
|
|
44
28
|
//# sourceMappingURL=PageHamburgerContext.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PageHamburgerContext.js","sourceRoot":"","sources":["../../../src/PageHamburger/PageHamburgerContext.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"PageHamburgerContext.js","sourceRoot":"","sources":["../../../src/PageHamburger/PageHamburgerContext.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAE1E,MAAM,IAAI,GAAG,GAAG,EAAE,GAAE,CAAC,CAAA;AAcrB,MAAM,oBAAoB,GAAG,aAAa,CAAgC;IACxE,WAAW,EAAE,WAAW;IACxB,mBAAmB,EAAE,IAAI;IACzB,gBAAgB,EAAE,KAAK;CACxB,CAAC,CAAA;AAOF,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,EAC3C,QAAQ,EACR,WAAW,GACL,EAAE,EAAE;IACV,MAAM,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAC/D,MAAM,YAAY,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAA;IAEjD,MAAM,OAAO,GAAkC;QAC7C,WAAW;QACX,YAAY;QACZ,mBAAmB;QACnB,gBAAgB;KACjB,CAAA;IAED,OAAO,CACL,oBAAC,oBAAoB,CAAC,QAAQ,IAAC,KAAK,EAAE,OAAO,IAC1C,QAAQ,CACqB,CACjC,CAAA;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAA0B,EAAE;IAC7D,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,GACxE,UAAU,CAAC,oBAAoB,CAAC,CAAA;IAElC,OAAO;QACL,WAAW;QACX,YAAY;QACZ,mBAAmB;QACnB,gBAAgB;KACjB,CAAA;AACH,CAAC,CAAA"}
|
|
@@ -2,7 +2,7 @@ import React, { useEffect } from 'react';
|
|
|
2
2
|
import { createPortal } from 'react-dom';
|
|
3
3
|
import { useHamburgerContext } from './PageHamburgerContext';
|
|
4
4
|
const PageHamburgerPortal = ({ children }) => {
|
|
5
|
-
const {
|
|
5
|
+
const { hamburgerRef } = useHamburgerContext();
|
|
6
6
|
const [container, setContainer] = React.useState(null);
|
|
7
7
|
const [isMounted, setIsMounted] = React.useState(false);
|
|
8
8
|
useEffect(() => {
|
|
@@ -11,7 +11,7 @@ const PageHamburgerPortal = ({ children }) => {
|
|
|
11
11
|
setContainer(hamburgerRef.current);
|
|
12
12
|
}
|
|
13
13
|
}, [hamburgerRef, isMounted]);
|
|
14
|
-
if (!container
|
|
14
|
+
if (!container) {
|
|
15
15
|
return null;
|
|
16
16
|
}
|
|
17
17
|
return createPortal(children, container);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PageHamburgerPortal.js","sourceRoot":"","sources":["../../../src/PageHamburger/PageHamburgerPortal.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAExC,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AAM5D,MAAM,mBAAmB,GAAG,CAAC,EAAE,QAAQ,EAAS,EAAE,EAAE;IAClD,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"PageHamburgerPortal.js","sourceRoot":"","sources":["../../../src/PageHamburger/PageHamburgerPortal.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAExC,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AAM5D,MAAM,mBAAmB,GAAG,CAAC,EAAE,QAAQ,EAAS,EAAE,EAAE;IAClD,MAAM,EAAE,YAAY,EAAE,GAAG,mBAAmB,EAAE,CAAA;IAC9C,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAqB,IAAI,CAAC,CAAA;IAC1E,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAU,KAAK,CAAC,CAAA;IAEhE,SAAS,CAAC,GAAG,EAAE;QACb,YAAY,CAAC,IAAI,CAAC,CAAA;QAClB,IAAI,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,OAAO,EAAE;YACzB,YAAY,CAAC,YAAY,CAAC,OAAO,CAAC,CAAA;SACnC;IACH,CAAC,EAAE,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC,CAAA;IAE7B,IAAI,CAAC,SAAS,EAAE;QACd,OAAO,IAAI,CAAA;KACZ;IAED,OAAO,YAAY,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAA;AAC1C,CAAC,CAAA;AAED,eAAe,mBAAmB,CAAA"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
export { default as PageHamburger } from './PageHamburger';
|
|
2
2
|
export { default as PageHamburgerPortal } from './PageHamburgerPortal';
|
|
3
|
-
export { useHamburgerContext, PageHamburgerContextProvider,
|
|
3
|
+
export { useHamburgerContext, PageHamburgerContextProvider, } from './PageHamburgerContext';
|
|
4
4
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/PageHamburger/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAC1D,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AACtE,OAAO,EACL,mBAAmB,EACnB,4BAA4B,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/PageHamburger/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAC1D,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AACtE,OAAO,EACL,mBAAmB,EACnB,4BAA4B,GAC7B,MAAM,wBAAwB,CAAA"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
export { default as PageHamburger } from './PageHamburger';
|
|
2
2
|
export { default as PageHamburgerPortal } from './PageHamburgerPortal';
|
|
3
|
-
export { useHamburgerContext, PageHamburgerContextProvider,
|
|
3
|
+
export { useHamburgerContext, PageHamburgerContextProvider, } from './PageHamburgerContext';
|
|
4
4
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/PageHamburger/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAC1D,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AACtE,OAAO,EACL,mBAAmB,EACnB,4BAA4B,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/PageHamburger/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAC1D,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AACtE,OAAO,EACL,mBAAmB,EACnB,4BAA4B,GAC7B,MAAM,wBAAwB,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PageSidebar.d.ts","sourceRoot":"","sources":["../../../src/PageSidebar/PageSidebar.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AAEjE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AACtC,OAAO,KAAuD,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"PageSidebar.d.ts","sourceRoot":"","sources":["../../../src/PageSidebar/PageSidebar.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AAEjE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AACtC,OAAO,KAAuD,MAAM,OAAO,CAAA;AAQ3E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAG1C,MAAM,WAAW,KAAM,SAAQ,SAAS;IACtC,iDAAiD;IACjD,OAAO,CAAC,EAAE,WAAW,CAAA;IACrB,cAAc;IACd,QAAQ,CAAC,EAAE,SAAS,CAAA;IACpB,uCAAuC;IACvC,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,gDAAgD;IAChD,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,2EAA2E;IAC3E,OAAO,CAAC,EAAE;QACR,cAAc,CAAC,EAAE,MAAM,CAAA;QACvB,SAAS,CAAC,EAAE,MAAM,CAAA;QAClB,mBAAmB,CAAC,EAAE,MAAM,CAAA;KAC7B,CAAA;IACD,iCAAiC;IACjC,IAAI,CAAC,EAAE,QAAQ,CAAC,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC,CAAA;IAC7C,2CAA2C;IAC3C,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,gBAAgB,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IAClC,yCAAyC;IACzC,UAAU,CAAC,EAAE,MAAM,IAAI,CAAA;CACxB;AAaD,eAAO,MAAM,WAAW,8EA2FtB,CAAA;;;;;;AASF,wBAIE"}
|
|
@@ -1,15 +1,13 @@
|
|
|
1
|
-
import { useSidebar } from '@toptal/picasso-provider';
|
|
2
|
-
import { twMerge
|
|
1
|
+
import { useSidebar, usePageTopBar } from '@toptal/picasso-provider';
|
|
2
|
+
import { twMerge } from '@toptal/picasso-tailwind-merge';
|
|
3
3
|
import React, { forwardRef, useCallback, useEffect, useState } from 'react';
|
|
4
|
-
import { ButtonCircular } from '@toptal/picasso-button';
|
|
5
4
|
import { Container } from '@toptal/picasso-container';
|
|
6
|
-
import { BackMinor16, ChevronRight16 } from '@toptal/picasso-icons';
|
|
7
5
|
import { noop } from '@toptal/picasso-utils';
|
|
8
|
-
import { PageHamburgerPortal, useHamburgerContext
|
|
6
|
+
import { PageHamburgerPortal, useHamburgerContext } from '../PageHamburger';
|
|
9
7
|
import { SidebarItem } from '../SidebarItem';
|
|
10
8
|
import { SidebarLogo } from '../SidebarLogo';
|
|
11
9
|
import { SidebarMenu } from '../SidebarMenu';
|
|
12
|
-
import
|
|
10
|
+
import PageSidebarDesktop from './PageSidebarDesktop';
|
|
13
11
|
const classesByVariant = {
|
|
14
12
|
light: 'shadow-gray-200 bg-gray-100',
|
|
15
13
|
dark: 'shadow-graphite-800 bg-graphite-800',
|
|
@@ -21,25 +19,18 @@ const classesBySize = {
|
|
|
21
19
|
};
|
|
22
20
|
export const PageSidebar = forwardRef(function Sidebar(props, ref) {
|
|
23
21
|
const { children, variant = 'light', className, style, collapsible, defaultCollapsed, testIds, size = 'medium', wrapperMaxHeight, disableSticky, onCollapse = noop, } = props;
|
|
24
|
-
const { setHasSidebar } = useSidebar();
|
|
25
22
|
const [isCollapsed, setIsCollapsed] = useState(!!defaultCollapsed);
|
|
26
23
|
const [isHovered, setIsHovered] = useState(false);
|
|
27
|
-
const
|
|
28
|
-
const {
|
|
29
|
-
|
|
30
|
-
// Clear expanded submenu on sidebar collapse
|
|
31
|
-
if (isCollapsed) {
|
|
32
|
-
setExpandedItemKey(null);
|
|
33
|
-
}
|
|
34
|
-
}, [isCollapsed]);
|
|
24
|
+
const { setHasSidebar } = useSidebar();
|
|
25
|
+
const { hasPageHamburger } = useHamburgerContext();
|
|
26
|
+
const { hasTopBar } = usePageTopBar();
|
|
35
27
|
useEffect(() => {
|
|
36
28
|
setHasSidebar(true);
|
|
37
29
|
return function cleanup() {
|
|
38
30
|
setHasSidebar(false);
|
|
39
31
|
};
|
|
40
32
|
}, [setHasSidebar]);
|
|
41
|
-
|
|
42
|
-
const handleCollapseButtonClick = useCallback(() => {
|
|
33
|
+
const handleCollapse = useCallback(() => {
|
|
43
34
|
setIsCollapsed(previousState => !previousState);
|
|
44
35
|
onCollapse();
|
|
45
36
|
}, [setIsCollapsed, onCollapse]);
|
|
@@ -49,18 +40,7 @@ export const PageSidebar = forwardRef(function Sidebar(props, ref) {
|
|
|
49
40
|
'[&]:before:w-[5.75rem]',
|
|
50
41
|
'[&_.scrollable-content]:[-ms-overflow-style:none]',
|
|
51
42
|
'[&_.scrollable-content]:[scrollbar-width:none]',
|
|
52
|
-
], !hasTopBar && 'block'), "data-testid": testIds === null || testIds === void 0 ? void 0 : testIds.container, onMouseEnter: collapsible ? () => setIsHovered(true) : noop, onMouseLeave: collapsible ? () => setIsHovered(false) : noop },
|
|
53
|
-
React.createElement(PageHamburgerPortal, null, children),
|
|
54
|
-
React.createElement("div", { style: {
|
|
55
|
-
maxHeight: wrapperMaxHeight,
|
|
56
|
-
}, className: twJoin('h-full', !disableSticky &&
|
|
57
|
-
'max-h-[calc(100vh-var(--header-height,3.5rem))] sticky top-[var(--header-height,3.5rem)]') },
|
|
58
|
-
React.createElement(Container, { flex: true, direction: 'column', className: 'scrollable-content h-full overflow-y-auto pt-4 pb-2 px-0', "data-testid": testIds === null || testIds === void 0 ? void 0 : testIds.scrollableContainer },
|
|
59
|
-
collapsible && (React.createElement(ButtonCircular, { className: twMerge(
|
|
60
|
-
// TODO: [FX-XXXX] technical debt: button color/background/radius/shadow shouldn't be overwritten
|
|
61
|
-
'absolute -right-3 top-3 invisible text-graphite-700 bg-white rounded-full shadow-[0_0_0_1px_rgba(0,0,0,0.04),0_0_8px_0_rgba(0,0,0,0.16)] z-[100] hover:text-white hover:bg-blue-500', isHovered && 'visible'), onClick: handleCollapseButtonClick, icon: isCollapsed ? React.createElement(ChevronRight16, null) : React.createElement(BackMinor16, null), "aria-label": 'collapse sidebar', variant: 'primary', "data-testid": testIds === null || testIds === void 0 ? void 0 : testIds.collapseButton })),
|
|
62
|
-
React.createElement("div", { className: 'order-[50] flex-1 h-full' }),
|
|
63
|
-
React.createElement(SidebarContextProvider, { isCollapsed: isCollapsed, isHovered: isHovered, variant: variant, expandedItemKey: expandedItemKey, setExpandedItemKey: setExpandedItemKey }, children)))));
|
|
43
|
+
], !hasTopBar && 'block'), "data-testid": testIds === null || testIds === void 0 ? void 0 : testIds.container, onMouseEnter: collapsible ? () => setIsHovered(true) : noop, onMouseLeave: collapsible ? () => setIsHovered(false) : noop }, hasPageHamburger ? (React.createElement(PageHamburgerPortal, null, children)) : (React.createElement(PageSidebarDesktop, { testIds: testIds, variant: variant, wrapperMaxHeight: wrapperMaxHeight, disableSticky: disableSticky, collapsible: collapsible, defaultCollapsed: defaultCollapsed, isCollapsed: isCollapsed, isHovered: isHovered, onCollapse: handleCollapse }, children))));
|
|
64
44
|
});
|
|
65
45
|
PageSidebar.defaultProps = {
|
|
66
46
|
variant: 'light',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PageSidebar.js","sourceRoot":"","sources":["../../../src/PageSidebar/PageSidebar.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;
|
|
1
|
+
{"version":3,"file":"PageSidebar.js","sourceRoot":"","sources":["../../../src/PageSidebar/PageSidebar.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { BaseProps } from '@toptal/picasso-shared';
|
|
2
|
+
import type { ReactNode } from 'react';
|
|
3
|
+
import React from 'react';
|
|
4
|
+
import type { VariantType } from './types';
|
|
5
|
+
export interface Props extends BaseProps {
|
|
6
|
+
/** Style variant of Sidebar and subcomponents */
|
|
7
|
+
variant?: VariantType;
|
|
8
|
+
/** Content */
|
|
9
|
+
children?: ReactNode;
|
|
10
|
+
/** Indicates Sidebar is collapsible */
|
|
11
|
+
collapsible?: boolean;
|
|
12
|
+
/** Indicates Sidebar is collapsed as default */
|
|
13
|
+
defaultCollapsed?: boolean;
|
|
14
|
+
/** Callback to notify when sidebar is having collapsed or default state */
|
|
15
|
+
testIds?: {
|
|
16
|
+
collapseButton?: string;
|
|
17
|
+
container?: string;
|
|
18
|
+
scrollableContainer?: string;
|
|
19
|
+
};
|
|
20
|
+
/** Make sidebar scroll with the content */
|
|
21
|
+
disableSticky?: boolean;
|
|
22
|
+
wrapperMaxHeight?: string | number;
|
|
23
|
+
isHovered: boolean;
|
|
24
|
+
isCollapsed: boolean;
|
|
25
|
+
/** Callback when sidebar is collapsed */
|
|
26
|
+
onCollapse?: () => void;
|
|
27
|
+
}
|
|
28
|
+
export declare const PageSidebarDesktop: React.ForwardRefExoticComponent<Props & React.RefAttributes<HTMLDivElement>>;
|
|
29
|
+
export default PageSidebarDesktop;
|
|
30
|
+
//# sourceMappingURL=PageSidebarDesktop.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PageSidebarDesktop.d.ts","sourceRoot":"","sources":["../../../src/PageSidebar/PageSidebarDesktop.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAEvD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AACtC,OAAO,KAA0C,MAAM,OAAO,CAAA;AAO9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAE1C,MAAM,WAAW,KAAM,SAAQ,SAAS;IACtC,iDAAiD;IACjD,OAAO,CAAC,EAAE,WAAW,CAAA;IACrB,cAAc;IACd,QAAQ,CAAC,EAAE,SAAS,CAAA;IACpB,uCAAuC;IACvC,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,gDAAgD;IAChD,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,2EAA2E;IAC3E,OAAO,CAAC,EAAE;QACR,cAAc,CAAC,EAAE,MAAM,CAAA;QACvB,SAAS,CAAC,EAAE,MAAM,CAAA;QAClB,mBAAmB,CAAC,EAAE,MAAM,CAAA;KAC7B,CAAA;IACD,2CAA2C;IAC3C,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,gBAAgB,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IAClC,SAAS,EAAE,OAAO,CAAA;IAClB,WAAW,EAAE,OAAO,CAAA;IACpB,yCAAyC;IACzC,UAAU,CAAC,EAAE,MAAM,IAAI,CAAA;CACxB;AAED,eAAO,MAAM,kBAAkB,8EAqE9B,CAAA;AAQD,eAAe,kBAAkB,CAAA"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { twMerge, twJoin } from '@toptal/picasso-tailwind-merge';
|
|
2
|
+
import React, { forwardRef, useState, useEffect } from 'react';
|
|
3
|
+
import { ButtonCircular } from '@toptal/picasso-button';
|
|
4
|
+
import { Container } from '@toptal/picasso-container';
|
|
5
|
+
import { BackMinor16, ChevronRight16 } from '@toptal/picasso-icons';
|
|
6
|
+
import { noop } from '@toptal/picasso-utils';
|
|
7
|
+
import { SidebarContextProvider } from './SidebarContextProvider';
|
|
8
|
+
export const PageSidebarDesktop = forwardRef(function PageSidebarDesktop(props, ref) {
|
|
9
|
+
const { children, variant = 'light', collapsible, testIds, wrapperMaxHeight, disableSticky, isHovered, isCollapsed, onCollapse = noop, } = props;
|
|
10
|
+
const [expandedItemKey, setExpandedItemKey] = useState(null);
|
|
11
|
+
useEffect(() => {
|
|
12
|
+
// Clear expanded submenu on sidebar collapse
|
|
13
|
+
if (isCollapsed) {
|
|
14
|
+
setExpandedItemKey(null);
|
|
15
|
+
}
|
|
16
|
+
}, [isCollapsed]);
|
|
17
|
+
return (React.createElement("div", { style: {
|
|
18
|
+
maxHeight: wrapperMaxHeight,
|
|
19
|
+
}, className: twJoin('h-full', !disableSticky &&
|
|
20
|
+
'max-h-[calc(100vh-var(--header-height,3.5rem))] sticky top-[var(--header-height,3.5rem)]') },
|
|
21
|
+
React.createElement(Container, { flex: true, direction: 'column', className: 'scrollable-content h-full overflow-y-auto pt-4 pb-2 px-0', "data-testid": testIds === null || testIds === void 0 ? void 0 : testIds.scrollableContainer, ref: ref },
|
|
22
|
+
collapsible && (React.createElement(ButtonCircular, { className: twMerge(
|
|
23
|
+
// TODO: [FX-XXXX] technical debt: button color/background/radius/shadow shouldn't be overwritten
|
|
24
|
+
'absolute -right-3 top-3 invisible text-graphite-700 bg-white rounded-full shadow-[0_0_0_1px_rgba(0,0,0,0.04),0_0_8px_0_rgba(0,0,0,0.16)] z-[100] hover:text-white hover:bg-blue-500', isHovered && 'visible'), onClick: onCollapse, icon: isCollapsed ? React.createElement(ChevronRight16, null) : React.createElement(BackMinor16, null), "aria-label": 'collapse sidebar', variant: 'primary', "data-testid": testIds === null || testIds === void 0 ? void 0 : testIds.collapseButton })),
|
|
25
|
+
React.createElement("div", { className: 'order-[50] flex-1 h-full' }),
|
|
26
|
+
React.createElement(SidebarContextProvider, { isCollapsed: isCollapsed, isHovered: isHovered, variant: variant, expandedItemKey: expandedItemKey, setExpandedItemKey: setExpandedItemKey }, children))));
|
|
27
|
+
});
|
|
28
|
+
PageSidebarDesktop.defaultProps = {
|
|
29
|
+
variant: 'light',
|
|
30
|
+
};
|
|
31
|
+
PageSidebarDesktop.displayName = 'PageSidebarDesktop';
|
|
32
|
+
export default PageSidebarDesktop;
|
|
33
|
+
//# sourceMappingURL=PageSidebarDesktop.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PageSidebarDesktop.js","sourceRoot":"","sources":["../../../src/PageSidebar/PageSidebarDesktop.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,gCAAgC,CAAA;AAEhE,OAAO,KAAK,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AACrD,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AACnE,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAA;AAE5C,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAA;AA2BjE,MAAM,CAAC,MAAM,kBAAkB,GAAG,UAAU,CAC1C,SAAS,kBAAkB,CAAC,KAAK,EAAE,GAAG;IACpC,MAAM,EACJ,QAAQ,EACR,OAAO,GAAG,OAAO,EACjB,WAAW,EACX,OAAO,EACP,gBAAgB,EAChB,aAAa,EACb,SAAS,EACT,WAAW,EACX,UAAU,GAAG,IAAI,GAClB,GAAG,KAAK,CAAA;IAET,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAA;IAE3E,SAAS,CAAC,GAAG,EAAE;QACb,6CAA6C;QAC7C,IAAI,WAAW,EAAE;YACf,kBAAkB,CAAC,IAAI,CAAC,CAAA;SACzB;IACH,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAA;IAEjB,OAAO,CACL,6BACE,KAAK,EAAE;YACL,SAAS,EAAE,gBAAgB;SAC5B,EACD,SAAS,EAAE,MAAM,CACf,QAAQ,EACR,CAAC,aAAa;YACZ,0FAA0F,CAC7F;QAED,oBAAC,SAAS,IACR,IAAI,QACJ,SAAS,EAAC,QAAQ,EAClB,SAAS,EAAC,0DAA0D,iBACvD,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,mBAAmB,EACzC,GAAG,EAAE,GAAG;YAEP,WAAW,IAAI,CACd,oBAAC,cAAc,IACb,SAAS,EAAE,OAAO;gBAChB,iGAAiG;gBACjG,qLAAqL,EACrL,SAAS,IAAI,SAAS,CACvB,EACD,OAAO,EAAE,UAAU,EACnB,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,oBAAC,cAAc,OAAG,CAAC,CAAC,CAAC,oBAAC,WAAW,OAAG,gBAC7C,kBAAkB,EAC7B,OAAO,EAAC,SAAS,iBACJ,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,cAAc,GACpC,CACH;YACD,6BAAK,SAAS,EAAC,0BAA0B,GAAG;YAC5C,oBAAC,sBAAsB,IACrB,WAAW,EAAE,WAAW,EACxB,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,OAAO,EAChB,eAAe,EAAE,eAAe,EAChC,kBAAkB,EAAE,kBAAkB,IAErC,QAAQ,CACc,CACf,CACR,CACP,CAAA;AACH,CAAC,CACF,CAAA;AAED,kBAAkB,CAAC,YAAY,GAAG;IAChC,OAAO,EAAE,OAAO;CACjB,CAAA;AAED,kBAAkB,CAAC,WAAW,GAAG,oBAAoB,CAAA;AAErD,eAAe,kBAAkB,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PageTopBar.d.ts","sourceRoot":"","sources":["../../../src/PageTopBar/PageTopBar.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,OAAO,CAAA;AACpE,OAAO,KAA4C,MAAM,OAAO,CAAA;AAEhE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;
|
|
1
|
+
{"version":3,"file":"PageTopBar.d.ts","sourceRoot":"","sources":["../../../src/PageTopBar/PageTopBar.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,OAAO,CAAA;AACpE,OAAO,KAA4C,MAAM,OAAO,CAAA;AAEhE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAyBvD,aAAK,WAAW,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAA;AAE5C,MAAM,WAAW,KAAM,SAAQ,SAAS,EAAE,cAAc,CAAC,WAAW,CAAC;IACnE,gDAAgD;IAChD,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,qCAAqC;IACrC,QAAQ,CAAC,EAAE,YAAY,CAAA;IACvB,sBAAsB;IACtB,IAAI,CAAC,EAAE,SAAS,CAAA;IAChB,8CAA8C;IAC9C,aAAa,CAAC,EAAE,SAAS,CAAA;IACzB,iDAAiD;IACjD,WAAW,CAAC,EAAE,SAAS,CAAA;IACvB,kDAAkD;IAClD,YAAY,CAAC,EAAE,SAAS,CAAA;IACxB,oBAAoB;IACpB,WAAW,CAAC,EAAE,SAAS,CAAA;IACvB,oBAAoB;IACpB,OAAO,CAAC,EAAE,WAAW,CAAA;IACrB,uBAAuB;IACvB,OAAO,CAAC,EAAE;QACR,SAAS,CAAC,EAAE,MAAM,CAAA;KACnB,CAAA;CACF;AAED,eAAO,MAAM,iBAAiB;aAAkC,WAAW;EAEzE,CAAA;AAMF,eAAO,MAAM,UAAU,2EA2IrB,CAAA;AAQF,eAAe,UAAU,CAAA"}
|
|
@@ -11,7 +11,7 @@ var __rest = (this && this.__rest) || function (s, e) {
|
|
|
11
11
|
};
|
|
12
12
|
import React, { useContext, forwardRef, useEffect } from 'react';
|
|
13
13
|
import cx from 'classnames';
|
|
14
|
-
import { usePageTopBar, usePreventPageWidthChangeOnScrollbar, } from '@toptal/picasso-provider';
|
|
14
|
+
import { usePageTopBar, useSidebar, usePreventPageWidthChangeOnScrollbar, useScreenSize, } from '@toptal/picasso-provider';
|
|
15
15
|
import { makeStyles } from '@material-ui/core/styles';
|
|
16
16
|
import { Logo } from '@toptal/picasso-logo';
|
|
17
17
|
import { Container } from '@toptal/picasso-container';
|
|
@@ -20,6 +20,7 @@ import { useIsomorphicLayoutEffect } from '@toptal/picasso-utils';
|
|
|
20
20
|
import { PageContext } from '../Page';
|
|
21
21
|
import { PageHamburger, PageHamburgerPortal, useHamburgerContext, } from '../PageHamburger';
|
|
22
22
|
import styles from './styles';
|
|
23
|
+
const SMALL_SCREEN_WIDTH = 1280;
|
|
23
24
|
export const PageTopBarContext = React.createContext({
|
|
24
25
|
variant: 'dark',
|
|
25
26
|
});
|
|
@@ -31,17 +32,22 @@ export const PageTopBar = forwardRef(function PageTopBar(props, ref) {
|
|
|
31
32
|
const classes = useStyles();
|
|
32
33
|
const { setHasTopBar } = usePageTopBar();
|
|
33
34
|
const { preventPageWidthChangeOnScrollbar } = usePreventPageWidthChangeOnScrollbar();
|
|
34
|
-
const { setHasTopBar: setHasTopBarHamburger, hasTopBar } = useHamburgerContext();
|
|
35
35
|
useIsomorphicLayoutEffect(() => {
|
|
36
36
|
setHasTopBar(true);
|
|
37
|
-
return () =>
|
|
37
|
+
return () => {
|
|
38
|
+
setHasTopBar(false);
|
|
39
|
+
};
|
|
38
40
|
}, [setHasTopBar]);
|
|
39
|
-
useEffect(() => {
|
|
40
|
-
setHasTopBarHamburger(true);
|
|
41
|
-
return () => setHasTopBarHamburger(false);
|
|
42
|
-
}, [hasTopBar, setHasTopBarHamburger]);
|
|
43
41
|
const { width, fullWidth } = useContext(PageContext);
|
|
44
|
-
const { hamburgerId } = useHamburgerContext();
|
|
42
|
+
const { hamburgerId, setHasPageHamburger } = useHamburgerContext();
|
|
43
|
+
const screenSize = useScreenSize();
|
|
44
|
+
const isSmallScreen = screenSize < SMALL_SCREEN_WIDTH;
|
|
45
|
+
const { hasSidebar } = useSidebar();
|
|
46
|
+
const showHamburger = isSmallScreen && (hasSidebar || !!centerContent);
|
|
47
|
+
useEffect(() => {
|
|
48
|
+
setHasPageHamburger(showHamburger);
|
|
49
|
+
return () => setHasPageHamburger(false);
|
|
50
|
+
}, [setHasPageHamburger, showHamburger]);
|
|
45
51
|
const isDark = ['dark', 'grey'].includes(variant);
|
|
46
52
|
const logoVariant = isDark ? 'white' : 'default';
|
|
47
53
|
const logoDefault = (React.createElement(React.Fragment, null,
|
|
@@ -64,16 +70,15 @@ export const PageTopBar = forwardRef(function PageTopBar(props, ref) {
|
|
|
64
70
|
React.createElement("div", { className: innerClassName },
|
|
65
71
|
React.createElement("div", { className: classes.left },
|
|
66
72
|
React.createElement(Container, { flex: true, alignItems: 'center', gap: 'small' },
|
|
67
|
-
React.createElement(PageHamburger, { id: hamburgerId, "data-testid": testIds === null || testIds === void 0 ? void 0 : testIds.hamburger }),
|
|
73
|
+
showHamburger && (React.createElement(PageHamburger, { id: hamburgerId, "data-testid": testIds === null || testIds === void 0 ? void 0 : testIds.hamburger })),
|
|
68
74
|
logoLink
|
|
69
75
|
? React.cloneElement(logoLink, {}, logoComponent)
|
|
70
76
|
: logoComponent,
|
|
71
77
|
titleComponent),
|
|
72
78
|
leftContent),
|
|
73
|
-
centerContent &&
|
|
74
|
-
React.createElement(PageHamburgerPortal, null,
|
|
75
|
-
React.createElement("div", { className: classes.centerContentPortal }, centerContent)),
|
|
76
|
-
React.createElement(Container, { className: classes.centerContent }, centerContent))),
|
|
79
|
+
centerContent &&
|
|
80
|
+
(isSmallScreen ? (React.createElement(PageHamburgerPortal, null,
|
|
81
|
+
React.createElement("div", { className: classes.centerContentPortal }, centerContent))) : (React.createElement(Container, { className: classes.centerContent }, centerContent))),
|
|
77
82
|
React.createElement("div", { className: classes.right },
|
|
78
83
|
actionItems,
|
|
79
84
|
rightContent))))));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PageTopBar.js","sourceRoot":"","sources":["../../../src/PageTopBar/PageTopBar.tsx"],"names":[],"mappings":";;;;;;;;;;;AAEA,OAAO,KAAK,EAAE,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAChE,OAAO,EAAE,MAAM,YAAY,CAAA;AAE3B,OAAO,EACL,aAAa,EACb,oCAAoC,
|
|
1
|
+
{"version":3,"file":"PageTopBar.js","sourceRoot":"","sources":["../../../src/PageTopBar/PageTopBar.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TopBarMenu.d.ts","sourceRoot":"","sources":["../../../src/TopBarMenu/TopBarMenu.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AACvD,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AACtD,OAAO,KAAqB,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"TopBarMenu.d.ts","sourceRoot":"","sources":["../../../src/TopBarMenu/TopBarMenu.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AACvD,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AACtD,OAAO,KAAqB,MAAM,OAAO,CAAA;AAGzC,MAAM,WAAW,KAAM,SAAQ,SAAS,EAAE,cAAc,CAAC,gBAAgB,CAAC;IACxE,mBAAmB;IACnB,QAAQ,EAAE,SAAS,CAAA;CACpB;AAED,eAAO,MAAM,UAAU,gFAkBtB,CAAA;AAID,eAAe,UAAU,CAAA"}
|
|
@@ -11,14 +11,12 @@ var __rest = (this && this.__rest) || function (s, e) {
|
|
|
11
11
|
};
|
|
12
12
|
import React, { forwardRef } from 'react';
|
|
13
13
|
import { Menu } from '@toptal/picasso-menu';
|
|
14
|
-
import { useRegisterMenu } from '../PageHamburger';
|
|
15
14
|
export const TopBarMenu = forwardRef(function TopBarMenu(props, ref) {
|
|
16
15
|
const { children } = props, rest = __rest(props
|
|
17
16
|
// not more than 6 menu items are allowed by BASE design
|
|
18
17
|
, ["children"]);
|
|
19
18
|
// not more than 6 menu items are allowed by BASE design
|
|
20
19
|
const items = React.Children.toArray(children).slice(0, 6);
|
|
21
|
-
useRegisterMenu();
|
|
22
20
|
return (React.createElement(Menu, Object.assign({}, rest, { allowNestedNavigation: false, ref: ref, className: 'block min-[1280px]:flex shadow-0' }), items));
|
|
23
21
|
});
|
|
24
22
|
TopBarMenu.displayName = 'TopBarMenu';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TopBarMenu.js","sourceRoot":"","sources":["../../../src/TopBarMenu/TopBarMenu.tsx"],"names":[],"mappings":";;;;;;;;;;;AAEA,OAAO,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,OAAO,CAAA;AACzC,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAA;
|
|
1
|
+
{"version":3,"file":"TopBarMenu.js","sourceRoot":"","sources":["../../../src/TopBarMenu/TopBarMenu.tsx"],"names":[],"mappings":";;;;;;;;;;;AAEA,OAAO,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,OAAO,CAAA;AACzC,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAA;AAO3C,MAAM,CAAC,MAAM,UAAU,GAAG,UAAU,CAClC,SAAS,UAAU,CAAC,KAAK,EAAE,GAAG;IAC5B,MAAM,EAAE,QAAQ,KAAc,KAAK,EAAd,IAAI,UAAK,KAAK;IAEnC,wDAAwD;MAFlD,YAAqB,CAAQ,CAAA;IAEnC,wDAAwD;IACxD,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IAE1D,OAAO,CACL,oBAAC,IAAI,oBACC,IAAI,IACR,qBAAqB,EAAE,KAAK,EAC5B,GAAG,EAAE,GAAG,EACR,SAAS,EAAC,kCAAkC,KAE3C,KAAK,CACD,CACR,CAAA;AACH,CAAC,CACF,CAAA;AAED,UAAU,CAAC,WAAW,GAAG,YAAY,CAAA;AAErC,eAAe,UAAU,CAAA"}
|
package/package.json
CHANGED
|
@@ -11,7 +11,7 @@ interface Props {
|
|
|
11
11
|
}
|
|
12
12
|
|
|
13
13
|
const PageHamburger = ({ id, 'data-testid': dataTestId }: Props) => {
|
|
14
|
-
const {
|
|
14
|
+
const { hamburgerRef } = useHamburgerContext()
|
|
15
15
|
const [showContent, setShowContent] = useState<boolean>(false)
|
|
16
16
|
|
|
17
17
|
const handleShowContent = () => setShowContent(true)
|
|
@@ -20,7 +20,6 @@ const PageHamburger = ({ id, 'data-testid': dataTestId }: Props) => {
|
|
|
20
20
|
return (
|
|
21
21
|
<Dropdown
|
|
22
22
|
content={<div id={id} ref={hamburgerRef} />}
|
|
23
|
-
className={!showSidebarMenu ? 'hidden' : 'min-[1280px]:hidden'}
|
|
24
23
|
classes={{
|
|
25
24
|
content: `!shadow-[inset_-1px_0px_0px_0px] !shadow-gray-200 max-h-[calc(100vh-var(--header-height,3.5rem))] !bg-gray-100`,
|
|
26
25
|
popper: 'mt-4',
|
|
@@ -1,37 +1,24 @@
|
|
|
1
1
|
import type { ReactNode } from 'react'
|
|
2
|
-
import React, {
|
|
3
|
-
createContext,
|
|
4
|
-
useContext,
|
|
5
|
-
useEffect,
|
|
6
|
-
useRef,
|
|
7
|
-
useState,
|
|
8
|
-
} from 'react'
|
|
2
|
+
import React, { createContext, useContext, useRef, useState } from 'react'
|
|
9
3
|
|
|
10
4
|
const noop = () => {}
|
|
11
5
|
|
|
12
6
|
interface InternalHamburgerContextProps {
|
|
13
7
|
hamburgerId: string
|
|
14
|
-
setMenuCount: (val: (prev: number) => number) => void
|
|
15
|
-
menuCount: number
|
|
16
|
-
hasTopBar: boolean
|
|
17
|
-
setHasTopBar: (val: boolean) => void
|
|
18
8
|
hamburgerRef?: React.RefObject<HTMLDivElement>
|
|
9
|
+
hasPageHamburger: boolean
|
|
10
|
+
setHasPageHamburger: (val: boolean) => void
|
|
19
11
|
}
|
|
20
12
|
|
|
21
|
-
export
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
setHasTopBar: (val: boolean) => void
|
|
26
|
-
hamburgerRef?: React.RefObject<HTMLDivElement>
|
|
27
|
-
}
|
|
13
|
+
export type HamburgerContextProps = Omit<
|
|
14
|
+
InternalHamburgerContextProps,
|
|
15
|
+
'menuCount' | 'setMenuCount'
|
|
16
|
+
>
|
|
28
17
|
|
|
29
18
|
const PageHamburgerContext = createContext<InternalHamburgerContextProps>({
|
|
30
19
|
hamburgerId: 'hamburger',
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
setHasTopBar: noop,
|
|
34
|
-
hasTopBar: false,
|
|
20
|
+
setHasPageHamburger: noop,
|
|
21
|
+
hasPageHamburger: false,
|
|
35
22
|
})
|
|
36
23
|
|
|
37
24
|
interface Props {
|
|
@@ -43,18 +30,14 @@ export const PageHamburgerContextProvider = ({
|
|
|
43
30
|
children,
|
|
44
31
|
hamburgerId,
|
|
45
32
|
}: Props) => {
|
|
46
|
-
const [
|
|
47
|
-
const [menuCount, setMenuCount] = useState(0)
|
|
48
|
-
|
|
33
|
+
const [hasPageHamburger, setHasPageHamburger] = useState(false)
|
|
49
34
|
const hamburgerRef = useRef<HTMLDivElement>(null)
|
|
50
35
|
|
|
51
36
|
const context: InternalHamburgerContextProps = {
|
|
52
37
|
hamburgerId,
|
|
53
|
-
hasTopBar,
|
|
54
|
-
setHasTopBar,
|
|
55
38
|
hamburgerRef,
|
|
56
|
-
|
|
57
|
-
|
|
39
|
+
setHasPageHamburger,
|
|
40
|
+
hasPageHamburger,
|
|
58
41
|
}
|
|
59
42
|
|
|
60
43
|
return (
|
|
@@ -65,28 +48,13 @@ export const PageHamburgerContextProvider = ({
|
|
|
65
48
|
}
|
|
66
49
|
|
|
67
50
|
export const useHamburgerContext = (): HamburgerContextProps => {
|
|
68
|
-
const { hamburgerId,
|
|
51
|
+
const { hamburgerId, hamburgerRef, setHasPageHamburger, hasPageHamburger } =
|
|
69
52
|
useContext(PageHamburgerContext)
|
|
70
53
|
|
|
71
|
-
const hasSidebar = menuCount > 0
|
|
72
|
-
|
|
73
54
|
return {
|
|
74
55
|
hamburgerId,
|
|
75
|
-
hasTopBar,
|
|
76
|
-
setHasTopBar,
|
|
77
56
|
hamburgerRef,
|
|
78
|
-
|
|
57
|
+
setHasPageHamburger,
|
|
58
|
+
hasPageHamburger,
|
|
79
59
|
}
|
|
80
60
|
}
|
|
81
|
-
|
|
82
|
-
export const useRegisterMenu = () => {
|
|
83
|
-
const { setMenuCount } = useContext(PageHamburgerContext)
|
|
84
|
-
|
|
85
|
-
useEffect(() => {
|
|
86
|
-
setMenuCount(prev => prev + 1)
|
|
87
|
-
|
|
88
|
-
return () => {
|
|
89
|
-
setMenuCount(prev => prev - 1)
|
|
90
|
-
}
|
|
91
|
-
}, [setMenuCount])
|
|
92
|
-
}
|