@instructure/ui-drawer-layout 10.26.1-snapshot-2 → 10.26.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.
Files changed (39) hide show
  1. package/CHANGELOG.md +8 -18
  2. package/es/DrawerLayout/DrawerContent/index.js +6 -6
  3. package/es/DrawerLayout/DrawerContent/props.js +9 -1
  4. package/es/DrawerLayout/DrawerTray/index.js +6 -6
  5. package/es/DrawerLayout/DrawerTray/props.js +32 -1
  6. package/es/DrawerLayout/__fixtures__/DrawerLayout.fixture.js +8 -0
  7. package/es/DrawerLayout/index.js +6 -6
  8. package/es/DrawerLayout/props.js +12 -1
  9. package/lib/DrawerLayout/DrawerContent/index.js +5 -5
  10. package/lib/DrawerLayout/DrawerContent/props.js +10 -1
  11. package/lib/DrawerLayout/DrawerTray/index.js +5 -5
  12. package/lib/DrawerLayout/DrawerTray/props.js +33 -1
  13. package/lib/DrawerLayout/__fixtures__/DrawerLayout.fixture.js +9 -0
  14. package/lib/DrawerLayout/index.js +5 -5
  15. package/lib/DrawerLayout/props.js +13 -1
  16. package/package.json +22 -19
  17. package/src/DrawerLayout/DrawerContent/index.tsx +4 -2
  18. package/src/DrawerLayout/DrawerContent/props.ts +12 -1
  19. package/src/DrawerLayout/DrawerTray/index.tsx +4 -2
  20. package/src/DrawerLayout/DrawerTray/props.ts +50 -1
  21. package/src/DrawerLayout/__fixtures__/DrawerLayout.fixture.tsx +9 -0
  22. package/src/DrawerLayout/index.tsx +4 -2
  23. package/src/DrawerLayout/props.ts +18 -1
  24. package/tsconfig.build.json +2 -0
  25. package/tsconfig.build.tsbuildinfo +1 -1
  26. package/types/DrawerLayout/DrawerContent/index.d.ts +7 -0
  27. package/types/DrawerLayout/DrawerContent/index.d.ts.map +1 -1
  28. package/types/DrawerLayout/DrawerContent/props.d.ts +3 -2
  29. package/types/DrawerLayout/DrawerContent/props.d.ts.map +1 -1
  30. package/types/DrawerLayout/DrawerTray/index.d.ts +17 -0
  31. package/types/DrawerLayout/DrawerTray/index.d.ts.map +1 -1
  32. package/types/DrawerLayout/DrawerTray/props.d.ts +12 -2
  33. package/types/DrawerLayout/DrawerTray/props.d.ts.map +1 -1
  34. package/types/DrawerLayout/__fixtures__/DrawerLayout.fixture.d.ts +8 -0
  35. package/types/DrawerLayout/__fixtures__/DrawerLayout.fixture.d.ts.map +1 -1
  36. package/types/DrawerLayout/index.d.ts +1 -0
  37. package/types/DrawerLayout/index.d.ts.map +1 -1
  38. package/types/DrawerLayout/props.d.ts +3 -1
  39. package/types/DrawerLayout/props.d.ts.map +1 -1
@@ -23,8 +23,10 @@
23
23
  */
24
24
 
25
25
  import { AriaRole } from 'react'
26
+ import PropTypes from 'prop-types'
26
27
 
27
28
  import type {
29
+ PropValidators,
28
30
  DrawerLayoutContentTheme,
29
31
  OtherHTMLAttributes
30
32
  } from '@instructure/shared-types'
@@ -56,6 +58,15 @@ type DrawerLayoutContentProps = DrawerLayoutContentOwnProps &
56
58
  OtherHTMLAttributes<DrawerLayoutContentOwnProps>
57
59
 
58
60
  type DrawerLayoutContentStyle = ComponentStyle<'drawerContent'>
