@primer/react 38.30.0-rc.8b6124d07 → 38.30.0-rc.a4950797a
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 +2 -0
- package/dist/ActionBar/ActionBar.d.ts +24 -1
- package/dist/ActionBar/ActionBar.d.ts.map +1 -1
- package/dist/ActionBar/ActionBar.js +96 -4
- package/dist/ActionBar/index.d.ts +21 -1
- package/dist/ActionBar/index.d.ts.map +1 -1
- package/dist/ActionBar/index.js +2 -1
- package/generated/components.json +28 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,8 @@
|
|
|
4
4
|
|
|
5
5
|
### Minor Changes
|
|
6
6
|
|
|
7
|
+
- [#8048](https://github.com/primer/react/pull/8048) [`0add561`](https://github.com/primer/react/commit/0add5615720d17d69c77b014786c5e17e4337bb0) Thanks [@copilot-swe-agent](https://github.com/apps/copilot-swe-agent)! - ActionBar: Add `ActionBar.Button` for rendering text buttons that overflow into the menu, alongside the existing `ActionBar.IconButton`
|
|
8
|
+
|
|
7
9
|
- [#8031](https://github.com/primer/react/pull/8031) [`cb79351`](https://github.com/primer/react/commit/cb79351f29b9a1aea7bacf890eca97a5c9d97590) Thanks [@janmaarten-a11y](https://github.com/janmaarten-a11y)! - Add a `NavList.Heading` slot that names the navigation region. It renders an `h2`
|
|
8
10
|
by default (configurable to `h3` via `as`), supports a `visuallyHidden` variant,
|
|
9
11
|
labels the `nav` landmark via `aria-labelledby`, and makes `NavList.Group`
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { type ActionListItemProps } from '../ActionList';
|
|
3
|
-
import type { IconButtonProps } from '../Button';
|
|
3
|
+
import type { ButtonProps, IconButtonProps } from '../Button';
|
|
4
4
|
type Size = 'small' | 'medium' | 'large';
|
|
5
5
|
type A11yProps = {
|
|
6
6
|
/** When provided, a label is added to the action bar */
|
|
@@ -38,6 +38,9 @@ export type ActionBarProps = {
|
|
|
38
38
|
export type ActionBarIconButtonProps = {
|
|
39
39
|
disabled?: boolean;
|
|
40
40
|
} & IconButtonProps;
|
|
41
|
+
export type ActionBarButtonProps = {
|
|
42
|
+
disabled?: boolean;
|
|
43
|
+
} & ButtonProps;
|
|
41
44
|
export type ActionBarMenuItemProps = ({
|
|
42
45
|
/**
|
|
43
46
|
* Type of menu item to be rendered in the menu (action | group).
|
|
@@ -91,6 +94,26 @@ export type ActionBarMenuProps = {
|
|
|
91
94
|
} & IconButtonProps;
|
|
92
95
|
export declare const ActionBar: React.FC<React.PropsWithChildren<ActionBarProps>>;
|
|
93
96
|
export declare const ActionBarIconButton: React.ForwardRefExoticComponent<ActionBarIconButtonProps & React.RefAttributes<unknown>>;
|
|
97
|
+
export declare const ActionBarButton: React.ForwardRefExoticComponent<{
|
|
98
|
+
disabled?: boolean;
|
|
99
|
+
} & {
|
|
100
|
+
alignContent?: import("../Button/types").AlignContent;
|
|
101
|
+
icon?: React.FunctionComponent<import("@primer/octicons-react").IconProps> | React.ElementType | React.ReactElement<any> | null;
|
|
102
|
+
leadingVisual?: React.ElementType | React.ReactElement<any> | null;
|
|
103
|
+
trailingVisual?: React.ElementType | React.ReactElement<any> | null;
|
|
104
|
+
trailingAction?: React.ElementType | null;
|
|
105
|
+
children?: React.ReactNode;
|
|
106
|
+
count?: number | string;
|
|
107
|
+
} & {
|
|
108
|
+
variant?: import("../Button/types").VariantType;
|
|
109
|
+
size?: import("../Button/types").Size;
|
|
110
|
+
disabled?: boolean;
|
|
111
|
+
block?: boolean;
|
|
112
|
+
loading?: boolean;
|
|
113
|
+
loadingAnnouncement?: string;
|
|
114
|
+
inactive?: boolean;
|
|
115
|
+
labelWrap?: boolean;
|
|
116
|
+
} & React.ButtonHTMLAttributes<HTMLButtonElement> & React.RefAttributes<unknown>>;
|
|
94
117
|
export declare const ActionBarGroup: React.ForwardRefExoticComponent<{
|
|
95
118
|
children?: React.ReactNode | undefined;
|
|
96
119
|
} & React.RefAttributes<unknown>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ActionBar.d.ts","sourceRoot":"","sources":["../../src/ActionBar/ActionBar.tsx"],"names":[],"mappings":"AACA,OAAO,KAAiF,MAAM,OAAO,CAAA;AAErG,OAAO,EAAa,KAAK,mBAAmB,EAAC,MAAM,eAAe,CAAA;AAElE,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"ActionBar.d.ts","sourceRoot":"","sources":["../../src/ActionBar/ActionBar.tsx"],"names":[],"mappings":"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"}
|
|
@@ -3,6 +3,7 @@ import React, { forwardRef, useRef, useState, useMemo, useCallback, useContext,
|
|
|
3
3
|
import { KebabHorizontalIcon } from '@primer/octicons-react';
|
|
4
4
|
import { ActionList } from '../ActionList/index.js';
|
|
5
5
|
import { IconButton } from '../Button/IconButton.js';
|
|
6
|
+
import { ButtonComponent } from '../Button/Button.js';
|
|
6
7
|
import { useFocusZone } from '../hooks/useFocusZone.js';
|
|
7
8
|
import styles from './ActionBar.module.css.js';
|
|
8
9
|
import { clsx } from 'clsx';
|
|
@@ -359,6 +360,97 @@ const ActionBarIconButton = /*#__PURE__*/forwardRef(({
|
|
|
359
360
|
"data-overflowing": dataOverflowingAttr
|
|
360
361
|
});
|
|
361
362
|
});
|
|
363
|
+
const ActionBarButton = /*#__PURE__*/forwardRef((t0, forwardedRef) => {
|
|
364
|
+
const $ = c(19);
|
|
365
|
+
let disabled;
|
|
366
|
+
let onClick;
|
|
367
|
+
let props;
|
|
368
|
+
if ($[0] !== t0) {
|
|
369
|
+
({
|
|
370
|
+
disabled,
|
|
371
|
+
onClick,
|
|
372
|
+
...props
|
|
373
|
+
} = t0);
|
|
374
|
+
$[0] = t0;
|
|
375
|
+
$[1] = disabled;
|
|
376
|
+
$[2] = onClick;
|
|
377
|
+
$[3] = props;
|
|
378
|
+
} else {
|
|
379
|
+
disabled = $[1];
|
|
380
|
+
onClick = $[2];
|
|
381
|
+
props = $[3];
|
|
382
|
+
}
|
|
383
|
+
const ref = useRef(null);
|
|
384
|
+
const mergedRef = useMergedRefs(forwardedRef, ref);
|
|
385
|
+
const {
|
|
386
|
+
size
|
|
387
|
+
} = React.useContext(ActionBarContext);
|
|
388
|
+
const {
|
|
389
|
+
children,
|
|
390
|
+
leadingVisual
|
|
391
|
+
} = props;
|
|
392
|
+
const t1 = typeof leadingVisual === "function" ? leadingVisual : undefined;
|
|
393
|
+
const t2 = !!disabled;
|
|
394
|
+
const t3 = onClick;
|
|
395
|
+
let t4;
|
|
396
|
+
if ($[4] !== children || $[5] !== t1 || $[6] !== t2 || $[7] !== t3) {
|
|
397
|
+
t4 = {
|
|
398
|
+
type: "action",
|
|
399
|
+
label: children,
|
|
400
|
+
icon: t1,
|
|
401
|
+
disabled: t2,
|
|
402
|
+
onClick: t3
|
|
403
|
+
};
|
|
404
|
+
$[4] = children;
|
|
405
|
+
$[5] = t1;
|
|
406
|
+
$[6] = t2;
|
|
407
|
+
$[7] = t3;
|
|
408
|
+
$[8] = t4;
|
|
409
|
+
} else {
|
|
410
|
+
t4 = $[8];
|
|
411
|
+
}
|
|
412
|
+
const {
|
|
413
|
+
dataOverflowingAttr
|
|
414
|
+
} = useActionBarItem(ref, t4);
|
|
415
|
+
let t5;
|
|
416
|
+
if ($[9] !== disabled || $[10] !== onClick) {
|
|
417
|
+
t5 = event => {
|
|
418
|
+
var _onClick;
|
|
419
|
+
if (disabled) {
|
|
420
|
+
return;
|
|
421
|
+
}
|
|
422
|
+
(_onClick = onClick) === null || _onClick === void 0 ? void 0 : _onClick(event);
|
|
423
|
+
};
|
|
424
|
+
$[9] = disabled;
|
|
425
|
+
$[10] = onClick;
|
|
426
|
+
$[11] = t5;
|
|
427
|
+
} else {
|
|
428
|
+
t5 = $[11];
|
|
429
|
+
}
|
|
430
|
+
const clickHandler = t5;
|
|
431
|
+
let t6;
|
|
432
|
+
if ($[12] !== clickHandler || $[13] !== dataOverflowingAttr || $[14] !== disabled || $[15] !== mergedRef || $[16] !== props || $[17] !== size) {
|
|
433
|
+
t6 = /*#__PURE__*/jsx(ButtonComponent, {
|
|
434
|
+
"aria-disabled": disabled,
|
|
435
|
+
ref: mergedRef,
|
|
436
|
+
size: size,
|
|
437
|
+
onClick: clickHandler,
|
|
438
|
+
...props,
|
|
439
|
+
variant: "invisible",
|
|
440
|
+
"data-overflowing": dataOverflowingAttr
|
|
441
|
+
});
|
|
442
|
+
$[12] = clickHandler;
|
|
443
|
+
$[13] = dataOverflowingAttr;
|
|
444
|
+
$[14] = disabled;
|
|
445
|
+
$[15] = mergedRef;
|
|
446
|
+
$[16] = props;
|
|
447
|
+
$[17] = size;
|
|
448
|
+
$[18] = t6;
|
|
449
|
+
} else {
|
|
450
|
+
t6 = $[18];
|
|
451
|
+
}
|
|
452
|
+
return t6;
|
|
453
|
+
});
|
|
362
454
|
const ActionBarGroupContext = /*#__PURE__*/React.createContext(null);
|
|
363
455
|
const ActionBarGroup = /*#__PURE__*/forwardRef((t0, forwardedRef) => {
|
|
364
456
|
const $ = c(10);
|
|
@@ -611,10 +703,10 @@ function _temp4(t0) {
|
|
|
611
703
|
typeof onClick === "function" && onClick(event);
|
|
612
704
|
},
|
|
613
705
|
disabled: disabled,
|
|
614
|
-
children: [/*#__PURE__*/jsx(ActionList.LeadingVisual, {
|
|
706
|
+
children: [Icon ? /*#__PURE__*/jsx(ActionList.LeadingVisual, {
|
|
615
707
|
children: /*#__PURE__*/jsx(Icon, {})
|
|
616
|
-
}), label]
|
|
617
|
-
},
|
|
708
|
+
}) : null, label]
|
|
709
|
+
}, id);
|
|
618
710
|
}
|
|
619
711
|
if (menuItem.type === "menu") {
|
|
620
712
|
const menuItems = menuItem.items;
|
|
@@ -645,4 +737,4 @@ function _temp7(item, index) {
|
|
|
645
737
|
return renderMenuItem(item, index);
|
|
646
738
|
}
|
|
647
739
|
|
|
648
|
-
export { ActionBar, ActionBarGroup, ActionBarIconButton, ActionBarMenu, VerticalDivider };
|
|
740
|
+
export { ActionBar, ActionBarButton, ActionBarGroup, ActionBarIconButton, ActionBarMenu, VerticalDivider };
|
|
@@ -1,6 +1,26 @@
|
|
|
1
|
-
export type { ActionBarProps, ActionBarMenuProps, ActionBarMenuItemProps } from './ActionBar';
|
|
1
|
+
export type { ActionBarProps, ActionBarButtonProps, ActionBarMenuProps, ActionBarMenuItemProps } from './ActionBar';
|
|
2
2
|
declare const ActionBar: import("react").FC<import("react").PropsWithChildren<import("./ActionBar").ActionBarProps>> & {
|
|
3
3
|
IconButton: import("react").ForwardRefExoticComponent<import("./ActionBar").ActionBarIconButtonProps & import("react").RefAttributes<unknown>>;
|
|
4
|
+
Button: import("react").ForwardRefExoticComponent<{
|
|
5
|
+
disabled?: boolean;
|
|
6
|
+
} & {
|
|
7
|
+
alignContent?: import("../Button/types").AlignContent;
|
|
8
|
+
icon?: React.FunctionComponent<import("@primer/octicons-react").IconProps> | React.ElementType | React.ReactElement<any> | null;
|
|
9
|
+
leadingVisual?: React.ElementType | React.ReactElement<any> | null;
|
|
10
|
+
trailingVisual?: React.ElementType | React.ReactElement<any> | null;
|
|
11
|
+
trailingAction?: React.ElementType | null;
|
|
12
|
+
children?: React.ReactNode;
|
|
13
|
+
count?: number | string;
|
|
14
|
+
} & {
|
|
15
|
+
variant?: import("../Button/types").VariantType;
|
|
16
|
+
size?: import("../Button/types").Size;
|
|
17
|
+
disabled?: boolean;
|
|
18
|
+
block?: boolean;
|
|
19
|
+
loading?: boolean;
|
|
20
|
+
loadingAnnouncement?: string;
|
|
21
|
+
inactive?: boolean;
|
|
22
|
+
labelWrap?: boolean;
|
|
23
|
+
} & import("react").ButtonHTMLAttributes<HTMLButtonElement> & import("react").RefAttributes<unknown>>;
|
|
4
24
|
Divider: () => import("react").JSX.Element;
|
|
5
25
|
Group: import("react").ForwardRefExoticComponent<{
|
|
6
26
|
children?: import("react").ReactNode | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ActionBar/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ActionBar/index.ts"],"names":[],"mappings":"AAQA,YAAY,EAAC,cAAc,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,sBAAsB,EAAC,MAAM,aAAa,CAAA;AAEjH,QAAA,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAMb,CAAA;AAEF,eAAe,SAAS,CAAA;AACxB,OAAO,EAAC,SAAS,EAAC,CAAA"}
|
package/dist/ActionBar/index.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import { ActionBar as ActionBar$1, ActionBarMenu, ActionBarGroup, VerticalDivider, ActionBarIconButton } from './ActionBar.js';
|
|
1
|
+
import { ActionBar as ActionBar$1, ActionBarMenu, ActionBarGroup, VerticalDivider, ActionBarButton, ActionBarIconButton } from './ActionBar.js';
|
|
2
2
|
|
|
3
3
|
const ActionBar = Object.assign(ActionBar$1, {
|
|
4
4
|
IconButton: ActionBarIconButton,
|
|
5
|
+
Button: ActionBarButton,
|
|
5
6
|
Divider: VerticalDivider,
|
|
6
7
|
Group: ActionBarGroup,
|
|
7
8
|
Menu: ActionBarMenu
|
|
@@ -98,6 +98,34 @@
|
|
|
98
98
|
"url": "/react/IconButton"
|
|
99
99
|
}
|
|
100
100
|
},
|
|
101
|
+
{
|
|
102
|
+
"name": "ActionBar.Button",
|
|
103
|
+
"props": [
|
|
104
|
+
{
|
|
105
|
+
"name": "children",
|
|
106
|
+
"type": "React.ReactNode",
|
|
107
|
+
"defaultValue": "",
|
|
108
|
+
"required": true,
|
|
109
|
+
"description": "The text content of the button."
|
|
110
|
+
},
|
|
111
|
+
{
|
|
112
|
+
"name": "leadingVisual",
|
|
113
|
+
"type": "Component",
|
|
114
|
+
"defaultValue": "",
|
|
115
|
+
"description": "Provide an octicon to render before the button text. It will also be shown when the button overflows into the menu."
|
|
116
|
+
},
|
|
117
|
+
{
|
|
118
|
+
"name": "disabled",
|
|
119
|
+
"type": "boolean",
|
|
120
|
+
"defaultValue": "",
|
|
121
|
+
"description": "Provides a disabled state for the button. The button will remain focusable, and have `aria-disabled` applied."
|
|
122
|
+
}
|
|
123
|
+
],
|
|
124
|
+
"passthrough": {
|
|
125
|
+
"element": "Button",
|
|
126
|
+
"url": "/react/Button"
|
|
127
|
+
}
|
|
128
|
+
},
|
|
101
129
|
{
|
|
102
130
|
"name": "ActionBar.Divider",
|
|
103
131
|
"props": []
|
package/package.json
CHANGED