@activecollab/components 2.0.442 → 2.0.444

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 (38) hide show
  1. package/dist/cjs/components/Dialog/Styles.js +1 -1
  2. package/dist/cjs/components/Dialog/Styles.js.map +1 -1
  3. package/dist/cjs/components/Overlay/Overlay.js +41 -2
  4. package/dist/cjs/components/Overlay/Overlay.js.map +1 -1
  5. package/dist/cjs/components/Overlay/Styles.js +4 -2
  6. package/dist/cjs/components/Overlay/Styles.js.map +1 -1
  7. package/dist/cjs/components/Overlay/overlayStack.js +48 -0
  8. package/dist/cjs/components/Overlay/overlayStack.js.map +1 -0
  9. package/dist/cjs/components/Sheet/Sheet.js +18 -36
  10. package/dist/cjs/components/Sheet/Sheet.js.map +1 -1
  11. package/dist/cjs/components/Sheet/Styles.js +15 -22
  12. package/dist/cjs/components/Sheet/Styles.js.map +1 -1
  13. package/dist/esm/components/Dialog/Styles.d.ts.map +1 -1
  14. package/dist/esm/components/Dialog/Styles.js +1 -1
  15. package/dist/esm/components/Dialog/Styles.js.map +1 -1
  16. package/dist/esm/components/Overlay/Overlay.d.ts.map +1 -1
  17. package/dist/esm/components/Overlay/Overlay.js +32 -2
  18. package/dist/esm/components/Overlay/Overlay.js.map +1 -1
  19. package/dist/esm/components/Overlay/Styles.d.ts +1 -0
  20. package/dist/esm/components/Overlay/Styles.d.ts.map +1 -1
  21. package/dist/esm/components/Overlay/Styles.js +1 -1
  22. package/dist/esm/components/Overlay/Styles.js.map +1 -1
  23. package/dist/esm/components/Overlay/overlayStack.d.ts +7 -0
  24. package/dist/esm/components/Overlay/overlayStack.d.ts.map +1 -0
  25. package/dist/esm/components/Overlay/overlayStack.js +34 -0
  26. package/dist/esm/components/Overlay/overlayStack.js.map +1 -0
  27. package/dist/esm/components/Sheet/Sheet.d.ts.map +1 -1
  28. package/dist/esm/components/Sheet/Sheet.js +17 -33
  29. package/dist/esm/components/Sheet/Sheet.js.map +1 -1
  30. package/dist/esm/components/Sheet/Styles.d.ts +1 -10
  31. package/dist/esm/components/Sheet/Styles.d.ts.map +1 -1
  32. package/dist/esm/components/Sheet/Styles.js +15 -14
  33. package/dist/esm/components/Sheet/Styles.js.map +1 -1
  34. package/dist/index.js +118 -68
  35. package/dist/index.js.map +1 -1
  36. package/dist/index.min.js +1 -1
  37. package/dist/index.min.js.map +1 -1
  38. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -14659,23 +14659,105 @@
14659
14659
  });
14660
14660
  StyledMenuHeader.displayName = "StyledMenuHeader";
14661
14661
 
14662
+ var listeners = new Set();
14663
+ var stack = [];
14664
+ var lastId = 0;
14665
+ var notify = function notify() {
14666
+ return listeners.forEach(function (listener) {
14667
+ return listener();
14668
+ });
14669
+ };
14670
+ var pushOverlay = function pushOverlay(zIndex) {
14671
+ lastId += 1;
14672
+ stack = [...stack, {
14673
+ id: lastId,
14674
+ zIndex
14675
+ }];
14676
+ notify();
14677
+ return lastId;
14678
+ };
14679
+ var popOverlay = function popOverlay(id) {
14680
+ stack = stack.filter(function (entry) {
14681
+ return entry.id !== id;
14682
+ });
14683
+ notify();
14684
+ };
14685
+
14686
+ // The overlay that covers the rest is the one on the highest layer. Mount order only breaks a tie,
14687
+ // because a lazily loaded surface can mount after the one it sits under.
14688
+ var isTopOverlay = function isTopOverlay(id) {
14689
+ if (stack.length === 0) {
14690
+ return true;
14691
+ }
14692
+ var top = stack.reduce(function (highest, entry) {
14693
+ return entry.zIndex > highest.zIndex || entry.zIndex === highest.zIndex && entry.id > highest.id ? entry : highest;
14694
+ });
14695
+ return top.id === id;
14696
+ };
14697
+ var subscribeToOverlays = function subscribeToOverlays(listener) {
14698
+ listeners.add(listener);
14699
+ return function () {
14700
+ listeners.delete(listener);
14701
+ };
14702
+ };
14703
+
14662
14704
  var StyledOverlay = styled__default["default"].div.withConfig({
14663
14705
  displayName: "Styles__StyledOverlay",
14664
14706
  componentId: "sc-flnrpv-0"
14665
- })(["position:fixed;top:0;right:0;bottom:0;left:0;", ""], function (props) {
14666
- return !props.$disableBackgroundColor && styled.css(["background:var(--modal-background);backdrop-filter:blur(2px);"]);
14707
+ })(["position:fixed;top:0;right:0;bottom:0;left:0;", " ", ""], function (props) {
14708
+ return !props.$disableBackgroundColor && styled.css(["background:var(--modal-background);transform:translateZ(0);"]);
14709
+ }, function (props) {
14710
+ return props.$blurs && styled.css(["backdrop-filter:blur(2px);"]);
14667
14711
  });
