reshaped 3.3.12 → 3.4.0-rc.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.
Files changed (69) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/dist/bundle.css +1 -1
  3. package/dist/bundle.d.ts +4 -1
  4. package/dist/bundle.js +11 -11
  5. package/dist/components/Autocomplete/Autocomplete.js +34 -24
  6. package/dist/components/Autocomplete/Autocomplete.types.d.ts +1 -1
  7. package/dist/components/Autocomplete/tests/Autocomplete.stories.js +8 -1
  8. package/dist/components/Carousel/Carousel.js +53 -4
  9. package/dist/components/Carousel/Carousel.types.d.ts +5 -0
  10. package/dist/components/Carousel/tests/Carousel.stories.d.ts +20 -4
  11. package/dist/components/Carousel/tests/Carousel.stories.js +195 -102
  12. package/dist/components/Container/Container.module.css +1 -1
  13. package/dist/components/ContextMenu/ContextMenu.js +2 -2
  14. package/dist/components/ContextMenu/tests/ContextMenu.test.stories.js +1 -1
  15. package/dist/components/DropdownMenu/DropdownMenu.js +6 -1
  16. package/dist/components/DropdownMenu/tests/DropdownMenu.test.stories.js +2 -2
  17. package/dist/components/Popover/Popover.js +1 -1
  18. package/dist/components/Popover/tests/Popover.test.stories.js +4 -4
  19. package/dist/components/ProgressIndicator/ProgressIndicator.d.ts +3 -0
  20. package/dist/components/ProgressIndicator/ProgressIndicator.js +101 -0
  21. package/dist/components/ProgressIndicator/ProgressIndicator.module.css +1 -0
  22. package/dist/components/ProgressIndicator/ProgressIndicator.types.d.ts +9 -0
  23. package/dist/components/ProgressIndicator/ProgressIndicator.types.js +1 -0
  24. package/dist/components/ProgressIndicator/index.d.ts +2 -0
  25. package/dist/components/ProgressIndicator/index.js +1 -0
  26. package/dist/components/ProgressIndicator/tests/ProgressIndicator.stories.d.ts +19 -0
  27. package/dist/components/ProgressIndicator/tests/ProgressIndicator.stories.js +85 -0
  28. package/dist/components/Reshaped/Reshaped.js +4 -5
  29. package/dist/components/Table/index.d.ts +1 -1
  30. package/dist/components/Table/tests/Table.stories.d.ts +5 -5
  31. package/dist/components/Table/tests/Table.test.stories.d.ts +5 -5
  32. package/dist/components/TextField/TextField.module.css +1 -1
  33. package/dist/components/Toast/tests/Toast.stories.js +22 -7
  34. package/dist/components/Tooltip/tests/Tooltip.test.stories.js +1 -1
  35. package/dist/components/_private/Flyout/Flyout.module.css +1 -1
  36. package/dist/components/_private/Flyout/Flyout.types.d.ts +14 -3
  37. package/dist/components/_private/Flyout/FlyoutContent.js +37 -7
  38. package/dist/components/_private/Flyout/FlyoutControlled.js +12 -11
  39. package/dist/components/_private/Flyout/FlyoutUncontrolled.js +3 -5
  40. package/dist/components/_private/Flyout/index.d.ts +1 -1
  41. package/dist/components/_private/Flyout/tests/Flyout.stories.d.ts +79 -13
  42. package/dist/components/_private/Flyout/tests/Flyout.stories.js +526 -280
  43. package/dist/components/_private/Flyout/useFlyout.js +9 -3
  44. package/dist/components/_private/Flyout/utilities/isFullyVisible.d.ts +3 -1
  45. package/dist/components/_private/Flyout/utilities/isFullyVisible.js +2 -2
  46. package/dist/hooks/_private/usePrevious.d.ts +2 -0
  47. package/dist/hooks/_private/usePrevious.js +17 -0
  48. package/dist/hooks/_private/useSingletonEnvironment.d.ts +1 -1
  49. package/dist/hooks/_private/useSingletonEnvironment.js +1 -1
  50. package/dist/hooks/_private/useSingletonKeyboardMode.d.ts +13 -2
  51. package/dist/hooks/_private/useSingletonKeyboardMode.js +48 -15
  52. package/dist/hooks/tests/useKeyboardMode.stories.d.ts +6 -0
  53. package/dist/hooks/tests/useKeyboardMode.stories.js +37 -0
  54. package/dist/hooks/useKeyboardMode.d.ts +7 -0
  55. package/dist/hooks/useKeyboardMode.js +13 -0
  56. package/dist/index.d.ts +4 -1
  57. package/dist/index.js +2 -0
  58. package/dist/utilities/a11y/index.d.ts +1 -1
  59. package/dist/utilities/a11y/index.js +1 -1
  60. package/dist/utilities/a11y/keyboardMode.d.ts +2 -2
  61. package/dist/utilities/a11y/keyboardMode.js +2 -2
  62. package/dist/utilities/dom/find.d.ts +4 -1
  63. package/dist/utilities/dom/find.js +4 -4
  64. package/dist/utilities/scroll/lockStandard.js +1 -1
  65. package/package.json +34 -35
  66. package/dist/components/Carousel/tests/Carousel.test.stories.d.ts +0 -17
  67. package/dist/components/Carousel/tests/Carousel.test.stories.js +0 -52
  68. package/dist/components/_private/Flyout/tests/Flyout.test.stories.d.ts +0 -28
  69. package/dist/components/_private/Flyout/tests/Flyout.test.stories.js +0 -205
