@primer/components 31.0.0-rc.f601fc1f → 31.0.2-rc.1e80de40
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/.github/workflows/check_for_changeset.yml +25 -0
- package/CHANGELOG.md +14 -2
- package/dist/browser.esm.js +40 -37
- package/dist/browser.esm.js.map +1 -1
- package/dist/browser.umd.js +34 -31
- package/dist/browser.umd.js.map +1 -1
- package/docs/content/Autocomplete.mdx +51 -21
- package/lib/ActionList/Item.js +3 -3
- package/lib/Button/Button.js +1 -1
- package/lib/Button/ButtonTableList.js +1 -1
- package/lib/Pagination/Pagination.js +1 -1
- package/lib/TextInputWithTokens.js +17 -10
- package/lib/Token/Token.js +13 -2
- package/lib/Token/TokenBase.js +0 -4
- package/lib/Token/_RemoveTokenButton.js +15 -2
- package/lib/_TextInputWrapper.js +1 -1
- package/lib/stories/Autocomplete.stories.js +67 -56
- package/lib/stories/Button.stories.js +12 -1
- package/lib/stories/useAnchoredPosition.stories.js +1 -1
- package/lib-esm/ActionList/Item.js +3 -3
- package/lib-esm/Button/Button.js +1 -1
- package/lib-esm/Button/ButtonTableList.js +1 -1
- package/lib-esm/Pagination/Pagination.js +1 -1
- package/lib-esm/TextInputWithTokens.js +17 -10
- package/lib-esm/Token/Token.js +13 -2
- package/lib-esm/Token/TokenBase.js +0 -4
- package/lib-esm/Token/_RemoveTokenButton.js +11 -2
- package/lib-esm/_TextInputWrapper.js +1 -1
- package/lib-esm/stories/Autocomplete.stories.js +67 -56
- package/lib-esm/stories/Button.stories.js +8 -0
- package/lib-esm/stories/useAnchoredPosition.stories.js +1 -1
- package/package-lock.json +6090 -7003
- package/package.json +6 -6
- package/src/ActionList/Item.tsx +3 -3
- package/src/Button/Button.tsx +1 -1
- package/src/Button/ButtonTableList.tsx +1 -1
- package/src/Pagination/Pagination.tsx +1 -1
- package/src/TextInputWithTokens.tsx +49 -40
- package/src/Token/Token.tsx +16 -2
- package/src/Token/TokenBase.tsx +0 -5
- package/src/Token/_RemoveTokenButton.tsx +15 -2
- package/src/_TextInputWrapper.tsx +1 -1
- package/src/__tests__/Pagination/__snapshots__/Pagination.test.tsx.snap +1 -1
- package/src/__tests__/__snapshots__/ActionMenu.test.tsx.snap +1 -1
- package/src/__tests__/__snapshots__/AnchoredOverlay.test.tsx.snap +3 -3
- package/src/__tests__/__snapshots__/Button.test.tsx.snap +3 -3
- package/src/__tests__/__snapshots__/ConfirmationDialog.test.tsx.snap +1 -1
- package/src/__tests__/__snapshots__/Dropdown.test.tsx.snap +1 -1
- package/src/__tests__/__snapshots__/DropdownMenu.test.tsx.snap +1 -1
- package/src/__tests__/__snapshots__/SelectMenu.test.tsx.snap +1 -1
- package/src/__tests__/__snapshots__/SelectPanel.test.tsx.snap +1 -1
- package/src/__tests__/__snapshots__/TextInputWithTokens.test.tsx.snap +3374 -3166
- package/src/__tests__/__snapshots__/Token.test.tsx.snap +31 -24
- package/src/stories/Autocomplete.stories.tsx +142 -59
- package/src/stories/Button.stories.tsx +4 -0
- package/src/stories/useAnchoredPosition.stories.tsx +13 -1
- package/stats.html +1 -1
@@ -19,24 +19,16 @@ type Datum = {
|
|
19
19
|
}
|
20
20
|
|
21
21
|
const items: Datum[] = [
|
22
|
-
{text: '
|
23
|
-
{text: '
|
24
|
-
{text: '
|
25
|
-
{text: '
|
26
|
-
{text: '
|
27
|
-
{text: '
|
28
|
-
{text: '
|
29
|
-
{text: 'seven', id: 7},
|
30
|
-
{text: 'twenty', id: 20},
|
31
|
-
{text: 'twentyone', id: 21}
|
22
|
+
{text: 'css', id: 0},
|
23
|
+
{text: 'css-in-js', id: 1},
|
24
|
+
{text: 'styled-system', id: 2},
|
25
|
+
{text: 'javascript', id: 3},
|
26
|
+
{text: 'typescript', id: 4},
|
27
|
+
{text: 'react', id: 5},
|
28
|
+
{text: 'design-systems', id: 6}
|
32
29
|
]
|
33
30
|
|
34
|
-
const mockTokens: Datum[] = [
|
35
|
-
{text: 'zero', id: 0},
|
36
|
-
{text: 'one', id: 1},
|
37
|
-
{text: 'three', id: 3},
|
38
|
-
{text: 'four', id: 4}
|
39
|
-
]
|
31
|
+
const mockTokens: Datum[] = [...items].slice(0, 3)
|
40
32
|
|
41
33
|
export default {
|
42
34
|
title: 'Forms/Autocomplete',
|
@@ -69,11 +61,18 @@ export default {
|
|
69
61
|
export const SingleSelect = () => {
|
70
62
|
return (
|
71
63
|
<>
|
72
|
-
<
|
73
|
-
|
74
|
-
|
64
|
+
<Text
|
65
|
+
fontWeight="bold"
|
66
|
+
fontSize={1}
|
67
|
+
as="label"
|
68
|
+
display="block"
|
69
|
+
htmlFor="autocompleteInput"
|
70
|
+
id="autocompleteLabel"
|
71
|
+
>
|
72
|
+
Pick a tag
|
73
|
+
</Text>
|
75
74
|
<Autocomplete>
|
76
|
-
<Autocomplete.Input id="autocompleteInput" />
|
75
|
+
<Autocomplete.Input block id="autocompleteInput" />
|
77
76
|
<Autocomplete.Overlay>
|
78
77
|
<Autocomplete.Menu items={items} selectedItemIds={[]} aria-labelledby="autocompleteLabel" />
|
79
78
|
</Autocomplete.Overlay>
|
@@ -97,9 +96,16 @@ export const MultiSelect = () => {
|
|
97
96
|
return (
|
98
97
|
<Box display="flex" sx={{gap: '1em'}}>
|
99
98
|
<div>
|
100
|
-
<
|
101
|
-
|
102
|
-
|
99
|
+
<Text
|
100
|
+
fontWeight="bold"
|
101
|
+
fontSize={1}
|
102
|
+
as="label"
|
103
|
+
display="block"
|
104
|
+
htmlFor="autocompleteInput"
|
105
|
+
id="autocompleteLabel"
|
106
|
+
>
|
107
|
+
Pick a tag
|
108
|
+
</Text>
|
103
109
|
<Autocomplete>
|
104
110
|
<Autocomplete.Input id="autocompleteInput" />
|
105
111
|
<Autocomplete.Overlay>
|
@@ -126,7 +132,7 @@ export const MultiSelect = () => {
|
|
126
132
|
}
|
127
133
|
|
128
134
|
export const MultiSelectWithTokenInput = () => {
|
129
|
-
const [tokens, setTokens] = useState<Datum[]>(
|
135
|
+
const [tokens, setTokens] = useState<Datum[]>([]) // [items[0], items[2]]
|
130
136
|
const selectedTokenIds = tokens.map(token => token.id)
|
131
137
|
const [selectedItemIds, setSelectedItemIds] = useState<Array<string | number>>(selectedTokenIds)
|
132
138
|
const onTokenRemove: (tokenId: string | number) => void = tokenId => {
|
@@ -156,11 +162,24 @@ export const MultiSelectWithTokenInput = () => {
|
|
156
162
|
|
157
163
|
return (
|
158
164
|
<>
|
159
|
-
<
|
160
|
-
|
161
|
-
|
165
|
+
<Text
|
166
|
+
fontWeight="bold"
|
167
|
+
fontSize={1}
|
168
|
+
as="label"
|
169
|
+
display="block"
|
170
|
+
htmlFor="autocompleteInput"
|
171
|
+
id="autocompleteLabel"
|
172
|
+
>
|
173
|
+
Pick tags
|
174
|
+
</Text>
|
162
175
|
<Autocomplete>
|
163
|
-
<Autocomplete.Input
|
176
|
+
<Autocomplete.Input
|
177
|
+
block
|
178
|
+
as={TextInputTokens}
|
179
|
+
tokens={tokens}
|
180
|
+
onTokenRemove={onTokenRemove}
|
181
|
+
id="autocompleteInput"
|
182
|
+
/>
|
164
183
|
<Autocomplete.Overlay>
|
165
184
|
<Autocomplete.Menu
|
166
185
|
items={items}
|
@@ -219,14 +238,22 @@ export const MultiSelectAddNewItem = () => {
|
|
219
238
|
}
|
220
239
|
|
221
240
|
return (
|
222
|
-
|
223
|
-
<
|
224
|
-
|
225
|
-
|
241
|
+
<Box maxWidth="300px">
|
242
|
+
<Text
|
243
|
+
fontWeight="bold"
|
244
|
+
fontSize={1}
|
245
|
+
as="label"
|
246
|
+
display="block"
|
247
|
+
htmlFor="autocompleteInput"
|
248
|
+
id="autocompleteLabel"
|
249
|
+
>
|
250
|
+
Pick tags
|
251
|
+
</Text>
|
226
252
|
<Autocomplete>
|
227
253
|
<Autocomplete.Input
|
254
|
+
block
|
228
255
|
as={TextInputTokens}
|
229
|
-
tokens={
|
256
|
+
tokens={[]}
|
230
257
|
onTokenRemove={onTokenRemove}
|
231
258
|
onChange={handleChange}
|
232
259
|
id="autocompleteInput"
|
@@ -256,16 +283,23 @@ export const MultiSelectAddNewItem = () => {
|
|
256
283
|
/>
|
257
284
|
</Autocomplete.Overlay>
|
258
285
|
</Autocomplete>
|
259
|
-
|
286
|
+
</Box>
|
260
287
|
)
|
261
288
|
}
|
262
289
|
|
263
290
|
export const CustomEmptyStateMessage = () => {
|
264
291
|
return (
|
265
292
|
<>
|
266
|
-
<
|
267
|
-
|
268
|
-
|
293
|
+
<Text
|
294
|
+
fontWeight="bold"
|
295
|
+
fontSize={1}
|
296
|
+
as="label"
|
297
|
+
display="block"
|
298
|
+
htmlFor="autocompleteInput"
|
299
|
+
id="autocompleteLabel"
|
300
|
+
>
|
301
|
+
Pick a tag
|
302
|
+
</Text>
|
269
303
|
<Autocomplete>
|
270
304
|
<Autocomplete.Input id="autocompleteInput" />
|
271
305
|
<Autocomplete.Overlay>
|
@@ -290,9 +324,16 @@ export const CustomSearchFilter = () => {
|
|
290
324
|
|
291
325
|
return (
|
292
326
|
<>
|
293
|
-
<
|
294
|
-
|
295
|
-
|
327
|
+
<Text
|
328
|
+
fontWeight="bold"
|
329
|
+
fontSize={1}
|
330
|
+
as="label"
|
331
|
+
display="block"
|
332
|
+
htmlFor="autocompleteInput"
|
333
|
+
id="autocompleteLabel"
|
334
|
+
>
|
335
|
+
Pick a tag
|
336
|
+
</Text>
|
296
337
|
<Autocomplete>
|
297
338
|
<Autocomplete.Input id="autocompleteInput" onChange={handleChange} />
|
298
339
|
<Autocomplete.Overlay>
|
@@ -326,9 +367,16 @@ export const CustomSortAfterMenuClose = () => {
|
|
326
367
|
|
327
368
|
return (
|
328
369
|
<>
|
329
|
-
<
|
330
|
-
|
331
|
-
|
370
|
+
<Text
|
371
|
+
fontWeight="bold"
|
372
|
+
fontSize={1}
|
373
|
+
as="label"
|
374
|
+
display="block"
|
375
|
+
htmlFor="autocompleteInput"
|
376
|
+
id="autocompleteLabel"
|
377
|
+
>
|
378
|
+
Pick a tag
|
379
|
+
</Text>
|
332
380
|
<Autocomplete>
|
333
381
|
<Autocomplete.Input id="autocompleteInput" />
|
334
382
|
<Autocomplete.Overlay>
|
@@ -358,9 +406,16 @@ export const WithCallbackWhenOverlayOpenStateChanges = () => {
|
|
358
406
|
return (
|
359
407
|
<Box display="flex" sx={{gap: '1em'}}>
|
360
408
|
<div>
|
361
|
-
<
|
362
|
-
|
363
|
-
|
409
|
+
<Text
|
410
|
+
fontWeight="bold"
|
411
|
+
fontSize={1}
|
412
|
+
as="label"
|
413
|
+
display="block"
|
414
|
+
htmlFor="autocompleteInput"
|
415
|
+
id="autocompleteLabel"
|
416
|
+
>
|
417
|
+
Pick a tag
|
418
|
+
</Text>
|
364
419
|
<Autocomplete>
|
365
420
|
<Autocomplete.Input id="autocompleteInput" />
|
366
421
|
<Autocomplete.Overlay>
|
@@ -390,9 +445,16 @@ export const AsyncLoadingOfItems = () => {
|
|
390
445
|
|
391
446
|
return (
|
392
447
|
<>
|
393
|
-
<
|
394
|
-
|
395
|
-
|
448
|
+
<Text
|
449
|
+
fontWeight="bold"
|
450
|
+
fontSize={1}
|
451
|
+
as="label"
|
452
|
+
display="block"
|
453
|
+
htmlFor="autocompleteInput"
|
454
|
+
id="autocompleteLabel"
|
455
|
+
>
|
456
|
+
Pick a tag
|
457
|
+
</Text>
|
396
458
|
<Autocomplete>
|
397
459
|
<Autocomplete.Input id="autocompleteInput" />
|
398
460
|
<Autocomplete.Overlay>
|
@@ -412,9 +474,16 @@ export const AsyncLoadingOfItems = () => {
|
|
412
474
|
export const RenderingTheMenuOutsideAnOverlay = () => {
|
413
475
|
return (
|
414
476
|
<>
|
415
|
-
<
|
416
|
-
|
417
|
-
|
477
|
+
<Text
|
478
|
+
fontWeight="bold"
|
479
|
+
fontSize={1}
|
480
|
+
as="label"
|
481
|
+
display="block"
|
482
|
+
htmlFor="autocompleteInput"
|
483
|
+
id="autocompleteLabel"
|
484
|
+
>
|
485
|
+
Pick a tag
|
486
|
+
</Text>
|
418
487
|
<Autocomplete>
|
419
488
|
<Autocomplete.Input id="autocompleteInput" />
|
420
489
|
<Autocomplete.Menu items={items} selectedItemIds={[]} aria-labelledby="autocompleteLabel" />
|
@@ -437,9 +506,16 @@ export const CustomOverlayMenuAnchor = () => {
|
|
437
506
|
|
438
507
|
return (
|
439
508
|
<>
|
440
|
-
<
|
441
|
-
|
442
|
-
|
509
|
+
<Text
|
510
|
+
fontWeight="bold"
|
511
|
+
fontSize={1}
|
512
|
+
as="label"
|
513
|
+
display="block"
|
514
|
+
htmlFor="autocompleteInput"
|
515
|
+
id="autocompleteLabel"
|
516
|
+
>
|
517
|
+
Pick tags
|
518
|
+
</Text>
|
443
519
|
<Box {...anchorWrapperStyles} ref={menuAnchorRef as React.RefObject<HTMLDivElement>}>
|
444
520
|
<Autocomplete>
|
445
521
|
<Autocomplete.Input
|
@@ -470,9 +546,16 @@ export const CustomOverlayMenuAnchor = () => {
|
|
470
546
|
export const WithCustomOverlayProps = () => {
|
471
547
|
return (
|
472
548
|
<>
|
473
|
-
<
|
474
|
-
|
475
|
-
|
549
|
+
<Text
|
550
|
+
fontWeight="bold"
|
551
|
+
fontSize={1}
|
552
|
+
as="label"
|
553
|
+
display="block"
|
554
|
+
htmlFor="autocompleteInput"
|
555
|
+
id="autocompleteLabel"
|
556
|
+
>
|
557
|
+
Pick a tag
|
558
|
+
</Text>
|
476
559
|
<Autocomplete>
|
477
560
|
<Autocomplete.Input id="autocompleteInput" />
|
478
561
|
<Autocomplete.Overlay
|
@@ -527,7 +610,7 @@ export const InOverlayWithCustomScrollContainerRef = () => {
|
|
527
610
|
borderWidth: '0'
|
528
611
|
}}
|
529
612
|
>
|
530
|
-
Pick
|
613
|
+
Pick tags
|
531
614
|
</Box>
|
532
615
|
<Autocomplete>
|
533
616
|
<Box display="flex" flexDirection="column" height="100%">
|
@@ -77,6 +77,10 @@ export const buttonGroup = (args: StrictButtonStyleProps) => (
|
|
77
77
|
export const buttonTableList = (args: ButtonStyleProps) => (
|
78
78
|
<ButtonTableList {...args}>Button Table List</ButtonTableList>
|
79
79
|
)
|
80
|
+
export const disabledButton = (args: ButtonStyleProps) => {
|
81
|
+
const props = {disabled: true, ...args}
|
82
|
+
return <Button {...props}>Disabled</Button>
|
83
|
+
}
|
80
84
|
|
81
85
|
defaultButton.args = {variant: 'medium'}
|
82
86
|
dangerButton.args = {variant: 'medium'}
|
@@ -97,8 +97,20 @@ export const UseAnchoredPosition = (args: any) => {
|
|
97
97
|
alignmentOffset: args.alignmentOffset && parseInt(args.alignmentOffset, 10),
|
98
98
|
allowOutOfBounds: args.allowOutOfBounds ?? undefined
|
99
99
|
},
|
100
|
-
[
|
100
|
+
[
|
101
|
+
args.anchorY,
|
102
|
+
args.anchorX,
|
103
|
+
args.anchorPosition,
|
104
|
+
args.anchorSide,
|
105
|
+
args.anchorAlignment,
|
106
|
+
args.anchorOffset,
|
107
|
+
args.alignmentOffset,
|
108
|
+
args.allowOutOfBounds,
|
109
|
+
args.floatHeight,
|
110
|
+
args.floatWidth
|
111
|
+
]
|
101
112
|
)
|
113
|
+
|
102
114
|
return (
|
103
115
|
<Box position="relative" m={2}>
|
104
116
|
<Anchor
|