@atlaskit/page-layout 1.6.1 → 1.6.2
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/CHANGELOG.md +6 -0
- package/dist/cjs/version.json +1 -1
- package/dist/es2019/version.json +1 -1
- package/dist/esm/version.json +1 -1
- package/dist/types-ts4.5/common/constants.d.ts +47 -0
- package/dist/types-ts4.5/common/hooks/index.d.ts +2 -0
- package/dist/types-ts4.5/common/hooks/use-is-sidebar-collapsing.d.ts +2 -0
- package/dist/types-ts4.5/common/hooks/use-is-sidebar-dragging.d.ts +2 -0
- package/dist/types-ts4.5/common/safe-local-storage.d.ts +2 -0
- package/dist/types-ts4.5/common/types.d.ts +117 -0
- package/dist/types-ts4.5/common/utils.d.ts +13 -0
- package/dist/types-ts4.5/components/index.d.ts +12 -0
- package/dist/types-ts4.5/components/resize-control/grab-area.d.ts +9 -0
- package/dist/types-ts4.5/components/resize-control/index.d.ts +4 -0
- package/dist/types-ts4.5/components/resize-control/resize-button.d.ts +4 -0
- package/dist/types-ts4.5/components/resize-control/shadow.d.ts +6 -0
- package/dist/types-ts4.5/components/resize-control/types.d.ts +25 -0
- package/dist/types-ts4.5/components/skip-links/index.d.ts +2 -0
- package/dist/types-ts4.5/components/skip-links/skip-link-components.d.ts +18 -0
- package/dist/types-ts4.5/components/skip-links/types.d.ts +8 -0
- package/dist/types-ts4.5/components/skip-links/use-custom-skip-link.d.ts +2 -0
- package/dist/types-ts4.5/components/slots/banner-slot.d.ts +12 -0
- package/dist/types-ts4.5/components/slots/content.d.ts +23 -0
- package/dist/types-ts4.5/components/slots/internal/left-sidebar-inner.d.ts +10 -0
- package/dist/types-ts4.5/components/slots/internal/left-sidebar-outer.d.ts +13 -0
- package/dist/types-ts4.5/components/slots/internal/resizable-children-wrapper.d.ts +11 -0
- package/dist/types-ts4.5/components/slots/internal/slot-focus-ring.d.ts +20 -0
- package/dist/types-ts4.5/components/slots/left-panel.d.ts +12 -0
- package/dist/types-ts4.5/components/slots/left-sidebar-without-resize.d.ts +12 -0
- package/dist/types-ts4.5/components/slots/left-sidebar.d.ts +12 -0
- package/dist/types-ts4.5/components/slots/main.d.ts +12 -0
- package/dist/types-ts4.5/components/slots/page-layout.d.ts +12 -0
- package/dist/types-ts4.5/components/slots/right-panel.d.ts +12 -0
- package/dist/types-ts4.5/components/slots/right-sidebar.d.ts +12 -0
- package/dist/types-ts4.5/components/slots/slot-dimensions.d.ts +7 -0
- package/dist/types-ts4.5/components/slots/top-navigation.d.ts +12 -0
- package/dist/types-ts4.5/controllers/index.d.ts +6 -0
- package/dist/types-ts4.5/controllers/sidebar-resize-context.d.ts +42 -0
- package/dist/types-ts4.5/controllers/sidebar-resize-controller.d.ts +3 -0
- package/dist/types-ts4.5/controllers/skip-link-context.d.ts +5 -0
- package/dist/types-ts4.5/controllers/skip-link-controller.d.ts +4 -0
- package/dist/types-ts4.5/controllers/types.d.ts +22 -0
- package/dist/types-ts4.5/controllers/use-page-layout-grid.d.ts +3 -0
- package/dist/types-ts4.5/controllers/use-update-css-vars.d.ts +2 -0
- package/dist/types-ts4.5/index.d.ts +4 -0
- package/package.json +3 -3
package/CHANGELOG.md
CHANGED
package/dist/cjs/version.json
CHANGED
package/dist/es2019/version.json
CHANGED
package/dist/esm/version.json
CHANGED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
export declare const VAR_LEFT_PANEL_WIDTH = "leftPanelWidth";
|
|
2
|
+
export declare const VAR_LEFT_SIDEBAR_WIDTH = "leftSidebarWidth";
|
|
3
|
+
export declare const VAR_RIGHT_SIDEBAR_WIDTH = "rightSidebarWidth";
|
|
4
|
+
export declare const VAR_RIGHT_PANEL_WIDTH = "rightPanelWidth";
|
|
5
|
+
export declare const VAR_TOP_NAVIGATION_HEIGHT = "topNavigationHeight";
|
|
6
|
+
export declare const VAR_BANNER_HEIGHT = "bannerHeight";
|
|
7
|
+
export declare const VAR_LEFT_SIDEBAR_FLYOUT = "leftSidebarFlyoutWidth";
|
|
8
|
+
export declare const DIMENSIONS: string[];
|
|
9
|
+
export declare const LEFT_PANEL = "left-panel";
|
|
10
|
+
export declare const RIGHT_PANEL = "right-panel";
|
|
11
|
+
export declare const BANNER = "banner";
|
|
12
|
+
export declare const TOP_NAVIGATION = "top-navigation";
|
|
13
|
+
export declare const CONTENT = "content";
|
|
14
|
+
export declare const MAIN = "main";
|
|
15
|
+
export declare const LEFT_SIDEBAR = "left-sidebar";
|
|
16
|
+
export declare const RIGHT_SIDEBAR = "right-sidebar";
|
|
17
|
+
export declare const DEFAULT_BANNER_HEIGHT = 56;
|
|
18
|
+
export declare const DEFAULT_TOP_NAVIGATION_HEIGHT = 56;
|
|
19
|
+
export declare const DEFAULT_LEFT_SIDEBAR_WIDTH = 240;
|
|
20
|
+
export declare const DEFAULT_RIGHT_SIDEBAR_WIDTH = 280;
|
|
21
|
+
export declare const DEFAULT_RIGHT_PANEL_WIDTH = 368;
|
|
22
|
+
export declare const DEFAULT_LEFT_PANEL_WIDTH = 368;
|
|
23
|
+
export declare const COLLAPSED_LEFT_SIDEBAR_WIDTH = 20;
|
|
24
|
+
export declare const MIN_LEFT_SIDEBAR_WIDTH = 80;
|
|
25
|
+
export declare const DEFAULT_LEFT_SIDEBAR_FLYOUT_WIDTH = 240;
|
|
26
|
+
export declare const MIN_LEFT_SIDEBAR_DRAG_THRESHOLD = 200;
|
|
27
|
+
export declare const TRANSITION_DURATION = 300;
|
|
28
|
+
export declare const FLYOUT_DELAY = 200;
|
|
29
|
+
export declare const LEFT_SIDEBAR_EXPANDED_WIDTH = "expandedLeftSidebarWidth";
|
|
30
|
+
export declare const PAGE_LAYOUT_LS_KEY = "DS_PAGE_LAYOUT_UI_STATE";
|
|
31
|
+
export declare const IS_SIDEBAR_DRAGGING = "data-is-sidebar-dragging";
|
|
32
|
+
export declare const IS_SIDEBAR_COLLAPSING = "data-is-sidebar-collapsing";
|
|
33
|
+
export declare const IS_FLYOUT_OPEN = "data-is-flyout-open";
|
|
34
|
+
export declare const GRAB_AREA_LINE_SELECTOR = "data-grab-area-line";
|
|
35
|
+
export declare const GRAB_AREA_SELECTOR = "data-grab-area";
|
|
36
|
+
export declare const RESIZE_BUTTON_SELECTOR = "data-resize-button";
|
|
37
|
+
export declare const RESIZE_CONTROL_SELECTOR = "data-resize-control";
|
|
38
|
+
export declare const PAGE_LAYOUT_SLOT_SELECTOR = "data-ds--page-layout--slot";
|
|
39
|
+
export declare const DEFAULT_I18N_PROPS_SKIP_LINKS = "Skip to:";
|
|
40
|
+
export declare const PAGE_LAYOUT_CONTAINER_SELECTOR = "data-layout-container";
|
|
41
|
+
export declare const LEFT_PANEL_WIDTH: string;
|
|
42
|
+
export declare const RIGHT_PANEL_WIDTH: string;
|
|
43
|
+
export declare const LEFT_SIDEBAR_WIDTH: string;
|
|
44
|
+
export declare const RIGHT_SIDEBAR_WIDTH: string;
|
|
45
|
+
export declare const TOP_NAVIGATION_HEIGHT: string;
|
|
46
|
+
export declare const BANNER_HEIGHT: string;
|
|
47
|
+
export declare const LEFT_SIDEBAR_FLYOUT_WIDTH: string;
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
import { ElementType, ReactElement, ReactNode } from 'react';
|
|
2
|
+
import { ResizeButtonProps } from '../components/resize-control/types';
|
|
3
|
+
import { LeftSidebarState } from '../controllers/sidebar-resize-context';
|
|
4
|
+
interface SlotProps {
|
|
5
|
+
/**
|
|
6
|
+
* Sets positon to fixed.
|
|
7
|
+
*/
|
|
8
|
+
isFixed?: boolean;
|
|
9
|
+
/**
|
|
10
|
+
* A `testId` prop is provided for specified elements, which is a unique string that appears as a data attribute `data-testid` in the rendered code, serving as a hook for automated tests .
|
|
11
|
+
*/
|
|
12
|
+
testId?: string;
|
|
13
|
+
/**
|
|
14
|
+
* React Children!
|
|
15
|
+
*/
|
|
16
|
+
children: ReactNode;
|
|
17
|
+
id?: string;
|
|
18
|
+
skipLinkTitle?: string;
|
|
19
|
+
}
|
|
20
|
+
export interface SlotHeightProps extends SlotProps {
|
|
21
|
+
/**
|
|
22
|
+
* It save height in local storage.
|
|
23
|
+
*/
|
|
24
|
+
shouldPersistHeight?: boolean;
|
|
25
|
+
/**
|
|
26
|
+
* Height!
|
|
27
|
+
*/
|
|
28
|
+
height?: number;
|
|
29
|
+
}
|
|
30
|
+
export interface SlotWidthProps extends SlotProps {
|
|
31
|
+
/**
|
|
32
|
+
* It save width in local storage.
|
|
33
|
+
*/
|
|
34
|
+
shouldPersistWidth?: boolean;
|
|
35
|
+
/**
|
|
36
|
+
* Width!
|
|
37
|
+
*/
|
|
38
|
+
width?: number;
|
|
39
|
+
}
|
|
40
|
+
export interface LeftSidebarProps extends SlotWidthProps {
|
|
41
|
+
/**
|
|
42
|
+
* A `testId` prop is provided for specified elements, which is a unique string that appears as a data attribute `data-testid` in the rendered code, serving as a hook for automated tests.
|
|
43
|
+
*/
|
|
44
|
+
testId?: string;
|
|
45
|
+
/**
|
|
46
|
+
* You can override prop(s) for the mentioned component(s).
|
|
47
|
+
*/
|
|
48
|
+
overrides?: {
|
|
49
|
+
ResizeButton?: {
|
|
50
|
+
render?: (Component: ElementType<ResizeButtonProps>, props: ResizeButtonProps) => ReactElement;
|
|
51
|
+
};
|
|
52
|
+
};
|
|
53
|
+
/**
|
|
54
|
+
* Display label for grab area. This will be announced to the screenreaders when the grab area receives focus
|
|
55
|
+
*/
|
|
56
|
+
resizeGrabAreaLabel?: string;
|
|
57
|
+
/**
|
|
58
|
+
* Display label for resize button.
|
|
59
|
+
*/
|
|
60
|
+
resizeButtonLabel?: string;
|
|
61
|
+
/**
|
|
62
|
+
* Called when left-sidebar is collapsed.
|
|
63
|
+
*/
|
|
64
|
+
onCollapse?: () => void;
|
|
65
|
+
/**
|
|
66
|
+
* Called when left-sidebar is expanded.
|
|
67
|
+
*/
|
|
68
|
+
onExpand?: () => void;
|
|
69
|
+
/**
|
|
70
|
+
* Called when left-sidebar resize starts using mouse or touch.
|
|
71
|
+
*/
|
|
72
|
+
onResizeStart?: (leftSidebarState: LeftSidebarState) => void;
|
|
73
|
+
/**
|
|
74
|
+
* Called when left-sidebar resize ends using mouse or touch.
|
|
75
|
+
*/
|
|
76
|
+
onResizeEnd?: (leftSidebarState: LeftSidebarState) => void;
|
|
77
|
+
/**
|
|
78
|
+
* Called when left-sidebar is collapsed and mouse leaves the area.
|
|
79
|
+
*/
|
|
80
|
+
onFlyoutCollapse?: () => void;
|
|
81
|
+
/**
|
|
82
|
+
* Called after flyout delay when left-sidebar is collapsed and mouse enters the area.
|
|
83
|
+
*/
|
|
84
|
+
onFlyoutExpand?: () => void;
|
|
85
|
+
/**
|
|
86
|
+
* Controls whether the LeftSidebar mounts in a collapsed state, this will override the setting in localStorage
|
|
87
|
+
*/
|
|
88
|
+
collapsedState?: 'collapsed' | 'expanded';
|
|
89
|
+
/**
|
|
90
|
+
* Controls the width when LeftSidebar mounts, this will override the setting in localStorage
|
|
91
|
+
*/
|
|
92
|
+
width?: number;
|
|
93
|
+
}
|
|
94
|
+
export type SidebarResizeControllerProps = {
|
|
95
|
+
/**
|
|
96
|
+
* React children!
|
|
97
|
+
*/
|
|
98
|
+
children: ReactNode;
|
|
99
|
+
/**
|
|
100
|
+
* Called when left-sidebar expanded.
|
|
101
|
+
*/
|
|
102
|
+
onLeftSidebarExpand?: (leftSidebarState: LeftSidebarState) => void;
|
|
103
|
+
/**
|
|
104
|
+
* Called when left-sidebar collapsed.
|
|
105
|
+
*/
|
|
106
|
+
onLeftSidebarCollapse?: (leftSidebarState: LeftSidebarState) => void;
|
|
107
|
+
};
|
|
108
|
+
export type DimensionNames = 'leftPanelWidth' | 'bannerHeight' | 'topNavigationHeight' | 'leftSidebarWidth' | 'leftSidebarFlyoutWidth' | 'rightSidebarWidth' | 'rightPanelWidth';
|
|
109
|
+
export type Dimensions = Partial<Record<DimensionNames, number>>;
|
|
110
|
+
export interface PageLayoutProps extends SidebarResizeControllerProps {
|
|
111
|
+
skipLinksLabel?: string;
|
|
112
|
+
/**
|
|
113
|
+
* A `testId` prop is provided for specified elements, which is a unique string that appears as a data attribute `data-testid` in the rendered code, serving as a hook for automated tests.
|
|
114
|
+
*/
|
|
115
|
+
testId?: string;
|
|
116
|
+
}
|
|
117
|
+
export type { LeftSidebarState } from '../controllers/sidebar-resize-context';
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { DimensionNames, Dimensions } from './types';
|
|
2
|
+
declare const emptyGridState: Dimensions;
|
|
3
|
+
declare const mergeGridStateIntoStorage: (key: string, value: any) => void;
|
|
4
|
+
declare const getGridStateFromStorage: (key: string) => any;
|
|
5
|
+
declare const removeFromGridStateInStorage: (key: string, secondKey?: string) => void;
|
|
6
|
+
declare const resolveDimension: (key: DimensionNames, dimension?: number, shouldPersist?: boolean) => any;
|
|
7
|
+
declare const getLeftPanelWidth: () => number;
|
|
8
|
+
declare const getLeftSidebarPercentage: (currentWidth: number, maxWidth: number) => number;
|
|
9
|
+
declare const getPageLayoutSlotSelector: (slotName: string) => {
|
|
10
|
+
"data-ds--page-layout--slot": string;
|
|
11
|
+
};
|
|
12
|
+
declare const getPageLayoutSlotCSSSelector: (slotName: string) => string;
|
|
13
|
+
export { emptyGridState, mergeGridStateIntoStorage, getGridStateFromStorage, removeFromGridStateInStorage, resolveDimension, getLeftPanelWidth, getLeftSidebarPercentage, getPageLayoutSlotSelector, getPageLayoutSlotCSSSelector, };
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export { default as PageLayout } from './slots/page-layout';
|
|
2
|
+
export { default as Main } from './slots/main';
|
|
3
|
+
export { default as RightPanel } from './slots/right-panel';
|
|
4
|
+
export { default as LeftPanel } from './slots/left-panel';
|
|
5
|
+
export { default as RightSidebar } from './slots/right-sidebar';
|
|
6
|
+
export { default as LeftSidebar } from './slots/left-sidebar';
|
|
7
|
+
export { default as LeftSidebarWithoutResize } from './slots/left-sidebar-without-resize';
|
|
8
|
+
export { default as Banner } from './slots/banner-slot';
|
|
9
|
+
export { default as TopNavigation } from './slots/top-navigation';
|
|
10
|
+
export { default as Content } from './slots/content';
|
|
11
|
+
export { default as ResizeControl } from './resize-control';
|
|
12
|
+
export { useCustomSkipLink } from './skip-links';
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/** @jsx jsx */
|
|
2
|
+
import { ComponentProps } from 'react';
|
|
3
|
+
import { jsx } from '@emotion/react';
|
|
4
|
+
export type GrabAreaProps = {
|
|
5
|
+
testId?: string;
|
|
6
|
+
isLeftSidebarCollapsed: boolean;
|
|
7
|
+
} & ComponentProps<'button'>;
|
|
8
|
+
declare const GrabArea: ({ testId, isLeftSidebarCollapsed, ...rest }: GrabAreaProps) => jsx.JSX.Element;
|
|
9
|
+
export default GrabArea;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { jsx } from '@emotion/react';
|
|
2
|
+
import { ResizeControlProps } from './types';
|
|
3
|
+
declare const ResizeControl: ({ testId, overrides, resizeButtonLabel, resizeGrabAreaLabel, onResizeStart, onResizeEnd, }: ResizeControlProps) => jsx.JSX.Element;
|
|
4
|
+
export default ResizeControl;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { ButtonHTMLAttributes, ElementType, ReactElement } from 'react';
|
|
2
|
+
import { LeftSidebarState } from '../../controllers/sidebar-resize-context';
|
|
3
|
+
export type ResizeButtonProps = ButtonHTMLAttributes<HTMLButtonElement> & {
|
|
4
|
+
isLeftSidebarCollapsed: boolean;
|
|
5
|
+
label: string;
|
|
6
|
+
testId?: string;
|
|
7
|
+
};
|
|
8
|
+
export type ResizeControlProps = {
|
|
9
|
+
testId?: string;
|
|
10
|
+
overrides?: {
|
|
11
|
+
ResizeButton?: {
|
|
12
|
+
render?: (Component: ElementType<ResizeButtonProps>, props: ResizeButtonProps) => ReactElement;
|
|
13
|
+
};
|
|
14
|
+
};
|
|
15
|
+
resizeGrabAreaLabel?: string;
|
|
16
|
+
resizeButtonLabel?: string;
|
|
17
|
+
onCollapse?: (leftSidebarState: LeftSidebarState) => void;
|
|
18
|
+
onExpand?: (leftSidebarState: LeftSidebarState) => void;
|
|
19
|
+
onResizeStart?: (leftSidebarState: LeftSidebarState) => void;
|
|
20
|
+
onResizeEnd?: (leftSidebarState: LeftSidebarState) => void;
|
|
21
|
+
onFlyoutCollapse?: () => void;
|
|
22
|
+
onFlyoutExpand?: () => void;
|
|
23
|
+
leftSidebarState: LeftSidebarState;
|
|
24
|
+
setLeftSidebarState: (leftSidebarState: LeftSidebarState) => void;
|
|
25
|
+
};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/** @jsx jsx */
|
|
2
|
+
import { ReactNode } from 'react';
|
|
3
|
+
import { jsx } from '@emotion/react';
|
|
4
|
+
import { SkipLinkWrapperProps } from './types';
|
|
5
|
+
/**
|
|
6
|
+
* The default label will be used when the `skipLinksLabel` attribute is not
|
|
7
|
+
* provided or the attribute is an empty string. If a string comprised only of
|
|
8
|
+
* spaces is provided, the skip link heading element will be removed, but the
|
|
9
|
+
* default label will still be used in `title` attribute of the skip links
|
|
10
|
+
* themselves.
|
|
11
|
+
*/
|
|
12
|
+
export declare const SkipLinkWrapper: ({ skipLinksLabel }: SkipLinkWrapperProps) => jsx.JSX.Element | null;
|
|
13
|
+
export declare const SkipLink: ({ href, children, isFocusable, title, }: {
|
|
14
|
+
href: string;
|
|
15
|
+
children: ReactNode;
|
|
16
|
+
isFocusable: boolean;
|
|
17
|
+
title: string;
|
|
18
|
+
}) => jsx.JSX.Element;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { jsx } from '@emotion/react';
|
|
2
|
+
import { SlotHeightProps } from '../../common/types';
|
|
3
|
+
/**
|
|
4
|
+
* __Banner__
|
|
5
|
+
*
|
|
6
|
+
* Provides a slot for a Banner within the PageLayout.
|
|
7
|
+
*
|
|
8
|
+
* - [Examples](https://atlassian.design/components/page-layout/examples)
|
|
9
|
+
* - [Code](https://atlassian.design/components/page-layout/code)
|
|
10
|
+
*/
|
|
11
|
+
declare const Banner: (props: SlotHeightProps) => jsx.JSX.Element;
|
|
12
|
+
export default Banner;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/** @jsx jsx */
|
|
2
|
+
import { ReactNode } from 'react';
|
|
3
|
+
import { jsx } from '@emotion/react';
|
|
4
|
+
interface ContentProps {
|
|
5
|
+
/**
|
|
6
|
+
* React children
|
|
7
|
+
*/
|
|
8
|
+
children: ReactNode;
|
|
9
|
+
/**
|
|
10
|
+
* A `testId` prop is provided for specified elements, which is a unique string that appears as a data attribute `data-testid` in the rendered code, serving as a hook for automated tests.
|
|
11
|
+
*/
|
|
12
|
+
testId?: string;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* __Content__
|
|
16
|
+
*
|
|
17
|
+
* Provides a slot for your application content within the PageLayout.
|
|
18
|
+
*
|
|
19
|
+
* - [Examples](https://atlassian.design/components/page-layout/examples)
|
|
20
|
+
* - [Code](https://atlassian.design/components/page-layout/code)
|
|
21
|
+
*/
|
|
22
|
+
declare const Content: (props: ContentProps) => jsx.JSX.Element;
|
|
23
|
+
export default Content;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/** @jsx jsx */
|
|
2
|
+
import type { ReactNode } from 'react';
|
|
3
|
+
import { jsx } from '@emotion/react';
|
|
4
|
+
type LeftSidebarInnerProps = {
|
|
5
|
+
children: ReactNode;
|
|
6
|
+
isFixed?: boolean;
|
|
7
|
+
isFlyoutOpen?: boolean;
|
|
8
|
+
};
|
|
9
|
+
declare const LeftSidebarInner: ({ children, isFixed, isFlyoutOpen, }: LeftSidebarInnerProps) => jsx.JSX.Element;
|
|
10
|
+
export default LeftSidebarInner;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/** @jsx jsx */
|
|
2
|
+
import { MouseEventHandler, ReactNode } from 'react';
|
|
3
|
+
type LeftSidebarOuterProps = {
|
|
4
|
+
children: ReactNode;
|
|
5
|
+
isFixed?: boolean;
|
|
6
|
+
isFlyoutOpen?: boolean;
|
|
7
|
+
testId?: string;
|
|
8
|
+
id?: string;
|
|
9
|
+
onMouseOver?: MouseEventHandler;
|
|
10
|
+
onMouseLeave?: MouseEventHandler;
|
|
11
|
+
};
|
|
12
|
+
declare const _default: import("react").ForwardRefExoticComponent<LeftSidebarOuterProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
13
|
+
export default _default;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/** @jsx jsx */
|
|
2
|
+
import type { ReactNode } from 'react';
|
|
3
|
+
import { jsx } from '@emotion/react';
|
|
4
|
+
type ResizableChildrenWrapperProps = {
|
|
5
|
+
children: ReactNode;
|
|
6
|
+
isFlyoutOpen?: boolean;
|
|
7
|
+
isLeftSidebarCollapsed?: boolean;
|
|
8
|
+
hasCollapsedState?: boolean;
|
|
9
|
+
};
|
|
10
|
+
declare const ResizableChildrenWrapper: ({ children, isLeftSidebarCollapsed, hasCollapsedState, isFlyoutOpen, }: ResizableChildrenWrapperProps) => jsx.JSX.Element;
|
|
11
|
+
export default ResizableChildrenWrapper;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/** @jsx jsx */
|
|
2
|
+
import type { ReactNode } from 'react';
|
|
3
|
+
import { jsx } from '@emotion/react';
|
|
4
|
+
type SlotFocusRingProps = {
|
|
5
|
+
children: (props: {
|
|
6
|
+
className: string;
|
|
7
|
+
}) => ReactNode;
|
|
8
|
+
isSidebar?: boolean;
|
|
9
|
+
};
|
|
10
|
+
/**
|
|
11
|
+
* We don't use `@atlaskit/focus-ring` here,
|
|
12
|
+
* because we need inset focus styles and:
|
|
13
|
+
*
|
|
14
|
+
* 1. If we set them directly to the layout element,
|
|
15
|
+
* then any child element's background will cover the shadow.
|
|
16
|
+
* 2. We cannot wrap `children` in `FocusRing`,
|
|
17
|
+
* because there's no guarantee the passed child takes `className`.
|
|
18
|
+
*/
|
|
19
|
+
declare const SlotFocusRing: ({ children, isSidebar }: SlotFocusRingProps) => jsx.JSX.Element;
|
|
20
|
+
export default SlotFocusRing;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { jsx } from '@emotion/react';
|
|
2
|
+
import { SlotWidthProps } from '../../common/types';
|
|
3
|
+
/**
|
|
4
|
+
* __Left panel__
|
|
5
|
+
*
|
|
6
|
+
* Provides a slot for a left panel within the PageLayout.
|
|
7
|
+
*
|
|
8
|
+
* - [Examples](https://atlassian.design/components/page-layout/examples)
|
|
9
|
+
* - [Code](https://atlassian.design/components/page-layout/code)
|
|
10
|
+
*/
|
|
11
|
+
declare const LeftPanel: (props: SlotWidthProps) => jsx.JSX.Element;
|
|
12
|
+
export default LeftPanel;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { jsx } from '@emotion/react';
|
|
2
|
+
import { SlotWidthProps } from '../../common/types';
|
|
3
|
+
/**
|
|
4
|
+
* __Left sidebar without resize__
|
|
5
|
+
*
|
|
6
|
+
* Provides a slot for a left sidebar without resize within the PageLayout.
|
|
7
|
+
*
|
|
8
|
+
* - [Examples](https://atlassian.design/components/page-layout/examples)
|
|
9
|
+
* - [Code](https://atlassian.design/components/page-layout/code)
|
|
10
|
+
*/
|
|
11
|
+
declare const LeftSidebarWithoutResize: (props: SlotWidthProps) => jsx.JSX.Element;
|
|
12
|
+
export default LeftSidebarWithoutResize;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { jsx } from '@emotion/react';
|
|
2
|
+
import { LeftSidebarProps } from '../../common/types';
|
|
3
|
+
/**
|
|
4
|
+
* __Left sidebar__
|
|
5
|
+
*
|
|
6
|
+
* Provides a slot for a left sidebar within the PageLayout.
|
|
7
|
+
*
|
|
8
|
+
* - [Examples](https://atlassian.design/components/page-layout/examples)
|
|
9
|
+
* - [Code](https://atlassian.design/components/page-layout/code)
|
|
10
|
+
*/
|
|
11
|
+
declare const LeftSidebar: (props: LeftSidebarProps) => jsx.JSX.Element;
|
|
12
|
+
export default LeftSidebar;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { jsx } from '@emotion/react';
|
|
2
|
+
import { SlotWidthProps } from '../../common/types';
|
|
3
|
+
/**
|
|
4
|
+
* __Main__
|
|
5
|
+
*
|
|
6
|
+
* Provides a slot for main content within the PageLayout.
|
|
7
|
+
*
|
|
8
|
+
* - [Examples](https://atlassian.design/components/page-layout/examples)
|
|
9
|
+
* - [Code](https://atlassian.design/components/page-layout/code)
|
|
10
|
+
*/
|
|
11
|
+
declare const Main: (props: SlotWidthProps) => jsx.JSX.Element;
|
|
12
|
+
export default Main;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { jsx } from '@emotion/react';
|
|
2
|
+
import { PageLayoutProps } from '../../common/types';
|
|
3
|
+
/**
|
|
4
|
+
* __Page layout__
|
|
5
|
+
*
|
|
6
|
+
* A collection of components which let you compose an application's page layout.
|
|
7
|
+
*
|
|
8
|
+
* - [Examples](https://atlassian.design/components/page-layout/examples)
|
|
9
|
+
* - [Code](https://atlassian.design/components/page-layout/code)
|
|
10
|
+
*/
|
|
11
|
+
declare const PageLayout: ({ skipLinksLabel, children, testId, onLeftSidebarExpand, onLeftSidebarCollapse, }: PageLayoutProps) => jsx.JSX.Element;
|
|
12
|
+
export default PageLayout;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { jsx } from '@emotion/react';
|
|
2
|
+
import { SlotWidthProps } from '../../common/types';
|
|
3
|
+
/**
|
|
4
|
+
* __Right panel__
|
|
5
|
+
*
|
|
6
|
+
* Provides a slot for a right panel within the PageLayout.
|
|
7
|
+
*
|
|
8
|
+
* - [Examples](https://atlassian.design/components/page-layout/examples)
|
|
9
|
+
* - [Code](https://atlassian.design/components/page-layout/code)
|
|
10
|
+
*/
|
|
11
|
+
declare const RightPanel: (props: SlotWidthProps) => jsx.JSX.Element;
|
|
12
|
+
export default RightPanel;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { jsx } from '@emotion/react';
|
|
2
|
+
import { SlotWidthProps } from '../../common/types';
|
|
3
|
+
/**
|
|
4
|
+
* __Right sidebar__
|
|
5
|
+
*
|
|
6
|
+
* Provides a slot for a right sidebar within the PageLayout.
|
|
7
|
+
*
|
|
8
|
+
* - [Examples](https://atlassian.design/components/page-layout/examples)
|
|
9
|
+
* - [Code](https://atlassian.design/components/page-layout/code)
|
|
10
|
+
*/
|
|
11
|
+
declare const RightSidebar: (props: SlotWidthProps) => jsx.JSX.Element;
|
|
12
|
+
export default RightSidebar;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { jsx } from '@emotion/react';
|
|
2
|
+
import { SlotHeightProps } from '../../common/types';
|
|
3
|
+
/**
|
|
4
|
+
* __Top navigation__
|
|
5
|
+
*
|
|
6
|
+
* Provides a slot for top navigation within the PageLayout.
|
|
7
|
+
*
|
|
8
|
+
* - [Examples](https://atlassian.design/components/page-layout/examples)
|
|
9
|
+
* - [Code](https://atlassian.design/components/page-layout/code)
|
|
10
|
+
*/
|
|
11
|
+
declare const TopNavigation: (props: SlotHeightProps) => jsx.JSX.Element;
|
|
12
|
+
export default TopNavigation;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export type { SkipLinkData } from './types';
|
|
2
|
+
export { default as publishGridState } from './use-page-layout-grid';
|
|
3
|
+
export { SidebarResizeContext, usePageLayoutResize, useLeftSidebarFlyoutLock, } from './sidebar-resize-context';
|
|
4
|
+
export { SidebarResizeController } from './sidebar-resize-controller';
|
|
5
|
+
export { useSkipLinks, useSkipLink } from './skip-link-context';
|
|
6
|
+
export { SkipLinksController } from './skip-link-controller';
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { KeyboardEvent, MouseEvent } from 'react';
|
|
2
|
+
export type LeftSidebarState = {
|
|
3
|
+
isFlyoutOpen: boolean;
|
|
4
|
+
isResizing: boolean;
|
|
5
|
+
isLeftSidebarCollapsed: boolean;
|
|
6
|
+
leftSidebarWidth: number;
|
|
7
|
+
lastLeftSidebarWidth: number;
|
|
8
|
+
flyoutLockCount: number;
|
|
9
|
+
isFixed: boolean;
|
|
10
|
+
};
|
|
11
|
+
export type SidebarResizeContextValue = {
|
|
12
|
+
isLeftSidebarCollapsed: boolean;
|
|
13
|
+
expandLeftSidebar: () => void;
|
|
14
|
+
collapseLeftSidebar: (event?: MouseEvent | KeyboardEvent, collapseWithoutTransition?: boolean) => void;
|
|
15
|
+
leftSidebarState: LeftSidebarState;
|
|
16
|
+
setLeftSidebarState: (value: LeftSidebarState | ((prevState: LeftSidebarState) => LeftSidebarState)) => void;
|
|
17
|
+
};
|
|
18
|
+
export declare const SidebarResizeContext: import("react").Context<SidebarResizeContextValue>;
|
|
19
|
+
export declare const usePageLayoutResize: () => {
|
|
20
|
+
isLeftSidebarCollapsed: boolean;
|
|
21
|
+
expandLeftSidebar: () => void;
|
|
22
|
+
collapseLeftSidebar: (event?: MouseEvent | KeyboardEvent, collapseWithoutTransition?: boolean) => void;
|
|
23
|
+
leftSidebarState: LeftSidebarState;
|
|
24
|
+
};
|
|
25
|
+
/**
|
|
26
|
+
* _**WARNING:**_ This hook is intended as a temporary solution and
|
|
27
|
+
* is likely to be removed in a future version of page-layout.
|
|
28
|
+
*
|
|
29
|
+
* ---
|
|
30
|
+
*
|
|
31
|
+
* This hook will prevent the left sidebar from automatically collapsing
|
|
32
|
+
* when it is in a flyout state.
|
|
33
|
+
*
|
|
34
|
+
* The intended use case for this hook is to allow popup menus in the
|
|
35
|
+
* left sidebar to be usable while it is in a flyout state.
|
|
36
|
+
*
|
|
37
|
+
* ## Usage
|
|
38
|
+
* The intended usage is to use this hook within the popup component
|
|
39
|
+
* you are rendering. This way the left sidebar will be locked for
|
|
40
|
+
* as long as the popup is open.
|
|
41
|
+
*/
|
|
42
|
+
export declare const useLeftSidebarFlyoutLock: () => void;
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { SkipLinkContextProps, SkipLinkData } from './types';
|
|
3
|
+
export declare const SkipLinksContext: import("react").Context<SkipLinkContextProps>;
|
|
4
|
+
export declare const useSkipLinks: () => SkipLinkContextProps;
|
|
5
|
+
export declare const useSkipLink: (id?: SkipLinkData['id'], skipLinkTitle?: SkipLinkData['skipLinkTitle']) => void;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export type SkipLinkContextProps = {
|
|
2
|
+
skipLinksData: SkipLinkData[];
|
|
3
|
+
registerSkipLink: (skipLinkDate: SkipLinkData) => void;
|
|
4
|
+
unregisterSkipLink: (id: string | undefined) => void;
|
|
5
|
+
};
|
|
6
|
+
export type SkipLinkData = {
|
|
7
|
+
/**
|
|
8
|
+
* id for the element that will be skipped to
|
|
9
|
+
*/
|
|
10
|
+
id: string;
|
|
11
|
+
/**
|
|
12
|
+
* Text for the link that will appear in the skip link menu
|
|
13
|
+
*/
|
|
14
|
+
skipLinkTitle: string;
|
|
15
|
+
/**
|
|
16
|
+
* Desired position in the skip link menu
|
|
17
|
+
*/
|
|
18
|
+
listIndex?: number;
|
|
19
|
+
};
|
|
20
|
+
export type SkipLinkI18n = {
|
|
21
|
+
title: string;
|
|
22
|
+
};
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { PageLayout, Main, Content, RightSidebar, LeftSidebar, LeftSidebarWithoutResize, RightPanel, LeftPanel, Banner, TopNavigation, useCustomSkipLink, } from './components';
|
|
2
|
+
export { LEFT_PANEL_WIDTH, RIGHT_PANEL_WIDTH, BANNER_HEIGHT, TOP_NAVIGATION_HEIGHT, LEFT_SIDEBAR_WIDTH, RIGHT_SIDEBAR_WIDTH, } from './common/constants';
|
|
3
|
+
export { usePageLayoutResize, useLeftSidebarFlyoutLock } from './controllers';
|
|
4
|
+
export type { SlotHeightProps, SlotWidthProps, Dimensions, LeftSidebarState, } from './common/types';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@atlaskit/page-layout",
|
|
3
|
-
"version": "1.6.
|
|
3
|
+
"version": "1.6.2",
|
|
4
4
|
"description": "A collection of components which let you compose an application's page layout.",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"registry": "https://registry.npmjs.org/"
|
|
@@ -55,13 +55,13 @@
|
|
|
55
55
|
"@atlaskit/drawer": "^7.5.0",
|
|
56
56
|
"@atlaskit/icon": "*",
|
|
57
57
|
"@atlaskit/logo": "^13.14.0",
|
|
58
|
-
"@atlaskit/menu": "^1.
|
|
58
|
+
"@atlaskit/menu": "^1.7.0",
|
|
59
59
|
"@atlaskit/notification-indicator": "^9.1.0",
|
|
60
60
|
"@atlaskit/notification-log-client": "^6.1.0",
|
|
61
61
|
"@atlaskit/onboarding": "^10.8.0",
|
|
62
62
|
"@atlaskit/popup": "^1.6.0",
|
|
63
63
|
"@atlaskit/section-message": "^6.4.0",
|
|
64
|
-
"@atlaskit/side-navigation": "^1.
|
|
64
|
+
"@atlaskit/side-navigation": "^1.8.0",
|
|
65
65
|
"@atlaskit/ssr": "*",
|
|
66
66
|
"@atlaskit/tooltip": "*",
|
|
67
67
|
"@atlaskit/visual-regression": "*",
|