@instructure/ui-tree-browser 11.6.0 → 11.6.1-snapshot-129

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 (168) hide show
  1. package/CHANGELOG.md +33 -288
  2. package/es/TreeBrowser/{TreeButton → v1/TreeButton}/index.js +2 -2
  3. package/es/TreeBrowser/{TreeCollection → v1/TreeCollection}/index.js +1 -1
  4. package/es/TreeBrowser/{TreeNode → v1/TreeNode}/index.js +2 -2
  5. package/es/TreeBrowser/{index.js → v1/index.js} +1 -1
  6. package/es/TreeBrowser/v2/TreeBrowserContext.js +39 -0
  7. package/es/TreeBrowser/v2/TreeButton/index.js +202 -0
  8. package/es/TreeBrowser/v2/TreeButton/props.js +26 -0
  9. package/es/TreeBrowser/v2/TreeButton/styles.js +306 -0
  10. package/es/TreeBrowser/v2/TreeCollection/index.js +367 -0
  11. package/es/TreeBrowser/v2/TreeCollection/props.js +26 -0
  12. package/es/TreeBrowser/v2/TreeCollection/styles.js +143 -0
  13. package/es/TreeBrowser/v2/TreeNode/index.js +156 -0
  14. package/es/{index.js → TreeBrowser/v2/TreeNode/props.js} +3 -4
  15. package/es/TreeBrowser/v2/index.js +347 -0
  16. package/es/TreeBrowser/v2/props.js +35 -0
  17. package/es/TreeBrowser/v2/styles.js +71 -0
  18. package/es/exports/a.js +27 -0
  19. package/es/exports/b.js +27 -0
  20. package/lib/TreeBrowser/{TreeButton → v1/TreeButton}/index.js +3 -3
  21. package/lib/TreeBrowser/{TreeCollection → v1/TreeCollection}/index.js +1 -1
  22. package/lib/TreeBrowser/{TreeNode → v1/TreeNode}/index.js +3 -3
  23. package/lib/TreeBrowser/{index.js → v1/index.js} +3 -3
  24. package/lib/TreeBrowser/v2/TreeBrowserContext.js +44 -0
  25. package/lib/TreeBrowser/v2/TreeButton/index.js +208 -0
  26. package/lib/TreeBrowser/v2/TreeButton/props.js +31 -0
  27. package/lib/TreeBrowser/v2/TreeButton/styles.js +312 -0
  28. package/lib/TreeBrowser/v2/TreeCollection/index.js +372 -0
  29. package/lib/TreeBrowser/v2/TreeCollection/props.js +31 -0
  30. package/lib/TreeBrowser/v2/TreeCollection/styles.js +149 -0
  31. package/lib/TreeBrowser/v2/TreeNode/index.js +162 -0
  32. package/lib/TreeBrowser/v2/TreeNode/props.js +31 -0
  33. package/lib/TreeBrowser/v2/index.js +353 -0
  34. package/lib/TreeBrowser/v2/props.js +40 -0
  35. package/lib/TreeBrowser/v2/styles.js +77 -0
  36. package/lib/{index.js → exports/a.js} +5 -5
  37. package/lib/exports/b.js +33 -0
  38. package/package.json +40 -18
  39. package/src/TreeBrowser/{TreeButton → v1/TreeButton}/index.tsx +2 -2
  40. package/src/TreeBrowser/{TreeCollection → v1/TreeCollection}/index.tsx +1 -1
  41. package/src/TreeBrowser/{TreeNode → v1/TreeNode}/index.tsx +2 -2
  42. package/src/TreeBrowser/{index.tsx → v1/index.tsx} +1 -1
  43. package/src/TreeBrowser/v2/README.md +712 -0
  44. package/src/TreeBrowser/v2/TreeBrowserContext.ts +53 -0
  45. package/src/TreeBrowser/v2/TreeButton/index.tsx +210 -0
  46. package/src/TreeBrowser/v2/TreeButton/props.ts +95 -0
  47. package/src/TreeBrowser/v2/TreeButton/styles.ts +331 -0
  48. package/src/TreeBrowser/v2/TreeCollection/index.tsx +416 -0
  49. package/src/TreeBrowser/v2/TreeCollection/props.ts +88 -0
  50. package/src/TreeBrowser/v2/TreeCollection/styles.ts +157 -0
  51. package/src/TreeBrowser/v2/TreeNode/index.tsx +158 -0
  52. package/src/TreeBrowser/v2/TreeNode/props.ts +84 -0
  53. package/src/TreeBrowser/v2/index.tsx +438 -0
  54. package/src/TreeBrowser/v2/props.ts +245 -0
  55. package/src/TreeBrowser/v2/styles.ts +79 -0
  56. package/src/exports/a.ts +32 -0
  57. package/src/exports/b.ts +32 -0
  58. package/tsconfig.build.tsbuildinfo +1 -1
  59. package/types/TreeBrowser/v1/TreeBrowserContext.d.ts.map +1 -0
  60. package/types/TreeBrowser/v1/TreeButton/index.d.ts.map +1 -0
  61. package/types/TreeBrowser/v1/TreeButton/props.d.ts.map +1 -0
  62. package/types/TreeBrowser/v1/TreeButton/styles.d.ts.map +1 -0
  63. package/types/TreeBrowser/v1/TreeButton/theme.d.ts.map +1 -0
  64. package/types/TreeBrowser/{TreeCollection → v1/TreeCollection}/index.d.ts +1 -1
  65. package/types/TreeBrowser/v1/TreeCollection/index.d.ts.map +1 -0
  66. package/types/TreeBrowser/v1/TreeCollection/props.d.ts.map +1 -0
  67. package/types/TreeBrowser/v1/TreeCollection/styles.d.ts.map +1 -0
  68. package/types/TreeBrowser/v1/TreeCollection/theme.d.ts.map +1 -0
  69. package/types/TreeBrowser/v1/TreeNode/index.d.ts.map +1 -0
  70. package/types/TreeBrowser/v1/TreeNode/props.d.ts.map +1 -0
  71. package/types/TreeBrowser/v1/index.d.ts.map +1 -0
  72. package/types/TreeBrowser/v1/props.d.ts.map +1 -0
  73. package/types/TreeBrowser/v1/styles.d.ts.map +1 -0
  74. package/types/TreeBrowser/v1/theme.d.ts.map +1 -0
  75. package/types/TreeBrowser/v2/TreeBrowserContext.d.ts +24 -0
  76. package/types/TreeBrowser/v2/TreeBrowserContext.d.ts.map +1 -0
  77. package/types/TreeBrowser/v2/TreeButton/index.d.ts +44 -0
  78. package/types/TreeBrowser/v2/TreeButton/index.d.ts.map +1 -0
  79. package/types/TreeBrowser/v2/TreeButton/props.d.ts +37 -0
  80. package/types/TreeBrowser/v2/TreeButton/props.d.ts.map +1 -0
  81. package/types/TreeBrowser/v2/TreeButton/styles.d.ts +19 -0
  82. package/types/TreeBrowser/v2/TreeButton/styles.d.ts.map +1 -0
  83. package/types/TreeBrowser/v2/TreeCollection/index.d.ts +66 -0
  84. package/types/TreeBrowser/v2/TreeCollection/index.d.ts.map +1 -0
  85. package/types/TreeBrowser/v2/TreeCollection/props.d.ts +24 -0
  86. package/types/TreeBrowser/v2/TreeCollection/props.d.ts.map +1 -0
  87. package/types/TreeBrowser/v2/TreeCollection/styles.d.ts +18 -0
  88. package/types/TreeBrowser/v2/TreeCollection/styles.d.ts.map +1 -0
  89. package/types/TreeBrowser/v2/TreeNode/index.d.ts +41 -0
  90. package/types/TreeBrowser/v2/TreeNode/index.d.ts.map +1 -0
  91. package/types/TreeBrowser/v2/TreeNode/props.d.ts +25 -0
  92. package/types/TreeBrowser/v2/TreeNode/props.d.ts.map +1 -0
  93. package/types/TreeBrowser/v2/index.d.ts +70 -0
  94. package/types/TreeBrowser/v2/index.d.ts.map +1 -0
  95. package/types/TreeBrowser/v2/props.d.ts +163 -0
  96. package/types/TreeBrowser/v2/props.d.ts.map +1 -0
  97. package/types/TreeBrowser/v2/styles.d.ts +16 -0
  98. package/types/TreeBrowser/v2/styles.d.ts.map +1 -0
  99. package/types/exports/a.d.ts +9 -0
  100. package/types/exports/a.d.ts.map +1 -0
  101. package/types/exports/b.d.ts +9 -0
  102. package/types/exports/b.d.ts.map +1 -0
  103. package/src/index.ts +0 -32
  104. package/types/TreeBrowser/TreeBrowserContext.d.ts.map +0 -1
  105. package/types/TreeBrowser/TreeButton/index.d.ts.map +0 -1
  106. package/types/TreeBrowser/TreeButton/props.d.ts.map +0 -1
  107. package/types/TreeBrowser/TreeButton/styles.d.ts.map +0 -1
  108. package/types/TreeBrowser/TreeButton/theme.d.ts.map +0 -1
  109. package/types/TreeBrowser/TreeCollection/index.d.ts.map +0 -1
  110. package/types/TreeBrowser/TreeCollection/props.d.ts.map +0 -1
  111. package/types/TreeBrowser/TreeCollection/styles.d.ts.map +0 -1
  112. package/types/TreeBrowser/TreeCollection/theme.d.ts.map +0 -1
  113. package/types/TreeBrowser/TreeNode/index.d.ts.map +0 -1
  114. package/types/TreeBrowser/TreeNode/props.d.ts.map +0 -1
  115. package/types/TreeBrowser/index.d.ts.map +0 -1
  116. package/types/TreeBrowser/props.d.ts.map +0 -1
  117. package/types/TreeBrowser/styles.d.ts.map +0 -1
  118. package/types/TreeBrowser/theme.d.ts.map +0 -1
  119. package/types/index.d.ts +0 -9
  120. package/types/index.d.ts.map +0 -1
  121. /package/es/TreeBrowser/{TreeBrowserContext.js → v1/TreeBrowserContext.js} +0 -0
  122. /package/es/TreeBrowser/{TreeButton → v1/TreeButton}/props.js +0 -0
  123. /package/es/TreeBrowser/{TreeButton → v1/TreeButton}/styles.js +0 -0
  124. /package/es/TreeBrowser/{TreeButton → v1/TreeButton}/theme.js +0 -0
  125. /package/es/TreeBrowser/{TreeCollection → v1/TreeCollection}/props.js +0 -0
  126. /package/es/TreeBrowser/{TreeCollection → v1/TreeCollection}/styles.js +0 -0
  127. /package/es/TreeBrowser/{TreeCollection → v1/TreeCollection}/theme.js +0 -0
  128. /package/es/TreeBrowser/{TreeNode → v1/TreeNode}/props.js +0 -0
  129. /package/es/TreeBrowser/{props.js → v1/props.js} +0 -0
  130. /package/es/TreeBrowser/{styles.js → v1/styles.js} +0 -0
  131. /package/es/TreeBrowser/{theme.js → v1/theme.js} +0 -0
  132. /package/lib/TreeBrowser/{TreeBrowserContext.js → v1/TreeBrowserContext.js} +0 -0
  133. /package/lib/TreeBrowser/{TreeButton → v1/TreeButton}/props.js +0 -0
  134. /package/lib/TreeBrowser/{TreeButton → v1/TreeButton}/styles.js +0 -0
  135. /package/lib/TreeBrowser/{TreeButton → v1/TreeButton}/theme.js +0 -0
  136. /package/lib/TreeBrowser/{TreeCollection → v1/TreeCollection}/props.js +0 -0
  137. /package/lib/TreeBrowser/{TreeCollection → v1/TreeCollection}/styles.js +0 -0
  138. /package/lib/TreeBrowser/{TreeCollection → v1/TreeCollection}/theme.js +0 -0
  139. /package/lib/TreeBrowser/{TreeNode → v1/TreeNode}/props.js +0 -0
  140. /package/lib/TreeBrowser/{props.js → v1/props.js} +0 -0
  141. /package/lib/TreeBrowser/{styles.js → v1/styles.js} +0 -0
  142. /package/lib/TreeBrowser/{theme.js → v1/theme.js} +0 -0
  143. /package/src/TreeBrowser/{README.md → v1/README.md} +0 -0
  144. /package/src/TreeBrowser/{TreeBrowserContext.ts → v1/TreeBrowserContext.ts} +0 -0
  145. /package/src/TreeBrowser/{TreeButton → v1/TreeButton}/props.ts +0 -0
  146. /package/src/TreeBrowser/{TreeButton → v1/TreeButton}/styles.ts +0 -0
  147. /package/src/TreeBrowser/{TreeButton → v1/TreeButton}/theme.ts +0 -0
  148. /package/src/TreeBrowser/{TreeCollection → v1/TreeCollection}/props.ts +0 -0
  149. /package/src/TreeBrowser/{TreeCollection → v1/TreeCollection}/styles.ts +0 -0
  150. /package/src/TreeBrowser/{TreeCollection → v1/TreeCollection}/theme.ts +0 -0
  151. /package/src/TreeBrowser/{TreeNode → v1/TreeNode}/props.ts +0 -0
  152. /package/src/TreeBrowser/{props.ts → v1/props.ts} +0 -0
  153. /package/src/TreeBrowser/{styles.ts → v1/styles.ts} +0 -0
  154. /package/src/TreeBrowser/{theme.ts → v1/theme.ts} +0 -0
  155. /package/types/TreeBrowser/{TreeBrowserContext.d.ts → v1/TreeBrowserContext.d.ts} +0 -0
  156. /package/types/TreeBrowser/{TreeButton → v1/TreeButton}/index.d.ts +0 -0
  157. /package/types/TreeBrowser/{TreeButton → v1/TreeButton}/props.d.ts +0 -0
  158. /package/types/TreeBrowser/{TreeButton → v1/TreeButton}/styles.d.ts +0 -0
  159. /package/types/TreeBrowser/{TreeButton → v1/TreeButton}/theme.d.ts +0 -0
  160. /package/types/TreeBrowser/{TreeCollection → v1/TreeCollection}/props.d.ts +0 -0
  161. /package/types/TreeBrowser/{TreeCollection → v1/TreeCollection}/styles.d.ts +0 -0
  162. /package/types/TreeBrowser/{TreeCollection → v1/TreeCollection}/theme.d.ts +0 -0
  163. /package/types/TreeBrowser/{TreeNode → v1/TreeNode}/index.d.ts +0 -0
  164. /package/types/TreeBrowser/{TreeNode → v1/TreeNode}/props.d.ts +0 -0
  165. /package/types/TreeBrowser/{index.d.ts → v1/index.d.ts} +0 -0
  166. /package/types/TreeBrowser/{props.d.ts → v1/props.d.ts} +0 -0
  167. /package/types/TreeBrowser/{styles.d.ts → v1/styles.d.ts} +0 -0
  168. /package/types/TreeBrowser/{theme.d.ts → v1/theme.d.ts} +0 -0