@@ -93,9 +93,10 @@ const FlyoutRoot = (props) => {
93
93
  const canClose = !isLocked && (isRendered || disabled);
94
94
  if (!canClose)
95
95
  return;
96
- onCloseRef.current?.();
97
- if (options?.closeParents)
98
- parentFlyoutContext?.handleClose?.();
96
+ onCloseRef.current?.({ reason: options.reason });
97
+ if (options?.closeParents) {
98
+ parentFlyoutContext?.handleClose?.({});
99
+ }
99
100
  }, [isRendered, isDismissible, triggerType, onCloseRef, disabled, parentFlyoutContext]);
100
101
  /**
101
102
  * Trigger event handlers
@@ -111,7 +112,7 @@ const FlyoutRoot = (props) => {
111
112
  lockedBlurEffects.current) {
112
113
  return;
113
114
  }
114
- handleClose();
115
+ handleClose({});
115
116
  }, [handleClose]);
116
117
  const handleFocus = React.useCallback(() => {
117
118
  if (triggerType === "hover" && !checkKeyboardMode())
@@ -142,14 +143,14 @@ const FlyoutRoot = (props) => {
142
143
  const handleMouseLeave = React.useCallback(() => {
143
144
  cooldown.cool();
144
145
  clearTimer();
145
- timerRef.current = setTimeout(() => handleClose(), timeouts.mouseLeave);
146
+ timerRef.current = setTimeout(() => handleClose({}), timeouts.mouseLeave);
146
147
  }, [clearTimer, timerRef, handleClose]);
147
148
  const handleTriggerClick = React.useCallback(() => {
148
149
  if (!isRendered) {
149
150
  handleOpen();
150
151
  }
151
152
  else {
152
- handleClose();
153
+ handleClose({});
153
154
  }
154
155
  }, [isRendered, handleOpen, handleClose]);
155
156
  const handleTriggerMouseDown = React.useCallback(() => {
@@ -236,7 +237,7 @@ const FlyoutRoot = (props) => {
236
237
  initialFocusEl: initialFocusRef?.current,
237
238
  includeTrigger: triggerType === "hover" && trapFocusMode !== "dialog" && !isSubmenu,
238
239
  onNavigateOutside: () => {
239
- handleClose();
240
+ handleClose({});
240
241
  },
241
242
  });
242
243
  }, [status, triggerType, trapFocusMode]);
@@ -276,17 +277,17 @@ const FlyoutRoot = (props) => {
276
277
  return () => resizeObserver.disconnect();
277
278
  }, [updatePosition, triggerElRef, isRendered]);
278
279
  React.useEffect(() => {
279
- updatePosition();
280
+ updatePosition({ sync: true });
280
281
  }, [isRTL, updatePosition]);
281
282
  /**
282
283
  * Imperative methods for controlling Flyout
283
284
  */
284
285
  React.useImperativeHandle(instanceRef, () => ({
285
286
  open: handleOpen,
286
- close: handleClose,
287
+ close: () => handleClose({}),
287
288
  updatePosition: () => updatePosition({ sync: true }),
288
289
  }), [handleOpen, handleClose, updatePosition]);
