@instructure/ui-tree-browser 10.26.1 → 11.0.1-snapshot-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.
- package/CHANGELOG.md +30 -1
- package/es/TreeBrowser/TreeButton/index.js +6 -6
- package/es/TreeBrowser/TreeButton/props.js +1 -21
- package/es/TreeBrowser/TreeCollection/index.js +6 -6
- package/es/TreeBrowser/TreeCollection/props.js +1 -32
- package/es/TreeBrowser/TreeNode/index.js +6 -6
- package/es/TreeBrowser/TreeNode/props.js +1 -16
- package/es/TreeBrowser/index.js +6 -6
- package/es/TreeBrowser/props.js +1 -27
- package/lib/TreeBrowser/TreeButton/index.js +5 -5
- package/lib/TreeBrowser/TreeButton/props.js +1 -22
- package/lib/TreeBrowser/TreeCollection/index.js +5 -5
- package/lib/TreeBrowser/TreeCollection/props.js +1 -33
- package/lib/TreeBrowser/TreeNode/index.js +5 -5
- package/lib/TreeBrowser/TreeNode/props.js +1 -17
- package/lib/TreeBrowser/index.js +5 -5
- package/lib/TreeBrowser/props.js +1 -27
- package/package.json +14 -17
- package/src/TreeBrowser/TreeButton/index.tsx +2 -4
- package/src/TreeBrowser/TreeButton/props.ts +2 -28
- package/src/TreeBrowser/TreeCollection/index.tsx +3 -5
- package/src/TreeBrowser/TreeCollection/props.ts +2 -40
- package/src/TreeBrowser/TreeNode/index.tsx +7 -5
- package/src/TreeBrowser/TreeNode/props.ts +2 -23
- package/src/TreeBrowser/index.tsx +2 -4
- package/src/TreeBrowser/props.ts +4 -43
- package/tsconfig.build.json +0 -2
- package/tsconfig.build.tsbuildinfo +1 -1
- package/types/TreeBrowser/TreeButton/index.d.ts +0 -1
- package/types/TreeBrowser/TreeButton/index.d.ts.map +1 -1
- package/types/TreeBrowser/TreeButton/props.d.ts +2 -3
- package/types/TreeBrowser/TreeButton/props.d.ts.map +1 -1
- package/types/TreeBrowser/TreeCollection/index.d.ts +2 -10
- package/types/TreeBrowser/TreeCollection/index.d.ts.map +1 -1
- package/types/TreeBrowser/TreeCollection/props.d.ts +2 -3
- package/types/TreeBrowser/TreeCollection/props.d.ts.map +1 -1
- package/types/TreeBrowser/TreeNode/index.d.ts +0 -1
- package/types/TreeBrowser/TreeNode/index.d.ts.map +1 -1
- package/types/TreeBrowser/TreeNode/props.d.ts +2 -3
- package/types/TreeBrowser/TreeNode/props.d.ts.map +1 -1
- package/types/TreeBrowser/index.d.ts +0 -1
- package/types/TreeBrowser/index.d.ts.map +1 -1
- package/types/TreeBrowser/props.d.ts +4 -5
- package/types/TreeBrowser/props.d.ts.map +1 -1
package/lib/TreeBrowser/index.js
CHANGED
|
@@ -11,7 +11,6 @@ var _IconFolderLine = require("@instructure/ui-icons/lib/IconFolderLine.js");
|
|
|
11
11
|
var _IconDocumentLine = require("@instructure/ui-icons/lib/IconDocumentLine.js");
|
|
12
12
|
var _omitProps = require("@instructure/ui-react-utils/lib/omitProps.js");
|
|
13
13
|
var _pickProps = require("@instructure/ui-react-utils/lib/pickProps.js");
|
|
14
|
-
var _testable = require("@instructure/ui-testable/lib/testable.js");
|
|
15
14
|
var _emotion = require("@instructure/emotion");
|
|
16
15
|
var _TreeCollection = require("./TreeCollection");
|
|
17
16
|
var _TreeButton = require("./TreeButton");
|
|
@@ -21,7 +20,7 @@ var _theme = _interopRequireDefault(require("./theme"));
|
|
|
21
20
|
var _props = require("./props");
|
|
22
21
|
var _TreeBrowserContext = _interopRequireDefault(require("./TreeBrowserContext"));
|
|
23
22
|
var _jsxRuntime = require("@emotion/react/jsx-runtime");
|
|
24
|
-
var _dec,
|
|
23
|
+
var _dec, _class, _TreeBrowser;
|
|
25
24
|
/*
|
|
26
25
|
* The MIT License (MIT)
|
|
27
26
|
*
|
|
@@ -50,7 +49,7 @@ var _dec, _dec2, _class, _TreeBrowser;
|
|
|
50
49
|
category: components
|
|
51
50
|
---
|
|
52
51
|
**/
|
|
53
|
-
let TreeBrowser = exports.TreeBrowser = (_dec = (0, _emotion.withStyle)(_styles.default, _theme.default),
|
|
52
|
+
let TreeBrowser = exports.TreeBrowser = (_dec = (0, _emotion.withStyle)(_styles.default, _theme.default), _dec(_class = (_TreeBrowser = class TreeBrowser extends _react.Component {
|
|
54
53
|
constructor(props) {
|
|
55
54
|
super(props);
|
|
56
55
|
this.ref = null;
|
|
@@ -294,11 +293,12 @@ let TreeBrowser = exports.TreeBrowser = (_dec = (0, _emotion.withStyle)(_styles.
|
|
|
294
293
|
this.ref = el;
|
|
295
294
|
},
|
|
296
295
|
"aria-label": this.props.treeLabel,
|
|
296
|
+
"data-cid": "TreeBrowser",
|
|
297
297
|
children: this.renderRoot()
|
|
298
298
|
})
|
|
299
299
|
});
|
|
300
300
|
}
|
|
301
|
-
}, _TreeBrowser.displayName = "TreeBrowser", _TreeBrowser.componentId = 'TreeBrowser', _TreeBrowser.allowedProps = _props.allowedProps, _TreeBrowser.
|
|
301
|
+
}, _TreeBrowser.displayName = "TreeBrowser", _TreeBrowser.componentId = 'TreeBrowser', _TreeBrowser.allowedProps = _props.allowedProps, _TreeBrowser.defaultProps = {
|
|
302
302
|
size: 'medium',
|
|
303
303
|
variant: 'folderTree',
|
|
304
304
|
showRootCollection: true,
|
|
@@ -313,5 +313,5 @@ let TreeBrowser = exports.TreeBrowser = (_dec = (0, _emotion.withStyle)(_styles.
|
|
|
313
313
|
return 0;
|
|
314
314
|
},
|
|
315
315
|
animation: true
|
|
316
|
-
}, _TreeBrowser.Node = _TreeNode.TreeNode, _TreeBrowser.Collection = _TreeCollection.TreeCollection, _TreeBrowser.Button = _TreeButton.TreeButton, _TreeBrowser)) || _class)
|
|
316
|
+
}, _TreeBrowser.Node = _TreeNode.TreeNode, _TreeBrowser.Collection = _TreeCollection.TreeCollection, _TreeBrowser.Button = _TreeButton.TreeButton, _TreeBrowser)) || _class);
|
|
317
317
|
var _default = exports.default = TreeBrowser;
|
package/lib/TreeBrowser/props.js
CHANGED
|
@@ -1,12 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
3
|
Object.defineProperty(exports, "__esModule", {
|
|
5
4
|
value: true
|
|
6
5
|
});
|
|
7
|
-
exports.
|
|
8
|
-
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
9
|
-
var _controllable = require("@instructure/ui-prop-types/lib/controllable.js");
|
|
6
|
+
exports.allowedProps = void 0;
|
|
10
7
|
/*
|
|
11
8
|
* The MIT License (MIT)
|
|
12
9
|
*
|
|
@@ -40,27 +37,4 @@ var _controllable = require("@instructure/ui-prop-types/lib/controllable.js");
|
|
|
40
37
|
|
|
41
38
|
// this is a sum type, so CompareObject is one of CompareCollection OR CompareItem
|
|
42
39
|
|
|
43
|
-
const propTypes = exports.propTypes = {
|
|
44
|
-
collections: _propTypes.default.object.isRequired,
|
|
45
|
-
items: _propTypes.default.object.isRequired,
|
|
46
|
-
rootId: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.number]),
|
|
47
|
-
expanded: (0, _controllable.controllable)(_propTypes.default.arrayOf(_propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.number])), 'onCollectionToggle'),
|
|
48
|
-
defaultExpanded: _propTypes.default.arrayOf(_propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.number])),
|
|
49
|
-
selectionType: _propTypes.default.oneOf(['none', 'single']),
|
|
50
|
-
size: _propTypes.default.oneOf(['small', 'medium', 'large']),
|
|
51
|
-
variant: _propTypes.default.oneOf(['folderTree', 'indent']),
|
|
52
|
-
collectionIcon: _propTypes.default.oneOfType([_propTypes.default.node, _propTypes.default.func]),
|
|
53
|
-
collectionIconExpanded: _propTypes.default.oneOfType([_propTypes.default.node, _propTypes.default.func]),
|
|
54
|
-
itemIcon: _propTypes.default.oneOfType([_propTypes.default.node, _propTypes.default.func]),
|
|
55
|
-
getItemProps: _propTypes.default.func,
|
|
56
|
-
getCollectionProps: _propTypes.default.func,
|
|
57
|
-
showRootCollection: _propTypes.default.bool,
|
|
58
|
-
onCollectionClick: _propTypes.default.func,
|
|
59
|
-
onCollectionToggle: _propTypes.default.func,
|
|
60
|
-
onItemClick: _propTypes.default.func,
|
|
61
|
-
treeLabel: _propTypes.default.string,
|
|
62
|
-
renderContent: _propTypes.default.func,
|
|
63
|
-
sortOrder: _propTypes.default.func,
|
|
64
|
-
animation: _propTypes.default.bool
|
|
65
|
-
};
|
|
66
40
|
const allowedProps = exports.allowedProps = ['collections', 'items', 'rootId', 'expanded', 'defaultExpanded', 'selectionType', 'size', 'variant', 'collectionIcon', 'collectionIconExpanded', 'itemIcon', 'getItemProps', 'getCollectionProps', 'showRootCollection', 'onCollectionClick', 'onCollectionToggle', 'onItemClick', 'treeLabel', 'renderContent', 'sortOrder', 'animation'];
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@instructure/ui-tree-browser",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "11.0.1-snapshot-0",
|
|
4
4
|
"description": "A component for displaying a hierarchical view of information",
|
|
5
5
|
"author": "Instructure, Inc. Engineering and Product Design",
|
|
6
6
|
"module": "./es/index.js",
|
|
@@ -23,29 +23,26 @@
|
|
|
23
23
|
},
|
|
24
24
|
"license": "MIT",
|
|
25
25
|
"devDependencies": {
|
|
26
|
-
"@instructure/ui-axe-check": "
|
|
27
|
-
"@instructure/ui-babel-preset": "
|
|
28
|
-
"@instructure/ui-color-utils": "
|
|
29
|
-
"@instructure/ui-themes": "
|
|
26
|
+
"@instructure/ui-axe-check": "11.0.1-snapshot-0",
|
|
27
|
+
"@instructure/ui-babel-preset": "11.0.1-snapshot-0",
|
|
28
|
+
"@instructure/ui-color-utils": "11.0.1-snapshot-0",
|
|
29
|
+
"@instructure/ui-themes": "11.0.1-snapshot-0",
|
|
30
30
|
"@testing-library/jest-dom": "^6.6.3",
|
|
31
|
-
"@testing-library/react": "
|
|
31
|
+
"@testing-library/react": "15.0.7",
|
|
32
32
|
"vitest": "^3.2.2"
|
|
33
33
|
},
|
|
34
34
|
"dependencies": {
|
|
35
35
|
"@babel/runtime": "^7.27.6",
|
|
36
|
-
"@instructure/emotion": "
|
|
37
|
-
"@instructure/shared-types": "
|
|
38
|
-
"@instructure/ui-icons": "
|
|
39
|
-
"@instructure/ui-img": "
|
|
40
|
-
"@instructure/ui-
|
|
41
|
-
"@instructure/ui-
|
|
42
|
-
"
|
|
43
|
-
"@instructure/ui-utils": "10.26.1",
|
|
44
|
-
"keycode": "^2",
|
|
45
|
-
"prop-types": "^15.8.1"
|
|
36
|
+
"@instructure/emotion": "11.0.1-snapshot-0",
|
|
37
|
+
"@instructure/shared-types": "11.0.1-snapshot-0",
|
|
38
|
+
"@instructure/ui-icons": "11.0.1-snapshot-0",
|
|
39
|
+
"@instructure/ui-img": "11.0.1-snapshot-0",
|
|
40
|
+
"@instructure/ui-react-utils": "11.0.1-snapshot-0",
|
|
41
|
+
"@instructure/ui-utils": "11.0.1-snapshot-0",
|
|
42
|
+
"keycode": "^2"
|
|
46
43
|
},
|
|
47
44
|
"peerDependencies": {
|
|
48
|
-
"react": ">=
|
|
45
|
+
"react": ">=18 <=19"
|
|
49
46
|
},
|
|
50
47
|
"publishConfig": {
|
|
51
48
|
"access": "public"
|
|
@@ -24,7 +24,6 @@
|
|
|
24
24
|
|
|
25
25
|
import { Component, ContextType } from 'react'
|
|
26
26
|
|
|
27
|
-
import { testable } from '@instructure/ui-testable'
|
|
28
27
|
import { Img } from '@instructure/ui-img'
|
|
29
28
|
import { callRenderProp } from '@instructure/ui-react-utils'
|
|
30
29
|
import { withStyle } from '@instructure/emotion'
|
|
@@ -32,7 +31,7 @@ import { withStyle } from '@instructure/emotion'
|
|
|
32
31
|
import generateStyles from './styles'
|
|
33
32
|
import generateComponentTheme from './theme'
|
|
34
33
|
import type { TreeBrowserButtonProps } from './props'
|
|
35
|
-
import { allowedProps
|
|
34
|
+
import { allowedProps } from './props'
|
|
36
35
|
import TreeBrowserContext from '../TreeBrowserContext'
|
|
37
36
|
|
|
38
37
|
// Todo: merge TreeButton and TreeNode: TreeButton should be a special type of TreeNode
|
|
@@ -44,12 +43,10 @@ id: TreeBrowser.Button
|
|
|
44
43
|
---
|
|
45
44
|
**/
|
|
46
45
|
@withStyle(generateStyles, generateComponentTheme)
|
|
47
|
-
@testable()
|
|
48
46
|
class TreeButton extends Component<TreeBrowserButtonProps> {
|
|
49
47
|
static readonly componentId = 'TreeBrowser.Button'
|
|
50
48
|
|
|
51
49
|
static allowedProps = allowedProps
|
|
52
|
-
static propTypes = propTypes
|
|
53
50
|
|
|
54
51
|
static contextType = TreeBrowserContext
|
|
55
52
|
declare context: ContextType<typeof TreeBrowserContext>
|
|
@@ -151,6 +148,7 @@ class TreeButton extends Component<TreeBrowserButtonProps> {
|
|
|
151
148
|
tabIndex={-1}
|
|
152
149
|
type="button"
|
|
153
150
|
css={styles?.treeButton}
|
|
151
|
+
data-cid="TreeButton"
|
|
154
152
|
>
|
|
155
153
|
{buttonContent}
|
|
156
154
|
</button>
|
|
@@ -23,13 +23,8 @@
|
|
|
23
23
|
*/
|
|
24
24
|
|
|
25
25
|
import React from 'react'
|
|
26
|
-
import PropTypes from 'prop-types'
|
|
27
|
-
|
|
28
26
|
import type { WithStyleProps, ComponentStyle } from '@instructure/emotion'
|
|
29
|
-
import type {
|
|
30
|
-
PropValidators,
|
|
31
|
-
TreeBrowserButtonTheme
|
|
32
|
-
} from '@instructure/shared-types'
|
|
27
|
+
import type { TreeBrowserButtonTheme } from '@instructure/shared-types'
|
|
33
28
|
import type { TreeBrowserCommonProps } from '../props'
|
|
34
29
|
|
|
35
30
|
type TreeBrowserButtonOwnProps = {
|
|
@@ -69,27 +64,6 @@ type TreeBrowserButtonStyle = ComponentStyle<
|
|
|
69
64
|
| 'thumbnail'
|
|
70
65
|
| 'node'
|
|
71
66
|
>
|
|
72
|
-
|
|
73
|
-
const propTypes: PropValidators<PropKeys> = {
|
|
74
|
-
id: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
|
|
75
|
-
name: PropTypes.string,
|
|
76
|
-
descriptor: PropTypes.string,
|
|
77
|
-
type: PropTypes.string,
|
|
78
|
-
size: PropTypes.oneOf(['small', 'medium', 'large']),
|
|
79
|
-
variant: PropTypes.oneOf(['folderTree', 'indent']),
|
|
80
|
-
collectionIcon: PropTypes.oneOfType([PropTypes.node, PropTypes.func]),
|
|
81
|
-
collectionIconExpanded: PropTypes.oneOfType([PropTypes.node, PropTypes.func]),
|
|
82
|
-
itemIcon: PropTypes.oneOfType([PropTypes.node, PropTypes.func]),
|
|
83
|
-
thumbnail: PropTypes.string,
|
|
84
|
-
onClick: PropTypes.func,
|
|
85
|
-
expanded: PropTypes.bool,
|
|
86
|
-
selected: PropTypes.bool,
|
|
87
|
-
focused: PropTypes.bool,
|
|
88
|
-
level: PropTypes.number,
|
|
89
|
-
containerRef: PropTypes.func,
|
|
90
|
-
renderContent: PropTypes.func
|
|
91
|
-
}
|
|
92
|
-
|
|
93
67
|
const allowedProps: AllowedPropKeys = [
|
|
94
68
|
'id',
|
|
95
69
|
'name',
|
|
@@ -111,4 +85,4 @@ const allowedProps: AllowedPropKeys = [
|
|
|
111
85
|
]
|
|
112
86
|
|
|
113
87
|
export type { TreeBrowserButtonProps, TreeBrowserButtonStyle }
|
|
114
|
-
export {
|
|
88
|
+
export { allowedProps }
|
|
@@ -24,7 +24,6 @@
|
|
|
24
24
|
|
|
25
25
|
import { Component, ContextType, ReactElement, SyntheticEvent } from 'react'
|
|
26
26
|
|
|
27
|
-
import { testable } from '@instructure/ui-testable'
|
|
28
27
|
import { withStyle } from '@instructure/emotion'
|
|
29
28
|
import { safeCloneElement } from '@instructure/ui-react-utils'
|
|
30
29
|
|
|
@@ -34,7 +33,7 @@ import generateStyles from './styles'
|
|
|
34
33
|
import generateComponentTheme from './theme'
|
|
35
34
|
import type { TreeBrowserCollectionProps, TreeCollectionState } from './props'
|
|
36
35
|
import type { CompareObject } from '../props'
|
|
37
|
-
import { allowedProps
|
|
36
|
+
import { allowedProps } from './props'
|
|
38
37
|
import { CollectionItem, CollectionProps, CollectionData } from '../props'
|
|
39
38
|
import TreeBrowserContext from '../TreeBrowserContext'
|
|
40
39
|
|
|
@@ -47,7 +46,6 @@ id: TreeBrowser.Collection
|
|
|
47
46
|
---
|
|
48
47
|
**/
|
|
49
48
|
@withStyle(generateStyles, generateComponentTheme)
|
|
50
|
-
@testable()
|
|
51
49
|
class TreeCollection extends Component<
|
|
52
50
|
TreeBrowserCollectionProps,
|
|
53
51
|
TreeCollectionState
|
|
@@ -55,7 +53,6 @@ class TreeCollection extends Component<
|
|
|
55
53
|
static readonly componentId = 'TreeBrowser.Collection'
|
|
56
54
|
|
|
57
55
|
static allowedProps = allowedProps
|
|
58
|
-
static propTypes = propTypes
|
|
59
56
|
|
|
60
57
|
static contextType = TreeBrowserContext
|
|
61
58
|
declare context: ContextType<typeof TreeBrowserContext>
|
|
@@ -213,7 +210,7 @@ class TreeCollection extends Component<
|
|
|
213
210
|
|
|
214
211
|
renderCollectionChildren(
|
|
215
212
|
collectionId: string | number | undefined,
|
|
216
|
-
child: ReactElement
|
|
213
|
+
child: ReactElement<any>,
|
|
217
214
|
position: number,
|
|
218
215
|
keyword: 'before' | 'after'
|
|
219
216
|
) {
|
|
@@ -401,6 +398,7 @@ class TreeCollection extends Component<
|
|
|
401
398
|
onFocus={(e) => this.handleFocus(e, { id: id, type: 'collection' })}
|
|
402
399
|
onBlur={(e) => this.handleBlur(e, { id: id, type: 'collection' })}
|
|
403
400
|
{...ariaSelected}
|
|
401
|
+
data-cid="TreeCollection"
|
|
404
402
|
>
|
|
405
403
|
<TreeButton {...collectionProps} />
|
|
406
404
|
{expanded && this.childCount > 0 && (
|
|
@@ -23,17 +23,9 @@
|
|
|
23
23
|
*/
|
|
24
24
|
|
|
25
25
|
import React from 'react'
|
|
26
|
-
import PropTypes from 'prop-types'
|
|
27
26
|
|
|
28
|
-
import { Children } from '@instructure/ui-prop-types'
|
|
29
|
-
|
|
30
|
-
import { TreeNode } from '../TreeNode'
|
|
31
27
|
import type { CollectionData } from '../props'
|
|
32
|
-
|
|
33
|
-
import type {
|
|
34
|
-
PropValidators,
|
|
35
|
-
TreeBrowserCollectionTheme
|
|
36
|
-
} from '@instructure/shared-types'
|
|
28
|
+
import type { TreeBrowserCollectionTheme } from '@instructure/shared-types'
|
|
37
29
|
import type { WithStyleProps, ComponentStyle } from '@instructure/emotion'
|
|
38
30
|
import { CollectionProps, TreeBrowserBaseProps } from '../props'
|
|
39
31
|
|
|
@@ -58,36 +50,6 @@ type TreeBrowserCollectionProps = TreeBrowserCollectionOwnProps &
|
|
|
58
50
|
type TreeBrowserCollectionStyle = ComponentStyle<
|
|
59
51
|
'treeCollection' | 'list' | 'item'
|
|
60
52
|
>
|
|
61
|
-
|
|
62
|
-
const propTypes: PropValidators<PropKeys> = {
|
|
63
|
-
id: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
|
|
64
|
-
name: PropTypes.string,
|
|
65
|
-
descriptor: PropTypes.string,
|
|
66
|
-
items: PropTypes.array,
|
|
67
|
-
collections: PropTypes.array,
|
|
68
|
-
expanded: PropTypes.bool,
|
|
69
|
-
selection: PropTypes.string,
|
|
70
|
-
size: PropTypes.oneOf(['small', 'medium', 'large']),
|
|
71
|
-
variant: PropTypes.oneOf(['folderTree', 'indent']),
|
|
72
|
-
collectionIcon: PropTypes.oneOfType([PropTypes.node, PropTypes.func]),
|
|
73
|
-
collectionIconExpanded: PropTypes.oneOfType([PropTypes.node, PropTypes.func]),
|
|
74
|
-
itemIcon: PropTypes.oneOfType([PropTypes.node, PropTypes.func]),
|
|
75
|
-
getItemProps: PropTypes.func,
|
|
76
|
-
getCollectionProps: PropTypes.func,
|
|
77
|
-
onItemClick: PropTypes.func,
|
|
78
|
-
onCollectionClick: PropTypes.func,
|
|
79
|
-
onKeyDown: PropTypes.func,
|
|
80
|
-
numChildren: PropTypes.number,
|
|
81
|
-
level: PropTypes.number.isRequired,
|
|
82
|
-
position: PropTypes.number,
|
|
83
|
-
renderBeforeItems: Children.oneOf([TreeNode]),
|
|
84
|
-
renderAfterItems: Children.oneOf([TreeNode]),
|
|
85
|
-
containerRef: PropTypes.func,
|
|
86
|
-
isCollectionFlattened: PropTypes.bool,
|
|
87
|
-
renderContent: PropTypes.func,
|
|
88
|
-
compareFunc: PropTypes.func
|
|
89
|
-
}
|
|
90
|
-
|
|
91
53
|
const allowedProps: AllowedPropKeys = [
|
|
92
54
|
'id',
|
|
93
55
|
'name',
|
|
@@ -123,4 +85,4 @@ export type {
|
|
|
123
85
|
TreeBrowserCollectionStyle,
|
|
124
86
|
TreeCollectionState
|
|
125
87
|
}
|
|
126
|
-
export {
|
|
88
|
+
export { allowedProps }
|
|
@@ -26,13 +26,12 @@ import { Component, ContextType } from 'react'
|
|
|
26
26
|
|
|
27
27
|
import { Img } from '@instructure/ui-img'
|
|
28
28
|
import { callRenderProp } from '@instructure/ui-react-utils'
|
|
29
|
-
import { testable } from '@instructure/ui-testable'
|
|
30
29
|
import { withStyle } from '@instructure/emotion'
|
|
31
30
|
|
|
32
31
|
import generateStyles from '../TreeButton/styles'
|
|
33
32
|
import generateComponentTheme from '../TreeButton/theme'
|
|
34
33
|
import type { TreeBrowserNodeProps } from './props'
|
|
35
|
-
import { allowedProps
|
|
34
|
+
import { allowedProps } from './props'
|
|
36
35
|
import TreeBrowserContext from '../TreeBrowserContext'
|
|
37
36
|
|
|
38
37
|
// Todo: merge TreeButton and TreeNode: TreeButton should be a special type of TreeNode
|
|
@@ -46,12 +45,10 @@ A helper class used to render the :renderBeforeItems and :renderAfterItems
|
|
|
46
45
|
in the TreeBrowser.
|
|
47
46
|
**/
|
|
48
47
|
@withStyle(generateStyles, generateComponentTheme)
|
|
49
|
-
@testable()
|
|
50
48
|
class TreeNode extends Component<TreeBrowserNodeProps> {
|
|
51
49
|
static readonly componentId = 'TreeBrowser.Node'
|
|
52
50
|
|
|
53
51
|
static allowedProps = allowedProps
|
|
54
|
-
static propTypes = propTypes
|
|
55
52
|
|
|
56
53
|
static contextType = TreeBrowserContext
|
|
57
54
|
declare context: ContextType<typeof TreeBrowserContext>
|
|
@@ -98,7 +95,12 @@ class TreeNode extends Component<TreeBrowserNodeProps> {
|
|
|
98
95
|
render() {
|
|
99
96
|
const { children, styles } = this.props
|
|
100
97
|
return (
|
|
101
|
-
<div
|
|
98
|
+
<div
|
|
99
|
+
ref={this.handleRef}
|
|
100
|
+
tabIndex={-1}
|
|
101
|
+
css={styles?.treeButton}
|
|
102
|
+
data-cid="TreeNode"
|
|
103
|
+
>
|
|
102
104
|
<span css={styles?.layout}>
|
|
103
105
|
{this.renderItemImage()}
|
|
104
106
|
<span css={styles?.node}>{children}</span>
|
|
@@ -23,12 +23,7 @@
|
|
|
23
23
|
*/
|
|
24
24
|
|
|
25
25
|
import React from 'react'
|
|
26
|
-
import
|
|
27
|
-
|
|
28
|
-
import type {
|
|
29
|
-
PropValidators,
|
|
30
|
-
TreeBrowserButtonTheme
|
|
31
|
-
} from '@instructure/shared-types'
|
|
26
|
+
import type { TreeBrowserButtonTheme } from '@instructure/shared-types'
|
|
32
27
|
import type { WithStyleProps } from '@instructure/emotion'
|
|
33
28
|
|
|
34
29
|
import type {
|
|
@@ -63,22 +58,6 @@ type AllowedPropKeys = Readonly<Array<PropKeys>>
|
|
|
63
58
|
|
|
64
59
|
type TreeBrowserNodeProps = TreeBrowserNodeOwnProps &
|
|
65
60
|
WithStyleProps<TreeBrowserButtonTheme, TreeBrowserButtonStyle>
|
|
66
|
-
|
|
67
|
-
const propTypes: PropValidators<PropKeys> = {
|
|
68
|
-
id: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
|
|
69
|
-
size: PropTypes.oneOf(['small', 'medium', 'large']),
|
|
70
|
-
variant: PropTypes.oneOf(['folderTree', 'indent']),
|
|
71
|
-
selected: PropTypes.bool,
|
|
72
|
-
focused: PropTypes.bool,
|
|
73
|
-
itemIcon: PropTypes.oneOfType([PropTypes.node, PropTypes.func]),
|
|
74
|
-
thumbnail: PropTypes.string,
|
|
75
|
-
level: PropTypes.number,
|
|
76
|
-
children: PropTypes.node,
|
|
77
|
-
containerRef: PropTypes.func,
|
|
78
|
-
onKeyDown: PropTypes.func,
|
|
79
|
-
onClick: PropTypes.func
|
|
80
|
-
}
|
|
81
|
-
|
|
82
61
|
const allowedProps: AllowedPropKeys = [
|
|
83
62
|
'id',
|
|
84
63
|
'size',
|
|
@@ -95,4 +74,4 @@ const allowedProps: AllowedPropKeys = [
|
|
|
95
74
|
]
|
|
96
75
|
|
|
97
76
|
export type { TreeBrowserNodeProps }
|
|
98
|
-
export {
|
|
77
|
+
export { allowedProps }
|
|
@@ -28,7 +28,6 @@ import keycode from 'keycode'
|
|
|
28
28
|
import { IconFolderLine, IconDocumentLine } from '@instructure/ui-icons'
|
|
29
29
|
|
|
30
30
|
import { omitProps, pickProps } from '@instructure/ui-react-utils'
|
|
31
|
-
import { testable } from '@instructure/ui-testable'
|
|
32
31
|
import { withStyle } from '@instructure/emotion'
|
|
33
32
|
|
|
34
33
|
import { TreeCollection } from './TreeCollection'
|
|
@@ -44,7 +43,7 @@ import type {
|
|
|
44
43
|
TreeBrowserProps,
|
|
45
44
|
TreeBrowserState
|
|
46
45
|
} from './props'
|
|
47
|
-
import { allowedProps
|
|
46
|
+
import { allowedProps } from './props'
|
|
48
47
|
import TreeBrowserContext from './TreeBrowserContext'
|
|
49
48
|
|
|
50
49
|
/**
|
|
@@ -53,12 +52,10 @@ category: components
|
|
|
53
52
|
---
|
|
54
53
|
**/
|
|
55
54
|
@withStyle(generateStyles, generateComponentTheme)
|
|
56
|
-
@testable()
|
|
57
55
|
class TreeBrowser extends Component<TreeBrowserProps, TreeBrowserState> {
|
|
58
56
|
static readonly componentId = 'TreeBrowser'
|
|
59
57
|
|
|
60
58
|
static allowedProps = allowedProps
|
|
61
|
-
static propTypes = propTypes
|
|
62
59
|
|
|
63
60
|
static defaultProps = {
|
|
64
61
|
size: 'medium',
|
|
@@ -380,6 +377,7 @@ class TreeBrowser extends Component<TreeBrowserProps, TreeBrowserState> {
|
|
|
380
377
|
this.ref = el
|
|
381
378
|
}}
|
|
382
379
|
aria-label={this.props.treeLabel}
|
|
380
|
+
data-cid="TreeBrowser"
|
|
383
381
|
>
|
|
384
382
|
{this.renderRoot()}
|
|
385
383
|
</ul>
|
package/src/TreeBrowser/props.ts
CHANGED
|
@@ -22,16 +22,9 @@
|
|
|
22
22
|
* SOFTWARE.
|
|
23
23
|
*/
|
|
24
24
|
|
|
25
|
-
import
|
|
26
|
-
|
|
27
|
-
import { controllable } from '@instructure/ui-prop-types'
|
|
28
|
-
|
|
29
|
-
import type {
|
|
30
|
-
PropValidators,
|
|
31
|
-
TreeBrowserTheme
|
|
32
|
-
} from '@instructure/shared-types'
|
|
25
|
+
import type { TreeBrowserTheme } from '@instructure/shared-types'
|
|
33
26
|
import type { WithStyleProps, ComponentStyle } from '@instructure/emotion'
|
|
34
|
-
import { ReactElement } from 'react'
|
|
27
|
+
import React, { ReactElement } from 'react'
|
|
35
28
|
import type { TreeBrowserButtonProps } from './TreeButton/props'
|
|
36
29
|
import { Renderable } from '@instructure/shared-types'
|
|
37
30
|
|
|
@@ -115,7 +108,7 @@ type TreeBrowserCommonProps = {
|
|
|
115
108
|
collectionIcon?: Renderable
|
|
116
109
|
collectionIconExpanded?: Renderable
|
|
117
110
|
itemIcon?: Renderable
|
|
118
|
-
renderContent?: (props: TreeBrowserButtonProps) => JSX.Element
|
|
111
|
+
renderContent?: (props: TreeBrowserButtonProps) => React.JSX.Element
|
|
119
112
|
}
|
|
120
113
|
|
|
121
114
|
type PropKeys = keyof TreeBrowserOwnProps
|
|
@@ -180,38 +173,6 @@ type CollectionData = {
|
|
|
180
173
|
expanded?: boolean
|
|
181
174
|
type: 'child' | 'collection' | 'item'
|
|
182
175
|
}
|
|
183
|
-
|
|
184
|
-
const propTypes: PropValidators<PropKeys> = {
|
|
185
|
-
collections: PropTypes.object.isRequired,
|
|
186
|
-
items: PropTypes.object.isRequired,
|
|
187
|
-
rootId: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
|
|
188
|
-
expanded: controllable(
|
|
189
|
-
PropTypes.arrayOf(
|
|
190
|
-
PropTypes.oneOfType([PropTypes.string, PropTypes.number])
|
|
191
|
-
),
|
|
192
|
-
'onCollectionToggle'
|
|
193
|
-
),
|
|
194
|
-
defaultExpanded: PropTypes.arrayOf(
|
|
195
|
-
PropTypes.oneOfType([PropTypes.string, PropTypes.number])
|
|
196
|
-
),
|
|
197
|
-
selectionType: PropTypes.oneOf(['none', 'single']),
|
|
198
|
-
size: PropTypes.oneOf(['small', 'medium', 'large']),
|
|
199
|
-
variant: PropTypes.oneOf(['folderTree', 'indent']),
|
|
200
|
-
collectionIcon: PropTypes.oneOfType([PropTypes.node, PropTypes.func]),
|
|
201
|
-
collectionIconExpanded: PropTypes.oneOfType([PropTypes.node, PropTypes.func]),
|
|
202
|
-
itemIcon: PropTypes.oneOfType([PropTypes.node, PropTypes.func]),
|
|
203
|
-
getItemProps: PropTypes.func,
|
|
204
|
-
getCollectionProps: PropTypes.func,
|
|
205
|
-
showRootCollection: PropTypes.bool,
|
|
206
|
-
onCollectionClick: PropTypes.func,
|
|
207
|
-
onCollectionToggle: PropTypes.func,
|
|
208
|
-
onItemClick: PropTypes.func,
|
|
209
|
-
treeLabel: PropTypes.string,
|
|
210
|
-
renderContent: PropTypes.func,
|
|
211
|
-
sortOrder: PropTypes.func,
|
|
212
|
-
animation: PropTypes.bool
|
|
213
|
-
}
|
|
214
|
-
|
|
215
176
|
const allowedProps: AllowedPropKeys = [
|
|
216
177
|
'collections',
|
|
217
178
|
'items',
|
|
@@ -255,4 +216,4 @@ export type {
|
|
|
255
216
|
TreeBrowserBaseProps,
|
|
256
217
|
TreeBrowserCommonProps
|
|
257
218
|
}
|
|
258
|
-
export {
|
|
219
|
+
export { allowedProps }
|
package/tsconfig.build.json
CHANGED
|
@@ -15,9 +15,7 @@
|
|
|
15
15
|
{ "path": "../shared-types/tsconfig.build.json" },
|
|
16
16
|
{ "path": "../ui-icons/tsconfig.build.json" },
|
|
17
17
|
{ "path": "../ui-img/tsconfig.build.json" },
|
|
18
|
-
{ "path": "../ui-prop-types/tsconfig.build.json" },
|
|
19
18
|
{ "path": "../ui-react-utils/tsconfig.build.json" },
|
|
20
|
-
{ "path": "../ui-testable/tsconfig.build.json" },
|
|
21
19
|
{ "path": "../ui-utils/tsconfig.build.json" }
|
|
22
20
|
]
|
|
23
21
|
}
|