@toptal/picasso 22.4.2 → 24.0.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.
Files changed (113) hide show
  1. package/AccountSelect/AccountSelect.js +3 -3
  2. package/AccountSelect/AccountSelect.js.map +1 -1
  3. package/AccountSelect/styles.d.ts +1 -1
  4. package/AccountSelect/styles.js +3 -0
  5. package/AccountSelect/styles.js.map +1 -1
  6. package/Autocomplete/Autocomplete.js +1 -1
  7. package/Autocomplete/Autocomplete.js.map +1 -1
  8. package/Autocomplete/NoOptionsMenuItem.js +1 -1
  9. package/Autocomplete/NoOptionsMenuItem.js.map +1 -1
  10. package/Autocomplete/OtherOptionMenuItem.js +1 -1
  11. package/Autocomplete/OtherOptionMenuItem.js.map +1 -1
  12. package/Badge/Badge.js +2 -2
  13. package/Badge/Badge.js.map +1 -1
  14. package/Logo/Logo.js +2 -2
  15. package/Logo/Logo.js.map +1 -1
  16. package/Menu/styles.d.ts +2 -1
  17. package/Menu/styles.js +4 -2
  18. package/Menu/styles.js.map +1 -1
  19. package/MenuItem/MenuItem.d.ts +1 -3
  20. package/MenuItem/MenuItem.js +2 -6
  21. package/MenuItem/MenuItem.js.map +1 -1
  22. package/MenuItem/styles.d.ts +1 -1
  23. package/MenuItem/styles.js +2 -12
  24. package/MenuItem/styles.js.map +1 -1
  25. package/NonNativeSelect/NonNativeSelect.js +3 -3
  26. package/NonNativeSelect/NonNativeSelect.js.map +1 -1
  27. package/NonNativeSelect/styles.d.ts +1 -1
  28. package/NonNativeSelect/styles.js +3 -0
  29. package/NonNativeSelect/styles.js.map +1 -1
  30. package/NonNativeSelectOption/NonNativeSelectOption.d.ts +1 -3
  31. package/NonNativeSelectOption/NonNativeSelectOption.js +2 -2
  32. package/NonNativeSelectOption/NonNativeSelectOption.js.map +1 -1
  33. package/NonNativeSelectOptions/NonNativeSelectOptions.d.ts +2 -2
  34. package/NonNativeSelectOptions/NonNativeSelectOptions.js +4 -7
  35. package/NonNativeSelectOptions/NonNativeSelectOptions.js.map +1 -1
  36. package/Page/Page.d.ts +2 -2
  37. package/Page/Page.js +1 -1
  38. package/Page/Page.js.map +1 -1
  39. package/{Sidebar/Sidebar.d.ts → PageSidebar/PageSidebar.d.ts} +13 -5
  40. package/{Sidebar/Sidebar.js → PageSidebar/PageSidebar.js} +33 -25
  41. package/PageSidebar/PageSidebar.js.map +1 -0
  42. package/PageSidebar/SidebarContextProvider.d.ts +12 -0
  43. package/PageSidebar/SidebarContextProvider.js +19 -0
  44. package/PageSidebar/SidebarContextProvider.js.map +1 -0
  45. package/PageSidebar/index.d.ts +5 -0
  46. package/PageSidebar/index.js +3 -0
  47. package/PageSidebar/index.js.map +1 -0
  48. package/PageSidebar/styles.d.ts +3 -0
  49. package/{Sidebar → PageSidebar}/styles.js +38 -2
  50. package/PageSidebar/styles.js.map +1 -0
  51. package/{Sidebar → PageSidebar}/types.d.ts +2 -0
  52. package/{Sidebar → PageSidebar}/types.js +0 -0
  53. package/{Sidebar → PageSidebar}/types.js.map +1 -1
  54. package/SidebarItem/SidebarItem.d.ts +4 -31
  55. package/SidebarItem/SidebarItem.js +19 -72
  56. package/SidebarItem/SidebarItem.js.map +1 -1
  57. package/SidebarItem/SidebarItemAccordion.d.ts +3 -0
  58. package/SidebarItem/SidebarItemAccordion.js +30 -0
  59. package/SidebarItem/SidebarItemAccordion.js.map +1 -0
  60. package/SidebarItem/SidebarItemBasic.d.ts +3 -0
  61. package/SidebarItem/SidebarItemBasic.js +12 -0
  62. package/SidebarItem/SidebarItemBasic.js.map +1 -0
  63. package/SidebarItem/SidebarItemCompact.d.ts +3 -0
  64. package/SidebarItem/SidebarItemCompact.js +19 -0
  65. package/SidebarItem/SidebarItemCompact.js.map +1 -0
  66. package/SidebarItem/SidebarItemHeader.d.ts +3 -0
  67. package/SidebarItem/SidebarItemHeader.js +46 -0
  68. package/SidebarItem/SidebarItemHeader.js.map +1 -0
  69. package/SidebarItem/SubMenuContextProvider.d.ts +16 -0
  70. package/SidebarItem/SubMenuContextProvider.js +12 -0
  71. package/SidebarItem/SubMenuContextProvider.js.map +1 -0
  72. package/SidebarItem/index.d.ts +3 -2
  73. package/SidebarItem/index.js +2 -1
  74. package/SidebarItem/index.js.map +1 -1
  75. package/SidebarItem/styles.d.ts +1 -1
  76. package/SidebarItem/styles.js +16 -15
  77. package/SidebarItem/styles.js.map +1 -1
  78. package/SidebarItem/types.d.ts +37 -0
  79. package/SidebarItem/types.js +2 -0
  80. package/SidebarItem/types.js.map +1 -0
  81. package/SidebarItemContent/SidebarItemContent.d.ts +14 -0
  82. package/SidebarItemContent/SidebarItemContent.js +64 -0
  83. package/SidebarItemContent/SidebarItemContent.js.map +1 -0
  84. package/SidebarItemContent/index.d.ts +4 -0
  85. package/SidebarItemContent/index.js +2 -0
  86. package/SidebarItemContent/index.js.map +1 -0
  87. package/SidebarItemContent/styles.d.ts +2 -0
  88. package/SidebarItemContent/styles.js +17 -0
  89. package/SidebarItemContent/styles.js.map +1 -0
  90. package/SidebarLogo/SidebarLogo.d.ts +5 -1
  91. package/SidebarLogo/SidebarLogo.js +14 -2
  92. package/SidebarLogo/SidebarLogo.js.map +1 -1
  93. package/SidebarLogo/styles.d.ts +2 -0
  94. package/SidebarLogo/styles.js +8 -0
  95. package/SidebarLogo/styles.js.map +1 -0
  96. package/SidebarMenu/SidebarMenu.js +24 -16
  97. package/SidebarMenu/SidebarMenu.js.map +1 -1
  98. package/index.d.ts +1 -2
  99. package/index.js +0 -1
  100. package/index.js.map +1 -1
  101. package/package.json +2 -2
  102. package/utils/get-react-node-text-content.d.ts +15 -0
  103. package/utils/get-react-node-text-content.js +32 -0
  104. package/utils/get-react-node-text-content.js.map +1 -0
  105. package/utils/index.d.ts +1 -0
  106. package/utils/index.js +1 -0
  107. package/utils/index.js.map +1 -1
  108. package/Sidebar/Sidebar.js.map +0 -1
  109. package/Sidebar/index.d.ts +0 -4
  110. package/Sidebar/index.js +0 -2
  111. package/Sidebar/index.js.map +0 -1
  112. package/Sidebar/styles.d.ts +0 -3
  113. package/Sidebar/styles.js.map +0 -1