289
- useHotkeys({ Escape: () => handleClose() }, [handleClose]);
290
+ useHotkeys({ Escape: () => handleClose({ reason: "escape-key" }) }, [handleClose]);
290
291
  useOnClickOutside([flyoutElRef, triggerElRef], () => {
291
292
  if (!isRendered)
292
293
  return;
@@ -294,7 +295,7 @@ const FlyoutRoot = (props) => {
294
295
  return;
295
296
  // Clicking outside changes focused element so we don't need to set it back ourselves
296
297
  shouldReturnFocusRef.current = false;
297
- handleClose();
298
+ handleClose({ reason: "outside-click" });
298
299
  }, [isRendered]);
299
300
  return (_jsx(Provider, { value: {
300
301
  id,
@@ -5,15 +5,13 @@ import FlyoutControlled from "./FlyoutControlled.js";
5
5
  const FlyoutUncontrolled = (props) => {
6
6
  const { defaultActive, onClose, onOpen } = props;
7
7
  const [active, setActive] = React.useState(defaultActive || false);
8
- const handleClose = () => {
8
+ const handleClose = (args) => {
9
9
  setActive(false);
10
- if (onClose)
11
- onClose();
10
+ onClose?.(args);
12
11
  };
13
12
  const handleOpen = () => {
14
13
  setActive(true);
15
- if (onOpen)
16
- onOpen();
14
+ onOpen?.();
17
15
  };
18
16
  return (_jsx(FlyoutControlled, { ...props, defaultActive: undefined, active: active, onClose: handleClose, onOpen: handleOpen }));
19
17
  };
@@ -1,3 +1,3 @@
1
1
  export { default } from "./Flyout";
2
2
  export { useFlyoutContext } from "./Flyout.context";
3
- export type { Props as FlyoutProps, Instance as FlyoutInstance, TriggerProps as FlyoutTriggerProps, ContentProps as FlyoutContentProps, } from "./Flyout.types";
3
+ export type { Props as FlyoutProps, Instance as FlyoutInstance, TriggerProps as FlyoutTriggerProps, ContentProps as FlyoutContentProps, CloseReason as FlyoutCloseReason, } from "./Flyout.types";
@@ -1,18 +1,84 @@
1
1
  import React from "react";
2
+ import { StoryObj } from "@storybook/react";
3
+ import { fn } from "@storybook/test";
2
4
  declare const _default: {
3
5
  title: string;
4
6
  };
5
7
  export default _default;
6
- export declare const position: () => React.JSX.Element;
7
- export declare const dynamicPosition: () => React.JSX.Element;
8
- export declare const originCoordinates: () => React.JSX.Element;
9
- export declare const modes: () => React.JSX.Element;
10
- export declare const width: () => React.JSX.Element;
11
- export declare const offset: () => React.JSX.Element;
12
- export declare const disableFlags: () => React.JSX.Element;
13
- export declare const initialFocus: () => React.JSX.Element;
14
- export declare const customPortalTarget: () => React.JSX.Element;
15
- export declare const testInsideFixed: () => React.JSX.Element;
16
- export declare const testDynamicBounds: () => React.JSX.Element;
17
- export declare const testDisableOutsideClick: () => React.JSX.Element;
18
- export declare const testScopedTheming: () => React.JSX.Element;
8
+ export declare const position: {
9
+ name: string;
10
+ render: () => React.JSX.Element;
11
+ };
12
+ export declare const defaultActive: StoryObj<{
13
+ handleOpen: ReturnType<typeof fn>;
14
+ handleClose: ReturnType<typeof fn>;
15
+ }>;
16
+ export declare const active: StoryObj<{
17
+ handleOpen: ReturnType<typeof fn>;
18
+ handleClose: ReturnType<typeof fn>;
19
+ }>;
20
+ export declare const activeFalse: StoryObj<{
21
+ handleOpen: ReturnType<typeof fn>;
22
+ handleClose: ReturnType<typeof fn>;
23
+ }>;
24
+ export declare const modes: {
25
+ name: string;
26
+ render: () => React.JSX.Element;
27
+ };
28
+ export declare const positionFallbacks: {
29
+ name: string;
30
+ render: () => React.JSX.Element;
31
+ };
32
+ export declare const originCoordinates: {
33
+ name: string;
34
+ render: () => React.JSX.Element;
35
+ };
36
+ export declare const width: {
37
+ name: string;
38
+ render: () => React.JSX.Element;
39
+ };
40
+ export declare const contentGap: {
41
+ name: string;
42
+ render: () => React.JSX.Element;
43
+ };
44
+ export declare const contentShift: {
45
+ name: string;
46
+ render: () => React.JSX.Element;
47
+ };
48
+ export declare const disableContentHover: {
49
+ name: string;
50
+ render: () => React.JSX.Element;
51
+ };
52
+ export declare const disableCloseOnOutsideClick: StoryObj;
53
+ export declare const disableHideAnimation: {
54
+ name: string;
55
+ render: () => React.JSX.Element;
56
+ };
57
+ export declare const disabled: StoryObj<{
58
+ handleOpen: ReturnType<typeof fn>;
59
+ }>;
60
+ export declare const containerRef: StoryObj;
61
+ export declare const initialFocusRef: StoryObj;
62
+ export declare const instanceRef: StoryObj<{
63
+ handleOpen: ReturnType<typeof fn>;
64
+ handleClose: ReturnType<typeof fn>;
65
+ }>;
66
+ export declare const contentAttributes: StoryObj;
67
+ export declare const testShadowDom: {
68
+ name: string;
69
+ render: () => React.JSX.Element;
70
+ };
71
+ export declare const testInsideFixed: StoryObj;
72
+ export declare const testInsideSticky: StoryObj;
73
+ export declare const testInsideScrollable: {
74
+ name: string;
75
+ render: () => React.JSX.Element;
76
+ };
77
+ export declare const testDynamicBounds: {
78
+ name: string;
79
+ render: () => React.JSX.Element;
80
+ };
81
+ export declare const testScopedTheming: {
82
+ name: string;
83
+ render: () => React.JSX.Element;
84
+ };