@activecollab/components 2.0.444 → 2.0.446

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 (32) hide show
  1. package/dist/cjs/components/Menu/Menu.js +43 -5
  2. package/dist/cjs/components/Menu/Menu.js.map +1 -1
  3. package/dist/cjs/components/Sheet/Sheet.js +11 -4
  4. package/dist/cjs/components/Sheet/Sheet.js.map +1 -1
  5. package/dist/cjs/components/Sheet/Styles.js +7 -5
  6. package/dist/cjs/components/Sheet/Styles.js.map +1 -1
  7. package/dist/cjs/presentation/whiteboard/canvasElements.js +15 -17
  8. package/dist/cjs/presentation/whiteboard/canvasElements.js.map +1 -1
  9. package/dist/cjs/presentation/whiteboard/projectElements.js +76 -16
  10. package/dist/cjs/presentation/whiteboard/projectElements.js.map +1 -1
  11. package/dist/esm/components/Menu/Menu.d.ts.map +1 -1
  12. package/dist/esm/components/Menu/Menu.js +41 -5
  13. package/dist/esm/components/Menu/Menu.js.map +1 -1
  14. package/dist/esm/components/Sheet/Sheet.d.ts.map +1 -1
  15. package/dist/esm/components/Sheet/Sheet.js +12 -5
  16. package/dist/esm/components/Sheet/Sheet.js.map +1 -1
  17. package/dist/esm/components/Sheet/Styles.d.ts +2 -0
  18. package/dist/esm/components/Sheet/Styles.d.ts.map +1 -1
  19. package/dist/esm/components/Sheet/Styles.js +3 -1
  20. package/dist/esm/components/Sheet/Styles.js.map +1 -1
  21. package/dist/esm/presentation/whiteboard/canvasElements.d.ts.map +1 -1
  22. package/dist/esm/presentation/whiteboard/canvasElements.js +11 -9
  23. package/dist/esm/presentation/whiteboard/canvasElements.js.map +1 -1
  24. package/dist/esm/presentation/whiteboard/projectElements.d.ts +12 -3
  25. package/dist/esm/presentation/whiteboard/projectElements.d.ts.map +1 -1
  26. package/dist/esm/presentation/whiteboard/projectElements.js +76 -16
  27. package/dist/esm/presentation/whiteboard/projectElements.js.map +1 -1
  28. package/dist/index.js +59 -13
  29. package/dist/index.js.map +1 -1
  30. package/dist/index.min.js +1 -1
  31. package/dist/index.min.js.map +1 -1
  32. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -15482,6 +15482,16 @@
15482
15482
  setChildNode = _useState6[1];
15483
15483
  var elementRef = React.useRef(null);
15484
15484
  var isOpenAtLeastOnce = React.useRef(false);
15485
+ var wasOpen = React.useRef(open);
15486
+ var focusBeforeOpen = React.useRef(null);
15487
+ var returnFocusTo = React.useRef(null);
15488
+ var popperRef = React.useRef(null);
15489
+
15490
+ // Read on the render that opens the menu, before the focus lock moves the focus inside it.
15491
+ if (open && !wasOpen.current && typeof document !== "undefined") {
15492
+ focusBeforeOpen.current = document.activeElement;
15493
+ }
15494
+ wasOpen.current = open;
15485
15495
  React.useEffect(function () {
15486
15496
  setOpen(defaultOpen);
15487
15497
  }, [defaultOpen]);
@@ -15519,17 +15529,41 @@
15519
15529
  if (open) {
15520
15530
  isOpenAtLeastOnce.current = true;
15521
15531
  } else if (!open && isOpenAtLeastOnce.current) {
15522
- var _elementRef$current;
15523
- (_elementRef$current = elementRef.current) === null || _elementRef$current === void 0 || _elementRef$current.focus();
15532
+ var previous = focusBeforeOpen.current;
15533
+ var returnTo = previous instanceof HTMLElement && previous.isConnected ? previous : elementRef.current;
15534
+ returnFocusTo.current = returnTo;
15535
+ returnTo === null || returnTo === void 0 || returnTo.focus();
15524
15536
  isOpenAtLeastOnce.current = false;
15525
15537
  }