14668
14712
  StyledOverlay.displayName = "StyledOverlay";
14669
14713
 
14714
+ var LayerContext = /*#__PURE__*/React.createContext({});
14715
+ var LayerContextProvider = LayerContext.Provider;
14716
+ var LayerContextConsumer = LayerContext.Consumer;
14717
+ var useLayerContext = function useLayerContext() {
14718
+ return React.useContext(LayerContext);
14719
+ };
14720
+ var LayerContext$1 = LayerContext;
14721
+
14670
14722
  var _excluded$1G = ["className", "disableBackgroundColor"];
14723
+
14724
+ // Chrome samples the backdrop of every blurred overlay on every frame, and a covered one buys
14725
+ // nothing for that cost. Only the overlay on top keeps its blur.
14726
+ var useKeepsBlur = function useKeepsBlur(blurs, zIndex) {
14727
+ var _useState = React.useState(true),
14728
+ _useState2 = _slicedToArray(_useState, 2),
14729
+ isTop = _useState2[0],
14730
+ setIsTop = _useState2[1];
14731
+ React.useEffect(function () {
14732
+ if (!blurs) {
14733
+ return undefined;
14734
+ }
14735
+ var id = pushOverlay(zIndex);
14736
+ var sync = function sync() {
14737
+ return setIsTop(isTopOverlay(id));
14738
+ };
14739
+ sync();
14740
+ var unsubscribe = subscribeToOverlays(sync);
14741
+ return function () {
14742
+ unsubscribe();
14743
+ popOverlay(id);
14744
+ };
14745
+ }, [blurs, zIndex]);
14746
+ return blurs && isTop;
14747
+ };
14671
14748
  var Overlay = function Overlay(_ref) {
14672
14749
  var className = _ref.className,
14673
14750
  _ref$disableBackgroun = _ref.disableBackgroundColor,
14674
14751
  disableBackgroundColor = _ref$disableBackgroun === void 0 ? false : _ref$disableBackgroun,
14675
14752
  rest = _objectWithoutProperties(_ref, _excluded$1G);
14753
+ var _useLayerContext = useLayerContext(),
14754
+ _useLayerContext$zInd = _useLayerContext.zIndex,
14755
+ zIndex = _useLayerContext$zInd === void 0 ? layers.skyscraper : _useLayerContext$zInd;
14756
+ var keepsBlur = useKeepsBlur(!disableBackgroundColor, zIndex);
14676
14757
  return /*#__PURE__*/React__default["default"].createElement(StyledOverlay, _extends({
14677
14758
  className: classNames__default["default"]("c-overlay", className),
14678
- $disableBackgroundColor: disableBackgroundColor
14759
+ $disableBackgroundColor: disableBackgroundColor,
14760
+ $blurs: keepsBlur
14679
14761
  }, rest));
14680
14762
  };
14681
14763
  Overlay.displayName = "Overlay";
@@ -15300,14 +15382,6 @@
15300
15382
  };
15301
15383
  Portal.displayName = "Portal";
15302
15384
 
15303
- var LayerContext = /*#__PURE__*/React.createContext({});
15304
- var LayerContextProvider = LayerContext.Provider;
15305
- var LayerContextConsumer = LayerContext.Consumer;
15306
- var useLayerContext = function useLayerContext() {
15307
- return React.useContext(LayerContext);
15308
- };
15309
- var LayerContext$1 = LayerContext;
15310
-
15311
15385
  var _excluded$1A = ["children", "onClose", "className", "style", "onKeyDown", "disableFocusLock", "disableScrollLock", "disableCloseOnEsc", "onClick"];