@@ -1,6 +1,6 @@
1
- import React, { ReactNode } from 'react';
2
1
  import { BaseProps, StandardProps } from '@toptal/picasso-shared';
3
- import { SidebarContextProps, VariantType } from './types';
2
+ import React, { ReactNode } from 'react';
3
+ import { VariantType } from './types';
4
4
  export interface SmallScreenSidebarWrapperProps extends StandardProps {
5
5
  children?: ReactNode;
6
6
  }
@@ -9,12 +9,20 @@ export interface Props extends BaseProps {
9
9
  variant?: VariantType;
10
10
  /** Content */
11
11
  children?: ReactNode;
12
+ /** Indicates Sidebar is collapsible */
13
+ collapsible?: boolean;
14
+ /** Indicates Sidebar is collapsed as default */
15
+ defaultCollapsed?: boolean;
16
+ /** Callback to notify when sidebar is having collapsed or default state */
17
+ testIds?: {
18
+ collapseButton?: string;
19
+ container?: string;
20
+ };
12
21
  }
13
- export declare const SidebarContext: React.Context<SidebarContextProps>;
14
- export declare const Sidebar: React.ForwardRefExoticComponent<Props & React.RefAttributes<HTMLDivElement>>;
22
+ export declare const PageSidebar: React.ForwardRefExoticComponent<Props & React.RefAttributes<HTMLDivElement>>;
15
23
  declare const _default: React.ForwardRefExoticComponent<Props & React.RefAttributes<HTMLDivElement>> & {
16
24
  Menu: React.ForwardRefExoticComponent<import("../SidebarMenu/SidebarMenu").Props & React.RefAttributes<HTMLUListElement>>;
17
- Item: import("@toptal/picasso-shared").OverridableComponent<import("../SidebarItem/SidebarItem").Props>;
25
+ Item: import("@toptal/picasso-shared").OverridableComponent<import("../SidebarItem/types").Props>;
18
26
  Logo: React.ForwardRefExoticComponent<import("../SidebarLogo/SidebarLogo").Props & React.RefAttributes<HTMLDivElement>>;
19
27
  };
20
28
  export default _default;
@@ -1,15 +1,16 @@
1
- import React, { forwardRef, useState } from 'react';
2
1
  import { makeStyles } from '@material-ui/core/styles';
3
- import cx from 'classnames';
4
2
  import { useSidebar } from '@toptal/picasso-provider';
3
+ import cx from 'classnames';
4
+ import React, { forwardRef, useCallback, useEffect, useState } from 'react';
5
5
  import Button from '../Button';
6
6
  import Container from '../Container';
7
7
  import Dropdown from '../Dropdown';
8
- import { Overview16, Close16 } from '../Icon';
9
- import { useBreakpoint, useIsomorphicLayoutEffect } from '../utils';
10
- import SidebarMenu from '../SidebarMenu';
8
+ import { BackMinor16, ChevronRight16, Close16, Overview16 } from '../Icon';
11
9
  import SidebarItem from '../SidebarItem';
12
10
  import SidebarLogo from '../SidebarLogo';
11
+ import SidebarMenu from '../SidebarMenu';
12
+ import { noop, useBreakpoint } from '../utils';
13
+ import { SidebarContextProvider } from './SidebarContextProvider';
13
14
  import styles from './styles';
14
15
  const SmallScreenSidebarWrapper = ({ classes, children }) => {
15
16
  var _a;
@@ -26,42 +27,49 @@ const SmallScreenSidebarWrapper = ({ classes, children }) => {
26
27
  }, onOpen: handleShowSidebar, onClose: handleHideSidebar },
27
28
  React.createElement(Button.Circular, { icon: showSidebar ? React.createElement(Close16, null) : React.createElement(Overview16, null), variant: 'transparent' })));
28
29
  };
29
- export const SidebarContext = React.createContext({
30
- expandedItemKey: null,
31
- setExpandedItemKey: () => { }
32
- });
33
30
  const useStyles = makeStyles(styles, {
34
- name: 'Sidebar'
31
+ name: 'PageSidebar'
35
32
  });
