@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.
Files changed (57) hide show
  1. package/.github/workflows/check_for_changeset.yml +25 -0
  2. package/CHANGELOG.md +14 -2
  3. package/dist/browser.esm.js +40 -37
  4. package/dist/browser.esm.js.map +1 -1
  5. package/dist/browser.umd.js +34 -31
  6. package/dist/browser.umd.js.map +1 -1
  7. package/docs/content/Autocomplete.mdx +51 -21
  8. package/lib/ActionList/Item.js +3 -3
  9. package/lib/Button/Button.js +1 -1
  10. package/lib/Button/ButtonTableList.js +1 -1
  11. package/lib/Pagination/Pagination.js +1 -1
  12. package/lib/TextInputWithTokens.js +17 -10
  13. package/lib/Token/Token.js +13 -2
  14. package/lib/Token/TokenBase.js +0 -4
  15. package/lib/Token/_RemoveTokenButton.js +15 -2
  16. package/lib/_TextInputWrapper.js +1 -1
  17. package/lib/stories/Autocomplete.stories.js +67 -56
  18. package/lib/stories/Button.stories.js +12 -1
  19. package/lib/stories/useAnchoredPosition.stories.js +1 -1
  20. package/lib-esm/ActionList/Item.js +3 -3
  21. package/lib-esm/Button/Button.js +1 -1
  22. package/lib-esm/Button/ButtonTableList.js +1 -1
  23. package/lib-esm/Pagination/Pagination.js +1 -1
  24. package/lib-esm/TextInputWithTokens.js +17 -10
  25. package/lib-esm/Token/Token.js +13 -2
  26. package/lib-esm/Token/TokenBase.js +0 -4
  27. package/lib-esm/Token/_RemoveTokenButton.js +11 -2
  28. package/lib-esm/_TextInputWrapper.js +1 -1
  29. package/lib-esm/stories/Autocomplete.stories.js +67 -56
  30. package/lib-esm/stories/Button.stories.js +8 -0
  31. package/lib-esm/stories/useAnchoredPosition.stories.js +1 -1
  32. package/package-lock.json +6090 -7003
  33. package/package.json +6 -6
  34. package/src/ActionList/Item.tsx +3 -3
  35. package/src/Button/Button.tsx +1 -1
  36. package/src/Button/ButtonTableList.tsx +1 -1
  37. package/src/Pagination/Pagination.tsx +1 -1
  38. package/src/TextInputWithTokens.tsx +49 -40
  39. package/src/Token/Token.tsx +16 -2
  40. package/src/Token/TokenBase.tsx +0 -5
  41. package/src/Token/_RemoveTokenButton.tsx +15 -2
  42. package/src/_TextInputWrapper.tsx +1 -1
  43. package/src/__tests__/Pagination/__snapshots__/Pagination.test.tsx.snap +1 -1
  44. package/src/__tests__/__snapshots__/ActionMenu.test.tsx.snap +1 -1
  45. package/src/__tests__/__snapshots__/AnchoredOverlay.test.tsx.snap +3 -3
  46. package/src/__tests__/__snapshots__/Button.test.tsx.snap +3 -3
  47. package/src/__tests__/__snapshots__/ConfirmationDialog.test.tsx.snap +1 -1
  48. package/src/__tests__/__snapshots__/Dropdown.test.tsx.snap +1 -1
  49. package/src/__tests__/__snapshots__/DropdownMenu.test.tsx.snap +1 -1
  50. package/src/__tests__/__snapshots__/SelectMenu.test.tsx.snap +1 -1
  51. package/src/__tests__/__snapshots__/SelectPanel.test.tsx.snap +1 -1
  52. package/src/__tests__/__snapshots__/TextInputWithTokens.test.tsx.snap +3374 -3166
  53. package/src/__tests__/__snapshots__/Token.test.tsx.snap +31 -24
  54. package/src/stories/Autocomplete.stories.tsx +142 -59
  55. package/src/stories/Button.stories.tsx +4 -0
  56. package/src/stories/useAnchoredPosition.stories.tsx +13 -1
  57. package/stats.html +1 -1
@@ -19,24 +19,16 @@ type Datum = {
19
19
  }
20
20
 
21
21
  const items: Datum[] = [
22
- {text: 'zero', id: 0},
23
- {text: 'one', id: 1},
24
- {text: 'two', id: 2},
25
- {text: 'three', id: 3},
26
- {text: 'four', id: 4},
27
- {text: 'five', id: 5},
28
- {text: 'six', id: 6},
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
- <Box as="label" display="block" htmlFor="autocompleteInput" id="autocompleteLabel">
73
- Pick an option
74
- </Box>
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
- <Box as="label" display="block" htmlFor="autocompleteInput" id="autocompleteLabel">
101
- Pick an option
102
- </Box>
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[]>(mockTokens)
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
- <Box as="label" display="block" htmlFor="autocompleteInput" id="autocompleteLabel">
160
- Pick options
161
- </Box>
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 as={TextInputTokens} tokens={tokens} onTokenRemove={onTokenRemove} id="autocompleteInput" />
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
- <Box as="label" display="block" htmlFor="autocompleteInput" id="autocompleteLabel">
224
- Pick options
225
- </Box>
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={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
- <Box as="label" display="block" htmlFor="autocompleteInput" id="autocompleteLabel">
267
- Pick an option
268
- </Box>
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
- <Box as="label" display="block" htmlFor="autocompleteInput" id="autocompleteLabel">
294
- Pick an option
295
- </Box>
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
- <Box as="label" display="block" htmlFor="autocompleteInput" id="autocompleteLabel">
330
- Pick an option
331
- </Box>
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
- <Box as="label" display="block" htmlFor="autocompleteInput" id="autocompleteLabel">
362
- Pick an option
363
- </Box>
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
- <Box as="label" display="block" htmlFor="autocompleteInput" id="autocompleteLabel">
394
- Pick an option
395
- </Box>
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
- <Box as="label" display="block" htmlFor="autocompleteInput" id="autocompleteLabel">
416
- Pick an option
417
- </Box>
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
- <Box as="label" htmlFor="autocompleteInput" id="autocompleteLabel">
441
- Pick labels
442
- </Box>
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
- <Box as="label" display="block" htmlFor="autocompleteInput" id="autocompleteLabel">
474
- Pick an option
475
- </Box>
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 options
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
- [args]
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