15312
15386
  var returnFocus = {
15313
15387
  preventScroll: true
@@ -16571,7 +16645,7 @@
16571
16645
  var StyledDialogContent = styled__default["default"].div.withConfig({
16572
16646
  displayName: "Styles__StyledDialogContent",
16573
16647
  componentId: "sc-jwpvgm-5"
16574
- })(["padding:20px 30px;flex:1 1 auto;min-height:0;overflow-y:", ";", " ", ""], function (props) {
16648
+ })(["padding:20px 30px;flex:1 1 auto;min-height:0;overscroll-behavior:contain;overflow-y:", ";", " ", ""], function (props) {
16575
16649
  return props.$scroll ? "auto" : "visible";
16576
16650
  }, FontStyle, BoxSizingStyle);
16577
16651
  StyledDialogContent.displayName = "StyledDialogContent";
@@ -24782,7 +24856,7 @@
24782
24856
  displayName: "Styles__StyledSheetWrapper",
24783
24857
  componentId: "sc-144eyxd-1"
24784
24858
  })(["", " ", " position:relative;max-width:95vw;display:flex;flex-direction:row;", " ", " ", " ", " ", " ", " ", ""], BoxSizingStyle, FontStyle, function (props) {
24785
- return props.$mode === "stretch" ? styled.css(["margin-top:8px;height:calc(100vh - 16px);width:calc(100vw - 100px);max-width:1000px;", "{flex-direction:column;width:0;height:calc(100vh - 32px);& > *{margin-bottom:8px;animation-fill-mode:both;}span{top:8px;}}"], StyledSheetIcons) : styled.css(["max-height:calc(100vh - 156px);margin-top:126px;margin-bottom:30px;width:540px;flex-direction:column;", "{flex-direction:row-reverse;& > *{margin-left:8px;animation-fill-mode:both;}span{top:-48px;right:8px;}}"], StyledSheetIcons);
24859
+ return props.$mode === "stretch" ? styled.css(["margin-top:8px;height:calc(100vh - 16px);width:calc(100vw - 100px);max-width:1000px;", "{flex-direction:column;width:0;height:calc(100vh - 32px);& > *{margin-bottom:8px;}span{top:8px;}}"], StyledSheetIcons) : styled.css(["max-height:calc(100vh - 156px);margin-top:126px;margin-bottom:30px;width:540px;flex-direction:column;", "{flex-direction:row-reverse;& > *{margin-left:8px;}span{top:-48px;right:8px;}}"], StyledSheetIcons);
24786
24860
  }, function (props) {
24787
24861
  return props.$mode === "stretch" && styled.css(["@media (max-width:640px){width:100%;height:100%;}"]);
24788
24862
  }, function (props) {
@@ -24806,39 +24880,32 @@
24806
24880
  return props.$mode === "stretch" && props.$position === "left" && styled.css(["flex-direction:row-reverse;", "{span{right:-8px;}}"], StyledSheetIcons);
24807
24881
  });
24808
24882
  StyledSheetWrapper.displayName = "StyledSheetWrapper";
24883
+ var StyledSheetSurface = styled__default["default"].div.withConfig({
24884
+ displayName: "Styles__StyledSheetSurface",
24885
+ componentId: "sc-144eyxd-2"
24886
+ })(["display:flex;flex-direction:inherit;flex:1 1 auto;min-width:0;min-height:0;"]);
24887
+ StyledSheetSurface.displayName = "StyledSheetSurface";
24809
24888
  var StyledSheetWrapperPaper = styled__default["default"].div.attrs(function (props) {
24810
24889
  return {
24811
24890
  className: props.paperClass
24812
24891
  };
24813
24892
  }).withConfig({
24814
24893
  displayName: "Styles__StyledSheetWrapperPaper",
24815
- componentId: "sc-144eyxd-2"
24816
- })(["background-color:var(--page-paper-main);color:var(--color-theme-900);box-shadow:var(--shadow-primary);border-radius:6px;overflow:auto;animation:0.3s linear ease-out;", ""], {
24894
+ componentId: "sc-144eyxd-3"
24895
+ })(["background-color:var(--page-paper-main);color:var(--color-theme-900);box-shadow:var(--shadow-primary);border-radius:6px;overflow:auto;animation:0.3s linear ease-out;transform:translateZ(0);contain:paint;overscroll-behavior:contain;", ""], {
24817
24896
  "flex": "1 1 auto"
24818
24897
  });
