@hyphen/hyphen-components 7.3.0 → 7.3.1
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/dist/hyphen-components.cjs.development.js +54 -30
- package/dist/hyphen-components.cjs.development.js.map +1 -1
- package/dist/hyphen-components.cjs.production.min.js +1 -1
- package/dist/hyphen-components.cjs.production.min.js.map +1 -1
- package/dist/hyphen-components.esm.js +54 -30
- package/dist/hyphen-components.esm.js.map +1 -1
- package/package.json +1 -1
- package/src/components/Sidebar/Sidebar.test.tsx +115 -1
- package/src/components/Sidebar/Sidebar.tsx +126 -71
|
@@ -3900,8 +3900,11 @@ var _excluded$3 = ["defaultOpen", "open", "storageKey", "onOpenChange", "classNa
|
|
|
3900
3900
|
_excluded15 = ["className"];
|
|
3901
3901
|
var SIDEBAR_WIDTH = '16rem';
|
|
3902
3902
|
var SIDEBAR_WIDTH_ICON = '44px';
|
|
3903
|
-
var
|
|
3904
|
-
var
|
|
3903
|
+
var SIDEBAR_KEYBOARD_SHORTCUT_LEFT = '[';
|
|
3904
|
+
var SIDEBAR_KEYBOARD_SHORTCUT_RIGHT = ']';
|
|
3905
|
+
var SidebarIsMobileContext = /*#__PURE__*/React.createContext(null);
|
|
3906
|
+
var SidebarLeftContext = /*#__PURE__*/React.createContext(null);
|
|
3907
|
+
var SidebarRightContext = /*#__PURE__*/React.createContext(null);
|
|
3905
3908
|
var SidebarSideContext = /*#__PURE__*/React.createContext('left');
|
|
3906
3909
|
var resolveSideValue = function resolveSideValue(value, side, fallback) {
|
|
3907
3910
|
if (typeof value === 'boolean') {
|
|
@@ -3931,6 +3934,16 @@ var resolveStorageKey = function resolveStorageKey(storageKey, side) {
|
|
|
3931
3934
|
}
|
|
3932
3935
|
return side === 'left' ? 'sidebar_expanded' : 'sidebar_expanded_right';
|
|
3933
3936
|
};
|
|
3937
|
+
var getSidebarWidth = function getSidebarWidth(state, collapsible) {
|
|
3938
|
+
return state === 'collapsed' && collapsible === 'icon' ? 'var(--sidebar-width-icon)' : state === 'collapsed' ? '0' : 'var(--sidebar-width)';
|
|
3939
|
+
};
|
|
3940
|
+
var getSidebarOffsetStyles = function getSidebarOffsetStyles(side, state, collapsible) {
|
|
3941
|
+
var isVisible = state === 'expanded' || collapsible === 'icon';
|
|
3942
|
+
return {
|
|
3943
|
+
left: side === 'left' ? isVisible ? '0' : 'calc(var(--sidebar-width)*-1)' : undefined,
|
|
3944
|
+
right: side === 'right' ? isVisible ? '0' : 'calc(var(--sidebar-width)*-1)' : undefined
|
|
3945
|
+
};
|
|
3946
|
+
};
|
|
3934
3947
|
var useSidebarSideState = function useSidebarSideState(_ref) {
|
|
3935
3948
|
var side = _ref.side,
|
|
3936
3949
|
isMobile = _ref.isMobile,
|
|
@@ -3992,14 +4005,18 @@ var useSidebarSideState = function useSidebarSideState(_ref) {
|
|
|
3992
4005
|
}, [state, open, setOpen, openMobile, setOpenMobile, toggleSidebar]);
|
|
3993
4006
|
};
|
|
3994
4007
|
function useSidebar(sideOverride) {
|
|
3995
|
-
var
|
|
3996
|
-
if (
|
|
4008
|
+
var isMobile = React.useContext(SidebarIsMobileContext);
|
|
4009
|
+
if (typeof isMobile !== 'boolean') {
|
|
3997
4010
|
throw new Error('useSidebar must be used within a SidebarProvider.');
|
|
3998
4011
|
}
|
|
3999
4012
|
var contextSide = React.useContext(SidebarSideContext);
|
|
4000
4013
|
var side = sideOverride != null ? sideOverride : contextSide;
|
|
4001
|
-
|
|
4002
|
-
|
|
4014
|
+
var sideContext = React.useContext(side === 'left' ? SidebarLeftContext : SidebarRightContext);
|
|
4015
|
+
if (!sideContext) {
|
|
4016
|
+
throw new Error('useSidebar must be used within a SidebarProvider.');
|
|
4017
|
+
}
|
|
4018
|
+
return _extends({}, sideContext, {
|
|
4019
|
+
isMobile: isMobile,
|
|
4003
4020
|
side: side
|
|
4004
4021
|
});
|
|
4005
4022
|
}
|
|
@@ -4016,6 +4033,8 @@ var SidebarProvider = /*#__PURE__*/React.forwardRef(function (_ref2, ref) {
|
|
|
4016
4033
|
props = _objectWithoutPropertiesLoose(_ref2, _excluded$3);
|
|
4017
4034
|
var isMobile = useIsMobile();
|
|
4018
4035
|
var lastToggledSideRef = React.useRef('left');
|
|
4036
|
+
var leftToggleRef = React.useRef(null);
|
|
4037
|
+
var rightToggleRef = React.useRef(null);
|
|
4019
4038
|
var leftState = useSidebarSideState({
|
|
4020
4039
|
side: 'left',
|
|
4021
4040
|
isMobile: isMobile,
|
|
@@ -4034,31 +4053,37 @@ var SidebarProvider = /*#__PURE__*/React.forwardRef(function (_ref2, ref) {
|
|
|
4034
4053
|
storageKey: storageKey,
|
|
4035
4054
|
lastToggledSideRef: lastToggledSideRef
|
|
4036
4055
|
});
|
|
4037
|
-
|
|
4056
|
+
React.useEffect(function () {
|
|
4057
|
+
leftToggleRef.current = leftState.toggleSidebar;
|
|
4058
|
+
}, [leftState.toggleSidebar]);
|
|
4059
|
+
React.useEffect(function () {
|
|
4060
|
+
rightToggleRef.current = rightState.toggleSidebar;
|
|
4061
|
+
}, [rightState.toggleSidebar]);
|
|
4038
4062
|
React.useEffect(function () {
|
|
4039
4063
|
var handleKeyDown = function handleKeyDown(event) {
|
|
4040
|
-
|
|
4041
|
-
|
|
4042
|
-
|
|
4043
|
-
|
|
4064
|
+
var target = event.target;
|
|
4065
|
+
if (target && (target.tagName === 'INPUT' || target.tagName === 'TEXTAREA' || target.tagName === 'SELECT' || target.isContentEditable)) {
|
|
4066
|
+
return;
|
|
4067
|
+
}
|
|
4068
|
+
var shortcutSide = event.key === SIDEBAR_KEYBOARD_SHORTCUT_LEFT ? 'left' : event.key === SIDEBAR_KEYBOARD_SHORTCUT_RIGHT ? 'right' : null;
|
|
4069
|
+
if (!shortcutSide) {
|
|
4070
|
+
return;
|
|
4044
4071
|
}
|
|
4072
|
+
event.preventDefault();
|
|
4073
|
+
var toggleSidebar = shortcutSide === 'left' ? leftToggleRef.current : rightToggleRef.current;
|
|
4074
|
+
toggleSidebar == null || toggleSidebar();
|
|
4045
4075
|
};
|
|
4046
4076
|
window.addEventListener('keydown', handleKeyDown);
|
|
4047
4077
|
return function () {
|
|
4048
4078
|
return window.removeEventListener('keydown', handleKeyDown);
|
|
4049
4079
|
};
|
|
4050
|
-
}, [
|
|
4051
|
-
|
|
4052
|
-
|
|
4053
|
-
|
|
4054
|
-
|
|
4055
|
-
|
|
4056
|
-
|
|
4057
|
-
}
|
|
4058
|
-
};
|
|
4059
|
-
}, [isMobile, leftState, rightState]);
|
|
4060
|
-
return React.createElement(SidebarContext.Provider, {
|
|
4061
|
-
value: contextValue
|
|
4080
|
+
}, []);
|
|
4081
|
+
return React.createElement(SidebarIsMobileContext.Provider, {
|
|
4082
|
+
value: isMobile
|
|
4083
|
+
}, React.createElement(SidebarLeftContext.Provider, {
|
|
4084
|
+
value: leftState
|
|
4085
|
+
}, React.createElement(SidebarRightContext.Provider, {
|
|
4086
|
+
value: rightState
|
|
4062
4087
|
}, React.createElement(TooltipProvider, {
|
|
4063
4088
|
delayDuration: 0
|
|
4064
4089
|
}, React.createElement("div", _extends({
|
|
@@ -4069,7 +4094,7 @@ var SidebarProvider = /*#__PURE__*/React.forwardRef(function (_ref2, ref) {
|
|
|
4069
4094
|
}, style),
|
|
4070
4095
|
className: classNames('display-flex w-100 background-color-secondary', className),
|
|
4071
4096
|
ref: ref
|
|
4072
|
-
}, props), children)));
|
|
4097
|
+
}, props), children)))));
|
|
4073
4098
|
});
|
|
4074
4099
|
SidebarProvider.displayName = 'SidebarProvider';
|
|
4075
4100
|
var Sidebar = /*#__PURE__*/React.forwardRef(function (_ref3, ref) {
|
|
@@ -4137,15 +4162,13 @@ var Sidebar = /*#__PURE__*/React.forwardRef(function (_ref3, ref) {
|
|
|
4137
4162
|
transitionDuration: 'var(--sidebar-transition-duration, 200ms)',
|
|
4138
4163
|
animationDuration: 'var(--sidebar-transition-duration, 200ms)',
|
|
4139
4164
|
transitionProperty: 'width',
|
|
4140
|
-
width: state
|
|
4165
|
+
width: getSidebarWidth(state, collapsible),
|
|
4141
4166
|
height: '100svh'
|
|
4142
4167
|
},
|
|
4143
4168
|
className: classNames('position-relative', className)
|
|
4144
4169
|
}), React.createElement("div", _extends({
|
|
4145
4170
|
className: classNames('position-absolute display-none display-flex-desktop ', className),
|
|
4146
|
-
style: {
|
|
4147
|
-
left: side === 'left' && (state === 'expanded' || collapsible === 'icon') ? '0' : side === 'left' ? 'calc(var(--sidebar-width)*-1)' : undefined,
|
|
4148
|
-
right: side === 'right' && (state === 'expanded' || collapsible === 'icon') ? '0' : side === 'right' ? 'calc(var(--sidebar-width)*-1)' : undefined,
|
|
4171
|
+
style: _extends({}, getSidebarOffsetStyles(side, state, collapsible), {
|
|
4149
4172
|
top: '0',
|
|
4150
4173
|
bottom: '0',
|
|
4151
4174
|
zIndex: 'var(--size-z-index-drawer)',
|
|
@@ -4156,7 +4179,7 @@ var Sidebar = /*#__PURE__*/React.forwardRef(function (_ref3, ref) {
|
|
|
4156
4179
|
transitionProperty: 'left, right, width',
|
|
4157
4180
|
width: state === 'collapsed' && collapsible === 'icon' ? 'var(--sidebar-width-icon)' : 'var(--sidebar-width)',
|
|
4158
4181
|
height: '100svh'
|
|
4159
|
-
}
|
|
4182
|
+
})
|
|
4160
4183
|
}, props), React.createElement("div", {
|
|
4161
4184
|
"data-sidebar": "sidebar",
|
|
4162
4185
|
className: classNames('display-flex h-100 w-100 flex-direction-column background-color-secondary font-color-base', {
|
|
@@ -4388,6 +4411,7 @@ var SidebarRail = /*#__PURE__*/React.forwardRef(function (_ref16, ref) {
|
|
|
4388
4411
|
open = _useSidebar5.open,
|
|
4389
4412
|
toggleSidebar = _useSidebar5.toggleSidebar,
|
|
4390
4413
|
side = _useSidebar5.side;
|
|
4414
|
+
var shortcutLabel = side === 'left' ? SIDEBAR_KEYBOARD_SHORTCUT_LEFT : SIDEBAR_KEYBOARD_SHORTCUT_RIGHT;
|
|
4391
4415
|
var caretIcon = open ? side === 'right' ? 'caret-sm-right' : 'caret-sm-left' : side === 'right' ? 'caret-sm-left' : 'caret-sm-right';
|
|
4392
4416
|
return React.createElement("button", _extends({
|
|
4393
4417
|
ref: ref,
|
|
@@ -4395,7 +4419,7 @@ var SidebarRail = /*#__PURE__*/React.forwardRef(function (_ref16, ref) {
|
|
|
4395
4419
|
"aria-label": "Toggle Sidebar",
|
|
4396
4420
|
tabIndex: -1,
|
|
4397
4421
|
onClick: toggleSidebar,
|
|
4398
|
-
title: "Toggle Sidebar
|
|
4422
|
+
title: "Toggle Sidebar " + shortcutLabel,
|
|
4399
4423
|
className: classNames(styles$8.rail, 'hover-show-child background-color-transparent display-flex p-top-5xl p-left-xl p-right-0 justify-content-center position-absolute', {
|
|
4400
4424
|
'cursor-w-resize': open && side === 'left' || !open && side === 'right',
|
|
4401
4425
|
'cursor-e-resize': !open && side === 'left' || open && side === 'right'
|