@@ -0,0 +1,245 @@
1
+ /*
2
+ * The MIT License (MIT)
3
+ *
4
+ * Copyright (c) 2015 - present Instructure, Inc.
5
+ *
6
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
7
+ * of this software and associated documentation files (the "Software"), to deal
8
+ * in the Software without restriction, including without limitation the rights
9
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10
+ * copies of the Software, and to permit persons to whom the Software is
11
+ * furnished to do so, subject to the following conditions:
12
+ *
13
+ * The above copyright notice and this permission notice shall be included in all
14
+ * copies or substantial portions of the Software.
15
+ *
16
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22
+ * SOFTWARE.
23
+ */
24
+
25
+ import type { TreeBrowserTheme } from '@instructure/shared-types'
26
+ import type { WithStyleProps, ComponentStyle } from '@instructure/emotion'
27
+ import React, { ReactElement } from 'react'
28
+ import type { TreeBrowserButtonProps } from './TreeButton/props'
29
+ import { Renderable } from '@instructure/shared-types'
30
+
31
+ type TreeBrowserOwnProps = {
32
+ /**
33
+ * a normalized hash of collections, keyed by id, that contains an
34
+ * :id, :name, :items (an array of item ids), :collections (an array of
35
+ * collection ids), optional :descriptor text, optional :containerRef function,
36
+ * an optional :renderBeforeItems TreeNode, and an optional :renderAfterItems TreeNode.
37
+ * Each collection must have a unique id.
38
+ */
39
+ collections: Record<number | string, Collection>
40
+ /**
41
+ * a hash of items, keyed by id, that contain an :id, :name,
42
+ * optional :descriptor text, and optional :thumbnail url
43
+ */
44
+ items: Record<number, CollectionItem>
45
+ /**
46
+ * specifies the id of the root level collection, if present.
47
+ * if no root is specified, all collections will be rendered
48
+ * at the top level
49
+ **/
50
+ rootId?: string | number
51
+ /**
52
+ * an array of expanded collection ids, must be accompanied by an 'onCollectionToggle' prop
53
+ */
54
+ expanded?: (string | number | undefined)[] // TODO: controllable( PropTypes.arrayOf( PropTypes.oneOfType([PropTypes.string, PropTypes.number]) ), 'onCollectionToggle' )
55
+ /**
56
+ * an array of collection ids to expand by default
57
+ */
58
+ defaultExpanded?: (string | number)[]
59
+ /**
60
+ * There are 2 types of tree selection: single and multi.
61
+ * This is set up to allow for "multi" in the future without having to deprecate the old API.
62
+ */
63
+ selectionType?: 'none' | 'single'
64
+ /**
65
+ * The currently selected item or collection (controlled).
66
+ * Format: 'item_<id>' or 'collection_<id>' or empty string for no selection.
67
+ * Must be used with onSelectionChange callback.
68
+ */
69
+ selection?: string
70
+ /**
71
+ * The default selected item or collection (uncontrolled).
72
+ * Format: 'item_<id>' or 'collection_<id>' or empty string for no selection.
73
+ * @default ''
74
+ */
75
+ defaultSelection?: string
76
+ /**
77
+ * Called when selection changes.
78
+ * @param selection - The new selection string ('item_<id>', 'collection_<id>', or '')
79
+ * @param type - The type of the selected node ('item' or 'collection')
80
+ * @param id - The id of the selected node
81
+ */
82
+ onSelectionChange?: (
83
+ selection: string,
84
+ type: 'item' | 'collection',
85
+ id: string | number | undefined
86
+ ) => void
87
+ onCollectionToggle?: (collection: CollectionData) => void
88
+ onItemClick?: (data: CollectionData) => void
89
+ /**
90
+ * Whether or not to show the root collection specified in rootId prop or
91
+ * to begin with its immediate subcollections and items instead
92
+ */
93
+ showRootCollection?: boolean
94
+ /**
95
+ * An optional label to assist visually impaired users
96
+ */
97
+ treeLabel?: string
98
+ /**
99
+ * An optional compare function to specify order of the collections and the items
100
+ */
101
+ sortOrder?: (obj1: any, obj2: any) => number
102
+ /**
103
+ * Whether to enable animation for the TreeBrowser
104
+ */
105
+ animation?: boolean
106
+ } & TreeBrowserBaseProps
107
+
108
+ // props shared between TreeBrowser, TreeCollection
109
+ type TreeBrowserBaseProps = {
110
+ /**
111
+ * A function called with each item's props as an argument. The return value of this function is a
112
+ * props object which will be passed to the item when it is rendered. This is useful for situations where
113
+ * you need to render the item differently depending on it's props. For example, if you would like to
114
+ * display a different icon for items with a certain name.
115
+ */
116
+ getItemProps?: (props: Record<string, any>) => Record<string, any> // cant use generics here :/
117
+ /**
118
+ * A function called with each collection's props as an argument. The return value of this function is a
119
+ * props object which will be passed to the collection when it is rendered. This is useful for situations where
120
+ * you need to render the collection differently depending on it's props. For example, if you would like to
121
+ * display a different icon for collections with a certain name.
122
+ */
123
+ getCollectionProps?: (props: Record<string, any>) => TreeBrowserButtonProps
124
+ onCollectionClick?: (e: React.MouseEvent, data: CollectionData) => void
125
+ } & TreeBrowserCommonProps
126
+
127
+ // props shared between TreeBrowser, TreeCollection, TreeButton
128
+ type TreeBrowserCommonProps = {
129
+ size?: 'small' | 'medium' | 'large'
130
+ variant?: 'folderTree' | 'indent'
131
+ collectionIcon?: Renderable
132
+ collectionIconExpanded?: Renderable
133
+ itemIcon?: Renderable
134
+ renderContent?: (props: TreeBrowserButtonProps) => React.JSX.Element
135
+ }
136
+
137
+ type PropKeys = keyof TreeBrowserOwnProps
138
+
139
+ type AllowedPropKeys = Readonly<Array<PropKeys>>
140
+
141
+ // For now it doesn't need the OtherHTMLAttributes, because the extra props
142
+ // get passed to TreeCollection and it doesn't handle them
143
+ type TreeBrowserProps = TreeBrowserOwnProps &
144
+ WithStyleProps<TreeBrowserTheme, TreeBrowserStyle>
145
+
146
+ type TreeBrowserStyle = ComponentStyle<'treeBrowser'>
147
+
148
+ type CollectionBase = {
149
+ id: number | string
150
+ name: string
151
+ descriptor?: string
152
+ /**
153
+ * A function that returns a reference to the underlying HTML container
154
+ * @param el The DOM HTMLElement
155
+ */
156
+ containerRef?: (el: HTMLElement | null) => void
157
+ /**
158
+ * children of type TreeNode
159
+ */
160
+ renderBeforeItems?: ReactElement // TODO: Children.oneOf([TreeNode])
161
+ /**
162
+ * children of type TreeNode
163
+ */
164
+ renderAfterItems?: ReactElement // TODO: Children.oneOf([TreeNode])
165
+ }
166
+
167
+ type Collection = CollectionBase & {
168
+ items?: number[]
169
+ collections?: (number | string)[]
170
+ compareFunc?: (a: CompareObject, b: CompareObject) => number
171
+ }
172
+
173
+ type CollectionItem = {
174
+ id: number | string
175
+ name: string
176
+ descriptor?: string
177
+ thumbnail?: string
178
+ [key: string]: unknown // allow users to extend it
179
+ }
180
+
181
+ type CollectionProps = {
182
+ collections?: CollectionProps[]
183
+ items?: CollectionItem[]
184
+ expanded?: boolean
185
+ isCollectionFlattened?: boolean
186
+ compareFunc?: (a: CompareObject, b: CompareObject) => number
187
+ } & CollectionBase
188
+
189
+ type CompareCollection = CollectionProps & { type: 'collection' }
190
+ type CompareItem = CollectionItem & { type: 'item' }
191
+ // this is a sum type, so CompareObject is one of CompareCollection OR CompareItem
192
+ type CompareObject = CompareItem | CompareCollection
193
+
194
+ type CollectionData = {
195
+ id?: number | string
196
+ expanded?: boolean
197
+ type: 'child' | 'collection' | 'item'
198
+ }
199
+ const allowedProps: AllowedPropKeys = [
200
+ 'collections',
201
+ 'items',
202
+ 'rootId',
203
+ 'expanded',
204
+ 'defaultExpanded',
205
+ 'selection',
206
+ 'defaultSelection',
207
+ 'onSelectionChange',
208
+ 'selectionType',
209
+ 'size',
210
+ 'variant',
211
+ 'collectionIcon',
212
+ 'collectionIconExpanded',
213
+ 'itemIcon',
214
+ 'getItemProps',
215
+ 'getCollectionProps',
216
+ 'showRootCollection',
217
+ 'onCollectionClick',
218
+ 'onCollectionToggle',
219
+ 'onItemClick',
220
+ 'treeLabel',
221
+ 'renderContent',
222
+ 'sortOrder',
223
+ 'animation'
224
+ ]
225
+
226
+ type TreeBrowserState = {
227
+ selection: string
228
+ expanded?: (string | number | undefined)[]
229
+ }
230
+
231
+ export type {
232
+ TreeBrowserProps,
233
+ TreeBrowserState,
234
+ TreeBrowserStyle,
235
+ CollectionData,
236
+ Collection,
237
+ CollectionItem,
238
+ CompareCollection,
239
+ CompareItem,
240
+ CompareObject,
241
+ CollectionProps,
242
+ TreeBrowserBaseProps,
243
+ TreeBrowserCommonProps
244
+ }
245
+ export { allowedProps }
@@ -0,0 +1,79 @@
1
+ /*
2
+ * The MIT License (MIT)
3
+ *
4
+ * Copyright (c) 2015 - present Instructure, Inc.
5
+ *
6
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
7
+ * of this software and associated documentation files (the "Software"), to deal
8
+ * in the Software without restriction, including without limitation the rights
9
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10
+ * copies of the Software, and to permit persons to whom the Software is
11
+ * furnished to do so, subject to the following conditions:
12
+ *
13
+ * The above copyright notice and this permission notice shall be included in all
14
+ * copies or substantial portions of the Software.
15
+ *
16
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22
+ * SOFTWARE.
23
+ */
24
+
25
+ import { calcFocusOutlineStyles } from '@instructure/emotion'
26
+ import type { NewComponentTypes, SharedTokens } from '@instructure/ui-themes'
27
+ import type { TreeBrowserStyle, TreeBrowserProps } from './props'
28
+
29
+ /**
30
+ * ---
31
+ * private: true
32
+ * ---
33
+ * Generates the style object from the theme and provided additional information
34
+ * @param {Object} componentTheme The theme variable object.
35
+ * @param {Object} _props the props of the component, the style is applied to
36
+ * @param {Object} sharedTokens Shared token object that stores common values for the theme.
37
+ * @param {Object} state the state of the component, the style is applied to
38
+ * @return {Object} The final style object, which will be used in the component
39
+ */
40
+
41
+ const generateStyles = (
42
+ componentTheme: NewComponentTypes['TreeBrowser'],
43
+ _props: TreeBrowserProps,
44
+ sharedTokens: SharedTokens
45
+ ): TreeBrowserStyle => {
46
+ return {
47
+ treeBrowser: {
48
+ label: 'treeBrowser',
49
+ boxSizing: 'border-box',
50
+ margin: '0',
51
+ padding: '0',
52
+ listStyleType: 'none',
53
+ position: 'relative',
54
+ outline: 'none',
55
+ borderRadius: componentTheme.borderRadius,
56
+ ...calcFocusOutlineStyles(sharedTokens.focusOutline),
57
+ '&::before': {
58
+ content: '""',
59
+ pointerEvents: 'none',
60
+ boxSizing: 'border-box',
61
+ display: 'block',
62
+ position: 'absolute',
63
+ top: '-0.25rem',
64
+ bottom: '-0.25rem',
65
+ left: '-0.25rem',
66
+ right: '-0.25rem',
67
+ transition: 'all 0.2s',
68
+ opacity: 0,
69
+ transform: 'scale(0.95)'
70
+ },
71
+ '&:focus::before': {
72
+ opacity: 1,
73
+ transform: 'scale(1)'
74
+ }
75
+ }
76
+ }
77
+ }
78
+
79
+ export default generateStyles
@@ -0,0 +1,32 @@
1
+ /*
2
+ * The MIT License (MIT)
3
+ *
4
+ * Copyright (c) 2015 - present Instructure, Inc.
5
+ *
6
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
7
+ * of this software and associated documentation files (the "Software"), to deal
8
+ * in the Software without restriction, including without limitation the rights
9
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10
+ * copies of the Software, and to permit persons to whom the Software is
11
+ * furnished to do so, subject to the following conditions:
12
+ *
13
+ * The above copyright notice and this permission notice shall be included in all
14
+ * copies or substantial portions of the Software.
15
+ *
16
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22
+ * SOFTWARE.
23
+ */
24
+ export { TreeBrowser } from '../TreeBrowser/v1'
25
+ export { TreeButton } from '../TreeBrowser/v1/TreeButton'
26
+ export { TreeCollection } from '../TreeBrowser/v1/TreeCollection'
27
+ export { TreeNode } from '../TreeBrowser/v1/TreeNode'
28
+
29
+ export type { TreeBrowserProps } from '../TreeBrowser/v1/props'
30
+ export type { TreeBrowserButtonProps } from '../TreeBrowser/v1/TreeButton/props'
31
+ export type { TreeBrowserCollectionProps } from '../TreeBrowser/v1/TreeCollection/props'
32
+ export type { TreeBrowserNodeProps } from '../TreeBrowser/v1/TreeNode/props'
@@ -0,0 +1,32 @@
1
+ /*
2
+ * The MIT License (MIT)
3
+ *
4
+ * Copyright (c) 2015 - present Instructure, Inc.
5
+ *
6
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
7
+ * of this software and associated documentation files (the "Software"), to deal
8
+ * in the Software without restriction, including without limitation the rights
9
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10
+ * copies of the Software, and to permit persons to whom the Software is
11
+ * furnished to do so, subject to the following conditions:
12
+ *
13
+ * The above copyright notice and this permission notice shall be included in all
14
+ * copies or substantial portions of the Software.
15
+ *
16
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22
+ * SOFTWARE.
23
+ */
24
+ export { TreeBrowser } from '../TreeBrowser/v2'
25
+ export { TreeButton } from '../TreeBrowser/v2/TreeButton'
26
+ export { TreeCollection } from '../TreeBrowser/v2/TreeCollection'
27
+ export { TreeNode } from '../TreeBrowser/v2/TreeNode'
28
+
29
+ export type { TreeBrowserProps } from '../TreeBrowser/v2/props'
30
+ export type { TreeBrowserButtonProps } from '../TreeBrowser/v2/TreeButton/props'
31
+ export type { TreeBrowserCollectionProps } from '../TreeBrowser/v2/TreeCollection/props'
32
+ export type { TreeBrowserNodeProps } from '../TreeBrowser/v2/TreeNode/props'