15526
15538
  }, [open]);
15539
+
15540
+ // A fading menu is already closed. Its content can still reach for the focus, and would take it away
15541
+ // with it when it unmounts, so the focus goes straight back to where the menu returned it.
15542
+ React.useEffect(function () {
15543
+ if (open || exited) {
15544
+ return undefined;
15545
+ }
15546
+ var keepFocusOut = function keepFocusOut(event) {
15547
+ var _popperRef$current;
15548
+ if ((_popperRef$current = popperRef.current) !== null && _popperRef$current !== void 0 && _popperRef$current.contains(event.target)) {
15549
+ var _returnFocusTo$curren;
15550
+ (_returnFocusTo$curren = returnFocusTo.current) === null || _returnFocusTo$curren === void 0 || _returnFocusTo$curren.focus();
15551
+ }
15552
+ };
15553
+ document.addEventListener("focusin", keepFocusOut, true);
15554
+ return function () {
15555
+ return document.removeEventListener("focusin", keepFocusOut, true);
15556
+ };
15557
+ }, [open, exited]);
15527
15558
  return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, target && /*#__PURE__*/React__default["default"].cloneElement(target, targetProps), open || !exited ? /*#__PURE__*/React__default["default"].createElement(Window, {
15528
15559
  onClose: handleClose,
15529
15560
  disableScrollLock: !handleScroll
15530
- // A closing menu hands the focus back at once, it does not hold it for the length of the fade.
15561
+ // The menu returns the focus itself at once, so a late returnFocus cannot undo a caller's move.
15531
15562
  ,
15532
- disableFocusLock: disableFocusLock || !open,
15563
+ disableFocusLock: disableFocusLock || !open
15564
+ // A fading menu is already closed, so an escape pressed meanwhile belongs to the page behind it.
15565
+ ,
15566
+ disableCloseOnEsc: !open,
15533
15567
  style: {
15534
15568
  position: windowAbsolutelyPositioned ? "absolute" : "fixed"
15535
15569
  }
@@ -15539,6 +15573,7 @@
15539
15573
  tabIndex: -1,
15540
15574
  disableBackgroundColor: true
15541
15575
  }) : null, /*#__PURE__*/React__default["default"].createElement(Popper, {
15576
+ ref: popperRef,
15542
15577
  anchorEl: childNode,
15543
15578
  open: childNode ? open : false,
15544
15579
  placement: position,
@@ -15561,7 +15596,10 @@
15561
15596
  }, /*#__PURE__*/React__default["default"].createElement(StyledMenu$3, {
15562
15597
  className: classNames__default["default"]("c-simple-menu__paper", "c-simple-menu__".concat(mode), menuClassName, className),
15563
15598
  $mode: mode,
15564
- onMouseDown: onMenuClick
15599
+ onMouseDown: onMenuClick,
15600
+ style: open ? undefined : {
15601
+ pointerEvents: "none"
15602
+ }
15565
15603
  }, /*#__PURE__*/React__default["default"].createElement(MenuContextProvider, {
15566
15604
  value: {
15567
15605
  open,
@@ -24847,6 +24885,8 @@
24847
24885
  });
24848
24886
  Textarea.displayName = "Textarea";
24849
24887
 
24888
+ var SHEET_ENTER_MS = 400;
24889
+ var SHEET_EXIT_MS = 200;
24850
24890
  var StyledSheetIcons = styled__default["default"].div.withConfig({
24851
24891
  displayName: "Styles__StyledSheetIcons",
24852
24892
  componentId: "sc-144eyxd-0"
@@ -24907,13 +24947,13 @@
24907
24947
  displayName: "Styles__StyledCssTransition",
24908
24948
  componentId: "sc-144eyxd-5"
24909
24949
  })(["", " ", " ", " ", ""], function (props) {
24910
- return props.$direction === "top" && styled.css(["&.c-sheet__animation-enter{opacity:0;transform:translateY(-100%);}&.c-sheet__animation-enter-active{opacity:1;transform:translateY(0);transition:opacity 400ms,transform 400ms;}&.c-sheet__animation-appear{opacity:0;transform:translateY(-100%);}&.c-sheet__animation-appear-active{opacity:1;transform:translateY(0);transition:opacity 400ms,transform 400ms;}&.c-sheet__animation-exit{opacity:1;}&.c-sheet__animation-exit-active{opacity:0;transform:translateY(-100%);transition:opacity 200ms,transform 200ms;}"]);
24950
+ return props.$direction === "top" && styled.css(["&.c-sheet__animation-enter{opacity:0;transform:translateY(-100%);}&.c-sheet__animation-enter-active{opacity:1;transform:translateY(0);transition:opacity ", "ms,transform ", "ms;}&.c-sheet__animation-appear{opacity:0;transform:translateY(-100%);}&.c-sheet__animation-appear-active{opacity:1;transform:translateY(0);transition:opacity ", "ms,transform ", "ms;}&.c-sheet__animation-exit{opacity:1;}&.c-sheet__animation-exit-active{opacity:0;transform:translateY(-100%);transition:opacity ", "ms,transform ", "ms;}"], SHEET_ENTER_MS, SHEET_ENTER_MS, SHEET_ENTER_MS, SHEET_ENTER_MS, SHEET_EXIT_MS, SHEET_EXIT_MS);
24911
24951
  }, function (props) {
24912
- return props.$direction === "bottom" && styled.css(["&.c-sheet__animation-enter{opacity:0;transform:translateY(100%);}&.c-sheet__animation-enter-active{opacity:1;transform:translateY(0);transition:opacity 400ms,transform 400ms;}&.c-sheet__animation-appear{opacity:0;transform:translateY(100%);}&.c-sheet__animation-appear-active{opacity:1;transform:translateY(0);transition:opacity 400ms,transform 400ms;}&.c-sheet__animation-exit{opacity:1;}&.c-sheet__animation-exit-active{opacity:0;transform:translateY(100%);transition:opacity 200ms,transform 200ms;}"]);
24952
+ return props.$direction === "bottom" && styled.css(["&.c-sheet__animation-enter{opacity:0;transform:translateY(100%);}&.c-sheet__animation-enter-active{opacity:1;transform:translateY(0);transition:opacity ", "ms,transform ", "ms;}&.c-sheet__animation-appear{opacity:0;transform:translateY(100%);}&.c-sheet__animation-appear-active{opacity:1;transform:translateY(0);transition:opacity ", "ms,transform ", "ms;}&.c-sheet__animation-exit{opacity:1;}&.c-sheet__animation-exit-active{opacity:0;transform:translateY(100%);transition:opacity ", "ms,transform ", "ms;}"], SHEET_ENTER_MS, SHEET_ENTER_MS, SHEET_ENTER_MS, SHEET_ENTER_MS, SHEET_EXIT_MS, SHEET_EXIT_MS);
24913
24953
  }, function (props) {
24914
- return props.$direction === "left" && styled.css(["&.c-sheet__animation-enter{opacity:0;transform:translateX(-100%);}&.c-sheet__animation-enter-active{opacity:1;transform:translateX(0);transition:opacity 400ms,transform 400ms;}&.c-sheet__animation-appear{opacity:0;transform:translateX(-100%);}&.c-sheet__animation-appear-active{opacity:1;transform:translateX(0);transition:opacity 400ms,transform 400ms;}&.c-sheet__animation-exit{opacity:1;}&.c-sheet__animation-exit-active{opacity:0;transform:translateX(-100%);transition:opacity 200ms,transform 200ms;}"]);
24954
+ return props.$direction === "left" && styled.css(["&.c-sheet__animation-enter{opacity:0;transform:translateX(-100%);}&.c-sheet__animation-enter-active{opacity:1;transform:translateX(0);transition:opacity ", "ms,transform ", "ms;}&.c-sheet__animation-appear{opacity:0;transform:translateX(-100%);}&.c-sheet__animation-appear-active{opacity:1;transform:translateX(0);transition:opacity ", "ms,transform ", "ms;}&.c-sheet__animation-exit{opacity:1;}&.c-sheet__animation-exit-active{opacity:0;transform:translateX(-100%);transition:opacity ", "ms,transform ", "ms;}"], SHEET_ENTER_MS, SHEET_ENTER_MS, SHEET_ENTER_MS, SHEET_ENTER_MS, SHEET_EXIT_MS, SHEET_EXIT_MS);
24915
24955
  }, function (props) {
24916
- return props.$direction === "right" && styled.css(["&.c-sheet__animation-enter{opacity:0;transform:translateX(100%);}&.c-sheet__animation-enter-active{opacity:1;transform:translateX(0);transition:opacity 400ms,transform 400ms;}&.c-sheet__animation-appear{opacity:0;transform:translateX(100%);}&.c-sheet__animation-appear-active{opacity:1;transform:translateX(0);transition:opacity 400ms,transform 400ms;}&.c-sheet__animation-exit{opacity:1;}&.c-sheet__animation-exit-active{opacity:0;transform:translateX(100%);transition:opacity 200ms,transform 200ms;}"]);
24956
+ return props.$direction === "right" && styled.css(["&.c-sheet__animation-enter{opacity:0;transform:translateX(100%);}&.c-sheet__animation-enter-active{opacity:1;transform:translateX(0);transition:opacity ", "ms,transform ", "ms;}&.c-sheet__animation-appear{opacity:0;transform:translateX(100%);}&.c-sheet__animation-appear-active{opacity:1;transform:translateX(0);transition:opacity ", "ms,transform ", "ms;}&.c-sheet__animation-exit{opacity:1;}&.c-sheet__animation-exit-active{opacity:0;transform:translateX(100%);transition:opacity ", "ms,transform ", "ms;}"], SHEET_ENTER_MS, SHEET_ENTER_MS, SHEET_ENTER_MS, SHEET_ENTER_MS, SHEET_EXIT_MS, SHEET_EXIT_MS);
24917
24957
  });
24918
24958
  StyledCssTransition.displayName = "StyledCssTransition";
24919
24959
  var StyledListSeparator = styled__default["default"](ListSeparator).withConfig({
@@ -24996,10 +25036,16 @@
24996
25036
  onClose: handleClose,
24997
25037
  disableFocusLock: disableFocusLock,
24998
25038
  disableScrollLock: disableScrollLock
24999
- }), open && /*#__PURE__*/React__default["default"].createElement(Overlay, {
25039
+ }), /*#__PURE__*/React__default["default"].createElement(Fade, {
25040
+ in: open,
25041
+ timeout: open ? SHEET_ENTER_MS : SHEET_EXIT_MS
25042
+ }, /*#__PURE__*/React__default["default"].createElement(Overlay, {
25000
25043
  onClick: handleBackgroundClick,
25001
- disableBackgroundColor: disableBackgroundColor
25002
- }), /*#__PURE__*/React__default["default"].createElement(StyledSheetWrapper, {
25044
+ disableBackgroundColor: disableBackgroundColor,
25045
+ style: {
25046
+ pointerEvents: open ? undefined : "none"
25047
+ }
25048
+ })), /*#__PURE__*/React__default["default"].createElement(StyledSheetWrapper, {
25003
25049
  className: classNames__default["default"]("c-sheet__wrapper", bodyClassName),
25004
25050
  style: bodyStyle,
25005
25051
  $position: position,
@@ -25007,7 +25053,7 @@
25007
25053
  }, /*#__PURE__*/React__default["default"].createElement(StyledCssTransition, {
25008
25054
  appear: true,
25009
25055
  in: open,
25010
- timeout: 400,
25056
+ timeout: SHEET_ENTER_MS,
25011
25057
  classNames: "c-sheet__animation",
25012
25058
  $direction: animation,
25013
25059
  onEnter: handleEnter,