@carbon/react 1.28.0 → 1.29.0
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/es/components/Checkbox/Checkbox.d.ts +2 -2
- package/es/components/Heading/index.d.ts +51 -0
- package/es/components/Heading/index.js +5 -9
- package/es/components/Slider/Slider.d.ts +26 -2
- package/es/components/Slider/Slider.js +36 -8
- package/es/components/StructuredList/StructuredList.Skeleton.js +2 -10
- package/es/components/StructuredList/StructuredList.js +2 -2
- package/es/components/Theme/index.d.ts +62 -0
- package/es/components/Theme/index.js +4 -4
- package/es/components/UIShell/HeaderContainer.js +8 -0
- package/es/components/UIShell/HeaderMenuButton.d.ts +38 -0
- package/es/components/UIShell/HeaderMenuButton.js +7 -12
- package/es/components/UIShell/HeaderNavigation.d.ts +24 -0
- package/es/components/UIShell/HeaderNavigation.js +8 -13
- package/es/components/UIShell/HeaderSideNavItems.d.ts +33 -0
- package/es/components/UIShell/HeaderSideNavItems.js +4 -9
- package/es/components/UIShell/SideNav.d.ts +21 -0
- package/es/components/UIShell/SideNav.js +37 -38
- package/es/index.js +1 -1
- package/es/types/common.d.ts +11 -0
- package/lib/components/Checkbox/Checkbox.d.ts +2 -2
- package/lib/components/Heading/index.d.ts +51 -0
- package/lib/components/Heading/index.js +5 -9
- package/lib/components/Slider/Slider.d.ts +26 -2
- package/lib/components/Slider/Slider.js +36 -8
- package/lib/components/StructuredList/StructuredList.Skeleton.js +2 -10
- package/lib/components/StructuredList/StructuredList.js +2 -2
- package/lib/components/Theme/index.d.ts +62 -0
- package/lib/components/Theme/index.js +4 -4
- package/lib/components/UIShell/HeaderContainer.js +8 -0
- package/lib/components/UIShell/HeaderMenuButton.d.ts +38 -0
- package/lib/components/UIShell/HeaderMenuButton.js +7 -12
- package/lib/components/UIShell/HeaderNavigation.d.ts +24 -0
- package/lib/components/UIShell/HeaderNavigation.js +7 -13
- package/lib/components/UIShell/HeaderSideNavItems.d.ts +33 -0
- package/lib/components/UIShell/HeaderSideNavItems.js +4 -9
- package/lib/components/UIShell/SideNav.d.ts +21 -0
- package/lib/components/UIShell/SideNav.js +36 -37
- package/lib/index.js +2 -2
- package/lib/types/common.d.ts +11 -0
- package/package.json +4 -4
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright IBM Corp. 2016, 2023
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the Apache-2.0 license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
import { type ComponentProps } from 'react';
|
|
8
|
+
import PropTypes from 'prop-types';
|
|
9
|
+
type HeaderMenuButtonBaseProps = Omit<ComponentProps<'button'>, 'title' | 'type'>;
|
|
10
|
+
interface HeaderMenuButtonProps extends HeaderMenuButtonBaseProps {
|
|
11
|
+
'aria-label'?: string;
|
|
12
|
+
'aria-labelledby'?: string;
|
|
13
|
+
className?: string;
|
|
14
|
+
renderMenuIcon?: JSX.Element;
|
|
15
|
+
renderCloseIcon?: JSX.Element;
|
|
16
|
+
isActive?: boolean;
|
|
17
|
+
isCollapsible?: boolean;
|
|
18
|
+
}
|
|
19
|
+
declare function HeaderMenuButton({ 'aria-label': ariaLabel, 'aria-labelledby': ariaLabelledBy, className: customClassName, renderMenuIcon, renderCloseIcon, isActive, isCollapsible, ...rest }: HeaderMenuButtonProps): JSX.Element;
|
|
20
|
+
declare namespace HeaderMenuButton {
|
|
21
|
+
var propTypes: {
|
|
22
|
+
/**
|
|
23
|
+
* Optionally provide a custom class name that is applied to the underlying
|
|
24
|
+
* button
|
|
25
|
+
*/
|
|
26
|
+
className: PropTypes.Requireable<string>;
|
|
27
|
+
/**
|
|
28
|
+
* Specify whether the menu button is "active".
|
|
29
|
+
*/
|
|
30
|
+
isActive: PropTypes.Requireable<boolean>;
|
|
31
|
+
/**
|
|
32
|
+
* Optionally provide an onClick handler that is called when the underlying
|
|
33
|
+
* button fires it's onclick event
|
|
34
|
+
*/
|
|
35
|
+
onClick: PropTypes.Requireable<(...args: any[]) => any>;
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
export default HeaderMenuButton;
|
|
@@ -24,7 +24,6 @@ var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
|
|
|
24
24
|
var PropTypes__default = /*#__PURE__*/_interopDefaultLegacy(PropTypes);
|
|
25
25
|
|
|
26
26
|
var _Menu, _Close;
|
|
27
|
-
|
|
28
27
|
function HeaderMenuButton(_ref) {
|
|
29
28
|
let {
|
|
30
29
|
'aria-label': ariaLabel,
|
|
@@ -32,38 +31,34 @@ function HeaderMenuButton(_ref) {
|
|
|
32
31
|
className: customClassName,
|
|
33
32
|
renderMenuIcon,
|
|
34
33
|
renderCloseIcon,
|
|
35
|
-
onClick,
|
|
36
34
|
isActive,
|
|
37
35
|
isCollapsible,
|
|
38
36
|
...rest
|
|
39
37
|
} = _ref;
|
|
40
38
|
const prefix = usePrefix.usePrefix();
|
|
41
|
-
const className = cx__default["default"]({
|
|
42
|
-
|
|
39
|
+
const className = cx__default["default"]({ ...(typeof customClassName === 'string' && {
|
|
40
|
+
[customClassName]: !!customClassName
|
|
41
|
+
}),
|
|
43
42
|
[`${prefix}--header__action`]: true,
|
|
44
43
|
[`${prefix}--header__menu-trigger`]: true,
|
|
45
44
|
[`${prefix}--header__action--active`]: isActive,
|
|
46
45
|
[`${prefix}--header__menu-toggle`]: true,
|
|
47
46
|
[`${prefix}--header__menu-toggle__hidden`]: !isCollapsible
|
|
48
47
|
});
|
|
49
|
-
const accessibilityLabel = {
|
|
50
|
-
'aria-label': ariaLabel,
|
|
51
|
-
'aria-labelledby': ariaLabelledBy
|
|
52
|
-
};
|
|
53
48
|
const menuIcon = renderMenuIcon ? renderMenuIcon : _Menu || (_Menu = /*#__PURE__*/React__default["default"].createElement(iconsReact.Menu, {
|
|
54
49
|
size: 20
|
|
55
50
|
}));
|
|
56
51
|
const closeIcon = renderCloseIcon ? renderCloseIcon : _Close || (_Close = /*#__PURE__*/React__default["default"].createElement(iconsReact.Close, {
|
|
57
52
|
size: 20
|
|
58
53
|
}));
|
|
59
|
-
return /*#__PURE__*/React__default["default"].createElement("button", _rollupPluginBabelHelpers["extends"]({}, rest,
|
|
54
|
+
return /*#__PURE__*/React__default["default"].createElement("button", _rollupPluginBabelHelpers["extends"]({}, rest, {
|
|
55
|
+
"aria-label": ariaLabel,
|
|
56
|
+
"aria-labelledby": ariaLabelledBy,
|
|
60
57
|
className: className,
|
|
61
58
|
title: ariaLabel,
|
|
62
|
-
type: "button"
|
|
63
|
-
onClick: onClick
|
|
59
|
+
type: "button"
|
|
64
60
|
}), isActive ? closeIcon : menuIcon);
|
|
65
61
|
}
|
|
66
|
-
|
|
67
62
|
HeaderMenuButton.propTypes = {
|
|
68
63
|
/**
|
|
69
64
|
* Required props for accessibility label on the underlying menu button
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright IBM Corp. 2016, 2023
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the Apache-2.0 license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
import { type ComponentProps } from 'react';
|
|
8
|
+
import PropTypes from 'prop-types';
|
|
9
|
+
type HeaderNavigationProps = ComponentProps<'nav'>;
|
|
10
|
+
declare function HeaderNavigation({ 'aria-label': ariaLabel, 'aria-labelledby': ariaLabelledBy, children, className: customClassName, ...rest }: HeaderNavigationProps): JSX.Element;
|
|
11
|
+
declare namespace HeaderNavigation {
|
|
12
|
+
var propTypes: {
|
|
13
|
+
/**
|
|
14
|
+
* Provide valid children of HeaderNavigation, for example `HeaderMenuItem`
|
|
15
|
+
* or `HeaderMenu`
|
|
16
|
+
*/
|
|
17
|
+
children: PropTypes.Requireable<PropTypes.ReactNodeLike>;
|
|
18
|
+
/**
|
|
19
|
+
* Optionally provide a custom class to apply to the underlying <nav> node
|
|
20
|
+
*/
|
|
21
|
+
className: PropTypes.Requireable<string>;
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
export default HeaderNavigation;
|
|
@@ -22,29 +22,24 @@ var cx__default = /*#__PURE__*/_interopDefaultLegacy(cx);
|
|
|
22
22
|
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
|
|
23
23
|
var PropTypes__default = /*#__PURE__*/_interopDefaultLegacy(PropTypes);
|
|
24
24
|
|
|
25
|
-
function HeaderNavigation(
|
|
26
|
-
|
|
25
|
+
function HeaderNavigation(_ref) {
|
|
26
|
+
let {
|
|
27
27
|
'aria-label': ariaLabel,
|
|
28
28
|
'aria-labelledby': ariaLabelledBy,
|
|
29
29
|
children,
|
|
30
30
|
className: customClassName,
|
|
31
31
|
...rest
|
|
32
|
-
} =
|
|
32
|
+
} = _ref;
|
|
33
33
|
const prefix = usePrefix.usePrefix();
|
|
34
|
-
const className = cx__default["default"](`${prefix}--header__nav`, customClassName);
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
'aria-label': ariaLabel,
|
|
39
|
-
'aria-labelledby': ariaLabelledBy
|
|
40
|
-
};
|
|
41
|
-
return /*#__PURE__*/React__default["default"].createElement("nav", _rollupPluginBabelHelpers["extends"]({}, rest, accessibilityLabel, {
|
|
34
|
+
const className = cx__default["default"](`${prefix}--header__nav`, customClassName);
|
|
35
|
+
return /*#__PURE__*/React__default["default"].createElement("nav", _rollupPluginBabelHelpers["extends"]({}, rest, {
|
|
36
|
+
"aria-label": ariaLabel,
|
|
37
|
+
"aria-labelledby": ariaLabelledBy,
|
|
42
38
|
className: className
|
|
43
39
|
}), /*#__PURE__*/React__default["default"].createElement("ul", {
|
|
44
40
|
className: `${prefix}--header__menu-bar`
|
|
45
41
|
}, children));
|
|
46
42
|
}
|
|
47
|
-
|
|
48
43
|
HeaderNavigation.propTypes = {
|
|
49
44
|
/**
|
|
50
45
|
* Required props for accessibility label on the underlying menu
|
|
@@ -63,5 +58,4 @@ HeaderNavigation.propTypes = {
|
|
|
63
58
|
className: PropTypes__default["default"].string
|
|
64
59
|
};
|
|
65
60
|
|
|
66
|
-
exports.HeaderNavigation = HeaderNavigation;
|
|
67
61
|
exports["default"] = HeaderNavigation;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright IBM Corp. 2016, 2023
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the Apache-2.0 license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
import { type ReactNode } from 'react';
|
|
8
|
+
import PropTypes from 'prop-types';
|
|
9
|
+
interface HeaderSideNavItemsProps {
|
|
10
|
+
className?: string | undefined;
|
|
11
|
+
children?: ReactNode;
|
|
12
|
+
hasDivider?: boolean | undefined;
|
|
13
|
+
}
|
|
14
|
+
declare function HeaderSideNavItems({ className: customClassName, children, hasDivider, }: HeaderSideNavItemsProps): JSX.Element;
|
|
15
|
+
declare namespace HeaderSideNavItems {
|
|
16
|
+
var propTypes: {
|
|
17
|
+
/**
|
|
18
|
+
* The child nodes to be rendered
|
|
19
|
+
*/
|
|
20
|
+
children: PropTypes.Requireable<PropTypes.ReactNodeLike>;
|
|
21
|
+
/**
|
|
22
|
+
* Optionally provide a custom class name that is applied to the underlying
|
|
23
|
+
* button
|
|
24
|
+
*/
|
|
25
|
+
className: PropTypes.Requireable<string>;
|
|
26
|
+
/**
|
|
27
|
+
* Optionally specify if container will have a bottom divider to differentiate
|
|
28
|
+
* between original sidenav items and header menu items. False by default.
|
|
29
|
+
*/
|
|
30
|
+
hasDivider: PropTypes.Requireable<boolean>;
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
export default HeaderSideNavItems;
|
|
@@ -20,11 +20,11 @@ var cx__default = /*#__PURE__*/_interopDefaultLegacy(cx);
|
|
|
20
20
|
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
|
|
21
21
|
var PropTypes__default = /*#__PURE__*/_interopDefaultLegacy(PropTypes);
|
|
22
22
|
|
|
23
|
-
|
|
23
|
+
function HeaderSideNavItems(_ref) {
|
|
24
24
|
let {
|
|
25
25
|
className: customClassName,
|
|
26
26
|
children,
|
|
27
|
-
hasDivider
|
|
27
|
+
hasDivider = false
|
|
28
28
|
} = _ref;
|
|
29
29
|
const prefix = usePrefix.usePrefix();
|
|
30
30
|
const className = cx__default["default"]({
|
|
@@ -34,8 +34,7 @@ const HeaderSideNavItems = _ref => {
|
|
|
34
34
|
return /*#__PURE__*/React__default["default"].createElement("ul", {
|
|
35
35
|
className: className
|
|
36
36
|
}, children);
|
|
37
|
-
}
|
|
38
|
-
|
|
37
|
+
}
|
|
39
38
|
HeaderSideNavItems.propTypes = {
|
|
40
39
|
/**
|
|
41
40
|
* The child nodes to be rendered
|
|
@@ -54,9 +53,5 @@ HeaderSideNavItems.propTypes = {
|
|
|
54
53
|
*/
|
|
55
54
|
hasDivider: PropTypes__default["default"].bool
|
|
56
55
|
};
|
|
57
|
-
HeaderSideNavItems.defaultProps = {
|
|
58
|
-
hasDivider: false
|
|
59
|
-
};
|
|
60
|
-
var HeaderSideNavItems$1 = HeaderSideNavItems;
|
|
61
56
|
|
|
62
|
-
exports["default"] = HeaderSideNavItems
|
|
57
|
+
exports["default"] = HeaderSideNavItems;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright IBM Corp. 2016, 2023
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the Apache-2.0 license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
import React, { type ComponentProps, type FocusEvent, type KeyboardEvent, type MouseEventHandler } from 'react';
|
|
8
|
+
interface SideNavProps extends ComponentProps<'nav'> {
|
|
9
|
+
expanded?: boolean | undefined;
|
|
10
|
+
defaultExpanded?: boolean | undefined;
|
|
11
|
+
isChildOfHeader?: boolean | undefined;
|
|
12
|
+
onToggle?: (event: FocusEvent<HTMLElement> | KeyboardEvent<HTMLElement> | boolean, value: boolean) => void | undefined;
|
|
13
|
+
isFixedNav?: boolean | undefined;
|
|
14
|
+
isRail?: boolean | undefined;
|
|
15
|
+
isPersistent?: boolean | undefined;
|
|
16
|
+
addFocusListeners?: boolean | undefined;
|
|
17
|
+
addMouseListeners?: boolean | undefined;
|
|
18
|
+
onOverlayClick?: MouseEventHandler<HTMLDivElement> | undefined;
|
|
19
|
+
}
|
|
20
|
+
declare const SideNav: React.ForwardRefExoticComponent<Pick<SideNavProps, "children" | "className" | "slot" | "style" | "title" | "dir" | "defaultChecked" | "defaultValue" | "suppressContentEditableWarning" | "suppressHydrationWarning" | "accessKey" | "onToggle" | "key" | "id" | "onAnimationEnd" | "aria-controls" | "aria-expanded" | "onClick" | "onKeyDown" | "contentEditable" | "contextMenu" | "draggable" | "hidden" | "lang" | "placeholder" | "spellCheck" | "tabIndex" | "translate" | "radioGroup" | "role" | "about" | "datatype" | "inlist" | "prefix" | "property" | "resource" | "typeof" | "vocab" | "autoCapitalize" | "autoCorrect" | "autoSave" | "color" | "itemProp" | "itemScope" | "itemType" | "itemID" | "itemRef" | "results" | "security" | "unselectable" | "inputMode" | "is" | "aria-activedescendant" | "aria-atomic" | "aria-autocomplete" | "aria-busy" | "aria-checked" | "aria-colcount" | "aria-colindex" | "aria-colspan" | "aria-current" | "aria-describedby" | "aria-details" | "aria-disabled" | "aria-dropeffect" | "aria-errormessage" | "aria-flowto" | "aria-grabbed" | "aria-haspopup" | "aria-hidden" | "aria-invalid" | "aria-keyshortcuts" | "aria-label" | "aria-labelledby" | "aria-level" | "aria-live" | "aria-modal" | "aria-multiline" | "aria-multiselectable" | "aria-orientation" | "aria-owns" | "aria-placeholder" | "aria-posinset" | "aria-pressed" | "aria-readonly" | "aria-relevant" | "aria-required" | "aria-roledescription" | "aria-rowcount" | "aria-rowindex" | "aria-rowspan" | "aria-selected" | "aria-setsize" | "aria-sort" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "dangerouslySetInnerHTML" | "onCopy" | "onCopyCapture" | "onCut" | "onCutCapture" | "onPaste" | "onPasteCapture" | "onCompositionEnd" | "onCompositionEndCapture" | "onCompositionStart" | "onCompositionStartCapture" | "onCompositionUpdate" | "onCompositionUpdateCapture" | "onFocus" | "onFocusCapture" | "onBlur" | "onBlurCapture" | "onChange" | "onChangeCapture" | "onBeforeInput" | "onBeforeInputCapture" | "onInput" | "onInputCapture" | "onReset" | "onResetCapture" | "onSubmit" | "onSubmitCapture" | "onInvalid" | "onInvalidCapture" | "onLoad" | "onLoadCapture" | "onError" | "onErrorCapture" | "onKeyDownCapture" | "onKeyPress" | "onKeyPressCapture" | "onKeyUp" | "onKeyUpCapture" | "onAbort" | "onAbortCapture" | "onCanPlay" | "onCanPlayCapture" | "onCanPlayThrough" | "onCanPlayThroughCapture" | "onDurationChange" | "onDurationChangeCapture" | "onEmptied" | "onEmptiedCapture" | "onEncrypted" | "onEncryptedCapture" | "onEnded" | "onEndedCapture" | "onLoadedData" | "onLoadedDataCapture" | "onLoadedMetadata" | "onLoadedMetadataCapture" | "onLoadStart" | "onLoadStartCapture" | "onPause" | "onPauseCapture" | "onPlay" | "onPlayCapture" | "onPlaying" | "onPlayingCapture" | "onProgress" | "onProgressCapture" | "onRateChange" | "onRateChangeCapture" | "onSeeked" | "onSeekedCapture" | "onSeeking" | "onSeekingCapture" | "onStalled" | "onStalledCapture" | "onSuspend" | "onSuspendCapture" | "onTimeUpdate" | "onTimeUpdateCapture" | "onVolumeChange" | "onVolumeChangeCapture" | "onWaiting" | "onWaitingCapture" | "onAuxClick" | "onAuxClickCapture" | "onClickCapture" | "onContextMenu" | "onContextMenuCapture" | "onDoubleClick" | "onDoubleClickCapture" | "onDrag" | "onDragCapture" | "onDragEnd" | "onDragEndCapture" | "onDragEnter" | "onDragEnterCapture" | "onDragExit" | "onDragExitCapture" | "onDragLeave" | "onDragLeaveCapture" | "onDragOver" | "onDragOverCapture" | "onDragStart" | "onDragStartCapture" | "onDrop" | "onDropCapture" | "onMouseDown" | "onMouseDownCapture" | "onMouseEnter" | "onMouseLeave" | "onMouseMove" | "onMouseMoveCapture" | "onMouseOut" | "onMouseOutCapture" | "onMouseOver" | "onMouseOverCapture" | "onMouseUp" | "onMouseUpCapture" | "onSelect" | "onSelectCapture" | "onTouchCancel" | "onTouchCancelCapture" | "onTouchEnd" | "onTouchEndCapture" | "onTouchMove" | "onTouchMoveCapture" | "onTouchStart" | "onTouchStartCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerUp" | "onPointerUpCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerEnter" | "onPointerEnterCapture" | "onPointerLeave" | "onPointerLeaveCapture" | "onPointerOver" | "onPointerOverCapture" | "onPointerOut" | "onPointerOutCapture" | "onGotPointerCapture" | "onGotPointerCaptureCapture" | "onLostPointerCapture" | "onLostPointerCaptureCapture" | "onScroll" | "onScrollCapture" | "onWheel" | "onWheelCapture" | "onAnimationStart" | "onAnimationStartCapture" | "onAnimationEndCapture" | "onAnimationIteration" | "onAnimationIterationCapture" | "onTransitionEnd" | "onTransitionEndCapture" | "expanded" | "defaultExpanded" | "isChildOfHeader" | "isFixedNav" | "isRail" | "isPersistent" | "addFocusListeners" | "addMouseListeners" | "onOverlayClick"> & React.RefAttributes<HTMLElement>>;
|
|
21
|
+
export default SideNav;
|
|
@@ -16,6 +16,8 @@ var PropTypes = require('prop-types');
|
|
|
16
16
|
var AriaPropTypes = require('../../prop-types/AriaPropTypes.js');
|
|
17
17
|
var _utils = require('./_utils.js');
|
|
18
18
|
var usePrefix = require('../../internal/usePrefix.js');
|
|
19
|
+
var match = require('../../internal/keyboard/match.js');
|
|
20
|
+
var keys = require('../../internal/keyboard/keys.js');
|
|
19
21
|
|
|
20
22
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
21
23
|
|
|
@@ -25,26 +27,26 @@ var PropTypes__default = /*#__PURE__*/_interopDefaultLegacy(PropTypes);
|
|
|
25
27
|
|
|
26
28
|
// import SideNavFooter from './SideNavFooter';
|
|
27
29
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
+
function SideNavRenderFunction(_ref, ref) {
|
|
31
|
+
let {
|
|
30
32
|
expanded: expandedProp,
|
|
31
|
-
defaultExpanded,
|
|
32
|
-
isChildOfHeader,
|
|
33
|
+
defaultExpanded = false,
|
|
34
|
+
isChildOfHeader = true,
|
|
33
35
|
'aria-label': ariaLabel,
|
|
34
36
|
'aria-labelledby': ariaLabelledBy,
|
|
35
37
|
children,
|
|
36
38
|
onToggle,
|
|
37
39
|
className: customClassName,
|
|
38
40
|
// TO-DO: comment back in when footer is added for rails
|
|
39
|
-
// translateById: t,
|
|
40
|
-
isFixedNav,
|
|
41
|
+
// translateById: t = (id) => translations[id],
|
|
42
|
+
isFixedNav = false,
|
|
41
43
|
isRail,
|
|
42
|
-
isPersistent,
|
|
43
|
-
addFocusListeners,
|
|
44
|
-
addMouseListeners,
|
|
44
|
+
isPersistent = true,
|
|
45
|
+
addFocusListeners = true,
|
|
46
|
+
addMouseListeners = true,
|
|
45
47
|
onOverlayClick,
|
|
46
48
|
...other
|
|
47
|
-
} =
|
|
49
|
+
} = _ref;
|
|
48
50
|
const prefix = usePrefix.usePrefix();
|
|
49
51
|
const {
|
|
50
52
|
current: controlled
|
|
@@ -77,12 +79,11 @@ const SideNav = /*#__PURE__*/React__default["default"].forwardRef(function SideN
|
|
|
77
79
|
// ? t('carbon.sidenav.state.open')
|
|
78
80
|
// : t('carbon.sidenav.state.closed');
|
|
79
81
|
|
|
80
|
-
const className = cx__default["default"]({
|
|
82
|
+
const className = cx__default["default"](customClassName, {
|
|
81
83
|
[`${prefix}--side-nav`]: true,
|
|
82
84
|
[`${prefix}--side-nav--expanded`]: expanded || expandedViaHoverState,
|
|
83
85
|
[`${prefix}--side-nav--collapsed`]: !expanded && isFixedNav,
|
|
84
86
|
[`${prefix}--side-nav--rail`]: isRail,
|
|
85
|
-
[customClassName]: !!customClassName,
|
|
86
87
|
[`${prefix}--side-nav--ux`]: isChildOfHeader,
|
|
87
88
|
[`${prefix}--side-nav--hidden`]: !isPersistent
|
|
88
89
|
});
|
|
@@ -94,19 +95,25 @@ const SideNav = /*#__PURE__*/React__default["default"].forwardRef(function SideN
|
|
|
94
95
|
|
|
95
96
|
if (isRail) {
|
|
96
97
|
childrenToRender = React__default["default"].Children.map(children, child => {
|
|
97
|
-
var _child$type, _child$type2;
|
|
98
|
-
|
|
99
98
|
// if we are controlled, check for if we have hovered over or the expanded state, else just use the expanded state (uncontrolled)
|
|
100
|
-
|
|
99
|
+
const currentExpansionState = controlled ? expandedViaHoverState || expanded : expanded;
|
|
100
|
+
|
|
101
|
+
if ( /*#__PURE__*/React.isValidElement(child)) {
|
|
102
|
+
var _childJsxElement$type, _childJsxElement$type2;
|
|
103
|
+
|
|
104
|
+
const childJsxElement = child; // avoid spreading `isSideNavExpanded` to non-Carbon UI Shell children
|
|
105
|
+
|
|
106
|
+
return /*#__PURE__*/React__default["default"].cloneElement(childJsxElement, { ...(_utils.CARBON_SIDENAV_ITEMS.includes(((_childJsxElement$type = childJsxElement.type) === null || _childJsxElement$type === void 0 ? void 0 : _childJsxElement$type.displayName) ?? ((_childJsxElement$type2 = childJsxElement.type) === null || _childJsxElement$type2 === void 0 ? void 0 : _childJsxElement$type2.name)) ? {
|
|
107
|
+
isSideNavExpanded: currentExpansionState
|
|
108
|
+
} : {})
|
|
109
|
+
});
|
|
110
|
+
}
|
|
101
111
|
|
|
102
|
-
return
|
|
103
|
-
isSideNavExpanded: currentExpansionState
|
|
104
|
-
} : {})
|
|
105
|
-
});
|
|
112
|
+
return child;
|
|
106
113
|
});
|
|
107
114
|
}
|
|
108
115
|
|
|
109
|
-
|
|
116
|
+
const eventHandlers = {};
|
|
110
117
|
|
|
111
118
|
if (addFocusListeners) {
|
|
112
119
|
eventHandlers.onFocus = event => {
|
|
@@ -120,6 +127,12 @@ const SideNav = /*#__PURE__*/React__default["default"].forwardRef(function SideN
|
|
|
120
127
|
handleToggle(event, false);
|
|
121
128
|
}
|
|
122
129
|
};
|
|
130
|
+
|
|
131
|
+
eventHandlers.onKeyDown = event => {
|
|
132
|
+
if (match.match(event, keys.Escape)) {
|
|
133
|
+
handleToggle(event, false);
|
|
134
|
+
}
|
|
135
|
+
};
|
|
123
136
|
}
|
|
124
137
|
|
|
125
138
|
if (addMouseListeners && isRail) {
|
|
@@ -138,24 +151,10 @@ const SideNav = /*#__PURE__*/React__default["default"].forwardRef(function SideN
|
|
|
138
151
|
ref: ref,
|
|
139
152
|
className: `${prefix}--side-nav__navigation ${className}`
|
|
140
153
|
}, accessibilityLabel, eventHandlers, other), childrenToRender));
|
|
141
|
-
}
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
const SideNav = /*#__PURE__*/React__default["default"].forwardRef(SideNavRenderFunction);
|
|
142
157
|
SideNav.displayName = 'SideNav';
|
|
143
|
-
SideNav.defaultProps = {
|
|
144
|
-
// TO-DO: comment back in when footer is added for rails
|
|
145
|
-
// translateById: (id) => {
|
|
146
|
-
// const translations = {
|
|
147
|
-
// 'carbon.sidenav.state.open': 'Close',
|
|
148
|
-
// 'carbon.sidenav.state.closed': 'Open',
|
|
149
|
-
// };
|
|
150
|
-
// return translations[id];
|
|
151
|
-
// },
|
|
152
|
-
defaultExpanded: false,
|
|
153
|
-
isChildOfHeader: true,
|
|
154
|
-
isFixedNav: false,
|
|
155
|
-
isPersistent: true,
|
|
156
|
-
addFocusListeners: true,
|
|
157
|
-
addMouseListeners: true
|
|
158
|
-
};
|
|
159
158
|
SideNav.propTypes = {
|
|
160
159
|
/**
|
|
161
160
|
* Required props for accessibility label on the underlying menu
|
package/lib/index.js
CHANGED
|
@@ -98,6 +98,7 @@ var TreeView = require('./components/TreeView/TreeView.js');
|
|
|
98
98
|
var HeaderMenuButton = require('./components/UIShell/HeaderMenuButton.js');
|
|
99
99
|
var HeaderName = require('./components/UIShell/HeaderName.js');
|
|
100
100
|
var HeaderNavigation = require('./components/UIShell/HeaderNavigation.js');
|
|
101
|
+
var HeaderSideNavItems = require('./components/UIShell/HeaderSideNavItems.js');
|
|
101
102
|
var SkipToContent = require('./components/UIShell/SkipToContent.js');
|
|
102
103
|
var SideNavDivider = require('./components/UIShell/SideNavDivider.js');
|
|
103
104
|
var SideNavFooter = require('./components/UIShell/SideNavFooter.js');
|
|
@@ -209,7 +210,6 @@ var HeaderGlobalBar = require('./components/UIShell/HeaderGlobalBar.js');
|
|
|
209
210
|
var HeaderMenu = require('./components/UIShell/HeaderMenu.js');
|
|
210
211
|
var HeaderMenuItem = require('./components/UIShell/HeaderMenuItem.js');
|
|
211
212
|
var HeaderPanel = require('./components/UIShell/HeaderPanel.js');
|
|
212
|
-
var HeaderSideNavItems = require('./components/UIShell/HeaderSideNavItems.js');
|
|
213
213
|
var Switcher = require('./components/UIShell/Switcher.js');
|
|
214
214
|
var SwitcherItem = require('./components/UIShell/SwitcherItem.js');
|
|
215
215
|
var SwitcherDivider = require('./components/UIShell/SwitcherDivider.js');
|
|
@@ -325,6 +325,7 @@ exports.TreeView = TreeView["default"];
|
|
|
325
325
|
exports.HeaderMenuButton = HeaderMenuButton["default"];
|
|
326
326
|
exports.HeaderName = HeaderName["default"];
|
|
327
327
|
exports.HeaderNavigation = HeaderNavigation["default"];
|
|
328
|
+
exports.HeaderSideNavItems = HeaderSideNavItems["default"];
|
|
328
329
|
exports.SkipToContent = SkipToContent["default"];
|
|
329
330
|
exports.SideNavDivider = SideNavDivider["default"];
|
|
330
331
|
exports.SideNavFooter = SideNavFooter["default"];
|
|
@@ -461,7 +462,6 @@ exports.HeaderGlobalBar = HeaderGlobalBar["default"];
|
|
|
461
462
|
exports.HeaderMenu = HeaderMenu["default"];
|
|
462
463
|
exports.HeaderMenuItem = HeaderMenuItem["default"];
|
|
463
464
|
exports.HeaderPanel = HeaderPanel["default"];
|
|
464
|
-
exports.HeaderSideNavItems = HeaderSideNavItems["default"];
|
|
465
465
|
exports.Switcher = Switcher["default"];
|
|
466
466
|
exports.SwitcherItem = SwitcherItem["default"];
|
|
467
467
|
exports.SwitcherDivider = SwitcherDivider["default"];
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
export type ReactAttr<T = HTMLElement> = React.HTMLAttributes<T>;
|
|
3
|
+
export type ForwardRefProps<T, P = unknown> = React.PropsWithoutRef<React.PropsWithChildren<P>> & React.RefAttributes<T>;
|
|
4
|
+
export type ForwardRefReturn<T, P = unknown> = React.ForwardRefExoticComponent<ForwardRefProps<T, P>>;
|
|
5
|
+
/**
|
|
6
|
+
* For "as" props. Creates an "as" property that supports native html tags such as 'span', 'a', 'button' as well as custom functional components
|
|
7
|
+
* All native props for the supplied html tag/component are inferred as part of the base component props, allowing us to use props like `href` on an 'a' element ect
|
|
8
|
+
*/
|
|
9
|
+
export type PolymorphicProps<Element extends React.ElementType, Props> = Props & Omit<React.ComponentProps<Element>, 'as'> & {
|
|
10
|
+
as?: Element;
|
|
11
|
+
};
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@carbon/react",
|
|
3
3
|
"description": "React components for the Carbon Design System",
|
|
4
|
-
"version": "1.
|
|
4
|
+
"version": "1.29.0",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"main": "lib/index.js",
|
|
7
7
|
"module": "es/index.js",
|
|
@@ -46,7 +46,7 @@
|
|
|
46
46
|
"@carbon/feature-flags": "^0.13.0",
|
|
47
47
|
"@carbon/icons-react": "^11.19.0",
|
|
48
48
|
"@carbon/layout": "^11.13.0",
|
|
49
|
-
"@carbon/styles": "^1.
|
|
49
|
+
"@carbon/styles": "^1.29.0",
|
|
50
50
|
"@carbon/telemetry": "0.1.0",
|
|
51
51
|
"classnames": "2.3.2",
|
|
52
52
|
"copy-to-clipboard": "^3.3.1",
|
|
@@ -109,7 +109,7 @@
|
|
|
109
109
|
"react": "^18.2.0",
|
|
110
110
|
"react-dom": "^18.2.0",
|
|
111
111
|
"requestanimationframe": "^0.0.23",
|
|
112
|
-
"rimraf": "^
|
|
112
|
+
"rimraf": "^5.0.0",
|
|
113
113
|
"rollup": "^2.79.1",
|
|
114
114
|
"rollup-plugin-strip-banner": "^2.0.0",
|
|
115
115
|
"rtlcss": "^4.0.0",
|
|
@@ -133,5 +133,5 @@
|
|
|
133
133
|
"**/*.scss",
|
|
134
134
|
"**/*.css"
|
|
135
135
|
],
|
|
136
|
-
"gitHead": "
|
|
136
|
+
"gitHead": "044bb55aff8c9cddef1a7e42d2bfeac59a89c546"
|
|
137
137
|
}
|