@atlaskit/drawer 10.1.5 → 11.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 (120) hide show
  1. package/CHANGELOG.md +9 -6
  2. package/dist/cjs/constants.js +2 -7
  3. package/dist/cjs/{compiled/drawer-panel → drawer-panel}/drawer-close-button.js +1 -1
  4. package/dist/cjs/{compiled/drawer-panel → drawer-panel}/drawer-content.js +2 -2
  5. package/dist/cjs/{compiled/drawer-panel → drawer-panel}/drawer-panel.js +1 -1
  6. package/dist/cjs/{compiled/drawer-panel → drawer-panel}/drawer-sidebar.js +1 -1
  7. package/dist/cjs/{compiled/drawer.js → drawer.js} +3 -3
  8. package/dist/cjs/index.js +29 -3
  9. package/dist/es2019/constants.js +1 -6
  10. package/dist/es2019/{compiled/drawer-panel → drawer-panel}/drawer-close-button.js +1 -1
  11. package/dist/es2019/{compiled/drawer-panel → drawer-panel}/drawer-content.js +2 -2
  12. package/dist/es2019/{compiled/drawer-panel → drawer-panel}/drawer-panel.js +1 -1
  13. package/dist/es2019/{compiled/drawer-panel → drawer-panel}/drawer-sidebar.js +1 -1
  14. package/dist/es2019/{compiled/drawer.js → drawer.js} +3 -3
  15. package/dist/es2019/index.js +5 -1
  16. package/dist/esm/constants.js +1 -6
  17. package/dist/esm/{compiled/drawer-panel → drawer-panel}/drawer-close-button.js +1 -1
  18. package/dist/esm/{compiled/drawer-panel → drawer-panel}/drawer-content.js +2 -2
  19. package/dist/esm/{compiled/drawer-panel → drawer-panel}/drawer-panel.js +1 -1
  20. package/dist/esm/{compiled/drawer-panel → drawer-panel}/drawer-sidebar.js +1 -1
  21. package/dist/esm/{compiled/drawer.js → drawer.js} +3 -3
  22. package/dist/esm/index.js +5 -1
  23. package/dist/types/constants.d.ts +1 -2
  24. package/dist/types/index.d.ts +6 -2
  25. package/dist/types/{compiled/types.d.ts → types.d.ts} +1 -2
  26. package/dist/types-ts4.5/constants.d.ts +1 -2
  27. package/dist/types-ts4.5/index.d.ts +6 -2
  28. package/dist/types-ts4.5/{compiled/types.d.ts → types.d.ts} +1 -2
  29. package/package.json +3 -6
  30. package/compiled/package.json +0 -17
  31. package/dist/cjs/components/blanket.js +0 -62
  32. package/dist/cjs/components/index.js +0 -148
  33. package/dist/cjs/components/primitives/content.js +0 -69
  34. package/dist/cjs/components/primitives/drawer-wrapper.js +0 -90
  35. package/dist/cjs/components/primitives/focus-lock.js +0 -60
  36. package/dist/cjs/components/primitives/index.js +0 -125
  37. package/dist/cjs/components/primitives/sidebar.js +0 -45
  38. package/dist/cjs/components/types.js +0 -5
  39. package/dist/cjs/components/utils.js +0 -38
  40. package/dist/cjs/entry-points/compiled.js +0 -33
  41. package/dist/es2019/components/blanket.js +0 -53
  42. package/dist/es2019/components/index.js +0 -129
  43. package/dist/es2019/components/primitives/content.js +0 -56
  44. package/dist/es2019/components/primitives/drawer-wrapper.js +0 -86
  45. package/dist/es2019/components/primitives/focus-lock.js +0 -49
  46. package/dist/es2019/components/primitives/index.js +0 -113
  47. package/dist/es2019/components/primitives/sidebar.js +0 -36
  48. package/dist/es2019/components/utils.js +0 -44
  49. package/dist/es2019/entry-points/compiled.js +0 -4
  50. package/dist/esm/compiled/types.js +0 -1
  51. package/dist/esm/components/blanket.js +0 -54
  52. package/dist/esm/components/index.js +0 -138
  53. package/dist/esm/components/primitives/content.js +0 -64
  54. package/dist/esm/components/primitives/drawer-wrapper.js +0 -82
  55. package/dist/esm/components/primitives/focus-lock.js +0 -51
  56. package/dist/esm/components/primitives/index.js +0 -117
  57. package/dist/esm/components/primitives/sidebar.js +0 -39
  58. package/dist/esm/components/types.js +0 -1
  59. package/dist/esm/components/utils.js +0 -32
  60. package/dist/esm/entry-points/compiled.js +0 -4
  61. package/dist/types/components/blanket.d.ts +0 -16
  62. package/dist/types/components/index.d.ts +0 -13
  63. package/dist/types/components/primitives/content.d.ts +0 -11
  64. package/dist/types/components/primitives/drawer-wrapper.d.ts +0 -26
  65. package/dist/types/components/primitives/focus-lock.d.ts +0 -10
  66. package/dist/types/components/primitives/index.d.ts +0 -4
  67. package/dist/types/components/primitives/sidebar.d.ts +0 -12
  68. package/dist/types/components/types.d.ts +0 -172
  69. package/dist/types/components/utils.d.ts +0 -7
  70. package/dist/types/entry-points/compiled.d.ts +0 -5
  71. package/dist/types-ts4.5/components/blanket.d.ts +0 -16
  72. package/dist/types-ts4.5/components/index.d.ts +0 -13
  73. package/dist/types-ts4.5/components/primitives/content.d.ts +0 -11
  74. package/dist/types-ts4.5/components/primitives/drawer-wrapper.d.ts +0 -29
  75. package/dist/types-ts4.5/components/primitives/focus-lock.d.ts +0 -10
  76. package/dist/types-ts4.5/components/primitives/index.d.ts +0 -4
  77. package/dist/types-ts4.5/components/primitives/sidebar.d.ts +0 -12
  78. package/dist/types-ts4.5/components/types.d.ts +0 -172
  79. package/dist/types-ts4.5/components/utils.d.ts +0 -7
  80. package/dist/types-ts4.5/entry-points/compiled.d.ts +0 -5
  81. /package/dist/cjs/{compiled/blanket.compiled.css → blanket.compiled.css} +0 -0
  82. /package/dist/cjs/{compiled/blanket.js → blanket.js} +0 -0
  83. /package/dist/cjs/{compiled/drawer-panel → drawer-panel}/drawer-content.compiled.css +0 -0
  84. /package/dist/cjs/{compiled/drawer-panel → drawer-panel}/drawer-panel.compiled.css +0 -0
  85. /package/dist/cjs/{compiled/drawer-panel → drawer-panel}/drawer-sidebar.compiled.css +0 -0
  86. /package/dist/cjs/{compiled/drawer-panel → drawer-panel}/focus-lock.js +0 -0
  87. /package/dist/cjs/{hooks → drawer-panel/hooks}/use-prevent-programmatic-scroll.js +0 -0
  88. /package/dist/cjs/{compiled/types.js → types.js} +0 -0
  89. /package/dist/es2019/{compiled/blanket.compiled.css → blanket.compiled.css} +0 -0
  90. /package/dist/es2019/{compiled/blanket.js → blanket.js} +0 -0
  91. /package/dist/es2019/{compiled/drawer-panel → drawer-panel}/drawer-content.compiled.css +0 -0
  92. /package/dist/es2019/{compiled/drawer-panel → drawer-panel}/drawer-panel.compiled.css +0 -0
  93. /package/dist/es2019/{compiled/drawer-panel → drawer-panel}/drawer-sidebar.compiled.css +0 -0
  94. /package/dist/es2019/{compiled/drawer-panel → drawer-panel}/focus-lock.js +0 -0
  95. /package/dist/es2019/{hooks → drawer-panel/hooks}/use-prevent-programmatic-scroll.js +0 -0
  96. /package/dist/es2019/{compiled/types.js → types.js} +0 -0
  97. /package/dist/esm/{compiled/blanket.compiled.css → blanket.compiled.css} +0 -0
  98. /package/dist/esm/{compiled/blanket.js → blanket.js} +0 -0
  99. /package/dist/esm/{compiled/drawer-panel → drawer-panel}/drawer-content.compiled.css +0 -0
  100. /package/dist/esm/{compiled/drawer-panel → drawer-panel}/drawer-panel.compiled.css +0 -0
  101. /package/dist/esm/{compiled/drawer-panel → drawer-panel}/drawer-sidebar.compiled.css +0 -0
  102. /package/dist/esm/{compiled/drawer-panel → drawer-panel}/focus-lock.js +0 -0
  103. /package/dist/esm/{hooks → drawer-panel/hooks}/use-prevent-programmatic-scroll.js +0 -0
  104. /package/dist/{es2019/components → esm}/types.js +0 -0
  105. /package/dist/types/{compiled/blanket.d.ts → blanket.d.ts} +0 -0
  106. /package/dist/types/{compiled/drawer-panel → drawer-panel}/drawer-close-button.d.ts +0 -0
  107. /package/dist/types/{compiled/drawer-panel → drawer-panel}/drawer-content.d.ts +0 -0
  108. /package/dist/types/{compiled/drawer-panel → drawer-panel}/drawer-panel.d.ts +0 -0
  109. /package/dist/types/{compiled/drawer-panel → drawer-panel}/drawer-sidebar.d.ts +0 -0
  110. /package/dist/types/{compiled/drawer-panel → drawer-panel}/focus-lock.d.ts +0 -0
  111. /package/dist/types/{hooks → drawer-panel/hooks}/use-prevent-programmatic-scroll.d.ts +0 -0
  112. /package/dist/types/{compiled/drawer.d.ts → drawer.d.ts} +0 -0
  113. /package/dist/types-ts4.5/{compiled/blanket.d.ts → blanket.d.ts} +0 -0
  114. /package/dist/types-ts4.5/{compiled/drawer-panel → drawer-panel}/drawer-close-button.d.ts +0 -0
  115. /package/dist/types-ts4.5/{compiled/drawer-panel → drawer-panel}/drawer-content.d.ts +0 -0
  116. /package/dist/types-ts4.5/{compiled/drawer-panel → drawer-panel}/drawer-panel.d.ts +0 -0
  117. /package/dist/types-ts4.5/{compiled/drawer-panel → drawer-panel}/drawer-sidebar.d.ts +0 -0
  118. /package/dist/types-ts4.5/{compiled/drawer-panel → drawer-panel}/focus-lock.d.ts +0 -0
  119. /package/dist/types-ts4.5/{hooks → drawer-panel/hooks}/use-prevent-programmatic-scroll.d.ts +0 -0
  120. /package/dist/types-ts4.5/{compiled/drawer.d.ts → drawer.d.ts} +0 -0