36
- // eslint-disable-next-line react/display-name
37
- export const Sidebar = forwardRef(function Sidebar(props, ref) {
38
- const { children, variant = 'light', className, style } = props;
33
+ export const PageSidebar = forwardRef(function Sidebar(props, ref) {
34
+ const { children, variant = 'light', className, style, collapsible, defaultCollapsed, testIds } = props;
39
35
  const classes = useStyles();
40
36
  const { setHasSidebar } = useSidebar();
41
- useIsomorphicLayoutEffect(() => {
37
+ const [isCollapsed, setIsCollapsed] = useState(!!defaultCollapsed);
38
+ const [isHovered, setIsHovered] = useState(false);
39
+ const [expandedItemKey, setExpandedItemKey] = useState(null);
40
+ useEffect(() => {
41
+ // Clear expanded submenu on sidebar collapse
42
+ if (isCollapsed) {
43
+ setExpandedItemKey(null);
44
+ }
45
+ }, [isCollapsed]);
46
+ useEffect(() => {
42
47
  setHasSidebar(true);
43
48
  return function cleanup() {
44
49
  setHasSidebar(false);
45
50
  };
46
51
  }, [setHasSidebar]);
47
52
  const isCompactLayout = useBreakpoint(['small', 'medium']);
48
- const [expandedItemKey, setExpandedItemKey] = useState(null);
49
- const sidebar = (React.createElement(Container, { ref: ref, flex: true, direction: 'column', style: style, className: cx(classes.root, className, classes[variant]) },
53
+ const handleCollapseButtonClick = useCallback(() => {
54
+ setIsCollapsed(previousState => !previousState);
55
+ }, [setIsCollapsed]);
56
+ const sidebar = (React.createElement(Container, { ref: ref, flex: true, direction: 'column', style: style, className: cx(classes.root, className, classes[variant], {
57
+ [classes.rootCollapsed]: collapsible && isCollapsed
58
+ }), "data-testid": testIds === null || testIds === void 0 ? void 0 : testIds.container, onMouseEnter: collapsible ? () => setIsHovered(true) : noop, onMouseLeave: collapsible ? () => setIsHovered(false) : noop },
50
59
  React.createElement("div", { className: classes.spacer }),
51
- React.createElement(SidebarContext.Provider, { value: {
52
- variant,
53
- expandedItemKey,
54
- setExpandedItemKey
55
- } }, children)));
60
+ collapsible && (React.createElement(Button.Circular, { className: cx(classes.collapseButton, {
61
+ [classes.buttonVisible]: isHovered
62
+ }), 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 })),
63
+ React.createElement(SidebarContextProvider, { isCollapsed: isCollapsed, isHovered: isHovered, variant: variant, expandedItemKey: expandedItemKey, setExpandedItemKey: setExpandedItemKey }, children)));
56
64
  return isCompactLayout ? (React.createElement(SmallScreenSidebarWrapper, { classes: classes }, sidebar)) : (sidebar);
57
65
  });
58
- Sidebar.defaultProps = {
66
+ PageSidebar.defaultProps = {
59
67
  variant: 'light'
60
68
  };
61
- Sidebar.displayName = 'Sidebar';
62
- export default Object.assign(Sidebar, {
69
+ PageSidebar.displayName = 'PageSidebar';
70
+ export default Object.assign(PageSidebar, {
63
71
  Menu: SidebarMenu,
64
72
  Item: SidebarItem,
65
73
  Logo: SidebarLogo
66
74
  });
67
- //# sourceMappingURL=Sidebar.js.map
75
+ //# sourceMappingURL=PageSidebar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PageSidebar.js","sourceRoot":"","sources":["../../src/PageSidebar/PageSidebar.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import { ReactNode } from 'react';
2
+ import { SidebarContextProps, VariantType } from './types';
3
+ export interface Props {
4
+ variant?: VariantType;
5
+ isCollapsed: boolean;
6
+ isHovered: boolean;
7
+ expandedItemKey: number | null;
8
+ setExpandedItemKey: (expanded: number | null) => void;
9
+ children?: ReactNode;
10
+ }
11
+ export declare const SidebarContextProvider: ({ children, isCollapsed, variant, expandedItemKey, setExpandedItemKey, isHovered }: Props) => JSX.Element;
12
+ export declare const useSidebarContext: () => SidebarContextProps;
@@ -0,0 +1,19 @@
1
+ import React, { useContext } from 'react';
2
+ import { noop } from '../utils';
3
+ const SidebarContext = React.createContext({
4
+ expandedItemKey: null,
5
+ setExpandedItemKey: noop,
6
+ isHovered: false,
7
+ isCollapsed: false
8
+ });
9
+ export const SidebarContextProvider = ({ children, isCollapsed, variant, expandedItemKey, setExpandedItemKey, isHovered }) => {
10
+ return (React.createElement(SidebarContext.Provider, { value: {
11
+ expandedItemKey,
12
+ setExpandedItemKey,
13
+ isCollapsed,
14
+ isHovered,
15
+ variant
16
+ } }, children));
17
+ };
18
+ export const useSidebarContext = () => useContext(SidebarContext);
19
+ //# sourceMappingURL=SidebarContextProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SidebarContextProvider.js","sourceRoot":"","sources":["../../src/PageSidebar/SidebarContextProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAa,UAAU,EAAE,MAAM,OAAO,CAAA;AAEpD,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAA;AAG/B,MAAM,cAAc,GAAG,KAAK,CAAC,aAAa,CAAsB;IAC9D,eAAe,EAAE,IAAI;IACrB,kBAAkB,EAAE,IAAI;IACxB,SAAS,EAAE,KAAK;IAChB,WAAW,EAAE,KAAK;CACnB,CAAC,CAAA;AAWF,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,EACrC,QAAQ,EACR,WAAW,EACX,OAAO,EACP,eAAe,EACf,kBAAkB,EAClB,SAAS,EACH,EAAE,EAAE;IACV,OAAO,CACL,oBAAC,cAAc,CAAC,QAAQ,IACtB,KAAK,EAAE;YACL,eAAe;YACf,kBAAkB;YAClB,WAAW;YACX,SAAS;YACT,OAAO;SACR,IAEA,QAAQ,CACe,CAC3B,CAAA;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAAG,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC,CAAA"}
@@ -0,0 +1,5 @@
1
+ import { OmitInternalProps } from '@toptal/picasso-shared';
2
+ import { Props } from './PageSidebar';
3
+ export { default } from './PageSidebar';
4
+ export declare type PageSidebarProps = OmitInternalProps<Props>;
5
+ export { SidebarContextProvider, useSidebarContext, Props as SidebarContextProviderProps } from './SidebarContextProvider';
@@ -0,0 +1,3 @@
1
+ export { default } from './PageSidebar';
2
+ export { SidebarContextProvider, useSidebarContext } from './SidebarContextProvider';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/PageSidebar/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AAGvC,OAAO,EACL,sBAAsB,EACtB,iBAAiB,EAElB,MAAM,0BAA0B,CAAA"}
@@ -0,0 +1,3 @@
1
+ import { Theme } from '@material-ui/core/styles';
2
+ declare const _default: ({ palette, screens, zIndex, transitions }: Theme) => import("@material-ui/styles").StyleRules<{}, "dark" | "light" | "root" | "spacer" | "responsiveWrapper" | "responsiveWrapperContent" | "collapseButton" | "buttonVisible" | "rootCollapsed">;
3
+ export default _default;
@@ -1,14 +1,26 @@
1
1
  import { createStyles } from '@material-ui/core/styles';
2
- export default ({ palette, screens, zIndex }) => createStyles({
2
+ // decided to use a custom shadow for the sidebar's collapse button
3
+ const COLLAPSE_BUTTON_SHADOW = '0 0 0 1px rgba(0, 0, 0, 0.04), 0 0 8px 0 rgba(0, 0, 0, 0.16)';
4
+ export default ({ palette, screens, zIndex, transitions }) => createStyles({
3
5
  root: {
4
6
  height: '100%',
5
7
  width: '14.75rem',
6
8
  boxShadow: `inset -1px 0px 0px 0px ${palette.grey.darker}`,
7
- padding: '1rem 0',
9
+ padding: '1rem 0 0.5rem',
8
10
  fontSize: '1rem',
11
+ position: 'relative',
12
+ transition: `width ${transitions.duration.enteringScreen}ms ease-in-out`,
9
13
  [screens('small', 'medium')]: {
10
14
  width: '100vw',
11
15
  overflowY: 'scroll'
16
+ },
17
+ '&::before': {
18
+ position: 'absolute',
19
+ content: '""',
20
+ left: 0,
21
+ top: 0,
22
+ width: '15.50rem',
23
+ height: '100%'
12
24
  }
13
25
  },
14
26
  responsiveWrapper: {
@@ -43,6 +55,30 @@ export default ({ palette, screens, zIndex }) => createStyles({
43
55
  dark: {
44
56
  boxShadow: `inset -1px 0px 0px 0px ${palette.grey.darker}`,
45
57
  backgroundColor: palette.grey.darker
58
+ },
59
+ collapseButton: {
60
+ position: 'absolute',
61
+ right: '-0.75rem',
62
+ top: '0.75rem',
63
+ visibility: 'hidden',
64
+ color: palette.grey.dark,
65
+ backgroundColor: palette.common.white,
66
+ borderRadius: '50%',
67
+ boxShadow: COLLAPSE_BUTTON_SHADOW,
68
+ '&:hover': {
69
+ color: palette.common.white,
70
+ backgroundColor: palette.primary.main
71
+ }
72
+ },
73
+ buttonVisible: {
74
+ visibility: 'visible'
75
+ },
76
+ rootCollapsed: {
77
+ width: '5rem',
78
+ transition: `width ${transitions.duration.leavingScreen}ms ease-in-out`,
79
+ '&::before': {
80
+ width: '5.75rem'
81
+ }
46
82
  }
47
83
  });
48
84
  //# sourceMappingURL=styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"styles.js","sourceRoot":"","sources":["../../src/PageSidebar/styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAE9D,mEAAmE;AACnE,MAAM,sBAAsB,GAC1B,8DAA8D,CAAA;AAEhE,eAAe,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAS,EAAE,EAAE,CAClE,YAAY,CAAC;IACX,IAAI,EAAE;QACJ,MAAM,EAAE,MAAM;QACd,KAAK,EAAE,UAAU;QACjB,SAAS,EAAE,0BAA0B,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE;QAC1D,OAAO,EAAE,eAAe;QACxB,QAAQ,EAAE,MAAM;QAChB,QAAQ,EAAE,UAAU;QACpB,UAAU,EAAE,SAAS,WAAW,CAAC,QAAQ,CAAC,cAAc,gBAAgB;QAExE,CAAC,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,EAAE;YAC5B,KAAK,EAAE,OAAO;YACd,SAAS,EAAE,QAAQ;SACpB;QAED,WAAW,EAAE;YACX,QAAQ,EAAE,UAAU;YACpB,OAAO,EAAE,IAAI;YACb,IAAI,EAAE,CAAC;YACP,GAAG,EAAE,CAAC;YACN,KAAK,EAAE,UAAU;YACjB,MAAM,EAAE,MAAM;SACf;KACF;IACD,iBAAiB,EAAE;QACjB,QAAQ,EAAE,OAAO;QACjB,GAAG,EAAE,QAAQ;QACb,IAAI,EAAE,QAAQ;QACd,MAAM,EAAE,MAAM,CAAC,MAAM;KACtB;IACD,wBAAwB,EAAE;QACxB,SAAS,EAAE,sBAAsB;QAEjC,CAAC,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,EAAE;YAC5B,SAAS,EAAE,oBAAoB,CAAC,+BAA+B;SAChE;QAED,uDAAuD;QACvD,2DAA2D;QAC3D,uCAAuC,EAAE;YACvC,SAAS,EAAE,sBAAsB;YAEjC,CAAC,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,EAAE;gBAC5B,SAAS,EAAE,oBAAoB,CAAC,+BAA+B;aAChE;SACF;KACF;IACD,MAAM,EAAE;QACN,KAAK,EAAE,EAAE;QACT,IAAI,EAAE,CAAC;QACP,MAAM,EAAE,MAAM;KACf;IACD,KAAK,EAAE;QACL,SAAS,EAAE,0BAA0B,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE;QAC5D,eAAe,EAAE,OAAO,CAAC,IAAI,CAAC,OAAO;KACtC;IACD,IAAI,EAAE;QACJ,SAAS,EAAE,0BAA0B,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE;QAC1D,eAAe,EAAE,OAAO,CAAC,IAAI,CAAC,MAAM;KACrC;IACD,cAAc,EAAE;QACd,QAAQ,EAAE,UAAU;QACpB,KAAK,EAAE,UAAU;QACjB,GAAG,EAAE,SAAS;QACd,UAAU,EAAE,QAAQ;QACpB,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI;QACxB,eAAe,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK;QACrC,YAAY,EAAE,KAAK;QACnB,SAAS,EAAE,sBAAsB;QAEjC,SAAS,EAAE;YACT,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK;YAC3B,eAAe,EAAE,OAAO,CAAC,OAAO,CAAC,IAAI;SACtC;KACF;IACD,aAAa,EAAE;QACb,UAAU,EAAE,SAAS;KACtB;IACD,aAAa,EAAE;QACb,KAAK,EAAE,MAAM;QACb,UAAU,EAAE,SAAS,WAAW,CAAC,QAAQ,CAAC,aAAa,gBAAgB;QAEvE,WAAW,EAAE;YACX,KAAK,EAAE,SAAS;SACjB;KACF;CACF,CAAC,CAAA"}
@@ -3,4 +3,6 @@ export interface SidebarContextProps {
3
3
  variant?: VariantType;
4
4
  expandedItemKey: number | null;
5
5
  setExpandedItemKey: (expanded: number | null) => void;
6
+ isCollapsed: boolean;
7
+ isHovered: boolean;
6
8
  }
File without changes
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/Sidebar/types.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/PageSidebar/types.ts"],"names":[],"mappings":""}
@@ -1,33 +1,6 @@
1
- import React, { ReactElement, ElementType } from 'react';
2
- import { MenuItemProps } from '@material-ui/core/MenuItem';
3
- import { BaseProps, TextLabelProps, OverridableComponent } from '@toptal/picasso-shared';
4
- import { MenuItemAttributes } from '../MenuItem';
5
- import { VariantType } from '../Sidebar/types';
6
- export declare const SubMenuContext: React.Context<{
7
- parentSidebarItemIndex?: number | null | undefined;
8
- }>;
9
- export interface Props extends BaseProps, TextLabelProps, MenuItemAttributes {
10
- /** Pass icon to be used as part of item */
11
- icon?: ReactElement;
12
- /** Highlights the item as selected */
13
- selected?: boolean;
14
- /** Whether to render disabled item */
15
- disabled?: boolean;
16
- /** If item has menu defines can menu be collapsed */
17
- collapsible?: boolean;
18
- /** Renders nested sidebar menu */
19
- menu?: ReactElement;
20
- /** Component name to render the menu item as */
21
- as?: ElementType<MenuItemProps>;
22
- variant?: VariantType;
23
- isExpanded?: boolean;
24
- expand?: (index: number | null) => void;
25
- index?: number | null;
26
- /** Callback when item is clicked */
27
- onClick?: (event: React.MouseEvent<HTMLElement, MouseEvent>) => void;
28
- /** Callback when item is hovered */
29
- onMouseEnter?: (event: React.MouseEvent<HTMLElement, MouseEvent>) => void;
30
- }
31
- export declare const SidebarItem: OverridableComponent<Props>;
1
+ import { OverridableComponent } from '@toptal/picasso-shared';
2
+ import { ReactElement } from 'react';
3
+ import { Props } from './types';
32
4
  export declare const getSelectedSubMenu: (sidebarItem: ReactElement<Props>) => {} | null | undefined;
5
+ export declare const SidebarItem: OverridableComponent<Props>;
33
6
  export default SidebarItem;
@@ -1,75 +1,8 @@
1
- var __rest = (this && this.__rest) || function (s, e) {
2
- var t = {};
3
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
4
- t[p] = s[p];
5
- if (s != null && typeof Object.getOwnPropertySymbols === "function")
6
- for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
7
- if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
8
- t[p[i]] = s[p[i]];
9
- }
10
- return t;
11
- };
12
- import React, { forwardRef, memo, useMemo } from 'react';
13
- import { makeStyles } from '@material-ui/core/styles';
14
- import cx from 'classnames';
15
- import { useTitleCase } from '@toptal/picasso-shared';
16
- import Container from '../Container';
17
- import Typography from '../Typography';
18
- import Accordion from '../Accordion';
19
- import MenuItem from '../MenuItem';
20
- import { ArrowDownMinor16 } from '../Icon';
21
- import styles from './styles';
1
+ import React, { forwardRef, memo } from 'react';
22
2
  import noop from '../utils/noop';
23
- export const SubMenuContext = React.createContext({
24
- parentSidebarItemIndex: undefined
25
- });
26
- const useStyles = makeStyles(styles, {
27
- name: 'PicassoSidebarItem'
28
- });
29
- export const SidebarItem = memo(forwardRef(function SidebarItem(props, ref) {
30
- const { as, children, className, collapsible, disabled, expand = noop, icon, index, isExpanded, menu, onClick = noop, selected, style, titleCase: propsTitleCase, variant = 'light' } = props, rest = __rest(props, ["as", "children", "className", "collapsible", "disabled", "expand", "icon", "index", "isExpanded", "menu", "onClick", "selected", "style", "titleCase", "variant"]);
31
- const classes = useStyles();
32
- const hasIcon = Boolean(icon);
33
- const hasMenu = Boolean(menu);
34
- const subMenu = useMemo(() => (React.createElement(SubMenuContext.Provider, { value: {
35
- parentSidebarItemIndex: index
36
- } }, menu)), [index, menu]);
37
- const titleCase = useTitleCase(propsTitleCase);
38
- const handleMenuItemClick = (event) => {
39
- if (!hasMenu) {
40
- onClick(event);
41
- }
42
- };
43
- const handleAccordionChange = (event, expansion) => {
44
- event.stopPropagation();
45
- if (expansion) {
46
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
47
- expand(index);
48
- }
49
- };
50
- const resolvedChildren = typeof children === 'string' ? (React.createElement(Typography, { className: classes.labelContent, color: 'inherit', size: 'medium', titleCase: titleCase, noWrap: true }, children)) : (children);
51
- const menuItem = (React.createElement(MenuItem, Object.assign({}, rest, { as: as, ref: ref, style: style, className: cx(classes.root, classes.noWrap, classes.roundedBorder, classes[variant], {
52
- [classes.selected]: !hasMenu && selected,
53
- [classes.collapsible]: hasMenu && collapsible
54
- }, className), onClick: handleMenuItemClick, selected: !hasMenu && selected, disabled: disabled, variant: variant, nonSelectable: true }),
55
- React.createElement(Container, { className: classes.noWrap, inline: true, flex: true, alignItems: 'center' },
56
- icon,
57
- React.createElement(Container, { className: cx(classes.label, classes.noWrap, {
58
- [classes.withIcon]: hasIcon
59
- }), flex: true, alignItems: 'center' }, resolvedChildren))));
60
- if (hasMenu && collapsible) {
61
- return (React.createElement(Accordion, { onChange: handleAccordionChange, classes: {
62
- summary: classes.collapsibleWrapper,
63
- details: hasIcon ? classes.nestedMenuWithIcon : classes.nestedMenu,
64
- content: classes.content
65
- }, content: subMenu, borders: 'none', disabled: disabled, expanded: isExpanded, expandIcon: React.createElement(ArrowDownMinor16, { className: cx(classes.expandIcon, classes[`${variant}ExpandIcon`], {
66
- [classes.expandIconDisabled]: disabled
67
- }) }) }, menuItem));
68
- }
69
- return (React.createElement(React.Fragment, null,
70
- menuItem,
71
- hasMenu && (React.createElement("div", { className: hasIcon ? classes.nestedMenuWithIcon : classes.nestedMenu }, subMenu))));
72
- }));
3
+ import { SidebarItemBasic } from './SidebarItemBasic';
4
+ import { SidebarItemCompact } from './SidebarItemCompact';
5
+ import { SidebarItemAccordion } from './SidebarItemAccordion';
73
6
  export const getSelectedSubMenu = (sidebarItem) => {
74
7
  const menu = sidebarItem.props.menu;
75
8
  if (!menu) {
@@ -78,11 +11,25 @@ export const getSelectedSubMenu = (sidebarItem) => {
78
11
  const subMenuItems = React.Children.toArray(menu.props.children);
79
12
  return subMenuItems.find(menuChild => menuChild.props.selected);
80
13
  };
14
+ export const SidebarItem = memo(forwardRef(function SidebarItem(props, ref) {
15
+ const { compact, collapsible, menu } = props;
16
+ const hasMenu = menu != null;
17
+ let SidebarItemImpl = SidebarItemBasic;
18
+ if (hasMenu && compact) {
19
+ SidebarItemImpl = SidebarItemCompact;
20
+ }
21
+ else if (hasMenu && collapsible) {
22
+ SidebarItemImpl = SidebarItemAccordion;
23
+ }
24
+ return React.createElement(SidebarItemImpl, Object.assign({}, props, { ref: ref }));
25
+ }));
81
26
  SidebarItem.defaultProps = {
82
27
  collapsible: false,
83
28
  onClick: noop,
84
29
  selected: false,
85
- expand: noop
30
+ expand: noop,
31
+ variant: 'light',
32
+ compact: false
86
33
  };
87
34
  SidebarItem.displayName = 'SidebarItem';
88
35
  export default SidebarItem;
@@ -1 +1 @@
1
- {"version":3,"file":"SidebarItem.js","sourceRoot":"","sources":["../../src/SidebarItem/SidebarItem.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SidebarItem.js","sourceRoot":"","sources":["../../src/SidebarItem/SidebarItem.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,UAAU,EAAE,IAAI,EAAgB,MAAM,OAAO,CAAA;AAE7D,OAAO,IAAI,MAAM,eAAe,CAAA;AAChC,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAG7D,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,WAAgC,EAAE,EAAE;IACrE,MAAM,IAAI,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,CAAA;IAEnC,IAAI,CAAC,IAAI,EAAE;QACT,OAAO,IAAI,CAAA;KACZ;IAED,MAAM,YAAY,GAAG,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;IAEhE,OAAO,YAAY,CAAC,IAAI,CACtB,SAAS,CAAC,EAAE,CAAE,SAAiC,CAAC,KAAK,CAAC,QAAQ,CAC/D,CAAA;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,WAAW,GAAgC,IAAI,CAC1D,UAAU,CAAqB,SAAS,WAAW,CAAC,KAAK,EAAE,GAAG;IAC5D,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,KAAK,CAAA;IAE5C,MAAM,OAAO,GAAG,IAAI,IAAI,IAAI,CAAA;IAE5B,IAAI,eAAe,GAAG,gBAAgB,CAAA;IAEtC,IAAI,OAAO,IAAI,OAAO,EAAE;QACtB,eAAe,GAAG,kBAAkB,CAAA;KACrC;SAAM,IAAI,OAAO,IAAI,WAAW,EAAE;QACjC,eAAe,GAAG,oBAAoB,CAAA;KACvC;IAED,OAAO,oBAAC,eAAe,oBAAK,KAAK,IAAE,GAAG,EAAE,GAAG,IAAI,CAAA;AACjD,CAAC,CAAC,CACH,CAAA;AAED,WAAW,CAAC,YAAY,GAAG;IACzB,WAAW,EAAE,KAAK;IAClB,OAAO,EAAE,IAAI;IACb,QAAQ,EAAE,KAAK;IACf,MAAM,EAAE,IAAI;IACZ,OAAO,EAAE,OAAO;IAChB,OAAO,EAAE,KAAK;CACf,CAAA;AAED,WAAW,CAAC,WAAW,GAAG,aAAa,CAAA;AAEvC,eAAe,WAAW,CAAA"}
@@ -0,0 +1,3 @@
1
+ import React from 'react';
2
+ import { Props } from './types';
3
+ export declare const SidebarItemAccordion: React.ForwardRefExoticComponent<Props & React.RefAttributes<HTMLElement>>;
@@ -0,0 +1,30 @@
1
+ import { makeStyles } from '@material-ui/core/styles';
2
+ import cx from 'classnames';
3
+ import React, { forwardRef, useCallback } from 'react';
4
+ import Accordion from '../Accordion';
5
+ import { ArrowDownMinor16 } from '../Icon';
6
+ import styles from './styles';
7
+ import { SubMenuContextProvider } from './SubMenuContextProvider';
8
+ import { SidebarItemHeader } from './SidebarItemHeader';
9
+ const useStyles = makeStyles(styles, {
10
+ name: 'PicassoSidebarItemAccordion'
11
+ });
12
+ export const SidebarItemAccordion = forwardRef(function SidebarItemAccordion(props, ref) {
13
+ const { expand, index, menu, disabled, variant, isExpanded, icon, compact } = props;
14
+ const classes = useStyles();
15
+ const handleAccordionChange = useCallback((event, isAccordionExpanded) => {
16
+ event.stopPropagation();
17
+ if (isAccordionExpanded) {
18
+ expand === null || expand === void 0 ? void 0 : expand(index !== null && index !== void 0 ? index : null);
19
+ }
20
+ }, [index, expand]);
21
+ const content = (React.createElement(SubMenuContextProvider, { parentMenu: { icon, compact }, parentSidebarItemIndex: index }, menu));
22
+ return (React.createElement(Accordion, { onChange: handleAccordionChange, classes: {
23
+ summary: classes.collapsibleWrapper,
24
+ content: classes.content
25
+ }, content: content, borders: 'none', disabled: disabled, expanded: isExpanded, expandIcon: React.createElement(ArrowDownMinor16, { className: cx(classes.expandIcon, classes[`${variant}ExpandIcon`], {
26
+ [classes.expandIconDisabled]: disabled
27
+ }) }) },
28
+ React.createElement(SidebarItemHeader, Object.assign({}, props, { ref: ref }))));
29
+ });
30
+ //# sourceMappingURL=SidebarItemAccordion.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SidebarItemAccordion.js","sourceRoot":"","sources":["../../src/SidebarItem/SidebarItemAccordion.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAS,MAAM,0BAA0B,CAAA;AAC5D,OAAO,EAAE,MAAM,YAAY,CAAA;AAC3B,OAAO,KAAK,EAAE,EAAe,UAAU,EAAE,WAAW,EAAE,MAAM,OAAO,CAAA;AAEnE,OAAO,SAAS,MAAM,cAAc,CAAA;AACpC,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAC1C,OAAO,MAAM,MAAM,UAAU,CAAA;AAC7B,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAA;AAEjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAEvD,MAAM,SAAS,GAAG,UAAU,CAAQ,MAAM,EAAE;IAC1C,IAAI,EAAE,6BAA6B;CACpC,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG,UAAU,CAC5C,SAAS,oBAAoB,CAAC,KAAY,EAAE,GAAG;IAC7C,MAAM,EACJ,MAAM,EACN,KAAK,EACL,IAAI,EACJ,QAAQ,EACR,OAAO,EACP,UAAU,EACV,IAAI,EACJ,OAAO,EACR,GAAG,KAAK,CAAA;IAET,MAAM,OAAO,GAAG,SAAS,EAAE,CAAA;IAE3B,MAAM,qBAAqB,GAAG,WAAW,CACvC,CAAC,KAAsB,EAAE,mBAA4B,EAAE,EAAE;QACvD,KAAK,CAAC,eAAe,EAAE,CAAA;QAEvB,IAAI,mBAAmB,EAAE;YACvB,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAG,KAAK,aAAL,KAAK,cAAL,KAAK,GAAI,IAAI,CAAC,CAAA;SACxB;IACH,CAAC,EACD,CAAC,KAAK,EAAE,MAAM,CAAC,CAChB,CAAA;IAED,MAAM,OAAO,GAAG,CACd,oBAAC,sBAAsB,IACrB,UAAU,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAC7B,sBAAsB,EAAE,KAAK,IAE5B,IAAI,CACkB,CAC1B,CAAA;IAED,OAAO,CACL,oBAAC,SAAS,IACR,QAAQ,EAAE,qBAAqB,EAC/B,OAAO,EAAE;YACP,OAAO,EAAE,OAAO,CAAC,kBAAkB;YACnC,OAAO,EAAE,OAAO,CAAC,OAAO;SACzB,EACD,OAAO,EAAE,OAAO,EAChB,OAAO,EAAC,MAAM,EACd,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,UAAU,EACpB,UAAU,EACR,oBAAC,gBAAgB,IACf,SAAS,EAAE,EAAE,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,GAAG,OAAO,YAAY,CAAC,EAAE;gBACjE,CAAC,OAAO,CAAC,kBAAkB,CAAC,EAAE,QAAQ;aACvC,CAAC,GACF;QAGJ,oBAAC,iBAAiB,oBAAK,KAAK,IAAE,GAAG,EAAE,GAAG,IAAI,CAChC,CACb,CAAA;AACH,CAAC,CACF,CAAA"}
@@ -0,0 +1,3 @@
1
+ import React from 'react';
2
+ import { Props } from './types';
3
+ export declare const SidebarItemBasic: React.ForwardRefExoticComponent<Props & React.RefAttributes<HTMLElement>>;
@@ -0,0 +1,12 @@
1
+ import React, { forwardRef } from 'react';
2
+ import { SidebarItemHeader } from './SidebarItemHeader';
3
+ import { SubMenuContextProvider } from './SubMenuContextProvider';
4
+ export const SidebarItemBasic = forwardRef(function BasicSidebarItem(props, ref) {
5
+ const { menu, index, icon, compact } = props;
6
+ const hasMenu = menu != null;
7
+ return (React.createElement(React.Fragment, null,
8
+ React.createElement(SidebarItemHeader, Object.assign({}, props, { ref: ref })),
9
+ hasMenu && (React.createElement("div", null,
10
+ React.createElement(SubMenuContextProvider, { parentMenu: { icon, compact }, parentSidebarItemIndex: index }, menu)))));
11
+ });
12
+ //# sourceMappingURL=SidebarItemBasic.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SidebarItemBasic.js","sourceRoot":"","sources":["../../src/SidebarItem/SidebarItemBasic.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,OAAO,CAAA;AAEzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AACvD,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAA;AAGjE,MAAM,CAAC,MAAM,gBAAgB,GAAG,UAAU,CACxC,SAAS,gBAAgB,CAAC,KAAY,EAAE,GAAG;IACzC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,KAAK,CAAA;IAE5C,MAAM,OAAO,GAAG,IAAI,IAAI,IAAI,CAAA;IAE5B,OAAO,CACL;QACE,oBAAC,iBAAiB,oBAAK,KAAK,IAAE,GAAG,EAAE,GAAG,IAAI;QACzC,OAAO,IAAI,CACV;YACE,oBAAC,sBAAsB,IACrB,UAAU,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAC7B,sBAAsB,EAAE,KAAK,IAE5B,IAAI,CACkB,CACrB,CACP,CACA,CACJ,CAAA;AACH,CAAC,CACF,CAAA"}
@@ -0,0 +1,3 @@
1
+ import React from 'react';
2
+ import { Props } from './types';
3
+ export declare const SidebarItemCompact: React.ForwardRefExoticComponent<Props & React.RefAttributes<HTMLElement>>;
@@ -0,0 +1,19 @@
1
+ import { makeStyles } from '@material-ui/core/styles';
2
+ import React, { forwardRef } from 'react';
3
+ import Container from '../Container';
4
+ import Dropdown from '../Dropdown';
5
+ import styles from './styles';
6
+ import { SubMenuContextProvider } from './SubMenuContextProvider';
7
+ import { SidebarItemHeader } from './SidebarItemHeader';
8
+ const useStyles = makeStyles(styles, {
9
+ name: 'PicassoSidebarItemCompact'
10
+ });
11
+ export const SidebarItemCompact = forwardRef(function CompactSidebarItem(props, ref) {
12
+ const { menu, index, compact, icon } = props;
13
+ const classes = useStyles();
14
+ const subMenu = (React.createElement(SubMenuContextProvider, { parentMenu: { compact, icon }, parentSidebarItemIndex: index }, menu));
15
+ return (React.createElement(Dropdown, { placement: 'right-start', content: subMenu },
16
+ React.createElement(Container, { className: classes.collapsibleWrapper },
17
+ React.createElement(SidebarItemHeader, Object.assign({}, props, { ref: ref })))));
18
+ });
19
+ //# sourceMappingURL=SidebarItemCompact.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SidebarItemCompact.js","sourceRoot":"","sources":["../../src/SidebarItem/SidebarItemCompact.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAS,MAAM,0BAA0B,CAAA;AAC5D,OAAO,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,OAAO,CAAA;AAEzC,OAAO,SAAS,MAAM,cAAc,CAAA;AACpC,OAAO,QAAQ,MAAM,aAAa,CAAA;AAClC,OAAO,MAAM,MAAM,UAAU,CAAA;AAC7B,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAA;AAEjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAEvD,MAAM,SAAS,GAAG,UAAU,CAAQ,MAAM,EAAE;IAC1C,IAAI,EAAE,2BAA2B;CAClC,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG,UAAU,CAC1C,SAAS,kBAAkB,CAAC,KAAY,EAAE,GAAG;IAC3C,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,KAAK,CAAA;IAE5C,MAAM,OAAO,GAAG,SAAS,EAAE,CAAA;IAE3B,MAAM,OAAO,GAAG,CACd,oBAAC,sBAAsB,IACrB,UAAU,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,EAC7B,sBAAsB,EAAE,KAAK,IAE5B,IAAI,CACkB,CAC1B,CAAA;IAED,OAAO,CACL,oBAAC,QAAQ,IAAC,SAAS,EAAC,aAAa,EAAC,OAAO,EAAE,OAAO;QAChD,oBAAC,SAAS,IAAC,SAAS,EAAE,OAAO,CAAC,kBAAkB;YAC9C,oBAAC,iBAAiB,oBAAK,KAAK,IAAE,GAAG,EAAE,GAAG,IAAI,CAChC,CACH,CACZ,CAAA;AACH,CAAC,CACF,CAAA"}
@@ -0,0 +1,3 @@
1
+ import React from 'react';
2
+ import { Props } from './types';
3
+ export declare const SidebarItemHeader: React.ForwardRefExoticComponent<Props & React.RefAttributes<HTMLElement>>;
@@ -0,0 +1,46 @@
1
+ var __rest = (this && this.__rest) || function (s, e) {
2
+ var t = {};
3
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
4
+ t[p] = s[p];
5
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
6
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
7
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
8
+ t[p[i]] = s[p[i]];
9
+ }
10
+ return t;
11
+ };
12
+ import { makeStyles } from '@material-ui/core/styles';
13
+ import cx from 'classnames';
14
+ import React, { forwardRef, useCallback } from 'react';
15
+ import MenuItem from '../MenuItem';
16
+ import SidebarItemContent from '../SidebarItemContent';
17
+ import styles from './styles';
18
+ import { useSubMenuContext } from './SubMenuContextProvider';
19
+ const useStyles = makeStyles(styles, {
20
+ name: 'PicassoSidebarItemHeader'
21
+ });
22
+ export const SidebarItemHeader = forwardRef(function SidebarItemHeader(props, ref) {
23
+ const { className, disabled, menu, selected, compact, variant = 'light', onClick, collapsible, testIds,
24
+ // these props are being destructured only for the purpose of excluding them from `...rest`
25
+ /* eslint-disable @typescript-eslint/no-unused-vars */
26
+ icon, isSubMenu, badge, isExpanded, expand, index } = props,
27
+ /* eslint-enable */
28
+ rest = __rest(props, ["className", "disabled", "menu", "selected", "compact", "variant", "onClick", "collapsible", "testIds", "icon", "isSubMenu", "badge", "isExpanded", "expand", "index"]);
29
+ const classes = useStyles();
30
+ const { parentMenu } = useSubMenuContext();
31
+ const hasMenu = menu != null;
32
+ const handleMenuItemClick = useCallback((event) => {
33
+ if (!hasMenu) {
34
+ onClick === null || onClick === void 0 ? void 0 : onClick(event);
35
+ }
36
+ }, [hasMenu, onClick]);
37
+ const subMenuClass = parentMenu &&
38
+ (parentMenu.icon ? classes.nestedMenuWithIcon : classes.nestedMenu);
39
+ return (React.createElement(MenuItem, Object.assign({}, rest, { classes: classes, ref: ref, className: cx(classes.root, classes.noWrap, classes.roundedBorder, classes[variant], {
40
+ [classes.compact]: compact,
41
+ [classes.selected]: !hasMenu && selected,
42
+ [classes.collapsible]: hasMenu && (collapsible || compact)
43
+ }, (parentMenu === null || parentMenu === void 0 ? void 0 : parentMenu.compact) ? classes.nestedMenuNoMargin : subMenuClass, className), onClick: handleMenuItemClick, selected: !hasMenu && selected, disabled: disabled, variant: variant, nonSelectable: true, "data-testid": testIds === null || testIds === void 0 ? void 0 : testIds.header }),
44
+ React.createElement(SidebarItemContent, Object.assign({}, props))));
45
+ });
46
+ //# sourceMappingURL=SidebarItemHeader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SidebarItemHeader.js","sourceRoot":"","sources":["../../src/SidebarItem/SidebarItemHeader.tsx"],"names":[],"mappings":";;;;;;;;;;;AAAA,OAAO,EAAE,UAAU,EAAS,MAAM,0BAA0B,CAAA;AAC5D,OAAO,EAAE,MAAM,YAAY,CAAA;AAC3B,OAAO,KAAK,EAAE,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,OAAO,CAAA;AAEtD,OAAO,QAAQ,MAAM,aAAa,CAAA;AAClC,OAAO,kBAAkB,MAAM,uBAAuB,CAAA;AACtD,OAAO,MAAM,MAAM,UAAU,CAAA;AAE7B,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAE5D,MAAM,SAAS,GAAG,UAAU,CAAQ,MAAM,EAAE;IAC1C,IAAI,EAAE,0BAA0B;CACjC,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG,UAAU,CACzC,SAAS,iBAAiB,CAAC,KAAY,EAAE,GAAG;IAC1C,MAAM,EACJ,SAAS,EACT,QAAQ,EACR,IAAI,EACJ,QAAQ,EACR,OAAO,EACP,OAAO,GAAG,OAAO,EACjB,OAAO,EACP,WAAW,EACX,OAAO;IACP,2FAA2F;IAC3F,sDAAsD;IACtD,IAAI,EACJ,SAAS,EACT,KAAK,EACL,UAAU,EACV,MAAM,EACN,KAAK,KAGH,KAAK;IAFP,mBAAmB;IAChB,IAAI,UACL,KAAK,EApBH,uKAoBL,CAAQ,CAAA;IAET,MAAM,OAAO,GAAG,SAAS,EAAE,CAAA;IAE3B,MAAM,EAAE,UAAU,EAAE,GAAG,iBAAiB,EAAE,CAAA;IAE1C,MAAM,OAAO,GAAG,IAAI,IAAI,IAAI,CAAA;IAE5B,MAAM,mBAAmB,GAAG,WAAW,CACrC,CAAC,KAAgD,EAAE,EAAE;QACnD,IAAI,CAAC,OAAO,EAAE;YACZ,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAG,KAAK,CAAC,CAAA;SACjB;IACH,CAAC,EACD,CAAC,OAAO,EAAE,OAAO,CAAC,CACnB,CAAA;IAED,MAAM,YAAY,GAChB,UAAU;QACV,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;IAErE,OAAO,CACL,oBAAC,QAAQ,oBACH,IAAI,IACR,OAAO,EAAE,OAAO,EAChB,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,EAAE,CACX,OAAO,CAAC,IAAI,EACZ,OAAO,CAAC,MAAM,EACd,OAAO,CAAC,aAAa,EACrB,OAAO,CAAC,OAAO,CAAC,EAChB;YACE,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,OAAO;YAC1B,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,OAAO,IAAI,QAAQ;YACxC,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,OAAO,IAAI,CAAC,WAAW,IAAI,OAAO,CAAC;SAC3D,EACD,CAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,OAAO,EAAC,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,YAAY,EAC/D,SAAS,CACV,EACD,OAAO,EAAE,mBAAmB,EAC5B,QAAQ,EAAE,CAAC,OAAO,IAAI,QAAQ,EAC9B,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,OAAO,EAChB,aAAa,uBACA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM;QAE5B,oBAAC,kBAAkB,oBAAK,KAAK,EAAI,CACxB,CACZ,CAAA;AACH,CAAC,CACF,CAAA"}
@@ -0,0 +1,16 @@
1
+ import { ReactNode } from 'react';
2
+ export interface ContextProps {
3
+ parentSidebarItemIndex?: number | null;
4
+ isSubMenu: boolean;
5
+ parentMenu: {
6
+ icon?: ReactNode;
7
+ compact?: boolean;
8
+ } | null;
9
+ }
10
+ export interface Props {
11
+ children?: ReactNode;
12
+ parentSidebarItemIndex?: number | null;
13
+ parentMenu: ContextProps['parentMenu'];
14
+ }
15
+ export declare const SubMenuContextProvider: ({ children, parentMenu, parentSidebarItemIndex }: Props) => JSX.Element;
16
+ export declare const useSubMenuContext: () => ContextProps;