@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.
@@ -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 SIDEBAR_KEYBOARD_SHORTCUT = '[';
3904
- var SidebarContext = /*#__PURE__*/React.createContext(null);
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 context = React.useContext(SidebarContext);
3996
- if (!context) {
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
- return _extends({}, context.sides[side], {
4002
- isMobile: context.isMobile,
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
- // Keydown event handler for toggling sidebar
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
- if (event.key === SIDEBAR_KEYBOARD_SHORTCUT) {
4041
- event.preventDefault();
4042
- var sideToToggle = lastToggledSideRef.current;
4043
- (sideToToggle === 'left' ? leftState : rightState).toggleSidebar();
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
- }, [leftState, rightState]);
4051
- var contextValue = React.useMemo(function () {
4052
- return {
4053
- isMobile: isMobile,
4054
- sides: {
4055
- left: leftState,
4056
- right: rightState
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 === 'collapsed' && collapsible === 'icon' ? 'var(--sidebar-width-icon)' : state === 'collapsed' ? '0' : 'var(--sidebar-width)',
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'