24819
24898
  StyledSheetWrapperPaper.displayName = "StyledSheetWrapperPaper";
24820
- var StyledSheetControlsTop = styled.keyframes(["0%{opacity:0;transform:translateY(-200px);}100%{opacity:1;transform:translateY(0);}"]);
24821
- var StyledSheetControlsBottom = styled.keyframes(["0%{opacity:1;transform:translateY(0);}100%{opacity:0;transform:translateY(-200px);}"]);
24822
- var StyledSheetControlsCenterIn = styled.keyframes(["0%{transform:translateY(-150px);opacity:0;}100%{transform:translateY(0);opacity:1;}"]);
24823
- var StyledSheetControlsCenterOut = styled.keyframes(["0%{transform:translateY(0);opacity:1;}100%{transform:translateY(-150px);opacity:0;}"]);
24824
24899
  var StyledAnimatedSpan = styled__default["default"].span.withConfig({
24825
24900
  displayName: "Styles__StyledAnimatedSpan",
24826
- componentId: "sc-144eyxd-3"
24827
- })(["&:hover svg{fill:var(--color-primary);}", " ", " ", " ", " ", ""], function (props) {
24828
- return props.$state === "entering" && styled.css(["opacity:1;", ""], props.$mode === "stretch" ? styled.css(["animation-name:", ";animation-duration:", ";animation-delay:", ";"], StyledSheetControlsTop, "".concat(props.$durationIn, "s"), "".concat(props.$durationIn, "s")) : styled.css(["animation-name:", ";animation-duration:", ";animation-delay:0s;"], StyledSheetControlsCenterIn, "".concat(props.$maxDurationIn, "s")));
24829
- }, function (props) {
24830
- return props.$state === "entered" && styled.css(["opacity:1;"]);
24831
- }, function (props) {
24901
+ componentId: "sc-144eyxd-4"
24902
+ })(["&:hover svg{fill:var(--color-primary);}", ""], function (props) {
24832
24903
  return props.$disabled && styled.css(["pointer-events:none;svg{opacity:0.5;}"]);
24833
- }, function (props) {
24834
- return props.$state === "exiting" && styled.css(["opacity:0;", ""], props.$mode === "stretch" ? styled.css(["animation-name:", ";animation-duration:", ";animation-delay:", ";"], StyledSheetControlsBottom, "".concat(props.$durationOut, "s"), "".concat(props.$durationOut, "s")) : styled.css(["animation-name:", ";animation-duration:", ";animation-delay:0;"], StyledSheetControlsCenterOut, "".concat(props.$maxDurationOut, "s")));
24835
- }, function (props) {
24836
- return props.$state === "exited" && styled.css(["opacity:0;"]);
24837
24904
  });
24838
24905
  StyledAnimatedSpan.displayName = "StyledAnimatedSpan";