61
+
62
+ const propTypes: PropValidators<PropKeys> = {
63
+ label: PropTypes.string.isRequired,
64
+ children: PropTypes.node,
65
+ contentRef: PropTypes.func,
66
+ onSizeChange: PropTypes.func,
67
+ role: PropTypes.string
68
+ }
69
+
59
70
  const allowedProps: AllowedPropKeys = [
60
71
  'label',
61
72
  'children',
@@ -70,4 +81,4 @@ export type {
70
81
  DrawerLayoutContentStyle,
71
82
  DrawerContentSize
72
83
  }
73
- export { allowedProps }
84
+ export { propTypes, allowedProps }
@@ -30,6 +30,7 @@ import { Transition } from '@instructure/ui-motion'
30
30
  import type { TransitionType } from '@instructure/ui-motion'
31
31
  import { omitProps } from '@instructure/ui-react-utils'
32
32
  import { createChainedFunction } from '@instructure/ui-utils'
33
+ import { testable } from '@instructure/ui-testable'
33
34
  import { Dialog } from '@instructure/ui-dialog'
34
35
  import { Portal } from '@instructure/ui-portal'
35
36
  import type { PortalNode } from '@instructure/ui-portal'
@@ -39,7 +40,7 @@ import generateStyle from './styles'
39
40
  import generateComponentTheme from './theme'
40
41
  import { DrawerLayoutContext } from '../index'
41
42
 
42
- import { allowedProps } from './props'
43
+ import { propTypes, allowedProps } from './props'
43
44
  import type {
44
45
  DrawerLayoutTrayProps,
45
46
  DrawerLayoutTrayState,
@@ -55,6 +56,7 @@ id: DrawerLayout.Tray
55
56
  **/
56
57
  @withStyle(generateStyle, generateComponentTheme)
57
58
  @textDirectionContextConsumer()
59
+ @testable()
58
60
  class DrawerTray extends Component<
59
61
  DrawerLayoutTrayProps,
60
62
  DrawerLayoutTrayState
@@ -63,6 +65,7 @@ class DrawerTray extends Component<
63
65
 
64
66
  static locatorAttribute = 'data-drawer-tray'
65
67
 
68
+ static propTypes = propTypes
66
69
  static allowedProps = allowedProps
67
70
  static defaultProps = {
68
71
  shouldContainFocus: true,
@@ -243,7 +246,6 @@ class DrawerTray extends Component<
243
246
  {...omitProps(props, DrawerTray.allowedProps)}
244
247
  ref={this.handleContentRef}
245
248
  css={trayStyles}
246
- data-cid="DrawerTray"
247
249
  >
248
250
  <Dialog
249
251
  open
@@ -23,6 +23,11 @@
23
23
  */
24
24
 
25
25
  import React from 'react'
26
+ import PropTypes from 'prop-types'
27
+
28
+ import { element } from '@instructure/ui-prop-types'
29
+ import { textDirectionContextConsumer } from '@instructure/ui-i18n'
30
+
26
31
  import type { PositionMountNode } from '@instructure/ui-position'
27
32
  import type { TextDirectionContextConsumerProps } from '@instructure/ui-i18n'
28
33
  import type { ComponentStyle, WithStyleProps } from '@instructure/emotion'
@@ -30,6 +35,7 @@ import type {
30
35
  DrawerLayoutTrayTheme,
31
36
  LiveRegion,
32
37
  OtherHTMLAttributes,
38
+ PropValidators,
33
39
  UIElement
34
40
  } from '@instructure/shared-types'
35
41
  import {
@@ -102,6 +108,15 @@ type PropsPassedToDialog = {
102
108
  */
103
109
  liveRegion?: LiveRegion
104
110
 
111
+ /**
112
+ * Event fired when the underlying FocusRegion is dismissed in overlay mode.
113
+ * This can happen if:
114
+ * - `shouldCloseOnDocumentClick` is `true` and the user
115
+ * clicks outside the `<DrawerLayout.Tray />`
116
+ * - If `shouldCloseOnEscape` is `true` and the user presses the ESC key.
117
+ *
118
+ * This should be used to close the `<DrawerLayout.Tray />` in these cases
119
+ */
105
120
  onDismiss?: (
106
121
  event: React.UIEvent | React.FocusEvent,
107
122
  documentClick?: boolean
@@ -180,6 +195,40 @@ type DrawerLayoutTrayProps = DrawerLayoutTrayOwnProps &
180
195
  type DrawerLayoutTrayStyle = ComponentStyle<
181
196
  'drawerTray' | 'drawerTrayWithShadow' | 'drawerTrayContent'
182
197
  >
198
+
199
+ const propTypes: PropValidators<PropKeys> = {
200
+ label: PropTypes.string.isRequired,
201
+ children: PropTypes.oneOfType([PropTypes.func, PropTypes.node]),
202
+ render: PropTypes.func,
203
+ placement: PropTypes.oneOf(['start', 'end']),
204
+ open: PropTypes.bool,
205
+ onOpen: PropTypes.func,
206
+ onClose: PropTypes.func,
207
+ border: PropTypes.bool,
208
+ shadow: PropTypes.bool,
209
+ onTransition: PropTypes.func,
210
+ onEnter: PropTypes.func,
211
+ onEntering: PropTypes.func,
212
+ onEntered: PropTypes.func,
213
+ onExit: PropTypes.func,
214
+ onExiting: PropTypes.func,
215
+ onExited: PropTypes.func,
216
+ contentRef: PropTypes.func,
217
+ mountNode: PropTypes.oneOfType([element, PropTypes.func]),
218
+ defaultFocusElement: PropTypes.oneOfType([PropTypes.element, PropTypes.func]),
219
+ liveRegion: PropTypes.oneOfType([
220
+ element,
221
+ PropTypes.arrayOf(element),
222
+ PropTypes.func
223
+ ]),
224
+ onDismiss: PropTypes.func,
225
+ shouldContainFocus: PropTypes.bool,
226
+ shouldReturnFocus: PropTypes.bool,
227
+ shouldCloseOnDocumentClick: PropTypes.bool,
228
+ shouldCloseOnEscape: PropTypes.bool,
229
+ dir: PropTypes.oneOf(Object.values(textDirectionContextConsumer.DIRECTION))
230
+ }
231
+
183
232
  const allowedProps: AllowedPropKeys = [
184
233
  'label',
185
234
  'children',
@@ -216,4 +265,4 @@ export type {
216
265
  DrawerLayoutTrayStyleProps,
217
266
  DrawerTrayPlacement
218
267
  }
219
- export { allowedProps }
268
+ export { allowedProps, propTypes }
@@ -23,6 +23,7 @@
23
23
  */
24
24
 
25
25
  import { Component } from 'react'
26
+ import PropTypes from 'prop-types'
26
27
 
27
28
  import { DrawerLayout } from '../index'
28
29
  import type { DrawerLayoutProps } from '../props'
@@ -37,6 +38,14 @@ type DrawerLayoutFixtureProps = {
37
38
  }
38
39
 
39
40
  export default class DrawerLayoutFixture extends Component<DrawerLayoutFixtureProps> {
41
+ static propTypes = {
42
+ layoutWidth: PropTypes.string,
43
+ trayWidth: PropTypes.string,
44
+ placement: PropTypes.string,
45
+ open: PropTypes.bool,
46
+ onOverlayTrayChange: PropTypes.func
47
+ }
48
+
40
49
  static defaultProps = {
41
50
  layoutWidth: '600px',
42
51
  trayWidth: '200px',
@@ -33,6 +33,7 @@ import {
33
33
  import { getBoundingClientRect } from '@instructure/ui-dom-utils'
34
34
  import { createChainedFunction, px } from '@instructure/ui-utils'
35
35
  import { logError as error } from '@instructure/console'
36
+ import { testable } from '@instructure/ui-testable'
36
37
 
37
38
  import { mirrorHorizontalPlacement } from '@instructure/ui-position'
38
39
  import type { PlacementPropValues } from '@instructure/ui-position'
@@ -48,7 +49,7 @@ import type { DrawerLayoutTrayProps } from './DrawerTray/props'
48
49
  import { withStyle } from '@instructure/emotion'
49
50
  import generateStyle from './styles'
50
51
 
51
- import { allowedProps } from './props'
52
+ import { propTypes, allowedProps } from './props'
52
53
  import type { DrawerLayoutProps, DrawerLayoutState } from './props'
53
54
 
54
55
  type TrayChild = ComponentElement<
@@ -69,10 +70,12 @@ category: components
69
70
  @withDeterministicId()
70
71
  @withStyle(generateStyle, null)
71
72
  @textDirectionContextConsumer()
73
+ @testable()
72
74
  class DrawerLayout extends Component<DrawerLayoutProps, DrawerLayoutState> {
73
75
  static readonly componentId = 'DrawerLayout'
74
76
 
75
77
  static locatorAttribute = 'data-drawer-layout'
78
+ static propTypes = propTypes
76
79
  static allowedProps = allowedProps
77
80
  static defaultProps = {
78
81
  minWidth: '30rem'
@@ -321,7 +324,6 @@ class DrawerLayout extends Component<DrawerLayoutProps, DrawerLayoutState> {
321
324
  {...props}
322
325
  css={this.props.styles?.drawerLayout}
323
326
  ref={this.handleRef}
324
- data-cid="DrawerLayout"
325
327
  >
326
328
  {this.renderChildren()}
327
329
  </div>
@@ -23,8 +23,17 @@
23
23
  */
24
24
 
25
25
  import React from 'react'
26
+ import PropTypes from 'prop-types'
27
+
28
+ import { Children as ChildrenPropTypes } from '@instructure/ui-prop-types'
29
+ import { textDirectionContextConsumer } from '@instructure/ui-i18n'
30
+
31
+ import { DrawerContent } from './DrawerContent'
32
+ import { DrawerTray } from './DrawerTray'
33
+
26
34
  import type { TextDirectionContextConsumerProps } from '@instructure/ui-i18n'
27
35
  import type { WithStyleProps, ComponentStyle } from '@instructure/emotion'
36
+ import type { PropValidators } from '@instructure/shared-types'
28
37
  import type { WithDeterministicIdProps } from '@instructure/ui-react-utils'
29
38
 
30
39
  type DrawerLayoutOwnProps = {
@@ -61,6 +70,14 @@ type DrawerLayoutState = {
61
70
  trayWidth: number
62
71
  contentWidth: number
63
72
  }
73
+
74
+ const propTypes: PropValidators<PropKeys> = {
75
+ children: ChildrenPropTypes.oneOfEach([DrawerContent, DrawerTray]),
76
+ minWidth: PropTypes.string,
77
+ onOverlayTrayChange: PropTypes.func,
78
+ dir: PropTypes.oneOf(Object.values(textDirectionContextConsumer.DIRECTION))
79
+ }
80
+
64
81
  const allowedProps: AllowedPropKeys = [
65
82
  'children',
66
83
  'minWidth',
@@ -69,4 +86,4 @@ const allowedProps: AllowedPropKeys = [
69
86
  ]
70
87
 
71
88
  export type { DrawerLayoutProps, DrawerLayoutState, DrawerLayoutStyle }
72
- export { allowedProps }
89
+ export { propTypes, allowedProps }
@@ -17,7 +17,9 @@
17
17
  { "path": "../ui-motion/tsconfig.build.json" },
18
18
  { "path": "../ui-portal/tsconfig.build.json" },
19
19
  { "path": "../ui-position/tsconfig.build.json" },
20
+ { "path": "../ui-prop-types/tsconfig.build.json" },
20
21
  { "path": "../ui-react-utils/tsconfig.build.json" },
22
+ { "path": "../ui-testable/tsconfig.build.json" },
21
23
  { "path": "../ui-utils/tsconfig.build.json" },
22
24
  { "path": "../ui-view/tsconfig.build.json" },
23
25
  { "path": "../uid/tsconfig.build.json" },