@@ -1,129 +0,0 @@
1
- /* eslint-disable @repo/internal/dom-events/no-unsafe-event-listeners */
2
- import React, { useCallback, useEffect } from 'react';
3
- import { canUseDOM } from 'exenv';
4
- import { usePlatformLeafEventHandler } from '@atlaskit/analytics-next';
5
- import { Layering, useCloseOnEscapePress } from '@atlaskit/layering';
6
- import Portal from '@atlaskit/portal';
7
- import Blanket from './blanket';
8
- import DrawerPrimitive from './primitives';
9
- // escape close manager for layering
10
- const EscapeCloseManager = ({
11
- onClose
12
- }) => {
13
- // wrap so that we can cast the event to a React.KeyboardEvent
14
- const handleClose = useCallback(evt => {
15
- onClose && onClose(evt);
16
- }, [onClose]);
17
- useCloseOnEscapePress({
18
- onClose: handleClose
19
- });
20
- return /*#__PURE__*/React.createElement("span", null);
21
- };
22
-
23
- /**
24
- * __Drawer__
25
- *
26
- * A drawer is a panel that slides in from the left side of the screen.
27
- *
28
- * - [Examples](https://atlassian.design/components/drawer/examples)
29
- * - [Code](https://atlassian.design/components/drawer/code)
30
- * - [Usage](https://atlassian.design/components/drawer/usage)
31
- */
32
- const Drawer = ({
33
- width = 'narrow',
34
- isOpen,
35
- isFocusLockEnabled = true,
36
- shouldReturnFocus = true,
37
- autoFocusFirstElem = true,
38
- onKeyDown,
39
- onClose,
40
- testId,
41
- children,
42
- icon,
43
- closeLabel,
44
- scrollContentLabel,
45
- onCloseComplete,
46
- onOpenComplete,
47
- overrides,
48
- zIndex = 'unset',
49
- label,
50
- titleId,
51
- enterFrom
52
- }) => {
53
- const body = canUseDOM ? document.querySelector('body') : undefined;
54
- const handleClose = usePlatformLeafEventHandler({
55
- fn: (evt, analyticsEvent) => onClose && onClose(evt, analyticsEvent),
56
- action: 'dismissed',
57
- componentName: 'drawer',
58
- packageName: "@atlaskit/drawer",
59
- packageVersion: "10.1.5",
60
- analyticsData: {
61
- trigger: 'escKey'
62
- }
63
- });
64
- const handleKeyDown = useCallback(evt => {
65
- onKeyDown && onKeyDown(evt);
66
- }, [onKeyDown]);
67
- useEffect(() => {
68
- if (isOpen) {
69
- window.addEventListener('keydown', handleKeyDown);
70
- }
71
- return () => {
72
- window.removeEventListener('keydown', handleKeyDown);
73
- };
74
- }, [handleKeyDown, isOpen]);
75
- const handleBlanketClick = usePlatformLeafEventHandler({
76
- fn: (evt, analyticsEvent) => onClose && onClose(evt, analyticsEvent),
77
- action: 'dismissed',
78
- componentName: 'drawer',
79
- packageName: "@atlaskit/drawer",
80
- packageVersion: "10.1.5",
81
- analyticsData: {
82
- trigger: 'blanket'
83
- }
84
- });
85
- const handleBackButtonClick = usePlatformLeafEventHandler({
86
- fn: (evt, analyticsEvent) => onClose && onClose(evt, analyticsEvent),
87
- action: 'dismissed',
88
- componentName: 'drawer',
89
- packageName: "@atlaskit/drawer",
90
- packageVersion: "10.1.5",
91
- analyticsData: {
92
- trigger: 'backButton'
93
- }
94
- });
95
- if (!body) {
96
- return null;
97
- }
98
- return /*#__PURE__*/React.createElement(Portal, {
99
- zIndex: zIndex
100
- }, /*#__PURE__*/React.createElement(Blanket, {
101
- isOpen: isOpen,
102
- onBlanketClicked: handleBlanketClick,
103
- testId: testId && `${testId}--blanket`
104
- }), /*#__PURE__*/React.createElement(DrawerPrimitive, {
105
- testId: testId,
106
- icon: icon,
107
- closeLabel: closeLabel,
108
- in: isOpen,
109
- onClose: handleBackButtonClick,
110
- onCloseComplete: onCloseComplete,
111
- onOpenComplete: onOpenComplete,
112
- width: width,
113
- enterFrom: enterFrom,
114
- label: label,
115
- titleId: titleId
116
- // eslint-disable-next-line @repo/internal/react/no-unsafe-overrides
117
- ,
118
- overrides: overrides,
119
- autoFocusFirstElem: autoFocusFirstElem,
120
- isFocusLockEnabled: isFocusLockEnabled,
121
- shouldReturnFocus: shouldReturnFocus,
122
- scrollContentLabel: scrollContentLabel
123
- }, isOpen ? /*#__PURE__*/React.createElement(Layering, {
124
- isDisabled: false
125
- }, children, /*#__PURE__*/React.createElement(EscapeCloseManager, {
126
- onClose: handleClose
127
- })) : children));
128
- };
129
- export default Drawer;
@@ -1,56 +0,0 @@
1
- import _extends from "@babel/runtime/helpers/extends";
2
- /**
3
- * @jsxRuntime classic
4
- * @jsx jsx
5
- */
6
-
7
- import { useEffect, useRef, useState } from 'react';
8
-
9
- // eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled -- Ignored via go/DSP-18766
10
- import { css, jsx } from '@emotion/react';
11
- const defaultStyles = {
12
- flex: 1,
13
- overflow: 'auto',
14
- marginTop: "var(--ds-space-300, 24px)"
15
- };
16
- const contentCSS = () => defaultStyles;
17
- const Content = ({
18
- cssFn,
19
- scrollContentLabel = 'Scrollable content',
20
- ...props
21
- }) => {
22
- const [showContentFocus, setContentFocus] = useState(false);
23
- const scrollableRef = useRef(null);
24
- useEffect(() => {
25
- const setLazyContentFocus = () => {
26
- const target = scrollableRef.current;
27
- target && setContentFocus(target.scrollHeight > target.clientHeight);
28
- };
29
- setLazyContentFocus();
30
- }, []);
31
-
32
- /**
33
- * I noticed the implementation at @atlaskit/checkbox would send the props to cssFn rather
34
- * than the defaultStyles as the overrides guide suggests. I went with what the overrides
35
- * guide suggested as it made more sense as a transformer of the current styles rather than
36
- * a complete override with no chance of partially changing styles.
37
- */
38
- return jsx("div", _extends({
39
- // eslint-disable-next-line @atlaskit/design-system/consistent-css-prop-usage, @atlaskit/ui-styling-standard/no-imported-style-values, @atlaskit/ui-styling-standard/no-unsafe-values -- Ignored via go/DSP-18766
40
- css: css(cssFn(defaultStyles)),
41
- ref: scrollableRef
42
- // tabindex is allowed here so that keyboard users can scroll content
43
- // eslint-disable-next-line jsx-a11y/no-noninteractive-tabindex
44
- ,
45
- tabIndex: showContentFocus ? 0 : undefined,
46
- role: showContentFocus ? 'region' : undefined,
47
- "aria-label": showContentFocus ? scrollContentLabel : undefined,
48
- "data-testid": "drawer-contents"
49
- // eslint-disable-next-line @repo/internal/react/no-unsafe-spread-props
50
- }, props));
51
- };
52
- const contentDefaults = {
53
- component: Content,
54
- cssFn: contentCSS
55
- };
56
- export default contentDefaults;
@@ -1,86 +0,0 @@
1
- /**
2
- * @jsxRuntime classic
3
- * @jsx jsx
4
- */
5
- import { forwardRef, useCallback } from 'react';
6
-
7
- // eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled -- Ignored via go/DSP-18766
8
- import { css, jsx } from '@emotion/react';
9
- import { useMergeRefs } from 'use-callback-ref';
10
- import { N0 } from '@atlaskit/theme/colors';
11
- import { CURRENT_SURFACE_CSS_VAR } from '@atlaskit/tokens';
12
- import usePreventProgrammaticScroll from '../../hooks/use-prevent-programmatic-scroll';
13
- export const wrapperWidth = {
14
- full: {
15
- width: '100vw'
16
- },
17
- extended: {
18
- width: '95vw'
19
- },
20
- narrow: {
21
- width: 360
22
- },
23
- medium: {
24
- width: 480
25
- },
26
- wide: {
27
- width: 600
28
- }
29
- };
30
- const wrapperStyles = css({
31
- display: 'flex',
32
- height: '100vh',
33
- position: 'fixed',
34
- zIndex: 500,
35
- backgroundColor: `var(--ds-surface-overlay, ${N0})`,
36
- [CURRENT_SURFACE_CSS_VAR]: `var(--ds-surface-overlay, ${N0})`,
37
- fontFamily: "var(--ds-font-family-body, ui-sans-serif, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Ubuntu, \"Helvetica Neue\", sans-serif)",
38
- insetBlockStart: 0,
39
- insetInlineStart: 0,
40
- overflow: 'hidden'
41
- });
42
- /**
43
- * A wrapper that controls the styling of the drawer with a few hacks with refs to get our Touch±Scroll locks working.
44
- */
45
- const DrawerWrapper = /*#__PURE__*/forwardRef(({
46
- children,
47
- className,
48
- width = 'narrow',
49
- testId,
50
- drawerRef,
51
- label,
52
- titleId
53
- }, scrollRef) => {
54
- /**
55
- * We use a callback ref to assign the `<Content />` component to the forwarded `scrollRef`.
56
- * This ref comes from `react-scrolllock` to allow touch scrolling, eg.: `<ScrollLock><TouchScrollable>{children}</TouchScrollable><ScrollLock>`
57
- *
58
- * This is because we do not control the `<Content />` component in order to forward a ref to it (given it can be overriden via `DrawerPrimitiveProps['overrides']['Content']['component']`).
59
- * Additionally, we target the last child because with `props.overrides.Sidebar.component = () => null` you only have one child.
60
- * If both `Sidebar.component` and `Content.component` return null you will have no children and this will throw an error, but that doesn't seem valid.
61
- */
62
- const assignSecondChildRef = useCallback(node => {
63
- var _node$children;
64
- if (node !== null && node !== void 0 && (_node$children = node.children) !== null && _node$children !== void 0 && _node$children.length && typeof scrollRef === 'function') {
65
- scrollRef(node.children[node.children.length - 1]);
66
- }
67
- }, [scrollRef]);
68
- const ref = useMergeRefs([drawerRef, assignSecondChildRef]);
69
- usePreventProgrammaticScroll();
70
- return jsx("div", {
71
- css: wrapperStyles
72
- // eslint-disable-next-line @atlaskit/ui-styling-standard/enforce-style-prop -- Ignored via go/DSP-18766
73
- ,
74
- style: wrapperWidth[width]
75
- // eslint-disable-next-line @atlaskit/ui-styling-standard/no-classname-prop -- Ignored via go/DSP-18766
76
- ,
77
- className: className,
78
- "data-testid": testId,
79
- ref: ref,
80
- "aria-modal": true,
81
- role: "dialog",
82
- "aria-label": label,
83
- "aria-labelledby": titleId
84
- }, children);
85
- });
86
- export default DrawerWrapper;
@@ -1,49 +0,0 @@
1
- import React, { useEffect } from 'react';
2
- import ReactFocusLock from 'react-focus-lock';
3
- import ScrollLock from 'react-scrolllock';
4
- import invariant from 'tiny-invariant';
5
- /**
6
- * __Focus lock__
7
- *
8
- * Thin wrapper over react-focus-lock. This wrapper only exists to ensure API compatibility.
9
- * This component should be deleted during https://ecosystem.atlassian.net/browse/AK-5658
10
- */
11
- const FocusLock = ({
12
- isFocusLockEnabled = true,
13
- autoFocusFirstElem = true,
14
- shouldReturnFocus = true,
15
- children
16
- }) => {
17
- useEffect(() => {
18
- if (typeof process !== 'undefined' && process.env.NODE_ENV !== 'production' && !process.env.CI) {
19
- invariant(typeof autoFocusFirstElem === 'boolean', '@atlaskit/drawer: Passing a function as autoFocus is deprecated. Instead call focus on the element ref or use the autofocus property.');
20
- }
21
- if (typeof autoFocusFirstElem === 'function' && isFocusLockEnabled) {
22
- const elem = autoFocusFirstElem();
23
- if (elem && elem.focus) {
24
- elem.focus();
25
- }
26
- }
27
- }, [autoFocusFirstElem, isFocusLockEnabled]);
28
- const getFocusTarget = () => {
29
- if (typeof shouldReturnFocus === 'boolean') {
30
- return shouldReturnFocus;
31
- }
32
- return false;
33
- };
34
- const onDeactivation = () => {
35
- if (typeof shouldReturnFocus !== 'boolean') {
36
- window.setTimeout(() => {
37
- var _shouldReturnFocus$cu;
38
- shouldReturnFocus === null || shouldReturnFocus === void 0 ? void 0 : (_shouldReturnFocus$cu = shouldReturnFocus.current) === null || _shouldReturnFocus$cu === void 0 ? void 0 : _shouldReturnFocus$cu.focus();
39
- }, 0);
40
- }
41
- };
42
- return /*#__PURE__*/React.createElement(ReactFocusLock, {
43
- disabled: !isFocusLockEnabled,
44
- autoFocus: !!autoFocusFirstElem,
45
- returnFocus: getFocusTarget(),
46
- onDeactivation: onDeactivation
47
- }, /*#__PURE__*/React.createElement(ScrollLock, null, children));
48
- };
49
- export default FocusLock;
@@ -1,113 +0,0 @@
1
- import _extends from "@babel/runtime/helpers/extends";
2
- import React, { useCallback, useRef } from 'react';
3
- import { IconButton } from '@atlaskit/button/new';
4
- import ArrowLeft from '@atlaskit/icon/core/migration/arrow-left';
5
- import { ExitingPersistence, SlideIn } from '@atlaskit/motion';
6
- import { createExtender } from '../utils';
7
- import ContentOverrides from './content';
8
- import DrawerWrapper from './drawer-wrapper';
9
- import FocusLock from './focus-lock';
10
- import SidebarOverrides from './sidebar';
11
-
12
- // Misc.
13
- // ------------------------------
14
-
15
- const defaults = {
16
- Sidebar: SidebarOverrides,
17
- Content: ContentOverrides
18
- };
19
-
20
- /**
21
- * This wrapper is used to specify separate durations for enter and exit.
22
- */
23
- const CustomSlideIn = ({
24
- children,
25
- onFinish,
26
- enterFrom
27
- }) => {
28
- return /*#__PURE__*/React.createElement(SlideIn, {
29
- animationTimingFunction: "ease-out",
30
- duration: "small",
31
- enterFrom: enterFrom,
32
- exitTo: enterFrom,
33
- fade: "none",
34
- onFinish: onFinish
35
- }, children);
36
- };
37
- const DrawerPrimitive = ({
38
- children,
39
- icon: Icon,
40
- closeLabel = 'Close drawer',
41
- scrollContentLabel,
42
- onClose,
43
- onCloseComplete,
44
- onOpenComplete,
45
- overrides,
46
- testId,
47
- in: isOpen,
48
- shouldReturnFocus,
49
- autoFocusFirstElem,
50
- isFocusLockEnabled,
51
- width,
52
- label,
53
- titleId,
54
- enterFrom = 'left'
55
- }) => {
56
- const getOverrides = createExtender(defaults, overrides);
57
- const {
58
- component: Sidebar,
59
- ...sideBarOverrides
60
- } = getOverrides('Sidebar');
61
- const {
62
- component: Content,
63
- ...contentOverrides
64
- } = getOverrides('Content');
65
-
66
- /**
67
- * A ref to point to our wrapper, passed to `onCloseComplete` and `onOpenComplete` callbacks.
68
- */
69
- const drawerRef = useRef(null);
70
- const onFinish = useCallback(state => {
71
- if (state === 'entering') {
72
- onOpenComplete === null || onOpenComplete === void 0 ? void 0 : onOpenComplete(drawerRef.current);
73
- } else if (state === 'exiting') {
74
- onCloseComplete === null || onCloseComplete === void 0 ? void 0 : onCloseComplete(drawerRef.current);
75
- }
76
- }, [onCloseComplete, onOpenComplete]);
77
- return /*#__PURE__*/React.createElement(ExitingPersistence, {
78
- appear: true
79
- }, isOpen && /*#__PURE__*/React.createElement(CustomSlideIn, {
80
- onFinish: onFinish,
81
- enterFrom: enterFrom
82
- }, ({
83
- className
84
- }) => /*#__PURE__*/React.createElement(FocusLock, {
85
- autoFocusFirstElem: autoFocusFirstElem,
86
- isFocusLockEnabled: isFocusLockEnabled,
87
- shouldReturnFocus: shouldReturnFocus
88
- }, /*#__PURE__*/React.createElement(DrawerWrapper
89
- // eslint-disable-next-line @atlaskit/ui-styling-standard/no-classname-prop -- Ignored via go/DSP-18766
90
- , {
91
- className: className,
92
- width: width,
93
- testId: testId,
94
- drawerRef: drawerRef,
95
- label: label,
96
- titleId: titleId
97
- }, /*#__PURE__*/React.createElement(Sidebar, sideBarOverrides, /*#__PURE__*/React.createElement(IconButton, {
98
- onClick: onClose,
99
- testId: testId && 'DrawerPrimitiveSidebarCloseButton',
100
- icon: Icon ? iconProps => /*#__PURE__*/React.createElement(Icon, _extends({}, iconProps, {
101
- size: "large",
102
- LEGACY_size: "large"
103
- })) : ArrowLeft,
104
- label: closeLabel,
105
- shape: "circle",
106
- appearance: "subtle"
107
- })), /*#__PURE__*/React.createElement(Content, _extends({
108
- scrollContentLabel: scrollContentLabel
109
- }, contentOverrides), children)))));
110
- };
111
-
112
- // eslint-disable-next-line @repo/internal/react/require-jsdoc
113
- export default DrawerPrimitive;
@@ -1,36 +0,0 @@
1
- import _extends from "@babel/runtime/helpers/extends";
2
- /**
3
- * @jsxRuntime classic
4
- * @jsx jsx
5
- */
6
-
7
- // eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled -- Ignored via go/DSP-18766
8
- import { css, jsx } from '@emotion/react';
9
- import { N500 } from '@atlaskit/theme/colors';
10
- const defaultStyle = {
11
- alignItems: 'center',
12
- boxSizing: 'border-box',
13
- color: `var(--ds-text-subtle, ${N500})`,
14
- display: 'flex',
15
- flexShrink: 0,
16
- flexDirection: 'column',
17
- height: '100vh',
18
- paddingBottom: "var(--ds-space-200, 16px)",
19
- paddingTop: "var(--ds-space-300, 24px)",
20
- width: "var(--ds-space-800, 64px)"
21
- };
22
- const sidebarCSS = () => defaultStyle;
23
- const Sidebar = ({
24
- cssFn,
25
- ...props
26
- }) => {
27
- // eslint-disable-next-line @atlaskit/design-system/consistent-css-prop-usage, @repo/internal/react/no-unsafe-spread-props, @atlaskit/ui-styling-standard/no-imported-style-values, @atlaskit/ui-styling-standard/no-unsafe-values -- Ignored via go/DSP-18766
28
- return jsx("div", _extends({
29
- css: css(cssFn(defaultStyle))
30
- }, props));
31
- };
32
- const sidebarDefaults = {
33
- component: Sidebar,
34
- cssFn: sidebarCSS
35
- };
36
- export default sidebarDefaults;
@@ -1,44 +0,0 @@
1
- // eslint-disable-next-line @repo/internal/react/consistent-types-definitions
2
-
3
- /**
4
- * @deprecated Please avoid using this function as we intend to remote it in a future release. See DSP-2673 for more information.
5
- */
6
- export const createExtender = function createExtender(defaults,
7
- /**
8
- * We're defaulting to an Object.create call here to circumvent
9
- * the fact that {} can't be reconciled
10
- * with a type that extends Record<string, any>
11
- *
12
- * By doing this, we are intentionally disallowing users
13
- * from nullifying a particular component in the tree.
14
- * This can be reverted with additional logic,
15
- * at such a time as this nullification becomes an actual usecase.
16
- */
17
- overrides = Object.create(Object.prototype)) {
18
- if (!defaults) {
19
- throw new Error('a default set of overrides *must* be passed in as the first argument');
20
- }
21
- return function getOverrides(key) {
22
- const {
23
- cssFn: defaultCssFn,
24
- component: defaultComponent
25
- } = defaults[key];
26
- if (!overrides[key]) {
27
- return {
28
- cssFn: defaultCssFn,
29
- component: defaultComponent
30
- };
31
- }
32
- const {
33
- cssFn: customCssFn,
34
- component: customComponent
35
- } = overrides[key];
36
- const composedCssFn = state => {
37
- return customCssFn(defaultCssFn(state), state);
38
- };
39
- return {
40
- cssFn: customCssFn ? composedCssFn : defaultCssFn,
41
- component: customComponent || defaultComponent
42
- };
43
- };
44
- };
@@ -1,4 +0,0 @@
1
- export { Drawer } from '../compiled/drawer';
2
- export { DrawerContent } from '../compiled/drawer-panel/drawer-content';
3
- export { DrawerSidebar } from '../compiled/drawer-panel/drawer-sidebar';
4
- export { DrawerCloseButton } from '../compiled/drawer-panel/drawer-close-button';
@@ -1 +0,0 @@
1
- export {};
@@ -1,54 +0,0 @@
1
- /**
2
- * @jsxRuntime classic
3
- * @jsx jsx
4
- */
5
- import React from 'react';
6
-
7
- // eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled -- Ignored via go/DSP-18766
8
- import { css, jsx } from '@emotion/react';
9
- import AkBlanket from '@atlaskit/blanket';
10
- import { ExitingPersistence, FadeIn } from '@atlaskit/motion';
11
- var blanketStyles = css({
12
- position: 'relative'
13
- });
14
-
15
- /**
16
- * A wrapper around `@atlaskit/blanket` that adds a fade in/out transition.
17
- */
18
- var Blanket = function Blanket(_ref) {
19
- var isOpen = _ref.isOpen,
20
- onBlanketClicked = _ref.onBlanketClicked,
21
- testId = _ref.testId;
22
- return jsx(ExitingPersistence, {
23
- appear: true
24
- }, isOpen && jsx(FadeIn
25
- /**
26
- * We double the duration because the fade in keyframes have
27
- * `opacity: 1` at `50%`.
28
- *
29
- * The fade out animation uses half the passed duration so it evens out.
30
- */, {
31
- duration: "large"
32
- /**
33
- * We don't expose this on `FadeIn` but it does get passed down.
34
- * TODO: figure out how we want to handle this...
35
- */
36
- // @ts-ignore
37
- ,
38
- animationTimingFunction: "ease-out"
39
- }, function (_ref2) {
40
- var className = _ref2.className;
41
- return (
42
- // eslint-disable-next-line @atlaskit/ui-styling-standard/no-classname-prop -- Ignored via go/DSP-18766
43
- jsx("div", {
44
- css: blanketStyles,
45
- className: className
46
- }, jsx(AkBlanket, {
47
- isTinted: true,
48
- onBlanketClicked: onBlanketClicked,
49
- testId: testId && testId
50
- }))
51
- );
52
- }));
53
- };
54
- export default Blanket;