@instructure/ui-drilldown 8.21.1-snapshot.10

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 (89) hide show
  1. package/CHANGELOG.md +36 -0
  2. package/LICENSE.md +27 -0
  3. package/README.md +30 -0
  4. package/es/Drilldown/DrilldownGroup/index.js +56 -0
  5. package/es/Drilldown/DrilldownGroup/props.js +42 -0
  6. package/es/Drilldown/DrilldownLocator.js +144 -0
  7. package/es/Drilldown/DrilldownOption/index.js +59 -0
  8. package/es/Drilldown/DrilldownOption/props.js +46 -0
  9. package/es/Drilldown/DrilldownPage/index.js +56 -0
  10. package/es/Drilldown/DrilldownPage/props.js +41 -0
  11. package/es/Drilldown/DrilldownSeparator/index.js +52 -0
  12. package/es/Drilldown/DrilldownSeparator/props.js +30 -0
  13. package/es/Drilldown/__examples__/Drilldown.examples.js +299 -0
  14. package/es/Drilldown/index.js +1241 -0
  15. package/es/Drilldown/locator.js +26 -0
  16. package/es/Drilldown/props.js +67 -0
  17. package/es/Drilldown/styles.js +82 -0
  18. package/es/Drilldown/theme.js +43 -0
  19. package/es/index.js +24 -0
  20. package/lib/Drilldown/DrilldownGroup/index.js +42 -0
  21. package/lib/Drilldown/DrilldownGroup/props.js +56 -0
  22. package/lib/Drilldown/DrilldownLocator.js +157 -0
  23. package/lib/Drilldown/DrilldownOption/index.js +45 -0
  24. package/lib/Drilldown/DrilldownOption/props.js +57 -0
  25. package/lib/Drilldown/DrilldownPage/index.js +66 -0
  26. package/lib/Drilldown/DrilldownPage/props.js +56 -0
  27. package/lib/Drilldown/DrilldownSeparator/index.js +38 -0
  28. package/lib/Drilldown/DrilldownSeparator/props.js +41 -0
  29. package/lib/Drilldown/__examples__/Drilldown.examples.js +289 -0
  30. package/lib/Drilldown/index.js +1253 -0
  31. package/lib/Drilldown/locator.js +40 -0
  32. package/lib/Drilldown/props.js +83 -0
  33. package/lib/Drilldown/styles.js +90 -0
  34. package/lib/Drilldown/theme.js +51 -0
  35. package/lib/index.js +13 -0
  36. package/lib/package.json +1 -0
  37. package/package.json +58 -0
  38. package/src/Drilldown/DrilldownGroup/index.tsx +64 -0
  39. package/src/Drilldown/DrilldownGroup/props.ts +149 -0
  40. package/src/Drilldown/DrilldownLocator.ts +101 -0
  41. package/src/Drilldown/DrilldownOption/index.tsx +68 -0
  42. package/src/Drilldown/DrilldownOption/props.ts +224 -0
  43. package/src/Drilldown/DrilldownPage/index.tsx +58 -0
  44. package/src/Drilldown/DrilldownPage/props.ts +129 -0
  45. package/src/Drilldown/DrilldownSeparator/index.tsx +60 -0
  46. package/src/Drilldown/DrilldownSeparator/props.ts +65 -0
  47. package/src/Drilldown/README.md +1515 -0
  48. package/src/Drilldown/__examples__/Drilldown.examples.tsx +318 -0
  49. package/src/Drilldown/index.tsx +1492 -0
  50. package/src/Drilldown/locator.ts +28 -0
  51. package/src/Drilldown/props.ts +378 -0
  52. package/src/Drilldown/styles.ts +95 -0
  53. package/src/Drilldown/theme.ts +47 -0
  54. package/src/index.ts +26 -0
  55. package/tsconfig.build.json +30 -0
  56. package/tsconfig.build.tsbuildinfo +1 -0
  57. package/tsconfig.json +4 -0
  58. package/types/Drilldown/DrilldownGroup/index.d.ts +59 -0
  59. package/types/Drilldown/DrilldownGroup/index.d.ts.map +1 -0
  60. package/types/Drilldown/DrilldownGroup/props.d.ts +65 -0
  61. package/types/Drilldown/DrilldownGroup/props.d.ts.map +1 -0
  62. package/types/Drilldown/DrilldownLocator.d.ts +652 -0
  63. package/types/Drilldown/DrilldownLocator.d.ts.map +1 -0
  64. package/types/Drilldown/DrilldownOption/index.d.ts +134 -0
  65. package/types/Drilldown/DrilldownOption/index.d.ts.map +1 -0
  66. package/types/Drilldown/DrilldownOption/props.d.ts +116 -0
  67. package/types/Drilldown/DrilldownOption/props.d.ts.map +1 -0
  68. package/types/Drilldown/DrilldownPage/index.d.ts +45 -0
  69. package/types/Drilldown/DrilldownPage/index.d.ts.map +1 -0
  70. package/types/Drilldown/DrilldownPage/props.d.ts +51 -0
  71. package/types/Drilldown/DrilldownPage/props.d.ts.map +1 -0
  72. package/types/Drilldown/DrilldownSeparator/index.d.ts +27 -0
  73. package/types/Drilldown/DrilldownSeparator/index.d.ts.map +1 -0
  74. package/types/Drilldown/DrilldownSeparator/props.d.ts +18 -0
  75. package/types/Drilldown/DrilldownSeparator/props.d.ts.map +1 -0
  76. package/types/Drilldown/__examples__/Drilldown.examples.d.ts +5 -0
  77. package/types/Drilldown/__examples__/Drilldown.examples.d.ts.map +1 -0
  78. package/types/Drilldown/index.d.ts +246 -0
  79. package/types/Drilldown/index.d.ts.map +1 -0
  80. package/types/Drilldown/locator.d.ts +4 -0
  81. package/types/Drilldown/locator.d.ts.map +1 -0
  82. package/types/Drilldown/props.d.ts +189 -0
  83. package/types/Drilldown/props.d.ts.map +1 -0
  84. package/types/Drilldown/styles.d.ts +15 -0
  85. package/types/Drilldown/styles.d.ts.map +1 -0
  86. package/types/Drilldown/theme.d.ts +10 -0
  87. package/types/Drilldown/theme.d.ts.map +1 -0
  88. package/types/index.d.ts +3 -0
  89. package/types/index.d.ts.map +1 -0
