@box/blueprint-web 12.130.2 → 12.130.4

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.
@@ -9158,7 +9158,7 @@ table.bp_inline_table_module_inlineTable--fc100[data-modern=true] td:last-child,
9158
9158
  padding:var(--chips-group-small-screen-padding);
9159
9159
  }
9160
9160
  }
9161
- .bp_context_menu_module_menuBlock--71906[data-modern=false]{
9161
+ .bp_context_menu_module_menuBlock--99ecc[data-modern=false]{
9162
9162
  --context-menu-block-font-color:unset;
9163
9163
  --context-menu-block-min-width:var(--blueprint-web-context-menu-min-width, 160px);
9164
9164
  --context-menu-block-max-width:var(--blueprint-web-context-menu-max-width);
@@ -9181,10 +9181,11 @@ table.bp_inline_table_module_inlineTable--fc100[data-modern=true] td:last-child,
9181
9181
  --context-menu-item-background-color-pressed:var(--surface-menu-surface-focus);
9182
9182
  --context-menu-item-focus-border:var(--border-2) solid var(--outline-focus-on-light);
9183
9183
  --context-menu-item-padding:var(--space-2);
9184
+ --context-menu-item-border-hover:var(--border-2) solid #0000;
9184
9185
  --context-menu-items-separator-margin:var(--space-2);
9185
9186
  }
9186
9187
 
9187
- .bp_context_menu_module_menuBlock--71906[data-modern=true]{
9188
+ .bp_context_menu_module_menuBlock--99ecc[data-modern=true]{
9188
9189
  --context-menu-block-font-color:var(--bp-text-text-on-light);
9189
9190
  --context-menu-block-min-width:var(--blueprint-web-context-menu-min-width, 160px);
9190
9191
  --context-menu-block-max-width:var(--blueprint-web-context-menu-max-width);
@@ -9203,6 +9204,7 @@ table.bp_inline_table_module_inlineTable--fc100[data-modern=true] td:last-child,
9203
9204
  --context-menu-fullscreen-content-padding:var(--bp-space-030);
9204
9205
  --context-menu-item-radius:var(--bp-radius-06);
9205
9206
  --context-menu-item-border:var(--bp-border-02) solid #0000;
9207
+ --context-menu-item-border-hover:var(--border-020) solid #0000;
9206
9208
  --context-menu-item-background-color-hover:var(--bp-surface-menu-item-surface-hover);
9207
9209
  --context-menu-item-background-color-pressed:var(--bp-surface-menu-item-surface-pressed);
9208
9210
  --context-menu-item-focus-border:var(--bp-border-02) solid var(--bp-outline-focus-on-light);
@@ -9210,19 +9212,19 @@ table.bp_inline_table_module_inlineTable--fc100[data-modern=true] td:last-child,
9210
9212
  --context-menu-items-separator-margin:var(--bp-space-020);
9211
9213
  }
9212
9214
 
9213
- .bp_context_menu_module_menuHeader--71906[data-modern=false]{
9215
+ .bp_context_menu_module_menuHeader--99ecc[data-modern=false]{
9214
9216
  --context-menu-header-padding:var(--space-3);
9215
9217
  --context-menu-header-gap:var(--space-2);
9216
9218
  --context-menu-header-shadow:var(--dropshadow-1);
9217
9219
  }
9218
9220
 
9219
- .bp_context_menu_module_menuHeader--71906[data-modern=true]{
9221
+ .bp_context_menu_module_menuHeader--99ecc[data-modern=true]{
9220
9222
  --context-menu-header-padding:var(--bp-space-030) var(--bp-space-040);
9221
9223
  --context-menu-header-gap:var(--bp-space-030);
9222
9224
  --context-menu-header-shadow:var(--dropshadow-1);
9223
9225
  }
9224
9226
 
9225
- .bp_context_menu_module_menuBlock--71906{
9227
+ .bp_context_menu_module_menuBlock--99ecc{
9226
9228
  backdrop-filter:var(--context-menu-block-backdrop-filter);
9227
9229
  background-color:var(--context-menu-block-background-color);
9228
9230
  border:var(--context-menu-block-border);
@@ -9235,7 +9237,7 @@ table.bp_inline_table_module_inlineTable--fc100[data-modern=true] td:last-child,
9235
9237
  min-width:var(--context-menu-block-min-width);
9236
9238
  padding:var(--context-menu-block-padding);
9237
9239
  }
9238
- .bp_context_menu_module_menuBlock--71906[data-menu-fullscreen=true]{
9240
+ .bp_context_menu_module_menuBlock--99ecc[data-menu-fullscreen=true]{
9239
9241
  border:unset;
9240
9242
  border-radius:unset;
9241
9243
  display:flex;
@@ -9248,14 +9250,14 @@ table.bp_inline_table_module_inlineTable--fc100[data-modern=true] td:last-child,
9248
9250
  position:relative;
9249
9251
  width:100vw;
9250
9252
  }
9251
- .bp_context_menu_module_menuBlock--71906[data-menu-fullscreen=true] .bp_context_menu_module_fullScreenContent--71906{
9253
+ .bp_context_menu_module_menuBlock--99ecc[data-menu-fullscreen=true] .bp_context_menu_module_fullScreenContent--99ecc{
9252
9254
  overflow-y:auto;
9253
9255
  padding:var(--context-menu-fullscreen-content-padding);
9254
9256
  }
9255
- .bp_context_menu_module_menuBlock--71906 .bp_context_menu_module_menuItemsSeparator--71906{
9257
+ .bp_context_menu_module_menuBlock--99ecc .bp_context_menu_module_menuItemsSeparator--99ecc{
9256
9258
  margin:var(--context-menu-items-separator-margin);
9257
9259
  }
9258
- .bp_context_menu_module_menuBlock--71906 .bp_context_menu_module_menuItem--71906{
9260
+ .bp_context_menu_module_menuBlock--99ecc .bp_context_menu_module_menuItem--99ecc{
9259
9261
  align-items:center;
9260
9262
  background-color:var(--context-menu-background-color);
9261
9263
  border:var(--context-menu-item-border);
@@ -9268,20 +9270,24 @@ table.bp_inline_table_module_inlineTable--fc100[data-modern=true] td:last-child,
9268
9270
  padding-inline:var(--context-menu-item-padding);
9269
9271
  position:relative;
9270
9272
  }
9271
- .bp_context_menu_module_menuBlock--71906 .bp_context_menu_module_menuItem--71906[data-disabled]{
9273
+ .bp_context_menu_module_menuBlock--99ecc .bp_context_menu_module_menuItem--99ecc[data-disabled]{
9272
9274
  opacity:60%;
9273
9275
  pointer-events:none;
9274
9276
  }
9275
- .bp_context_menu_module_menuBlock--71906 .bp_context_menu_module_menuItem--71906[data-highlighted]:not(:hover){
9277
+ .bp_context_menu_module_menuBlock--99ecc .bp_context_menu_module_menuItem--99ecc[data-highlighted]:not(:hover){
9276
9278
  background-color:var(--context-menu-item-background-color-hover);
9277
9279
  border:var(--context-menu-item-focus-border);
9278
9280
  }
9279
- .bp_context_menu_module_menuBlock--71906 .bp_context_menu_module_menuItem--71906:active{
9281
+ .bp_context_menu_module_menuBlock--99ecc .bp_context_menu_module_menuItem--99ecc[data-state=open][data-highlighted]:not(:hover){
9282
+ border:var(--context-menu-item-border);
9283
+ }
9284
+ .bp_context_menu_module_menuBlock--99ecc .bp_context_menu_module_menuItem--99ecc:active{
9280
9285
  background-color:var(--context-menu-item-background-color-pressed);
9281
9286
  border:var(--context-menu-item-border);
9282
9287
  }
9283
- .bp_context_menu_module_menuBlock--71906 .bp_context_menu_module_menuItem--71906:hover{
9288
+ .bp_context_menu_module_menuBlock--99ecc .bp_context_menu_module_menuItem--99ecc:hover{
9284
9289
  background-color:var(--context-menu-item-background-color-hover);
9290
+ border:var(--context-menu-item-border-hover);
9285
9291
  }
9286
9292
  div[data-radix-popper-content-wrapper]:has([role=menu]):has([data-state=open]):has([data-menu-fullscreen=true]){
9287
9293
  height:100%;
@@ -9289,7 +9295,7 @@ div[data-radix-popper-content-wrapper]:has([role=menu]):has([data-state=open]):h
9289
9295
  width:100%;
9290
9296
  }
9291
9297
 
9292
- .bp_context_menu_module_menuHeader--71906{
9298
+ .bp_context_menu_module_menuHeader--99ecc{
9293
9299
  align-items:center;
9294
9300
  box-shadow:var(--context-menu-header-shadow);
9295
9301
  display:grid;
@@ -9299,19 +9305,19 @@ div[data-radix-popper-content-wrapper]:has([role=menu]):has([data-state=open]):h
9299
9305
  padding:var(--context-menu-header-padding);
9300
9306
  }
9301
9307
 
9302
- .bp_context_menu_module_headerTextContent--71906{
9308
+ .bp_context_menu_module_headerTextContent--99ecc{
9303
9309
  display:grid;
9304
9310
  }
9305
9311
 
9306
- .bp_context_menu_module_submenuCloseButton--71906{
9312
+ .bp_context_menu_module_submenuCloseButton--99ecc{
9307
9313
  grid-area:submenu-close;
9308
9314
  }
9309
9315
 
9310
- .bp_context_menu_module_menuCloseButton--71906{
9316
+ .bp_context_menu_module_menuCloseButton--99ecc{
9311
9317
  grid-area:close;
9312
9318
  }
9313
9319
 
9314
- .bp_context_menu_module_ellipsis--71906{
9320
+ .bp_context_menu_module_ellipsis--99ecc{
9315
9321
  overflow:hidden;
9316
9322
  text-overflow:ellipsis;
9317
9323
  white-space:nowrap;
@@ -3,7 +3,6 @@ import * as ContextMenuPrimitve from '@radix-ui/react-context-menu';
3
3
  import clsx from 'clsx';
4
4
  import { forwardRef, useCallback } from 'react';
5
5
  import { MenuItemMainContent, MenuItemSideContent } from '../../util-components/menu-item-sections/menu-item-sections.js';
6
- import { composeEventHandlers } from '../../utils/composeEventHandlers.js';
7
6
  import styles from './context-menu.module.js';
8
7
 
9
8
  const MenuItemRoot = /*#__PURE__*/forwardRef((props, forwardedRef) => {
@@ -17,8 +16,6 @@ const MenuItemRoot = /*#__PURE__*/forwardRef((props, forwardedRef) => {
17
16
  ...rest,
18
17
  ref: forwardedRef,
19
18
  className: clsx(styles.menuItem, className),
20
- onPointerLeave: composeEventHandlers(props.onPointerLeave, preventDefault),
21
- onPointerMove: composeEventHandlers(props.onPointerMove, preventDefault),
22
19
  // If click starts at trigger button, and ends on the item, it should not trigger the item.
23
20
  // Note: this also has a side effect of not allowing to start click and end on a different time.
24
21
  // TODO: see if possible to make https://github.com/radix-ui/primitives/blob/b32a93318cdfce383c2eec095710d35ffbd33a1c/packages/react/menu/src/Menu.tsx#L646
@@ -1,17 +1,10 @@
1
1
  import { jsx } from 'react/jsx-runtime';
2
2
  import { Sub } from '@radix-ui/react-context-menu';
3
- import noop from 'lodash/noop';
4
- import { useContext, createContext, useCallback } from 'react';
3
+ import 'lodash/noop';
4
+ import { useCallback } from 'react';
5
5
  import { useControllableState } from '../../utils/useControllableState.js';
6
6
  import { SubMenuMenuProvider } from '../menu-utils/responsiveness/SubMenuContext.js';
7
7
 
8
- const ResponsiveSubmenuContext = /*#__PURE__*/createContext({
9
- open: false,
10
- setOpen: noop
11
- });
12
- const useResponsiveSubmenuContext = () => {
13
- return useContext(ResponsiveSubmenuContext);
14
- };
15
8
  /**
16
9
  * Container for all the parts of a sub menu.
17
10
  * Based on Radix-UI [SubMenu component](https://www.radix-ui.com/docs/primitives/components/context-menu#sub).
@@ -45,4 +38,4 @@ const ContextMenuSubMenuRoot = props => {
45
38
  };
46
39
  ContextMenuSubMenuRoot.displayName = 'ContextMenuSubMenuRoot';
47
40
 
48
- export { ContextMenuSubMenuRoot, useResponsiveSubmenuContext };
41
+ export { ContextMenuSubMenuRoot };
@@ -1,12 +1,9 @@
1
1
  import { jsx } from 'react/jsx-runtime';
2
2
  import { SubTrigger } from '@radix-ui/react-context-menu';
3
- import { forwardRef, useEffect, useCallback } from 'react';
3
+ import { forwardRef, useCallback } from 'react';
4
4
  import { MenuItemMainContent, MenuItemSideContent } from '../../util-components/menu-item-sections/menu-item-sections.js';
5
5
  import { composeEventHandlers } from '../../utils/composeEventHandlers.js';
6
- import { useForkRef } from '../../utils/useForkRef.js';
7
- import { useSubMenuFocus } from '../../utils/useSubMenuFocus.hook.js';
8
6
  import { useFullScreenContextMenu } from '../menu-utils/responsiveness/FullScreenContextMenuContext.js';
9
- import { useResponsiveSubmenuContext } from './context-menu-sub-menu-root.js';
10
7
  import styles from './context-menu.module.js';
11
8
 
12
9
  const ContextMenuSubTriggerRoot = /*#__PURE__*/forwardRef((props, forwardedRef) => {
@@ -14,28 +11,17 @@ const ContextMenuSubTriggerRoot = /*#__PURE__*/forwardRef((props, forwardedRef)
14
11
  children,
15
12
  ...rest
16
13
  } = props;
17
- const [localRef, setRefFocusNoop] = useSubMenuFocus();
18
- const {
19
- open
20
- } = useResponsiveSubmenuContext();
21
14
  const {
22
15
  isMenuFullScreenEnabled
23
16
  } = useFullScreenContextMenu();
24
- useEffect(() => {
25
- if (!open) {
26
- localRef.current?.focus();
27
- }
28
- }, [localRef, open]);
29
17
  const handleOnPointerMove = useCallback(e => {
30
- setRefFocusNoop();
31
- // we should call prevent default so hover doesn't trigger submenu, which is confusing on full screen.
32
18
  if (isMenuFullScreenEnabled) {
33
19
  e.preventDefault();
34
20
  }
35
- }, [isMenuFullScreenEnabled, setRefFocusNoop]);
21
+ }, [isMenuFullScreenEnabled]);
36
22
  return jsx(SubTrigger, {
37
23
  ...rest,
38
- ref: useForkRef(localRef, forwardedRef),
24
+ ref: forwardedRef,
39
25
  className: styles.menuItem,
40
26
  onPointerMove: composeEventHandlers(props.onPointerMove, handleOnPointerMove),
41
27
  children: children
@@ -1,4 +1,4 @@
1
1
  import '../../index.css';
2
- var styles = {"menuBlock":"bp_context_menu_module_menuBlock--71906","menuHeader":"bp_context_menu_module_menuHeader--71906","fullScreenContent":"bp_context_menu_module_fullScreenContent--71906","menuItemsSeparator":"bp_context_menu_module_menuItemsSeparator--71906","menuItem":"bp_context_menu_module_menuItem--71906","headerTextContent":"bp_context_menu_module_headerTextContent--71906","submenuCloseButton":"bp_context_menu_module_submenuCloseButton--71906","menuCloseButton":"bp_context_menu_module_menuCloseButton--71906","ellipsis":"bp_context_menu_module_ellipsis--71906"};
2
+ var styles = {"menuBlock":"bp_context_menu_module_menuBlock--99ecc","menuHeader":"bp_context_menu_module_menuHeader--99ecc","fullScreenContent":"bp_context_menu_module_fullScreenContent--99ecc","menuItemsSeparator":"bp_context_menu_module_menuItemsSeparator--99ecc","menuItem":"bp_context_menu_module_menuItem--99ecc","headerTextContent":"bp_context_menu_module_headerTextContent--99ecc","submenuCloseButton":"bp_context_menu_module_submenuCloseButton--99ecc","menuCloseButton":"bp_context_menu_module_menuCloseButton--99ecc","ellipsis":"bp_context_menu_module_ellipsis--99ecc"};
3
3
 
4
4
  export { styles as default };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@box/blueprint-web",
3
- "version": "12.130.2",
3
+ "version": "12.130.4",
4
4
  "type": "module",
5
5
  "license": "SEE LICENSE IN LICENSE",
6
6
  "publishConfig": {
@@ -47,7 +47,7 @@
47
47
  "dependencies": {
48
48
  "@ariakit/react": "0.4.15",
49
49
  "@ariakit/react-core": "0.4.15",
50
- "@box/blueprint-web-assets": "^4.99.0",
50
+ "@box/blueprint-web-assets": "^4.99.2",
51
51
  "@internationalized/date": "^3.7.0",
52
52
  "@radix-ui/react-accordion": "1.1.2",
53
53
  "@radix-ui/react-checkbox": "1.0.4",
@@ -77,7 +77,7 @@
77
77
  "type-fest": "^3.2.0"
78
78
  },
79
79
  "devDependencies": {
80
- "@box/storybook-utils": "^0.16.26",
80
+ "@box/storybook-utils": "^0.16.28",
81
81
  "@figma/code-connect": "1.3.12",
82
82
  "@types/react": "^18.0.0",
83
83
  "@types/react-dom": "^18.0.0",
@@ -1,39 +0,0 @@
1
- import noop from 'lodash/noop';
2
- import { useRef, useEffect } from 'react';
3
-
4
- const useSubMenuFocus = () => {
5
- const localRef = useRef(null);
6
- const originalFocus = useRef(noop);
7
- const storeAndMakeCurrentFocusMethodNoop = () => {
8
- if (!localRef.current) {
9
- return;
10
- }
11
- originalFocus.current = localRef.current.focus;
12
- localRef.current.focus = noop;
13
- };
14
- const restoreInitialFocusMethod = () => {
15
- if (!localRef.current) {
16
- return;
17
- }
18
- localRef.current.focus = originalFocus.current;
19
- };
20
- const setRefFocusMethodNoop = () => {
21
- if (!localRef.current) {
22
- return;
23
- }
24
- localRef.current.focus = noop;
25
- };
26
- useEffect(() => {
27
- const keydownListener = function onKeydownHandler() {
28
- restoreInitialFocusMethod();
29
- };
30
- document.addEventListener('keydown', keydownListener);
31
- storeAndMakeCurrentFocusMethodNoop();
32
- return () => {
33
- document.removeEventListener('keydown', keydownListener);
34
- };
35
- }, []);
36
- return [localRef, setRefFocusMethodNoop, storeAndMakeCurrentFocusMethodNoop];
37
- };
38
-
39
- export { useSubMenuFocus };