24839
24906
  var StyledCssTransition = styled__default["default"](reactTransitionGroup.CSSTransition).withConfig({
24840
24907
  displayName: "Styles__StyledCssTransition",
24841
- componentId: "sc-144eyxd-4"
24908
+ componentId: "sc-144eyxd-5"
24842
24909
  })(["", " ", " ", " ", ""], function (props) {
24843
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;}"]);
24844
24911
  }, function (props) {
@@ -24851,17 +24918,17 @@
24851
24918
  StyledCssTransition.displayName = "StyledCssTransition";
24852
24919
  var StyledListSeparator = styled__default["default"](ListSeparator).withConfig({
24853
24920
  displayName: "Styles__StyledListSeparator",
24854
- componentId: "sc-144eyxd-5"
24921
+ componentId: "sc-144eyxd-6"
24855
24922
  })(["margin:0;"]);
24856
24923
  StyledListSeparator.displayName = "StyledListSeparator";
24857
24924
  var StyledIconsWrapperSmall = styled__default["default"].div.withConfig({
24858
24925
  displayName: "Styles__StyledIconsWrapperSmall",
24859
- componentId: "sc-144eyxd-6"
24926
+ componentId: "sc-144eyxd-7"
24860
24927
  })(["height:40px;display:flex;gap:8px;padding-left:16px;padding-right:16px;align-items:center;place-content:end;flex-direction:row-reverse;"]);
24861
24928
  StyledIconsWrapperSmall.displayName = "StyledIconsWrapperSmall";
24862
24929
  var StyledHeader$1 = styled__default["default"].div.withConfig({
24863
24930
  displayName: "Styles__StyledHeader",
24864
- componentId: "sc-144eyxd-7"
24931
+ componentId: "sc-144eyxd-8"
24865
24932
  })(["@media (min-width:640px){display:none;}"]);
24866
24933
  StyledHeader$1.displayName = "StyledHeader";
24867
24934
 
@@ -24937,39 +25004,7 @@
24937
25004
  style: bodyStyle,
24938
25005
  $position: position,
24939
25006
  $mode: mode
24940
- }, controls.length > 0 && /*#__PURE__*/React__default["default"].createElement(StyledSheetIcons, null, controls.map(function (_ref2, index) {
24941
- var IconComponent = _ref2.icon,
24942
- tooltip = _ref2.tooltip,
24943
- onClick = _ref2.onClick,
24944
- disabled = _ref2.disabled,
24945
- className = _ref2.className;
24946
- var maxDurationIn = 4;
24947
- var maxDurationOut = 2;
24948
- var control = index + 1;
24949
- var durationOut = Math.max(0, maxDurationOut - control);
24950
- var durationIn = Math.min(control, maxDurationIn);
24951
- return /*#__PURE__*/React__default["default"].createElement(reactTransitionGroup.Transition, {
24952
- appear: true,
24953
- in: open,
24954
- timeout: maxDurationIn * 100,
24955
- key: "c-sheet-control-".concat(index)
24956
- }, function (state) {
24957
- return /*#__PURE__*/React__default["default"].createElement(Tooltip, {
24958
- title: tooltip,
24959
- disable: !tooltip || disabled
24960
- }, /*#__PURE__*/React__default["default"].createElement(StyledAnimatedSpan, {
24961
- onClick: onClick,
24962
- $disabled: disabled,
24963
- $mode: mode,
24964
- $state: state,
24965
- className: className,
24966
- $maxDurationIn: maxDurationIn / 10,
24967
- $maxDurationOut: maxDurationOut / 10,
24968
- $durationOut: durationOut / 10,
24969
- $durationIn: durationIn / 10
24970
- }, IconComponent));
24971
- });
24972
- })), /*#__PURE__*/React__default["default"].createElement(StyledCssTransition, {
25007
+ }, /*#__PURE__*/React__default["default"].createElement(StyledCssTransition, {
24973
25008
  appear: true,
24974
25009
  in: open,
24975
25010
  timeout: 400,
@@ -24977,7 +25012,22 @@
24977
25012
  $direction: animation,
24978
25013
  onEnter: handleEnter,
24979
25014
  onExited: handleExited
24980
- }, /*#__PURE__*/React__default["default"].createElement(StyledSheetWrapperPaper, {
25015
+ }, /*#__PURE__*/React__default["default"].createElement(StyledSheetSurface, null, controls.length > 0 && /*#__PURE__*/React__default["default"].createElement(StyledSheetIcons, null, controls.map(function (_ref2, index) {
25016
+ var IconComponent = _ref2.icon,
25017
+ tooltip = _ref2.tooltip,
25018
+ onClick = _ref2.onClick,
25019
+ disabled = _ref2.disabled,
25020
+ className = _ref2.className;
25021
+ return /*#__PURE__*/React__default["default"].createElement(Tooltip, {
25022
+ title: tooltip,
25023
+ disable: !tooltip || disabled,
25024
+ key: "c-sheet-control-".concat(index)
25025
+ }, /*#__PURE__*/React__default["default"].createElement(StyledAnimatedSpan, {
25026
+ onClick: onClick,
25027
+ $disabled: disabled,
25028
+ className: className
25029
+ }, IconComponent));
25030
+ })), /*#__PURE__*/React__default["default"].createElement(StyledSheetWrapperPaper, {
24981
25031
  paperClass: "c-sheet__wrapper__paper"
24982
25032
  }, controls.length > 0 && /*#__PURE__*/React__default["default"].createElement(StyledHeader$1, null, /*#__PURE__*/React__default["default"].createElement(StyledIconsWrapperSmall, null, controls.map(function (_ref3, index) {
24983
25033
  var IconComponent = _ref3.icon,
@@ -24995,7 +25045,7 @@
24995
25045
  className: className,
24996
25046
  variant: "text gray"
24997
25047
  }, IconComponent));
24998
- })), /*#__PURE__*/React__default["default"].createElement(StyledListSeparator, null)), children))));
25048
+ })), /*#__PURE__*/React__default["default"].createElement(StyledListSeparator, null)), children)))));
24999
25049
  });
25000
25050
  Sheet.displayName = "Sheet";
25001
25051