@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
|
@@ -3871,8 +3871,11 @@ var _excluded$3 = ["defaultOpen", "open", "storageKey", "onOpenChange", "classNa
|
|
|
3871
3871
|
_excluded15 = ["className"];
|
|
3872
3872
|
var SIDEBAR_WIDTH = '16rem';
|
|
3873
3873
|
var SIDEBAR_WIDTH_ICON = '44px';
|
|
3874
|
-
var
|
|
3875
|
-
var
|
|
3874
|
+
var SIDEBAR_KEYBOARD_SHORTCUT_LEFT = '[';
|
|
3875
|
+
var SIDEBAR_KEYBOARD_SHORTCUT_RIGHT = ']';
|
|
3876
|
+
var SidebarIsMobileContext = /*#__PURE__*/React__default.createContext(null);
|
|
3877
|
+
var SidebarLeftContext = /*#__PURE__*/React__default.createContext(null);
|
|
3878
|
+
var SidebarRightContext = /*#__PURE__*/React__default.createContext(null);
|
|
3876
3879
|
var SidebarSideContext = /*#__PURE__*/React__default.createContext('left');
|
|
3877
3880
|
var resolveSideValue = function resolveSideValue(value, side, fallback) {
|
|
3878
3881
|
if (typeof value === 'boolean') {
|
|
@@ -3902,6 +3905,16 @@ var resolveStorageKey = function resolveStorageKey(storageKey, side) {
|
|
|
3902
3905
|
}
|
|
3903
3906
|
return side === 'left' ? 'sidebar_expanded' : 'sidebar_expanded_right';
|
|
3904
3907
|
};
|
|
3908
|
+
var getSidebarWidth = function getSidebarWidth(state, collapsible) {
|
|
3909
|
+
return state === 'collapsed' && collapsible === 'icon' ? 'var(--sidebar-width-icon)' : state === 'collapsed' ? '0' : 'var(--sidebar-width)';
|
|
3910
|
+
};
|
|
3911
|
+
var getSidebarOffsetStyles = function getSidebarOffsetStyles(side, state, collapsible) {
|
|
3912
|
+
var isVisible = state === 'expanded' || collapsible === 'icon';
|
|
3913
|
+
return {
|
|
3914
|
+
left: side === 'left' ? isVisible ? '0' : 'calc(var(--sidebar-width)*-1)' : undefined,
|
|
3915
|
+
right: side === 'right' ? isVisible ? '0' : 'calc(var(--sidebar-width)*-1)' : undefined
|
|
3916
|
+
};
|
|
3917
|
+
};
|
|
3905
3918
|
var useSidebarSideState = function useSidebarSideState(_ref) {
|
|
3906
3919
|
var side = _ref.side,
|
|
3907
3920
|
isMobile = _ref.isMobile,
|
|
@@ -3963,14 +3976,18 @@ var useSidebarSideState = function useSidebarSideState(_ref) {
|
|
|
3963
3976
|
}, [state, open, setOpen, openMobile, setOpenMobile, toggleSidebar]);
|
|
3964
3977
|
};
|
|
3965
3978
|
function useSidebar(sideOverride) {
|
|
3966
|
-
var
|
|
3967
|
-
if (
|
|
3979
|
+
var isMobile = React__default.useContext(SidebarIsMobileContext);
|
|
3980
|
+
if (typeof isMobile !== 'boolean') {
|
|
3968
3981
|
throw new Error('useSidebar must be used within a SidebarProvider.');
|
|
3969
3982
|
}
|
|
3970
3983
|
var contextSide = React__default.useContext(SidebarSideContext);
|
|
3971
3984
|
var side = sideOverride != null ? sideOverride : contextSide;
|
|
3972
|
-
|
|
3973
|
-
|
|
3985
|
+
var sideContext = React__default.useContext(side === 'left' ? SidebarLeftContext : SidebarRightContext);
|
|
3986
|
+
if (!sideContext) {
|
|
3987
|
+
throw new Error('useSidebar must be used within a SidebarProvider.');
|
|
3988
|
+
}
|
|
3989
|
+
return _extends({}, sideContext, {
|
|
3990
|
+
isMobile: isMobile,
|
|
3974
3991
|
side: side
|
|
3975
3992
|
});
|
|
3976
3993
|
}
|
|
@@ -3987,6 +4004,8 @@ var SidebarProvider = /*#__PURE__*/forwardRef(function (_ref2, ref) {
|
|
|
3987
4004
|
props = _objectWithoutPropertiesLoose(_ref2, _excluded$3);
|
|
3988
4005
|
var isMobile = useIsMobile();
|
|
3989
4006
|
var lastToggledSideRef = React__default.useRef('left');
|
|
4007
|
+
var leftToggleRef = React__default.useRef(null);
|
|
4008
|
+
var rightToggleRef = React__default.useRef(null);
|
|
3990
4009
|
var leftState = useSidebarSideState({
|
|
3991
4010
|
side: 'left',
|
|
3992
4011
|
isMobile: isMobile,
|
|
@@ -4005,31 +4024,37 @@ var SidebarProvider = /*#__PURE__*/forwardRef(function (_ref2, ref) {
|
|
|
4005
4024
|
storageKey: storageKey,
|
|
4006
4025
|
lastToggledSideRef: lastToggledSideRef
|
|
4007
4026
|
});
|
|
4008
|
-
|
|
4027
|
+
useEffect(function () {
|
|
4028
|
+
leftToggleRef.current = leftState.toggleSidebar;
|
|
4029
|
+
}, [leftState.toggleSidebar]);
|
|
4030
|
+
useEffect(function () {
|
|
4031
|
+
rightToggleRef.current = rightState.toggleSidebar;
|
|
4032
|
+
}, [rightState.toggleSidebar]);
|
|
4009
4033
|
useEffect(function () {
|
|
4010
4034
|
var handleKeyDown = function handleKeyDown(event) {
|
|
4011
|
-
|
|
4012
|
-
|
|
4013
|
-
|
|
4014
|
-
|
|
4035
|
+
var target = event.target;
|
|
4036
|
+
if (target && (target.tagName === 'INPUT' || target.tagName === 'TEXTAREA' || target.tagName === 'SELECT' || target.isContentEditable)) {
|
|
4037
|
+
return;
|
|
4038
|
+
}
|
|
4039
|
+
var shortcutSide = event.key === SIDEBAR_KEYBOARD_SHORTCUT_LEFT ? 'left' : event.key === SIDEBAR_KEYBOARD_SHORTCUT_RIGHT ? 'right' : null;
|
|
4040
|
+
if (!shortcutSide) {
|
|
4041
|
+
return;
|
|
4015
4042
|
}
|
|
4043
|
+
event.preventDefault();
|
|
4044
|
+
var toggleSidebar = shortcutSide === 'left' ? leftToggleRef.current : rightToggleRef.current;
|
|
4045
|
+
toggleSidebar == null || toggleSidebar();
|
|
4016
4046
|
};
|
|
4017
4047
|
window.addEventListener('keydown', handleKeyDown);
|
|
4018
4048
|
return function () {
|
|
4019
4049
|
return window.removeEventListener('keydown', handleKeyDown);
|
|
4020
4050
|
};
|
|
4021
|
-
}, [
|
|
4022
|
-
|
|
4023
|
-
|
|
4024
|
-
|
|
4025
|
-
|
|
4026
|
-
|
|
4027
|
-
|
|
4028
|
-
}
|
|
4029
|
-
};
|
|
4030
|
-
}, [isMobile, leftState, rightState]);
|
|
4031
|
-
return React__default.createElement(SidebarContext.Provider, {
|
|
4032
|
-
value: contextValue
|
|
4051
|
+
}, []);
|
|
4052
|
+
return React__default.createElement(SidebarIsMobileContext.Provider, {
|
|
4053
|
+
value: isMobile
|
|
4054
|
+
}, React__default.createElement(SidebarLeftContext.Provider, {
|
|
4055
|
+
value: leftState
|
|
4056
|
+
}, React__default.createElement(SidebarRightContext.Provider, {
|
|
4057
|
+
value: rightState
|
|
4033
4058
|
}, React__default.createElement(TooltipProvider, {
|
|
4034
4059
|
delayDuration: 0
|
|
4035
4060
|
}, React__default.createElement("div", _extends({
|
|
@@ -4040,7 +4065,7 @@ var SidebarProvider = /*#__PURE__*/forwardRef(function (_ref2, ref) {
|
|
|
4040
4065
|
}, style),
|
|
4041
4066
|
className: classNames('display-flex w-100 background-color-secondary', className),
|
|
4042
4067
|
ref: ref
|
|
4043
|
-
}, props), children)));
|
|
4068
|
+
}, props), children)))));
|
|
4044
4069
|
});
|
|
4045
4070
|
SidebarProvider.displayName = 'SidebarProvider';
|
|
4046
4071
|
var Sidebar = /*#__PURE__*/React__default.forwardRef(function (_ref3, ref) {
|
|
@@ -4108,15 +4133,13 @@ var Sidebar = /*#__PURE__*/React__default.forwardRef(function (_ref3, ref) {
|
|
|
4108
4133
|
transitionDuration: 'var(--sidebar-transition-duration, 200ms)',
|
|
4109
4134
|
animationDuration: 'var(--sidebar-transition-duration, 200ms)',
|
|
4110
4135
|
transitionProperty: 'width',
|
|
4111
|
-
width: state
|
|
4136
|
+
width: getSidebarWidth(state, collapsible),
|
|
4112
4137
|
height: '100svh'
|
|
4113
4138
|
},
|
|
4114
4139
|
className: classNames('position-relative', className)
|
|
4115
4140
|
}), React__default.createElement("div", _extends({
|
|
4116
4141
|
className: classNames('position-absolute display-none display-flex-desktop ', className),
|
|
4117
|
-
style: {
|
|
4118
|
-
left: side === 'left' && (state === 'expanded' || collapsible === 'icon') ? '0' : side === 'left' ? 'calc(var(--sidebar-width)*-1)' : undefined,
|
|
4119
|
-
right: side === 'right' && (state === 'expanded' || collapsible === 'icon') ? '0' : side === 'right' ? 'calc(var(--sidebar-width)*-1)' : undefined,
|
|
4142
|
+
style: _extends({}, getSidebarOffsetStyles(side, state, collapsible), {
|
|
4120
4143
|
top: '0',
|
|
4121
4144
|
bottom: '0',
|
|
4122
4145
|
zIndex: 'var(--size-z-index-drawer)',
|
|
@@ -4127,7 +4150,7 @@ var Sidebar = /*#__PURE__*/React__default.forwardRef(function (_ref3, ref) {
|
|
|
4127
4150
|
transitionProperty: 'left, right, width',
|
|
4128
4151
|
width: state === 'collapsed' && collapsible === 'icon' ? 'var(--sidebar-width-icon)' : 'var(--sidebar-width)',
|
|
4129
4152
|
height: '100svh'
|
|
4130
|
-
}
|
|
4153
|
+
})
|
|
4131
4154
|
}, props), React__default.createElement("div", {
|
|
4132
4155
|
"data-sidebar": "sidebar",
|
|
4133
4156
|
className: classNames('display-flex h-100 w-100 flex-direction-column background-color-secondary font-color-base', {
|
|
@@ -4359,6 +4382,7 @@ var SidebarRail = /*#__PURE__*/React__default.forwardRef(function (_ref16, ref)
|
|
|
4359
4382
|
open = _useSidebar5.open,
|
|
4360
4383
|
toggleSidebar = _useSidebar5.toggleSidebar,
|
|
4361
4384
|
side = _useSidebar5.side;
|
|
4385
|
+
var shortcutLabel = side === 'left' ? SIDEBAR_KEYBOARD_SHORTCUT_LEFT : SIDEBAR_KEYBOARD_SHORTCUT_RIGHT;
|
|
4362
4386
|
var caretIcon = open ? side === 'right' ? 'caret-sm-right' : 'caret-sm-left' : side === 'right' ? 'caret-sm-left' : 'caret-sm-right';
|
|
4363
4387
|
return React__default.createElement("button", _extends({
|
|
4364
4388
|
ref: ref,
|
|
@@ -4366,7 +4390,7 @@ var SidebarRail = /*#__PURE__*/React__default.forwardRef(function (_ref16, ref)
|
|
|
4366
4390
|
"aria-label": "Toggle Sidebar",
|
|
4367
4391
|
tabIndex: -1,
|
|
4368
4392
|
onClick: toggleSidebar,
|
|
4369
|
-
title: "Toggle Sidebar
|
|
4393
|
+
title: "Toggle Sidebar " + shortcutLabel,
|
|
4370
4394
|
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', {
|
|
4371
4395
|
'cursor-w-resize': open && side === 'left' || !open && side === 'right',
|
|
4372
4396
|
'cursor-e-resize': !open && side === 'left' || open && side === 'right'
|