@@ -0,0 +1,318 @@
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 React from 'react'
26
+
27
+ import type { StoryConfig } from '@instructure/ui-test-utils'
28
+
29
+ import { Drilldown } from '../index'
30
+ import type { DrilldownProps } from '../props'
31
+
32
+ const triggerButton = (
33
+ <button
34
+ key={1}
35
+ style={{ marginLeft: '72px', position: 'absolute', top: '45%' }}
36
+ >
37
+ a drilldown trigger
38
+ </button>
39
+ )
40
+
41
+ export default {
42
+ maxExamplesPerPage: 10,
43
+ propValues: {
44
+ // these are non-existing props, we just pass them to getComponentProps()
45
+ customProps: [
46
+ { text: 'all custom props are undefined' },
47
+ { text: 'disabled', defaultShow: false, disabled: true },
48
+ {
49
+ text: 'no overflow setting',
50
+ defaultShow: true,
51
+ disabled: false,
52
+ separator: true,
53
+ groupDisabled: true,
54
+ renderGroupTitle: 'groupTitle',
55
+ contentVAlign: 'start'
56
+ },
57
+ // overflowX tests
58
+ {
59
+ text: 'overflowX auto',
60
+ defaultShow: true,
61
+ width: '12rem',
62
+ overflowX: 'auto',
63
+ disabled: false,
64
+ separator: true,
65
+ groupDisabled: true,
66
+ renderGroupTitle: 'groupTitle',
67
+ contentVAlign: 'start'
68
+ },
69
+ {
70
+ text: 'overflowX hidden',
71
+ defaultShow: true,
72
+ width: '12rem',
73
+ overflowX: 'hidden',
74
+ disabled: true,
75
+ separator: false,
76
+ groupDisabled: false,
77
+ renderGroupTitle: undefined,
78
+ contentVAlign: 'center'
79
+ },
80
+ {
81
+ text: 'overflowX visible',
82
+ defaultShow: true,
83
+ width: '12rem',
84
+ overflowX: 'visible',
85
+ disabled: false,
86
+ separator: false,
87
+ groupDisabled: false,
88
+ renderGroupTitle: undefined,
89
+ contentVAlign: 'end'
90
+ },
91
+ // overflowY tests
92
+ {
93
+ text: 'overflowY auto',
94
+ defaultShow: true,
95
+ height: '20rem',
96
+ overflowY: 'auto',
97
+ disabled: false,
98
+ separator: true,
99
+ groupDisabled: true,
100
+ renderGroupTitle: 'groupTitle',
101
+ contentVAlign: 'start'
102
+ },
103
+ {
104
+ text: 'overflowY hidden',
105
+ defaultShow: true,
106
+ height: '20rem',
107
+ overflowY: 'hidden',
108
+ disabled: true,
109
+ separator: false,
110
+ groupDisabled: false,
111
+ renderGroupTitle: undefined,
112
+ contentVAlign: 'center'
113
+ },
114
+ {
115
+ text: 'overflowY visible',
116
+ defaultShow: true,
117
+ height: '20rem',
118
+ overflowY: 'visible',
119
+ disabled: false,
120
+ separator: false,
121
+ groupDisabled: false,
122
+ renderGroupTitle: undefined,
123
+ contentVAlign: 'end'
124
+ },
125
+ // tests for Drilldown.Page
126
+ { page: 'pageWithSubpages' },
127
+ { page: 'pageWithSubpages2' },
128
+ // Popover version
129
+ {
130
+ text: 'with trigger',
131
+ trigger: triggerButton,
132
+ defaultShow: false,
133
+ disabled: false
134
+ },
135
+ {
136
+ text: 'with trigger disabled',
137
+ trigger: triggerButton,
138
+ defaultShow: false,
139
+ disabled: true
140
+ },
141
+ {
142
+ text: 'with trigger and defaultShow',
143
+ trigger: triggerButton,
144
+ defaultShow: true,
145
+ disabled: false
146
+ },
147
+ {
148
+ text: 'with trigger, defaultShow and disabled',
149
+ trigger: triggerButton,
150
+ defaultShow: true,
151
+ disabled: true
152
+ },
153
+ {
154
+ text: 'with trigger and withArrow',
155
+ trigger: triggerButton,
156
+ defaultShow: true,
157
+ withArrow: true
158
+ },
159
+ {
160
+ text: 'with trigger and withArrow="false"',
161
+ trigger: triggerButton,
162
+ defaultShow: true,
163
+ withArrow: false
164
+ },
165
+ {
166
+ text: 'with trigger and placement + offset',
167
+ trigger: triggerButton,
168
+ defaultShow: true,
169
+ placement: 'end top',
170
+ offsetX: 10,
171
+ offsetY: -20,
172
+ width: '20rem'
173
+ },
174
+ {
175
+ text: 'with trigger and width + height',
176
+ trigger: triggerButton,
177
+ defaultShow: true,
178
+ width: '20rem',
179
+ height: '20rem'
180
+ }
181
+ ]
182
+ },
183
+ getExampleProps(props) {
184
+ return {
185
+ height:
186
+ props.customProps.defaultShow || !props.customProps.trigger
187
+ ? '57rem'
188
+ : '5rem',
189
+ width: '38rem',
190
+ padding: '0 0 0 small',
191
+ withVisualDebug: true,
192
+ position: 'relative'
193
+ }
194
+ },
195
+ getComponentProps: (props) => {
196
+ return {
197
+ rootPageId: 'page0',
198
+ children: generateDrilldownChildren(props, props.customProps.page),
199
+ rotateFocus: true,
200
+ overflowX: props.customProps.overflowX,
201
+ overflowY: props.customProps.overflowY,
202
+ shouldHideOnSelect: true,
203
+ shouldFocusTriggerOnClose: true,
204
+ shouldContainFocus: false,
205
+ shouldReturnFocus: true,
206
+ width: props.customProps.width,
207
+ height: props.customProps.height,
208
+ disabled: props.customProps.disabled,
209
+ trigger: props.customProps.trigger,
210
+ ...(props.customProps.trigger
211
+ ? {
212
+ defaultShow: props.customProps.defaultShow,
213
+ withArrow: props.customProps.withArrow,
214
+ placement: props.customProps.placement,
215
+ offsetX: props.customProps.offsetX,
216
+ offsetY: props.customProps.offsetY
217
+ }
218
+ : {
219
+ defaultShow: false,
220
+ withArrow: false,
221
+ placement: 'bottom center',
222
+ offsetX: 0,
223
+ offsetY: 0
224
+ })
225
+ }
226
+ }
227
+ } as StoryConfig<DrilldownProps>
228
+
229
+ function generateDrilldownChildren(
230
+ props: Record<string, any>,
231
+ variant: string
232
+ ) {
233
+ if (variant == 'pageWithSubpages') {
234
+ return [
235
+ <Drilldown.Page id="page0" key="page0" renderTitle="pageWithSubpages">
236
+ <Drilldown.Option id="o1" subPageId="subpage">
237
+ has subpage
238
+ </Drilldown.Option>
239
+ <Drilldown.Separator id="s1" />
240
+ <Drilldown.Option id="o2">does not have subpage</Drilldown.Option>
241
+ <Drilldown.Option id="o3" href="#">
242
+ this is a link
243
+ </Drilldown.Option>
244
+ </Drilldown.Page>,
245
+ <Drilldown.Page id="subpage" renderTitle="aaa" key={1}>
246
+ <Drilldown.Option id="tmp">not shown</Drilldown.Option>
247
+ </Drilldown.Page>
248
+ ]
249
+ } else if (variant == 'pageWithSubpages2') {
250
+ return [
251
+ <Drilldown.Page
252
+ id="page0"
253
+ key="page0"
254
+ renderTitle="pageWithSubpages2"
255
+ renderActionLabel="action label"
256
+ withoutHeaderSeparator
257
+ renderBackButtonLabel="go back"
258
+ >
259
+ <Drilldown.Option id="o1" subPageId="subpage">
260
+ has subpage
261
+ </Drilldown.Option>
262
+ <Drilldown.Separator id="s1" />
263
+ <Drilldown.Option id="o2">does not have subpage</Drilldown.Option>
264
+ </Drilldown.Page>,
265
+ <Drilldown.Page id="subpage" renderTitle="aaa" key={1}>
266
+ <Drilldown.Option id="tmp">subpage option</Drilldown.Option>
267
+ </Drilldown.Page>
268
+ ]
269
+ }
270
+ return [
271
+ <Drilldown.Page id="page0" key="page0">
272
+ <Drilldown.Option id="otext">{props.customProps.text}</Drilldown.Option>
273
+ <Drilldown.Option id="o">
274
+ <div style={{ whiteSpace: 'nowrap' }}>
275
+ this should be an option with very very super very very long label
276
+ </div>
277
+ </Drilldown.Option>
278
+ <Drilldown.Group
279
+ id="g1"
280
+ disabled={props.customProps.groupDisabled}
281
+ renderGroupTitle={props.customProps.renderGroupTitle}
282
+ withoutSeparators={props.customProps.separator}
283
+ selectableType="multiple"
284
+ >
285
+ <Drilldown.Option id="o2" renderLabelInfo="li" defaultSelected>
286
+ defaultSelected
287
+ </Drilldown.Option>
288
+ <Drilldown.Option id="o3">minimal</Drilldown.Option>
289
+ </Drilldown.Group>
290
+ <Drilldown.Option id="o4" disabled>
291
+ disabled
292
+ </Drilldown.Option>
293
+ <Drilldown.Option
294
+ id="o5"
295
+ renderBeforeLabel="be"
296
+ renderAfterLabel="af"
297
+ renderLabelInfo="li"
298
+ >
299
+ extra labels
300
+ </Drilldown.Option>
301
+ <Drilldown.Option
302
+ id="o6"
303
+ beforeLabelContentVAlign={props.customProps.contentVAlign}
304
+ renderBeforeLabel="bef"
305
+ afterLabelContentVAlign={props.customProps.contentVAlign}
306
+ renderAfterLabel="after"
307
+ >
308
+ <br />
309
+ valign settings
310
+ <br />
311
+ <br />
312
+ </Drilldown.Option>
313
+ <Drilldown.Option id="o7" description="the description">
314
+ has description
315
+ </Drilldown.Option>
316
+ </Drilldown.Page>
317
+ ]
318
+ }