@activecollab/components 2.0.438 → 2.0.440

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 (34) hide show
  1. package/dist/cjs/components/Menu/Menu.js +45 -19
  2. package/dist/cjs/components/Menu/Menu.js.map +1 -1
  3. package/dist/cjs/components/Transitions/Grow/Grow.js +110 -0
  4. package/dist/cjs/components/Transitions/Grow/Grow.js.map +1 -0
  5. package/dist/cjs/components/Transitions/Grow/index.js +17 -0
  6. package/dist/cjs/components/Transitions/Grow/index.js.map +1 -0
  7. package/dist/cjs/components/Transitions/index.js +11 -0
  8. package/dist/cjs/components/Transitions/index.js.map +1 -1
  9. package/dist/cjs/presentation/shared/headers.js +3 -2
  10. package/dist/cjs/presentation/shared/headers.js.map +1 -1
  11. package/dist/esm/components/Menu/Menu.d.ts.map +1 -1
  12. package/dist/esm/components/Menu/Menu.js +43 -19
  13. package/dist/esm/components/Menu/Menu.js.map +1 -1
  14. package/dist/esm/components/Transitions/Grow/Grow.d.ts +14 -0
  15. package/dist/esm/components/Transitions/Grow/Grow.d.ts.map +1 -0
  16. package/dist/esm/components/Transitions/Grow/Grow.js +88 -0
  17. package/dist/esm/components/Transitions/Grow/Grow.js.map +1 -0
  18. package/dist/esm/components/Transitions/Grow/index.d.ts +2 -0
  19. package/dist/esm/components/Transitions/Grow/index.d.ts.map +1 -0
  20. package/dist/esm/components/Transitions/Grow/index.js +2 -0
  21. package/dist/esm/components/Transitions/Grow/index.js.map +1 -0
  22. package/dist/esm/components/Transitions/index.d.ts +1 -0
  23. package/dist/esm/components/Transitions/index.d.ts.map +1 -1
  24. package/dist/esm/components/Transitions/index.js +1 -0
  25. package/dist/esm/components/Transitions/index.js.map +1 -1
  26. package/dist/esm/presentation/shared/headers.d.ts +7 -1
  27. package/dist/esm/presentation/shared/headers.d.ts.map +1 -1
  28. package/dist/esm/presentation/shared/headers.js +3 -2
  29. package/dist/esm/presentation/shared/headers.js.map +1 -1
  30. package/dist/index.js +734 -616
  31. package/dist/index.js.map +1 -1
  32. package/dist/index.min.js +1 -1
  33. package/dist/index.min.js.map +1 -1
  34. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -14815,6 +14815,464 @@
14815
14815
  });
14816
14816
  Popper.displayName = "Popper";
14817
14817
 
14818
+ var _excluded$1E = ["in", "children", "style", "timeout", "onEnter"];
14819
+ var defaultStyle$2 = function defaultStyle(duration) {
14820
+ return {
14821
+ transition: "all ".concat(duration, "ms ease-in-out"),
14822
+ opacity: 0
14823
+ };
14824
+ };
14825
+ var transitionStyles$3 = {
14826
+ entering: {
14827
+ opacity: 1
14828
+ },
14829
+ entered: {
14830
+ opacity: 1
14831
+ },
14832
+ exiting: {
14833
+ opacity: 0
14834
+ },
14835
+ exited: {
14836
+ opacity: 0
14837
+ }
14838
+ };
14839
+ var Fade = function Fade(_ref) {
14840
+ var _ref$in = _ref.in,
14841
+ inProp = _ref$in === void 0 ? false : _ref$in,
14842
+ children = _ref.children,
14843
+ style = _ref.style,
14844
+ _ref$timeout = _ref.timeout,
14845
+ timeout = _ref$timeout === void 0 ? 500 : _ref$timeout,
14846
+ onEnter = _ref.onEnter,
14847
+ rest = _objectWithoutProperties(_ref, _excluded$1E);
14848
+ // Same forced layout as SlideFromTop: without it the starting opacity never lands in the DOM.
14849
+ var handleEnter = function handleEnter(node, isAppearing) {
14850
+ if (node) {
14851
+ void node.offsetHeight;
14852
+ }
14853
+ onEnter === null || onEnter === void 0 || onEnter(node, isAppearing);
14854
+ };
14855
+ return /*#__PURE__*/React__default["default"].createElement(reactTransitionGroup.Transition, _extends({
14856
+ appear: true,
14857
+ in: inProp,
14858
+ timeout: timeout,
14859
+ onEnter: handleEnter
14860
+ }, rest), function (state) {
14861
+ return /*#__PURE__*/React.cloneElement(children, {
14862
+ style: _objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2({
14863
+ visibility: state === "exited" && !inProp ? "hidden" : undefined
14864
+ }, defaultStyle$2(timeout)), transitionStyles$3[state]), style), children.props.style)
14865
+ });
14866
+ });
14867
+ };
14868
+ Fade.displayName = "Fade";
14869
+
14870
+ var _excluded$1D = ["in", "children", "style", "timeout", "initialDirection"];
14871
+ var Slide = function Slide(_ref) {
14872
+ var _ref$in = _ref.in,
14873
+ inProp = _ref$in === void 0 ? false : _ref$in,
14874
+ children = _ref.children,
14875
+ style = _ref.style,
14876
+ _ref$timeout = _ref.timeout,
14877
+ timeout = _ref$timeout === void 0 ? 300 : _ref$timeout,
14878
+ _ref$initialDirection = _ref.initialDirection,
14879
+ initialDirection = _ref$initialDirection === void 0 ? "left" : _ref$initialDirection,
14880
+ rest = _objectWithoutProperties(_ref, _excluded$1D);
14881
+ var directionSign;
14882
+ switch (initialDirection) {
14883
+ case "right":
14884
+ directionSign = "100%, 0";
14885
+ break;
14886
+ case "top":
14887
+ directionSign = "0, -100%";
14888
+ break;
14889
+ case "bottom":
14890
+ directionSign = "0, 100%";
14891
+ break;
14892
+ default:
14893
+ directionSign = "-100%, 0";
14894
+ }
14895
+ var defaultStyle = function defaultStyle(timeout) {
14896
+ return {
14897
+ transition: "all ".concat(timeout, "ms ease")
14898
+ };
14899
+ };
14900
+ var transitionStyles = {
14901
+ entering: {
14902
+ transform: "translate(0,0)"
14903
+ },
14904
+ entered: {
14905
+ transform: "translate(0,0)"
14906
+ },
14907
+ exiting: {
14908
+ transform: "translate(".concat(directionSign, ")")
14909
+ },
14910
+ exited: {
14911
+ transform: "translate(".concat(directionSign, ")")
14912
+ }
14913
+ };
14914
+ return /*#__PURE__*/React__default["default"].createElement(reactTransitionGroup.Transition, _extends({
14915
+ in: inProp,
14916
+ timeout: timeout
14917
+ }, rest), function (state) {
14918
+ return /*#__PURE__*/React.cloneElement(children, {
14919
+ style: _objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2({
14920
+ visibility: state === "exited" && !inProp ? "hidden" : undefined
14921
+ }, defaultStyle(timeout)), transitionStyles[state]), style), children.props.style)
14922
+ });
14923
+ });
14924
+ };
14925
+ Slide.displayName = "Slide";
14926
+
14927
+ var defaultStyle$1 = {
14928
+ transitionProperty: "opacity, transform",
14929
+ transitionDuration: ".15s, .10s, .15s",
14930
+ transitionTimingFunction: "ease, ease, cubic-bezier(0.39, 0.575, 0.565, 1)",
14931
+ transformOrigin: "50% 0",
14932
+ transform: "scale(.85)",
14933
+ opacity: 0
14934
+ };
14935
+ var transitionStyles$2 = {
14936
+ entering: {
14937
+ opacity: 1,
14938
+ transform: "scale(1)",
14939
+ transitionDelay: ".6s"
14940
+ },
14941
+ entered: {
14942
+ opacity: 1,
14943
+ transform: "scale(1)"
14944
+ },
14945
+ exiting: {
14946
+ opacity: 0,
14947
+ transform: "scale(.85)"
14948
+ },
14949
+ exited: {
14950
+ opacity: 0,
14951
+ transform: "scale(.85)"
14952
+ }
14953
+ };
14954
+ var FromElement = function FromElement(_ref) {
14955
+ var _ref$in = _ref.in,
14956
+ inProp = _ref$in === void 0 ? false : _ref$in,
14957
+ onEnter = _ref.onEnter,
14958
+ onExited = _ref.onExited,
14959
+ children = _ref.children,
14960
+ style = _ref.style,
14961
+ _ref$timeout = _ref.timeout,
14962
+ timeout = _ref$timeout === void 0 ? 1000 : _ref$timeout;
14963
+ return /*#__PURE__*/React__default["default"].createElement(reactTransitionGroup.Transition, {
14964
+ appear: true,
14965
+ in: inProp,
14966
+ timeout: timeout,
14967
+ onEnter: onEnter,
14968
+ onExited: onExited
14969
+ }, function (state) {
14970
+ return /*#__PURE__*/React.cloneElement(children, {
14971
+ style: _objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2({
14972
+ visibility: state === "exited" && !inProp ? "hidden" : undefined
14973
+ }, defaultStyle$1), transitionStyles$2[state]), style), children.props.style)
14974
+ });
14975
+ });
14976
+ };
14977
+ FromElement.displayName = "FromElement";
14978
+
14979
+ var DEFAULT_DISTANCE = 25;
14980
+ var buildStyles$1 = function buildStyles(distance) {
14981
+ var away = "translateY(-".concat(distance, "px)");
14982
+ return {
14983
+ base: {
14984
+ transitionProperty: "opacity, transform",
14985
+ transitionTimingFunction: "ease-out",
14986
+ transform: away,
14987
+ opacity: 0
14988
+ },
14989
+ entering: {
14990
+ opacity: 1,
14991
+ transform: "translateY(0)",
14992
+ transitionDuration: ".3s"
14993
+ },
14994
+ entered: {
14995
+ opacity: 1,
14996
+ transform: "translateY(0)",
14997
+ transitionDuration: ".3s"
14998
+ },
14999
+ exiting: {
15000
+ opacity: 0,
15001
+ transform: away,
15002
+ transitionDuration: ".2s"
15003
+ },
15004
+ exited: {
15005
+ opacity: 0,
15006
+ transform: away,
15007
+ transitionDuration: ".2s"
15008
+ }
15009
+ };
15010
+ };
15011
+ var SlideFromTop = function SlideFromTop(_ref) {
15012
+ var _ref$in = _ref.in,
15013
+ inProp = _ref$in === void 0 ? false : _ref$in,
15014
+ onEnter = _ref.onEnter,
15015
+ onExited = _ref.onExited,
15016
+ children = _ref.children,
15017
+ style = _ref.style,
15018
+ _ref$timeout = _ref.timeout,
15019
+ timeout = _ref$timeout === void 0 ? 400 : _ref$timeout,
15020
+ _ref$distance = _ref.distance,
15021
+ distance = _ref$distance === void 0 ? DEFAULT_DISTANCE : _ref$distance;
15022
+ var styles = buildStyles$1(distance);
15023
+
15024
+ // React flushes the state change that follows onEnter before the browser paints, so without a
15025
+ // forced layout here the element never holds its starting style and the transition is skipped.
15026
+ var handleEnter = function handleEnter(node, isAppearing) {
15027
+ if (node) {
15028
+ void node.offsetHeight;
15029
+ }
15030
+ onEnter === null || onEnter === void 0 || onEnter(node, isAppearing);
15031
+ };
15032
+ return /*#__PURE__*/React__default["default"].createElement(reactTransitionGroup.Transition, {
15033
+ appear: true,
15034
+ in: inProp,
15035
+ timeout: timeout,
15036
+ onEnter: handleEnter,
15037
+ onExited: onExited
15038
+ }, function (state) {
15039
+ return /*#__PURE__*/React.cloneElement(children, {
15040
+ style: _objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2({
15041
+ visibility: state === "exited" && !inProp ? "hidden" : undefined
15042
+ }, styles.base), styles[state]), style), children.props.style)
15043
+ });
15044
+ });
15045
+ };
15046
+ SlideFromTop.displayName = "SlideFromTop";
15047
+
15048
+ var StyledSlideLeftRight = styled.createGlobalStyle(["", " ", ""], function (props) {
15049
+ return props.$direction === "left" && styled.css(["&.c-slide-enter{position:absolute;transform:translateX(100%);}&.c-slide-enter-active{transform:translateX(0%);transition:all 200ms ease;}&.c-slide-exit{position:absolute;}&.c-slide-exit-active{transform:translateX(-100%);transition:all 200ms ease;}"]);
15050
+ }, function (props) {
15051
+ return props.$direction === "right" && styled.css(["&.c-slide-enter{position:absolute;transform:translateX(-100%);}&.c-slide-enter-active{transform:translateX(0%);transition:all 200ms ease;}&.c-slide-exit{position:absolute;}&.c-slide-exit-active{transform:translateX(100%);transition:all 200ms ease;}"]);
15052
+ });
15053
+
15054
+ var _excluded$1C = ["children", "direction"];
15055
+ var SlideLeftRightTransition = function SlideLeftRightTransition(_ref) {
15056
+ var children = _ref.children,
15057
+ _ref$direction = _ref.direction,
15058
+ direction = _ref$direction === void 0 ? "left" : _ref$direction,
15059
+ props = _objectWithoutProperties(_ref, _excluded$1C);
15060
+ return /*#__PURE__*/React__default["default"].createElement(reactTransitionGroup.CSSTransition, _extends({
15061
+ timeout: 200,
15062
+ classNames: "c-slide",
15063
+ unmountOnExit: true
15064
+ }, props), /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, children, /*#__PURE__*/React__default["default"].createElement(StyledSlideLeftRight, {
15065
+ $direction: direction
15066
+ })));
15067
+ };
15068
+ SlideLeftRightTransition.displayName = "SlideLeftRightTransition";
15069
+
15070
+ var ResizeTransition = function ResizeTransition(_ref) {
15071
+ var _ref$in = _ref.in,
15072
+ inProp = _ref$in === void 0 ? false : _ref$in,
15073
+ onEnter = _ref.onEnter,
15074
+ onExited = _ref.onExited,
15075
+ children = _ref.children,
15076
+ style = _ref.style,
15077
+ _ref$timeout = _ref.timeout,
15078
+ timeout = _ref$timeout === void 0 ? 200 : _ref$timeout;
15079
+ var defaultStyle = React.useMemo(function () {
15080
+ return {
15081
+ transitionProperty: "width, height",
15082
+ transitionDuration: "".concat(timeout, "ms"),
15083
+ transitionTimingFunction: "ease"
15084
+ };
15085
+ }, [timeout]);
15086
+ return /*#__PURE__*/React__default["default"].createElement(reactTransitionGroup.Transition, {
15087
+ appear: true,
15088
+ in: inProp,
15089
+ timeout: timeout,
15090
+ onEnter: onEnter,
15091
+ onExited: onExited
15092
+ }, function (state) {
15093
+ return /*#__PURE__*/React.cloneElement(children, {
15094
+ style: _objectSpread2(_objectSpread2(_objectSpread2({
15095
+ visibility: state === "exited" && !inProp ? "hidden" : undefined
15096
+ }, defaultStyle), style), children.props.style)
15097
+ });
15098
+ });
15099
+ };
15100
+ ResizeTransition.displayName = "ResizeTransition";
15101
+
15102
+ var _excluded$1B = ["in", "children", "style", "timeout"];
15103
+ var defaultStyle = function defaultStyle(duration) {
15104
+ return {
15105
+ transition: "all ".concat(duration, "ms ease-in"),
15106
+ transform: "scaleX(0)",
15107
+ opacity: 0,
15108
+ transformOrigin: "left"
15109
+ };
15110
+ };
15111
+ var transitionStyles$1 = {
15112
+ entering: {
15113
+ transform: "scaleX(1)",
15114
+ opacity: 1
15115
+ },
15116
+ entered: {
15117
+ transform: "scaleX(1)",
15118
+ opacity: 1
15119
+ },
15120
+ exiting: {
15121
+ transform: "scaleX(0)",
15122
+ opacity: 0
15123
+ },
15124
+ exited: {
15125
+ transform: "scaleX(0)",
15126
+ opacity: 0
15127
+ }
15128
+ };
15129
+ var Reveal = function Reveal(_ref) {
15130
+ var _ref$in = _ref.in,
15131
+ inProp = _ref$in === void 0 ? false : _ref$in,
15132
+ children = _ref.children,
15133
+ style = _ref.style,
15134
+ _ref$timeout = _ref.timeout,
15135
+ timeout = _ref$timeout === void 0 ? 200 : _ref$timeout,
15136
+ rest = _objectWithoutProperties(_ref, _excluded$1B);
15137
+ return /*#__PURE__*/React__default["default"].createElement(reactTransitionGroup.Transition, _extends({
15138
+ appear: true,
15139
+ in: inProp,
15140
+ timeout: timeout
15141
+ }, rest), function (state) {
15142
+ return /*#__PURE__*/React.cloneElement(children, {
15143
+ style: _objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2({}, defaultStyle(inProp ? timeout : 0)), transitionStyles$1[state]), style), children.props.style)
15144
+ });
15145
+ });
15146
+ };
15147
+ Reveal.displayName = "Reveal";
15148
+
15149
+ var transitionStyles = {
15150
+ entered: {
15151
+ transform: "scale(1)"
15152
+ },
15153
+ exiting: {
15154
+ transform: "scale(0)"
15155
+ }
15156
+ };
15157
+ var Scale = function Scale(_ref) {
15158
+ var _ref$in = _ref.in,
15159
+ inProp = _ref$in === void 0 ? false : _ref$in,
15160
+ onEnter = _ref.onEnter,
15161
+ onExited = _ref.onExited,
15162
+ children = _ref.children,
15163
+ style = _ref.style,
15164
+ _ref$timeout = _ref.timeout,
15165
+ timeout = _ref$timeout === void 0 ? 200 : _ref$timeout;
15166
+ var defaultStyle = React.useMemo(function () {
15167
+ return {
15168
+ transitionProperty: "transform",
15169
+ transitionDuration: "".concat(timeout, "ms"),
15170
+ transform: "scale(0)"
15171
+ };
15172
+ }, [timeout]);
15173
+ return /*#__PURE__*/React__default["default"].createElement(reactTransitionGroup.Transition, {
15174
+ in: inProp,
15175
+ timeout: timeout,
15176
+ onEnter: onEnter,
15177
+ onExited: onExited
15178
+ }, function (state) {
15179
+ return /*#__PURE__*/React.cloneElement(children, {
15180
+ style: _objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2({}, defaultStyle), transitionStyles[state]), style), children.props.style)
15181
+ });
15182
+ });
15183
+ };
15184
+ Scale.displayName = "Scale";
15185
+
15186
+ var GROW_ENTER = 140;
15187
+ var GROW_EXIT = 100;
15188
+ var START_SCALE = 0.96;
15189
+
15190
+ // jsdom and SSR have no matchMedia, and a reader who asks for less motion gets none.
15191
+ var prefersReducedMotion = function prefersReducedMotion() {
15192
+ return typeof window !== "undefined" && typeof window.matchMedia === "function" && window.matchMedia("(prefers-reduced-motion: reduce)").matches;
15193
+ };
15194
+ var originFor = function originFor(placement) {
15195
+ var _split = (placement || "bottom-start").split("-"),
15196
+ _split2 = _slicedToArray(_split, 2),
15197
+ side = _split2[0],
15198
+ alignment = _split2[1];
15199
+ var vertical = side === "top" ? "bottom" : "top";
15200
+ var horizontal = alignment === "end" ? "right" : "left";
15201
+ if (side === "left" || side === "right") {
15202
+ return "center ".concat(side === "left" ? "right" : "left");
15203
+ }
15204
+ return "".concat(horizontal, " ").concat(vertical);
15205
+ };
15206
+ var buildStyles = function buildStyles(origin, enter, exit) {
15207
+ var away = "scale(".concat(START_SCALE, ")");
15208
+ return {
15209
+ base: {
15210
+ transformOrigin: origin,
15211
+ transitionProperty: "opacity, transform",
15212
+ transitionTimingFunction: "ease-out",
15213
+ transform: away,
15214
+ opacity: 0
15215
+ },
15216
+ entering: {
15217
+ opacity: 1,
15218
+ transform: "scale(1)",
15219
+ transitionDuration: "".concat(enter, "ms")
15220
+ },
15221
+ entered: {
15222
+ opacity: 1,
15223
+ transform: "scale(1)"
15224
+ },
15225
+ exiting: {
15226
+ opacity: 0,
15227
+ transform: away,
15228
+ transitionDuration: "".concat(exit, "ms")
15229
+ },
15230
+ exited: {
15231
+ opacity: 0,
15232
+ transform: away
15233
+ }
15234
+ };
15235
+ };
15236
+ var Grow = function Grow(_ref) {
15237
+ var _ref$in = _ref.in,
15238
+ inProp = _ref$in === void 0 ? false : _ref$in,
15239
+ onEnter = _ref.onEnter,
15240
+ onExited = _ref.onExited,
15241
+ children = _ref.children,
15242
+ style = _ref.style,
15243
+ placement = _ref.placement,
15244
+ _ref$timeout = _ref.timeout,
15245
+ timeout = _ref$timeout === void 0 ? GROW_ENTER : _ref$timeout;
15246
+ var still = prefersReducedMotion();
15247
+ var enter = still ? 0 : timeout;
15248
+ var exit = still ? 0 : GROW_EXIT;
15249
+ var styles = buildStyles(originFor(placement), enter, exit);
15250
+
15251
+ // React flushes the state change that follows onEnter before the browser paints, so without a
15252
+ // forced layout here the element never holds its starting style and the transition is skipped.
15253
+ var handleEnter = function handleEnter(node, isAppearing) {
15254
+ if (node) {
15255
+ void node.offsetHeight;
15256
+ }
15257
+ onEnter === null || onEnter === void 0 || onEnter(node, isAppearing);
15258
+ };
15259
+ return /*#__PURE__*/React__default["default"].createElement(reactTransitionGroup.Transition, {
15260
+ appear: true,
15261
+ in: inProp,
15262
+ timeout: {
15263
+ enter,
15264
+ exit
15265
+ },
15266
+ onEnter: handleEnter,
15267
+ onExited: onExited
15268
+ }, function (state) {
15269
+ return /*#__PURE__*/React.cloneElement(children, {
15270
+ style: _objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2({}, styles.base), styles[state]), style), children.props.style)
15271
+ });
15272
+ });
15273
+ };
15274
+ Grow.displayName = "Grow";
15275
+
14818
15276
  var StyledWindow = styled__default["default"].div.withConfig({
14819
15277
  displayName: "Style__StyledWindow",
14820
15278
  componentId: "sc-rnlftg-0"
@@ -14847,7 +15305,7 @@
14847
15305
  };
14848
15306
  var LayerContext$1 = LayerContext;
14849
15307
 
14850
- var _excluded$1E = ["children", "onClose", "className", "style", "onKeyDown", "disableFocusLock", "disableScrollLock", "disableCloseOnEsc", "onClick"];
15308
+ var _excluded$1A = ["children", "onClose", "className", "style", "onKeyDown", "disableFocusLock", "disableScrollLock", "disableCloseOnEsc", "onClick"];
14851
15309
  var returnFocus = {
14852
15310
  preventScroll: true
14853
15311
  };
@@ -14864,7 +15322,7 @@
14864
15322
  _ref$disableCloseOnEs = _ref.disableCloseOnEsc,
14865
15323
  disableCloseOnEsc = _ref$disableCloseOnEs === void 0 ? false : _ref$disableCloseOnEs,
14866
15324
  onClick = _ref.onClick,
14867
- rest = _objectWithoutProperties(_ref, _excluded$1E);
15325
+ rest = _objectWithoutProperties(_ref, _excluded$1A);
14868
15326
  var innerRef = React.useRef(null);
14869
15327
  var handleRef = useForkRef(innerRef, ref);
14870
15328
  var _useLayerContext = useLayerContext(),
@@ -14937,15 +15395,24 @@
14937
15395
  _useState2 = _slicedToArray(_useState, 2),
14938
15396
  open = _useState2[0],
14939
15397
  setOpen = _useState2[1];
14940
- var _useState3 = React.useState(),
15398
+ var _useState3 = React.useState(!defaultOpen),
14941
15399
  _useState4 = _slicedToArray(_useState3, 2),
14942
- childNode = _useState4[0],
14943
- setChildNode = _useState4[1];
15400
+ exited = _useState4[0],
15401
+ setExited = _useState4[1];
15402
+ var _useState5 = React.useState(),
15403
+ _useState6 = _slicedToArray(_useState5, 2),
15404
+ childNode = _useState6[0],
15405
+ setChildNode = _useState6[1];
14944
15406
  var elementRef = React.useRef(null);
14945
15407
  var isOpenAtLeastOnce = React.useRef(false);
14946
15408
  React.useEffect(function () {
14947
15409
  setOpen(defaultOpen);
14948
15410
  }, [defaultOpen]);
15411
+ React.useEffect(function () {
15412
+ if (open) {
15413
+ setExited(false);
15414
+ }
15415
+ }, [open]);
14949
15416
  var handleRefRef = useForkRef(target ? target.ref : undefined, setChildNode);
14950
15417
  var handleRef = useForkRef(handleRefRef, elementRef);
14951
15418
  var handleOpen = React.useCallback(function (event) {
@@ -14980,35 +15447,51 @@
14980
15447
  isOpenAtLeastOnce.current = false;
14981
15448
  }
14982
15449
  }, [open]);
14983
- return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, target && /*#__PURE__*/React__default["default"].cloneElement(target, targetProps), open ? /*#__PURE__*/React__default["default"].createElement(Window, {
15450
+ 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, {
14984
15451
  onClose: handleClose,
14985
- disableScrollLock: !handleScroll,
14986
- disableFocusLock: disableFocusLock,
15452
+ disableScrollLock: !handleScroll
15453
+ // A closing menu hands the focus back at once, it does not hold it for the length of the fade.
15454
+ ,
15455
+ disableFocusLock: disableFocusLock || !open,
14987
15456
  style: {
14988
15457
  position: windowAbsolutelyPositioned ? "absolute" : "fixed"
14989
15458
  }
14990
- }, /*#__PURE__*/React__default["default"].createElement(Overlay, {
15459
+ }, open ? /*#__PURE__*/React__default["default"].createElement(Overlay, {
14991
15460
  className: backgroundElementClass,
14992
15461
  onClick: handleClose,
14993
15462
  tabIndex: -1,
14994
15463
  disableBackgroundColor: true
14995
- }), /*#__PURE__*/React__default["default"].createElement(Popper, {
15464
+ }) : null, /*#__PURE__*/React__default["default"].createElement(Popper, {
14996
15465
  anchorEl: childNode,
14997
15466
  open: childNode ? open : false,
14998
15467
  placement: position,
14999
15468
  className: popperClassName,
15000
15469
  tabIndex: -1,
15001
- afterWrite: onPopperOpen
15002
- }, /*#__PURE__*/React__default["default"].createElement(StyledMenu$3, {
15003
- className: classNames__default["default"]("c-simple-menu__paper", "c-simple-menu__".concat(mode), menuClassName, className),
15004
- $mode: mode,
15005
- onMouseDown: onMenuClick
15006
- }, /*#__PURE__*/React__default["default"].createElement(MenuContextProvider, {
15007
- value: {
15008
- open,
15009
- setOpen
15010
- }
15011
- }, typeof children === "function" ? children(childProps) : children)))) : null);
15470
+ afterWrite: onPopperOpen,
15471
+ transition: true
15472
+ }, function (_ref2) {
15473
+ var placement = _ref2.placement,
15474
+ transitionProps = _ref2.transitionProps;
15475
+ return /*#__PURE__*/React__default["default"].createElement(Grow, {
15476
+ placement: placement,
15477
+ in: transitionProps === null || transitionProps === void 0 ? void 0 : transitionProps.in,
15478
+ onEnter: transitionProps === null || transitionProps === void 0 ? void 0 : transitionProps.onEnter,
15479
+ onExited: function onExited() {
15480
+ var _transitionProps$onEx;
15481
+ setExited(true);
15482
+ transitionProps === null || transitionProps === void 0 || (_transitionProps$onEx = transitionProps.onExited) === null || _transitionProps$onEx === void 0 || _transitionProps$onEx.call(transitionProps);
15483
+ }
15484
+ }, /*#__PURE__*/React__default["default"].createElement(StyledMenu$3, {
15485
+ className: classNames__default["default"]("c-simple-menu__paper", "c-simple-menu__".concat(mode), menuClassName, className),
15486
+ $mode: mode,
15487
+ onMouseDown: onMenuClick
15488
+ }, /*#__PURE__*/React__default["default"].createElement(MenuContextProvider, {
15489
+ value: {
15490
+ open,
15491
+ setOpen
15492
+ }
15493
+ }, typeof children === "function" ? children(childProps) : children)));
15494
+ })) : null);
15012
15495
  };
15013
15496
  Menu.displayName = "Menu";
15014
15497
 
@@ -15176,7 +15659,7 @@
15176
15659
  });
15177
15660
  StyledTypography.displayName = "StyledTypography";
15178
15661
 
15179
- var _excluded$1D = ["variant", "as", "color", "italic", "tabularNums", "letterSpacing", "lineHeight", "align", "decoration", "transform", "overflow", "whitespace", "wordBreak", "weight", "className", "children"];
15662
+ var _excluded$1z = ["variant", "as", "color", "italic", "tabularNums", "letterSpacing", "lineHeight", "align", "decoration", "transform", "overflow", "whitespace", "wordBreak", "weight", "className", "children"];
15180
15663
  var Typography = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
15181
15664
  var _ref$variant = _ref.variant,
15182
15665
  variant = _ref$variant === void 0 ? "Title 1" : _ref$variant,
@@ -15207,7 +15690,7 @@
15207
15690
  weight = _ref$weight === void 0 ? "regular" : _ref$weight,
15208
15691
  className = _ref.className,
15209
15692
  children = _ref.children,
15210
- props = _objectWithoutProperties(_ref, _excluded$1D);
15693
+ props = _objectWithoutProperties(_ref, _excluded$1z);
15211
15694
  var Component = as || "div";
15212
15695
  return /*#__PURE__*/React__default["default"].createElement(StyledTypography, _extends({
15213
15696
  as: Component,
@@ -15230,13 +15713,13 @@
15230
15713
  });
15231
15714
  Typography.displayName = "Typography";
15232
15715
 
15233
- var _excluded$1C = ["title", "className", "leftElement", "rightElement"];
15716
+ var _excluded$1y = ["title", "className", "leftElement", "rightElement"];
15234
15717
  var MenuHeader = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
15235
15718
  var title = _ref.title,
15236
15719
  className = _ref.className,
15237
15720
  leftElement = _ref.leftElement,
15238
15721
  rightElement = _ref.rightElement,
15239
- props = _objectWithoutProperties(_ref, _excluded$1C);
15722
+ props = _objectWithoutProperties(_ref, _excluded$1y);
15240
15723
  return /*#__PURE__*/React__default["default"].createElement(StyledMenuHeader, _extends({}, props, {
15241
15724
  className: classNames__default["default"]("c-menu-header", className),
15242
15725
  ref: ref
@@ -15261,11 +15744,11 @@
15261
15744
  });
15262
15745
  MenuHeader.displayName = "MenuHeader";
15263
15746
 
15264
- var _excluded$1B = ["children", "className"];
15747
+ var _excluded$1x = ["children", "className"];
15265
15748
  var MenuFooter = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
15266
15749
  var children = _ref.children,
15267
15750
  className = _ref.className,
15268
- props = _objectWithoutProperties(_ref, _excluded$1B);
15751
+ props = _objectWithoutProperties(_ref, _excluded$1x);
15269
15752
  return /*#__PURE__*/React__default["default"].createElement(StyledMenuFooter$1, _extends({}, props, {
15270
15753
  className: classNames__default["default"]("c-menu-footer", className),
15271
15754
  ref: ref
@@ -15273,14 +15756,14 @@
15273
15756
  });
15274
15757
  MenuFooter.displayName = "MenuFooter";
15275
15758
 
15276
- var _excluded$1A = ["children", "className", "separator"];
15759
+ var _excluded$1w = ["children", "className", "separator"];
15277
15760
  var Breadcrumbs = /*#__PURE__*/React__default["default"].forwardRef(function (_ref, ref) {
15278
15761
  var _dimensions$width, _childDimensions$widt;
15279
15762
  var children = _ref.children,
15280
15763
  className = _ref.className,
15281
15764
  _ref$separator = _ref.separator,
15282
15765
  separator = _ref$separator === void 0 ? "/" : _ref$separator,
15283
- rest = _objectWithoutProperties(_ref, _excluded$1A);
15766
+ rest = _objectWithoutProperties(_ref, _excluded$1w);
15284
15767
  var internalRef = React.useRef(null);
15285
15768
  var listWrapperRef = React.useRef(null);
15286
15769
  var olRef = React.useRef(null);
@@ -15509,12 +15992,12 @@
15509
15992
  }, label);
15510
15993
  };
15511
15994
 
15512
- var _excluded$1z = ["weight", "children"];
15995
+ var _excluded$1v = ["weight", "children"];
15513
15996
  var Body2 = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
15514
15997
  var _ref$weight = _ref.weight,
15515
15998
  weight = _ref$weight === void 0 ? "regular" : _ref$weight,
15516
15999
  children = _ref.children,
15517
- props = _objectWithoutProperties(_ref, _excluded$1z);
16000
+ props = _objectWithoutProperties(_ref, _excluded$1v);
15518
16001
  return /*#__PURE__*/React__default["default"].createElement(Typography, _extends({
15519
16002
  variant: "Body 2",
15520
16003
  weight: weight,
@@ -15572,62 +16055,10 @@
15572
16055
  return props.$isLight && styled.css(["background-color:var(--page-paper-main);box-shadow:var(--shadow-secondary);color:var(--color-theme-700);"]);
15573
16056
  });
15574
16057
 
15575
- var defaultStyle$2 = {
15576
- transitionProperty: "opacity, transform",
15577
- transitionDuration: ".15s, .10s, .15s",
15578
- transitionTimingFunction: "ease, ease, cubic-bezier(0.39, 0.575, 0.565, 1)",
15579
- transformOrigin: "50% 0",
15580
- transform: "scale(.85)",
15581
- opacity: 0
15582
- };
15583
- var transitionStyles$3 = {
15584
- entering: {
15585
- opacity: 1,
15586
- transform: "scale(1)",
15587
- transitionDelay: ".6s"
15588
- },
15589
- entered: {
15590
- opacity: 1,
15591
- transform: "scale(1)"
15592
- },
15593
- exiting: {
15594
- opacity: 0,
15595
- transform: "scale(.85)"
15596
- },
15597
- exited: {
15598
- opacity: 0,
15599
- transform: "scale(.85)"
15600
- }
15601
- };
15602
- var FromElement = function FromElement(_ref) {
15603
- var _ref$in = _ref.in,
15604
- inProp = _ref$in === void 0 ? false : _ref$in,
15605
- onEnter = _ref.onEnter,
15606
- onExited = _ref.onExited,
15607
- children = _ref.children,
15608
- style = _ref.style,
15609
- _ref$timeout = _ref.timeout,
15610
- timeout = _ref$timeout === void 0 ? 1000 : _ref$timeout;
15611
- return /*#__PURE__*/React__default["default"].createElement(reactTransitionGroup.Transition, {
15612
- appear: true,
15613
- in: inProp,
15614
- timeout: timeout,
15615
- onEnter: onEnter,
15616
- onExited: onExited
15617
- }, function (state) {
15618
- return /*#__PURE__*/React.cloneElement(children, {
15619
- style: _objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2({
15620
- visibility: state === "exited" && !inProp ? "hidden" : undefined
15621
- }, defaultStyle$2), transitionStyles$3[state]), style), children.props.style)
15622
- });
15623
- });
15624
- };
15625
- FromElement.displayName = "FromElement";
15626
-
15627
- var _excluded$1y = ["children"];
16058
+ var _excluded$1u = ["children"];
15628
16059
  var TooltipAnimation = function TooltipAnimation(_ref) {
15629
16060
  var children = _ref.children,
15630
- props = _objectWithoutProperties(_ref, _excluded$1y);
16061
+ props = _objectWithoutProperties(_ref, _excluded$1u);
15631
16062
  return /*#__PURE__*/React__default["default"].createElement(FromElement, _extends({
15632
16063
  timeout: 0
15633
16064
  }, props), children);
@@ -15709,7 +16140,7 @@
15709
16140
  });
15710
16141
  Tooltip.displayName = "Tooltip";
15711
16142
 
15712
- var _excluded$1x = ["label", "icon", "active", "counter", "tooltipText", "onClearAll", "className", "labelClassName", "disabled"];
16143
+ var _excluded$1t = ["label", "icon", "active", "counter", "tooltipText", "onClearAll", "className", "labelClassName", "disabled"];
15713
16144
  var CounterButton = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
15714
16145
  var label = _ref.label,
15715
16146
  icon = _ref.icon,
@@ -15722,7 +16153,7 @@
15722
16153
  labelClassName = _ref.labelClassName,
15723
16154
  _ref$disabled = _ref.disabled,
15724
16155
  disabled = _ref$disabled === void 0 ? false : _ref$disabled,
15725
- args = _objectWithoutProperties(_ref, _excluded$1x);
16156
+ args = _objectWithoutProperties(_ref, _excluded$1t);
15726
16157
  return /*#__PURE__*/React__default["default"].createElement(StyledCounterButtonWrapper, {
15727
16158
  ref: ref,
15728
16159
  className: className
@@ -15848,7 +16279,7 @@
15848
16279
  StyledButton$1.displayName = "StyledButton";
15849
16280
  StyledControl.displayName = "StyledControl";
15850
16281
 
15851
- var _excluded$1w = ["mixed", "data-testid"];
16282
+ var _excluded$1s = ["mixed", "data-testid"];
15852
16283
 
15853
16284
  /**
15854
16285
  * @component CheckboxIcon
@@ -15872,7 +16303,7 @@
15872
16303
  var CheckboxIcon = /*#__PURE__*/React__default["default"].forwardRef(function (_ref, svgRef) {
15873
16304
  var mixed = _ref.mixed,
15874
16305
  testId = _ref["data-testid"],
15875
- props = _objectWithoutProperties(_ref, _excluded$1w);
16306
+ props = _objectWithoutProperties(_ref, _excluded$1s);
15876
16307
  // const [animate, setAnimate] = useState(false);
15877
16308
  // const mountRef = useRef(false);
15878
16309
 
@@ -15966,7 +16397,7 @@
15966
16397
  });
15967
16398
  StyledCheckbox$1.displayName = "StyledCheckbox";
15968
16399
 
15969
- var _excluded$1v = ["className", "hover", "id", "mixed", "checked", "onChange", "disabled"];
16400
+ var _excluded$1r = ["className", "hover", "id", "mixed", "checked", "onChange", "disabled"];
15970
16401
  /**
15971
16402
  * Checkbox component
15972
16403
  */
@@ -15980,7 +16411,7 @@
15980
16411
  checked = _ref.checked,
15981
16412
  onChange = _ref.onChange,
15982
16413
  disabled = _ref.disabled,
15983
- rest = _objectWithoutProperties(_ref, _excluded$1v);
16414
+ rest = _objectWithoutProperties(_ref, _excluded$1r);
15984
16415
  var _useState = React.useState(mixed && !checked),
15985
16416
  _useState2 = _slicedToArray(_useState, 2),
15986
16417
  indeterminate = _useState2[0],
@@ -16115,554 +16546,238 @@
16115
16546
  var StyledDialogTitle = styled__default["default"].div.withConfig({
16116
16547
  displayName: "Styles__StyledDialogTitle",
16117
16548
  componentId: "sc-jwpvgm-2"
16118
- })(["padding:20px 30px;flex:0 0 auto;", " ", ""], FontStyle, BoxSizingStyle);
16119
- StyledDialogTitle.displayName = "StyledDialogTitle";
16120
-
16121
- // The close button hangs 8px into the title padding, so it sits nearer the dialog edge than the
16122
- // heading does. The bar reserves the rest, which keeps the gap to the heading unchanged.
16123
- var CLOSE_OFFSET = 8;
16124
- var CLOSE_RESERVE = 44 - CLOSE_OFFSET;
16125
-
16126
- // The header is as tall as its heading, with or without a close button.
16127
- var StyledDialogTitleBar = styled__default["default"].div.withConfig({
16128
- displayName: "Styles__StyledDialogTitleBar",
16129
- componentId: "sc-jwpvgm-3"
16130
- })(["position:relative;display:flex;align-items:center;padding-right:", "px;"], CLOSE_RESERVE);
16131
- StyledDialogTitleBar.displayName = "StyledDialogTitleBar";
16132
- var StyledDialogTitleClose = styled__default["default"].div.withConfig({
16133
- displayName: "Styles__StyledDialogTitleClose",
16134
- componentId: "sc-jwpvgm-4"
16135
- })(["position:absolute;right:-", "px;top:50%;transform:translateY(-50%);line-height:0;"], CLOSE_OFFSET);
16136
- StyledDialogTitleClose.displayName = "StyledDialogTitleClose";
16137
- var StyledDialogContent = styled__default["default"].div.withConfig({
16138
- displayName: "Styles__StyledDialogContent",
16139
- componentId: "sc-jwpvgm-5"
16140
- })(["padding:20px 30px;flex:1 1 auto;min-height:0;overflow-y:", ";", " ", ""], function (props) {
16141
- return props.$scroll ? "auto" : "visible";
16142
- }, FontStyle, BoxSizingStyle);
16143
- StyledDialogContent.displayName = "StyledDialogContent";
16144
- var StyledDialogContentDivider = styled__default["default"].div.withConfig({
16145
- displayName: "Styles__StyledDialogContentDivider",
16146
- componentId: "sc-jwpvgm-6"
16147
- })(["border-top:1px solid var(--border-primary);height:1px;flex:0 0 auto;"]);
16148
- StyledDialogContentDivider.displayName = "StyledDialogContentDivider";
16149
- var StyledDialogActions = styled__default["default"].div.withConfig({
16150
- displayName: "Styles__StyledDialogActions",
16151
- componentId: "sc-jwpvgm-7"
16152
- })(["padding:20px 30px;flex:0 0 auto;display:flex;align-items:center;gap:12px;", " ", ""], FontStyle, BoxSizingStyle);
16153
- StyledDialogActions.displayName = "StyledDialogActions";
16154
-
16155
- var _excluded$1u = ["className", "children"];
16156
- var DialogActions = function DialogActions(_ref) {
16157
- var className = _ref.className,
16158
- children = _ref.children,
16159
- rest = _objectWithoutProperties(_ref, _excluded$1u);
16160
- var dialog = useDialogContext();
16161
-
16162
- // A footer button that does nothing but close gets the same path as clicking the overlay, so the
16163
- // exit transition runs before the caller unmounts the dialog. Matching on identity leaves a
16164
- // button that does anything else alone.
16165
- var wired = dialog !== null && dialog !== void 0 && dialog.requestClose && dialog !== null && dialog !== void 0 && dialog.onClose ? React.Children.map(children, function (child) {
16166
- return /*#__PURE__*/React.isValidElement(child) && child.props.onClick === dialog.onClose ? /*#__PURE__*/React.cloneElement(child, {
16167
- onClick: dialog.requestClose
16168
- }) : child;
16169
- }) : children;
16170
- return /*#__PURE__*/React__default["default"].createElement(StyledDialogActions, _extends({
16171
- className: classNames__default["default"]("c-dialog-actions", className)
16172
- }, rest), wired);
16173
- };
16174
- DialogActions.displayName = "DialogActions";
16175
-
16176
- var _excluded$1t = ["className", "children", "scroll"];
16177
- var DialogContent = function DialogContent(_ref) {
16178
- var className = _ref.className,
16179
- children = _ref.children,
16180
- _ref$scroll = _ref.scroll,
16181
- scroll = _ref$scroll === void 0 ? true : _ref$scroll,
16182
- rest = _objectWithoutProperties(_ref, _excluded$1t);
16183
- return /*#__PURE__*/React__default["default"].createElement(StyledDialogContent, _extends({
16184
- $scroll: scroll,
16185
- className: classNames__default["default"]("c-dialog-content", className)
16186
- }, rest), children);
16187
- };
16188
- DialogContent.displayName = "DialogContent";
16189
-
16190
- // import { useDialogContext } from "./DialogContext";
16191
-
16192
- var DialogContentDivider = function DialogContentDivider(_ref) {
16193
- var className = _ref.className;
16194
- // useDialogContext();
16195
-
16196
- return /*#__PURE__*/React__default["default"].createElement(StyledDialogContentDivider, {
16197
- className: classNames__default["default"]("c-dialog-content-divider", className)
16198
- });
16199
- };
16200
- DialogContentDivider.displayName = "DialogContentDivider";
16201
-
16202
- var _excluded$1s = ["children"];
16203
- var Header3 = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
16204
- var children = _ref.children,
16205
- props = _objectWithoutProperties(_ref, _excluded$1s);
16206
- return /*#__PURE__*/React__default["default"].createElement(Typography, _extends({
16207
- weight: "bold",
16208
- variant: "Header 3",
16209
- ref: ref
16210
- }, props), children);
16211
- });
16212
- Header3.displayName = "Header3";
16213
-
16214
- var _excluded$1r = ["children", "className", "disableDefaultHeading", "onClose", "closeLabel"];
16215
- var DialogTitle = function DialogTitle(_ref) {
16216
- var _dialog$requestClose;
16217
- var children = _ref.children,
16218
- className = _ref.className,
16219
- _ref$disableDefaultHe = _ref.disableDefaultHeading,
16220
- disableDefaultHeading = _ref$disableDefaultHe === void 0 ? false : _ref$disableDefaultHe,
16221
- onClose = _ref.onClose,
16222
- _ref$closeLabel = _ref.closeLabel,
16223
- closeLabel = _ref$closeLabel === void 0 ? "Close" : _ref$closeLabel,
16224
- rest = _objectWithoutProperties(_ref, _excluded$1r);
16225
- var dialog = useDialogContext();
16226
- var heading = disableDefaultHeading ? children : /*#__PURE__*/React__default["default"].createElement(Header3, null, children);
16227
-
16228
- // Closing through the dialog lets the exit transition run; the caller's onClose fires once it
16229
- // finishes. Falling back keeps a title used outside a dialog working.
16230
- var handleClose = (_dialog$requestClose = dialog === null || dialog === void 0 ? void 0 : dialog.requestClose) !== null && _dialog$requestClose !== void 0 ? _dialog$requestClose : onClose;
16231
- return /*#__PURE__*/React__default["default"].createElement(StyledDialogTitle, _extends({
16232
- className: classNames__default["default"]("c-dialog-title-wrapper", className)
16233
- }, rest), onClose ? /*#__PURE__*/React__default["default"].createElement(StyledDialogTitleBar, null, heading, /*#__PURE__*/React__default["default"].createElement(StyledDialogTitleClose, null, /*#__PURE__*/React__default["default"].createElement(IconButton, {
16234
- type: "button",
16235
- variant: "text gray",
16236
- "aria-label": closeLabel,
16237
- onClick: handleClose
16238
- }, /*#__PURE__*/React__default["default"].createElement(CancelCrossIcon$1, null)))) : heading);
16239
- };
16240
- DialogTitle.displayName = "DialogTitle";
16241
-
16242
- function createChainedFunction() {
16243
- for (var _len = arguments.length, functions = new Array(_len), _key = 0; _key < _len; _key++) {
16244
- functions[_key] = arguments[_key];
16245
- }
16246
- return functions.reduce(function (acc, func) {
16247
- if (func === null) {
16248
- return acc;
16249
- }
16250
- return function chainedFunction() {
16251
- for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
16252
- args[_key2] = arguments[_key2];
16253
- }
16254
- acc && acc.apply(this, args);
16255
- func && func.apply(this, args);
16256
- };
16257
- },
16258
- // eslint-disable-next-line @typescript-eslint/no-empty-function
16259
- function () {});
16260
- }
16261
-
16262
- var _excluded$1q = ["children", "disableFocusLock", "disableScrollLock", "disableBackgroundClick", "disableBackgroundColor", "disableCloseOnEsc", "open", "onClose", "onClickOutside"];
16263
- var getHasTransition = function getHasTransition(children) {
16264
- return children.props ? Object.prototype.hasOwnProperty.call(children.props, "in") : false;
16265
- };
16266
- var Modal = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
16267
- var children = _ref.children,
16268
- _ref$disableFocusLock = _ref.disableFocusLock,
16269
- disableFocusLock = _ref$disableFocusLock === void 0 ? false : _ref$disableFocusLock,
16270
- _ref$disableScrollLoc = _ref.disableScrollLock,
16271
- disableScrollLock = _ref$disableScrollLoc === void 0 ? false : _ref$disableScrollLoc,
16272
- _ref$disableBackgroun = _ref.disableBackgroundClick,
16273
- disableBackgroundClick = _ref$disableBackgroun === void 0 ? false : _ref$disableBackgroun,
16274
- _ref$disableBackgroun2 = _ref.disableBackgroundColor,
16275
- disableBackgroundColor = _ref$disableBackgroun2 === void 0 ? false : _ref$disableBackgroun2,
16276
- _ref$disableCloseOnEs = _ref.disableCloseOnEsc,
16277
- disableCloseOnEsc = _ref$disableCloseOnEs === void 0 ? false : _ref$disableCloseOnEs,
16278
- _ref$open = _ref.open,
16279
- defaultOpen = _ref$open === void 0 ? false : _ref$open,
16280
- onClose = _ref.onClose,
16281
- onClickOutside = _ref.onClickOutside,
16282
- rest = _objectWithoutProperties(_ref, _excluded$1q);
16283
- var _useState = React.useState(defaultOpen),
16284
- _useState2 = _slicedToArray(_useState, 2),
16285
- open = _useState2[0],
16286
- setOpen = _useState2[1];
16287
- var _useState3 = React.useState(true),
16288
- _useState4 = _slicedToArray(_useState3, 2),
16289
- exited = _useState4[0],
16290
- setExited = _useState4[1];
16291
- var innerRef = React.useRef(null);
16292
- var handleRef = useForkRef(innerRef, ref);
16293
- var hasTransition = React.useMemo(function () {
16294
- return getHasTransition(children);
16295
- }, [children]);
16296
- React.useEffect(function () {
16297
- setOpen(defaultOpen);
16298
- }, [defaultOpen]);
16299
- var handleClose = React.useCallback(function () {
16300
- setOpen(false);
16301
- if (!hasTransition) {
16302
- typeof onClose === "function" && onClose();
16303
- }
16304
- }, [hasTransition, onClose]);
16305
- var handleBackgroundClick = React.useCallback(function (event) {
16306
- if (!disableBackgroundClick) {
16307
- event.preventDefault();
16308
- return handleClose();
16309
- }
16310
- if (onClickOutside) {
16311
- onClickOutside(event);
16312
- }
16313
- }, [disableBackgroundClick, onClickOutside, handleClose]);
16314
- var handleEnter = React.useCallback(function () {
16315
- setExited(false);
16316
- }, []);
16317
- var handleExited = React.useCallback(function () {
16318
- setExited(true);
16319
- typeof onClose === "function" && onClose();
16320
- }, [onClose]);
16321
- var childProps = React.useMemo(function () {
16322
- var props = {};
16549
+ })(["padding:20px 30px;flex:0 0 auto;", " ", ""], FontStyle, BoxSizingStyle);
16550
+ StyledDialogTitle.displayName = "StyledDialogTitle";
16323
16551
 
16324
- // It's a Transition like component
16325
- if (hasTransition && children) {
16326
- props = {
16327
- onEnter: createChainedFunction(handleEnter, children.props.onEnter),
16328
- onExited: createChainedFunction(handleExited, children.props.onExited),
16329
- in: open,
16330
- forceClose: handleClose
16331
- };
16332
- }
16333
- return props;
16334
- }, [children, handleClose, handleEnter, handleExited, hasTransition, open]);
16335
- if (!open && (!hasTransition || exited)) {
16336
- return null;
16337
- }
16338
- return /*#__PURE__*/React__default["default"].createElement(Window, _extends({}, rest, {
16339
- ref: handleRef,
16340
- onClose: handleClose,
16341
- disableFocusLock: disableFocusLock,
16342
- disableScrollLock: disableScrollLock,
16343
- disableCloseOnEsc: disableCloseOnEsc
16344
- }), open ? /*#__PURE__*/React__default["default"].createElement(Overlay, {
16345
- onClick: handleBackgroundClick,
16346
- disableBackgroundColor: disableBackgroundColor
16347
- }) : null, /*#__PURE__*/React.cloneElement(children, childProps));
16348
- });
16349
- Modal.displayName = "Modal";
16552
+ // The close button hangs 8px into the title padding, so it sits nearer the dialog edge than the
16553
+ // heading does. The bar reserves the rest, which keeps the gap to the heading unchanged.
16554
+ var CLOSE_OFFSET = 8;
16555
+ var CLOSE_RESERVE = 44 - CLOSE_OFFSET;
16350
16556
 
16351
- var _excluded$1p = ["in", "children", "style", "timeout", "onEnter"];
16352
- var defaultStyle$1 = function defaultStyle(duration) {
16353
- return {
16354
- transition: "all ".concat(duration, "ms ease-in-out"),
16355
- opacity: 0
16356
- };
16357
- };
16358
- var transitionStyles$2 = {
16359
- entering: {
16360
- opacity: 1
16361
- },
16362
- entered: {
16363
- opacity: 1
16364
- },
16365
- exiting: {
16366
- opacity: 0
16367
- },
16368
- exited: {
16369
- opacity: 0
16370
- }
16371
- };
16372
- var Fade = function Fade(_ref) {
16373
- var _ref$in = _ref.in,
16374
- inProp = _ref$in === void 0 ? false : _ref$in,
16557
+ // The header is as tall as its heading, with or without a close button.
16558
+ var StyledDialogTitleBar = styled__default["default"].div.withConfig({
16559
+ displayName: "Styles__StyledDialogTitleBar",
16560
+ componentId: "sc-jwpvgm-3"
16561
+ })(["position:relative;display:flex;align-items:center;padding-right:", "px;"], CLOSE_RESERVE);
16562
+ StyledDialogTitleBar.displayName = "StyledDialogTitleBar";
16563
+ var StyledDialogTitleClose = styled__default["default"].div.withConfig({
16564
+ displayName: "Styles__StyledDialogTitleClose",
16565
+ componentId: "sc-jwpvgm-4"
16566
+ })(["position:absolute;right:-", "px;top:50%;transform:translateY(-50%);line-height:0;"], CLOSE_OFFSET);
16567
+ StyledDialogTitleClose.displayName = "StyledDialogTitleClose";
16568
+ var StyledDialogContent = styled__default["default"].div.withConfig({
16569
+ displayName: "Styles__StyledDialogContent",
16570
+ componentId: "sc-jwpvgm-5"
16571
+ })(["padding:20px 30px;flex:1 1 auto;min-height:0;overflow-y:", ";", " ", ""], function (props) {
16572
+ return props.$scroll ? "auto" : "visible";
16573
+ }, FontStyle, BoxSizingStyle);
16574
+ StyledDialogContent.displayName = "StyledDialogContent";
16575
+ var StyledDialogContentDivider = styled__default["default"].div.withConfig({
16576
+ displayName: "Styles__StyledDialogContentDivider",
16577
+ componentId: "sc-jwpvgm-6"
16578
+ })(["border-top:1px solid var(--border-primary);height:1px;flex:0 0 auto;"]);
16579
+ StyledDialogContentDivider.displayName = "StyledDialogContentDivider";
16580
+ var StyledDialogActions = styled__default["default"].div.withConfig({
16581
+ displayName: "Styles__StyledDialogActions",
16582
+ componentId: "sc-jwpvgm-7"
16583
+ })(["padding:20px 30px;flex:0 0 auto;display:flex;align-items:center;gap:12px;", " ", ""], FontStyle, BoxSizingStyle);
16584
+ StyledDialogActions.displayName = "StyledDialogActions";
16585
+
16586
+ var _excluded$1q = ["className", "children"];
16587
+ var DialogActions = function DialogActions(_ref) {
16588
+ var className = _ref.className,
16375
16589
  children = _ref.children,
16376
- style = _ref.style,
16377
- _ref$timeout = _ref.timeout,
16378
- timeout = _ref$timeout === void 0 ? 500 : _ref$timeout,
16379
- onEnter = _ref.onEnter,
16380
- rest = _objectWithoutProperties(_ref, _excluded$1p);
16381
- // Same forced layout as SlideFromTop: without it the starting opacity never lands in the DOM.
16382
- var handleEnter = function handleEnter(node, isAppearing) {
16383
- if (node) {
16384
- void node.offsetHeight;
16385
- }
16386
- onEnter === null || onEnter === void 0 || onEnter(node, isAppearing);
16387
- };
16388
- return /*#__PURE__*/React__default["default"].createElement(reactTransitionGroup.Transition, _extends({
16389
- appear: true,
16390
- in: inProp,
16391
- timeout: timeout,
16392
- onEnter: handleEnter
16393
- }, rest), function (state) {
16394
- return /*#__PURE__*/React.cloneElement(children, {
16395
- style: _objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2({
16396
- visibility: state === "exited" && !inProp ? "hidden" : undefined
16397
- }, defaultStyle$1(timeout)), transitionStyles$2[state]), style), children.props.style)
16398
- });
16399
- });
16590
+ rest = _objectWithoutProperties(_ref, _excluded$1q);
16591
+ var dialog = useDialogContext();
16592
+
16593
+ // A footer button that does nothing but close gets the same path as clicking the overlay, so the
16594
+ // exit transition runs before the caller unmounts the dialog. Matching on identity leaves a
16595
+ // button that does anything else alone.
16596
+ var wired = dialog !== null && dialog !== void 0 && dialog.requestClose && dialog !== null && dialog !== void 0 && dialog.onClose ? React.Children.map(children, function (child) {
16597
+ return /*#__PURE__*/React.isValidElement(child) && child.props.onClick === dialog.onClose ? /*#__PURE__*/React.cloneElement(child, {
16598
+ onClick: dialog.requestClose
16599
+ }) : child;
16600
+ }) : children;
16601
+ return /*#__PURE__*/React__default["default"].createElement(StyledDialogActions, _extends({
16602
+ className: classNames__default["default"]("c-dialog-actions", className)
16603
+ }, rest), wired);
16400
16604
  };
16401
- Fade.displayName = "Fade";
16605
+ DialogActions.displayName = "DialogActions";
16402
16606
 
16403
- var _excluded$1o = ["in", "children", "style", "timeout", "initialDirection"];
16404
- var Slide = function Slide(_ref) {
16405
- var _ref$in = _ref.in,
16406
- inProp = _ref$in === void 0 ? false : _ref$in,
16607
+ var _excluded$1p = ["className", "children", "scroll"];
16608
+ var DialogContent = function DialogContent(_ref) {
16609
+ var className = _ref.className,
16407
16610
  children = _ref.children,
16408
- style = _ref.style,
16409
- _ref$timeout = _ref.timeout,
16410
- timeout = _ref$timeout === void 0 ? 300 : _ref$timeout,
16411
- _ref$initialDirection = _ref.initialDirection,
16412
- initialDirection = _ref$initialDirection === void 0 ? "left" : _ref$initialDirection,
16413
- rest = _objectWithoutProperties(_ref, _excluded$1o);
16414
- var directionSign;
16415
- switch (initialDirection) {
16416
- case "right":
16417
- directionSign = "100%, 0";
16418
- break;
16419
- case "top":
16420
- directionSign = "0, -100%";
16421
- break;
16422
- case "bottom":
16423
- directionSign = "0, 100%";
16424
- break;
16425
- default:
16426
- directionSign = "-100%, 0";
16427
- }
16428
- var defaultStyle = function defaultStyle(timeout) {
16429
- return {
16430
- transition: "all ".concat(timeout, "ms ease")
16431
- };
16432
- };
16433
- var transitionStyles = {
16434
- entering: {
16435
- transform: "translate(0,0)"
16436
- },
16437
- entered: {
16438
- transform: "translate(0,0)"
16439
- },
16440
- exiting: {
16441
- transform: "translate(".concat(directionSign, ")")
16442
- },
16443
- exited: {
16444
- transform: "translate(".concat(directionSign, ")")
16445
- }
16446
- };
16447
- return /*#__PURE__*/React__default["default"].createElement(reactTransitionGroup.Transition, _extends({
16448
- in: inProp,
16449
- timeout: timeout
16450
- }, rest), function (state) {
16451
- return /*#__PURE__*/React.cloneElement(children, {
16452
- style: _objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2({
16453
- visibility: state === "exited" && !inProp ? "hidden" : undefined
16454
- }, defaultStyle(timeout)), transitionStyles[state]), style), children.props.style)
16455
- });
16456
- });
16611
+ _ref$scroll = _ref.scroll,
16612
+ scroll = _ref$scroll === void 0 ? true : _ref$scroll,
16613
+ rest = _objectWithoutProperties(_ref, _excluded$1p);
16614
+ return /*#__PURE__*/React__default["default"].createElement(StyledDialogContent, _extends({
16615
+ $scroll: scroll,
16616
+ className: classNames__default["default"]("c-dialog-content", className)
16617
+ }, rest), children);
16457
16618
  };
16458
- Slide.displayName = "Slide";
16619
+ DialogContent.displayName = "DialogContent";
16459
16620
 
16460
- var DEFAULT_DISTANCE = 25;
16461
- var buildStyles = function buildStyles(distance) {
16462
- var away = "translateY(-".concat(distance, "px)");
16463
- return {
16464
- base: {
16465
- transitionProperty: "opacity, transform",
16466
- transitionTimingFunction: "ease-out",
16467
- transform: away,
16468
- opacity: 0
16469
- },
16470
- entering: {
16471
- opacity: 1,
16472
- transform: "translateY(0)",
16473
- transitionDuration: ".3s"
16474
- },
16475
- entered: {
16476
- opacity: 1,
16477
- transform: "translateY(0)",
16478
- transitionDuration: ".3s"
16479
- },
16480
- exiting: {
16481
- opacity: 0,
16482
- transform: away,
16483
- transitionDuration: ".2s"
16484
- },
16485
- exited: {
16486
- opacity: 0,
16487
- transform: away,
16488
- transitionDuration: ".2s"
16489
- }
16490
- };
16491
- };
16492
- var SlideFromTop = function SlideFromTop(_ref) {
16493
- var _ref$in = _ref.in,
16494
- inProp = _ref$in === void 0 ? false : _ref$in,
16495
- onEnter = _ref.onEnter,
16496
- onExited = _ref.onExited,
16497
- children = _ref.children,
16498
- style = _ref.style,
16499
- _ref$timeout = _ref.timeout,
16500
- timeout = _ref$timeout === void 0 ? 400 : _ref$timeout,
16501
- _ref$distance = _ref.distance,
16502
- distance = _ref$distance === void 0 ? DEFAULT_DISTANCE : _ref$distance;
16503
- var styles = buildStyles(distance);
16621
+ // import { useDialogContext } from "./DialogContext";
16504
16622
 
16505
- // React flushes the state change that follows onEnter before the browser paints, so without a
16506
- // forced layout here the element never holds its starting style and the transition is skipped.
16507
- var handleEnter = function handleEnter(node, isAppearing) {
16508
- if (node) {
16509
- void node.offsetHeight;
16510
- }
16511
- onEnter === null || onEnter === void 0 || onEnter(node, isAppearing);
16512
- };
16513
- return /*#__PURE__*/React__default["default"].createElement(reactTransitionGroup.Transition, {
16514
- appear: true,
16515
- in: inProp,
16516
- timeout: timeout,
16517
- onEnter: handleEnter,
16518
- onExited: onExited
16519
- }, function (state) {
16520
- return /*#__PURE__*/React.cloneElement(children, {
16521
- style: _objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2({
16522
- visibility: state === "exited" && !inProp ? "hidden" : undefined
16523
- }, styles.base), styles[state]), style), children.props.style)
16524
- });
16623
+ var DialogContentDivider = function DialogContentDivider(_ref) {
16624
+ var className = _ref.className;
16625
+ // useDialogContext();
16626
+
16627
+ return /*#__PURE__*/React__default["default"].createElement(StyledDialogContentDivider, {
16628
+ className: classNames__default["default"]("c-dialog-content-divider", className)
16525
16629
  });
16526
16630
  };
16527
- SlideFromTop.displayName = "SlideFromTop";
16631
+ DialogContentDivider.displayName = "DialogContentDivider";
16528
16632
 
16529
- var StyledSlideLeftRight = styled.createGlobalStyle(["", " ", ""], function (props) {
16530
- return props.$direction === "left" && styled.css(["&.c-slide-enter{position:absolute;transform:translateX(100%);}&.c-slide-enter-active{transform:translateX(0%);transition:all 200ms ease;}&.c-slide-exit{position:absolute;}&.c-slide-exit-active{transform:translateX(-100%);transition:all 200ms ease;}"]);
16531
- }, function (props) {
16532
- return props.$direction === "right" && styled.css(["&.c-slide-enter{position:absolute;transform:translateX(-100%);}&.c-slide-enter-active{transform:translateX(0%);transition:all 200ms ease;}&.c-slide-exit{position:absolute;}&.c-slide-exit-active{transform:translateX(100%);transition:all 200ms ease;}"]);
16633
+ var _excluded$1o = ["children"];
16634
+ var Header3 = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
16635
+ var children = _ref.children,
16636
+ props = _objectWithoutProperties(_ref, _excluded$1o);
16637
+ return /*#__PURE__*/React__default["default"].createElement(Typography, _extends({
16638
+ weight: "bold",
16639
+ variant: "Header 3",
16640
+ ref: ref
16641
+ }, props), children);
16533
16642
  });
16643
+ Header3.displayName = "Header3";
16534
16644
 
16535
- var _excluded$1n = ["children", "direction"];
16536
- var SlideLeftRightTransition = function SlideLeftRightTransition(_ref) {
16645
+ var _excluded$1n = ["children", "className", "disableDefaultHeading", "onClose", "closeLabel"];
16646
+ var DialogTitle = function DialogTitle(_ref) {
16647
+ var _dialog$requestClose;
16537
16648
  var children = _ref.children,
16538
- _ref$direction = _ref.direction,
16539
- direction = _ref$direction === void 0 ? "left" : _ref$direction,
16540
- props = _objectWithoutProperties(_ref, _excluded$1n);
16541
- return /*#__PURE__*/React__default["default"].createElement(reactTransitionGroup.CSSTransition, _extends({
16542
- timeout: 200,
16543
- classNames: "c-slide",
16544
- unmountOnExit: true
16545
- }, props), /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, children, /*#__PURE__*/React__default["default"].createElement(StyledSlideLeftRight, {
16546
- $direction: direction
16547
- })));
16548
- };
16549
- SlideLeftRightTransition.displayName = "SlideLeftRightTransition";
16649
+ className = _ref.className,
16650
+ _ref$disableDefaultHe = _ref.disableDefaultHeading,
16651
+ disableDefaultHeading = _ref$disableDefaultHe === void 0 ? false : _ref$disableDefaultHe,
16652
+ onClose = _ref.onClose,
16653
+ _ref$closeLabel = _ref.closeLabel,
16654
+ closeLabel = _ref$closeLabel === void 0 ? "Close" : _ref$closeLabel,
16655
+ rest = _objectWithoutProperties(_ref, _excluded$1n);
16656
+ var dialog = useDialogContext();
16657
+ var heading = disableDefaultHeading ? children : /*#__PURE__*/React__default["default"].createElement(Header3, null, children);
16550
16658
 
16551
- var ResizeTransition = function ResizeTransition(_ref) {
16552
- var _ref$in = _ref.in,
16553
- inProp = _ref$in === void 0 ? false : _ref$in,
16554
- onEnter = _ref.onEnter,
16555
- onExited = _ref.onExited,
16556
- children = _ref.children,
16557
- style = _ref.style,
16558
- _ref$timeout = _ref.timeout,
16559
- timeout = _ref$timeout === void 0 ? 200 : _ref$timeout;
16560
- var defaultStyle = React.useMemo(function () {
16561
- return {
16562
- transitionProperty: "width, height",
16563
- transitionDuration: "".concat(timeout, "ms"),
16564
- transitionTimingFunction: "ease"
16565
- };
16566
- }, [timeout]);
16567
- return /*#__PURE__*/React__default["default"].createElement(reactTransitionGroup.Transition, {
16568
- appear: true,
16569
- in: inProp,
16570
- timeout: timeout,
16571
- onEnter: onEnter,
16572
- onExited: onExited
16573
- }, function (state) {
16574
- return /*#__PURE__*/React.cloneElement(children, {
16575
- style: _objectSpread2(_objectSpread2(_objectSpread2({
16576
- visibility: state === "exited" && !inProp ? "hidden" : undefined
16577
- }, defaultStyle), style), children.props.style)
16578
- });
16579
- });
16659
+ // Closing through the dialog lets the exit transition run; the caller's onClose fires once it
16660
+ // finishes. Falling back keeps a title used outside a dialog working.
16661
+ var handleClose = (_dialog$requestClose = dialog === null || dialog === void 0 ? void 0 : dialog.requestClose) !== null && _dialog$requestClose !== void 0 ? _dialog$requestClose : onClose;
16662
+ return /*#__PURE__*/React__default["default"].createElement(StyledDialogTitle, _extends({
16663
+ className: classNames__default["default"]("c-dialog-title-wrapper", className)
16664
+ }, rest), onClose ? /*#__PURE__*/React__default["default"].createElement(StyledDialogTitleBar, null, heading, /*#__PURE__*/React__default["default"].createElement(StyledDialogTitleClose, null, /*#__PURE__*/React__default["default"].createElement(IconButton, {
16665
+ type: "button",
16666
+ variant: "text gray",
16667
+ "aria-label": closeLabel,
16668
+ onClick: handleClose
16669
+ }, /*#__PURE__*/React__default["default"].createElement(CancelCrossIcon$1, null)))) : heading);
16580
16670
  };
16581
- ResizeTransition.displayName = "ResizeTransition";
16671
+ DialogTitle.displayName = "DialogTitle";
16582
16672
 
16583
- var _excluded$1m = ["in", "children", "style", "timeout"];
16584
- var defaultStyle = function defaultStyle(duration) {
16585
- return {
16586
- transition: "all ".concat(duration, "ms ease-in"),
16587
- transform: "scaleX(0)",
16588
- opacity: 0,
16589
- transformOrigin: "left"
16590
- };
16591
- };
16592
- var transitionStyles$1 = {
16593
- entering: {
16594
- transform: "scaleX(1)",
16595
- opacity: 1
16596
- },
16597
- entered: {
16598
- transform: "scaleX(1)",
16599
- opacity: 1
16600
- },
16601
- exiting: {
16602
- transform: "scaleX(0)",
16603
- opacity: 0
16604
- },
16605
- exited: {
16606
- transform: "scaleX(0)",
16607
- opacity: 0
16673
+ function createChainedFunction() {
16674
+ for (var _len = arguments.length, functions = new Array(_len), _key = 0; _key < _len; _key++) {
16675
+ functions[_key] = arguments[_key];
16608
16676
  }
16677
+ return functions.reduce(function (acc, func) {
16678
+ if (func === null) {
16679
+ return acc;
16680
+ }
16681
+ return function chainedFunction() {
16682
+ for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
16683
+ args[_key2] = arguments[_key2];
16684
+ }
16685
+ acc && acc.apply(this, args);
16686
+ func && func.apply(this, args);
16687
+ };
16688
+ },
16689
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
16690
+ function () {});
16691
+ }
16692
+
16693
+ var _excluded$1m = ["children", "disableFocusLock", "disableScrollLock", "disableBackgroundClick", "disableBackgroundColor", "disableCloseOnEsc", "open", "onClose", "onClickOutside"];
16694
+ var getHasTransition = function getHasTransition(children) {
16695
+ return children.props ? Object.prototype.hasOwnProperty.call(children.props, "in") : false;
16609
16696
  };
16610
- var Reveal = function Reveal(_ref) {
16611
- var _ref$in = _ref.in,
16612
- inProp = _ref$in === void 0 ? false : _ref$in,
16613
- children = _ref.children,
16614
- style = _ref.style,
16615
- _ref$timeout = _ref.timeout,
16616
- timeout = _ref$timeout === void 0 ? 200 : _ref$timeout,
16697
+ var Modal = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
16698
+ var children = _ref.children,
16699
+ _ref$disableFocusLock = _ref.disableFocusLock,
16700
+ disableFocusLock = _ref$disableFocusLock === void 0 ? false : _ref$disableFocusLock,
16701
+ _ref$disableScrollLoc = _ref.disableScrollLock,
16702
+ disableScrollLock = _ref$disableScrollLoc === void 0 ? false : _ref$disableScrollLoc,
16703
+ _ref$disableBackgroun = _ref.disableBackgroundClick,
16704
+ disableBackgroundClick = _ref$disableBackgroun === void 0 ? false : _ref$disableBackgroun,
16705
+ _ref$disableBackgroun2 = _ref.disableBackgroundColor,
16706
+ disableBackgroundColor = _ref$disableBackgroun2 === void 0 ? false : _ref$disableBackgroun2,
16707
+ _ref$disableCloseOnEs = _ref.disableCloseOnEsc,
16708
+ disableCloseOnEsc = _ref$disableCloseOnEs === void 0 ? false : _ref$disableCloseOnEs,
16709
+ _ref$open = _ref.open,
16710
+ defaultOpen = _ref$open === void 0 ? false : _ref$open,
16711
+ onClose = _ref.onClose,
16712
+ onClickOutside = _ref.onClickOutside,
16617
16713
  rest = _objectWithoutProperties(_ref, _excluded$1m);
16618
- return /*#__PURE__*/React__default["default"].createElement(reactTransitionGroup.Transition, _extends({
16619
- appear: true,
16620
- in: inProp,
16621
- timeout: timeout
16622
- }, rest), function (state) {
16623
- return /*#__PURE__*/React.cloneElement(children, {
16624
- style: _objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2({}, defaultStyle(inProp ? timeout : 0)), transitionStyles$1[state]), style), children.props.style)
16625
- });
16626
- });
16627
- };
16628
- Reveal.displayName = "Reveal";
16714
+ var _useState = React.useState(defaultOpen),
16715
+ _useState2 = _slicedToArray(_useState, 2),
16716
+ open = _useState2[0],
16717
+ setOpen = _useState2[1];
16718
+ var _useState3 = React.useState(true),
16719
+ _useState4 = _slicedToArray(_useState3, 2),
16720
+ exited = _useState4[0],
16721
+ setExited = _useState4[1];
16722
+ var innerRef = React.useRef(null);
16723
+ var handleRef = useForkRef(innerRef, ref);
16724
+ var hasTransition = React.useMemo(function () {
16725
+ return getHasTransition(children);
16726
+ }, [children]);
16727
+ React.useEffect(function () {
16728
+ setOpen(defaultOpen);
16729
+ }, [defaultOpen]);
16730
+ var handleClose = React.useCallback(function () {
16731
+ setOpen(false);
16732
+ if (!hasTransition) {
16733
+ typeof onClose === "function" && onClose();
16734
+ }
16735
+ }, [hasTransition, onClose]);
16736
+ var handleBackgroundClick = React.useCallback(function (event) {
16737
+ if (!disableBackgroundClick) {
16738
+ event.preventDefault();
16739
+ return handleClose();
16740
+ }
16741
+ if (onClickOutside) {
16742
+ onClickOutside(event);
16743
+ }
16744
+ }, [disableBackgroundClick, onClickOutside, handleClose]);
16745
+ var handleEnter = React.useCallback(function () {
16746
+ setExited(false);
16747
+ }, []);
16748
+ var handleExited = React.useCallback(function () {
16749
+ setExited(true);
16750
+ typeof onClose === "function" && onClose();
16751
+ }, [onClose]);
16752
+ var childProps = React.useMemo(function () {
16753
+ var props = {};
16629
16754
 
16630
- var transitionStyles = {
16631
- entered: {
16632
- transform: "scale(1)"
16633
- },
16634
- exiting: {
16635
- transform: "scale(0)"
16755
+ // It's a Transition like component
16756
+ if (hasTransition && children) {
16757
+ props = {
16758
+ onEnter: createChainedFunction(handleEnter, children.props.onEnter),
16759
+ onExited: createChainedFunction(handleExited, children.props.onExited),
16760
+ in: open,
16761
+ forceClose: handleClose
16762
+ };
16763
+ }
16764
+ return props;
16765
+ }, [children, handleClose, handleEnter, handleExited, hasTransition, open]);
16766
+ if (!open && (!hasTransition || exited)) {
16767
+ return null;
16636
16768
  }
16637
- };
16638
- var Scale = function Scale(_ref) {
16639
- var _ref$in = _ref.in,
16640
- inProp = _ref$in === void 0 ? false : _ref$in,
16641
- onEnter = _ref.onEnter,
16642
- onExited = _ref.onExited,
16643
- children = _ref.children,
16644
- style = _ref.style,
16645
- _ref$timeout = _ref.timeout,
16646
- timeout = _ref$timeout === void 0 ? 200 : _ref$timeout;
16647
- var defaultStyle = React.useMemo(function () {
16648
- return {
16649
- transitionProperty: "transform",
16650
- transitionDuration: "".concat(timeout, "ms"),
16651
- transform: "scale(0)"
16652
- };
16653
- }, [timeout]);
16654
- return /*#__PURE__*/React__default["default"].createElement(reactTransitionGroup.Transition, {
16655
- in: inProp,
16656
- timeout: timeout,
16657
- onEnter: onEnter,
16658
- onExited: onExited
16659
- }, function (state) {
16660
- return /*#__PURE__*/React.cloneElement(children, {
16661
- style: _objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2({}, defaultStyle), transitionStyles[state]), style), children.props.style)
16662
- });
16663
- });
16664
- };
16665
- Scale.displayName = "Scale";
16769
+ return /*#__PURE__*/React__default["default"].createElement(Window, _extends({}, rest, {
16770
+ ref: handleRef,
16771
+ onClose: handleClose,
16772
+ disableFocusLock: disableFocusLock,
16773
+ disableScrollLock: disableScrollLock,
16774
+ disableCloseOnEsc: disableCloseOnEsc
16775
+ }), open ? /*#__PURE__*/React__default["default"].createElement(Overlay, {
16776
+ onClick: handleBackgroundClick,
16777
+ disableBackgroundColor: disableBackgroundColor
16778
+ }) : null, /*#__PURE__*/React.cloneElement(children, childProps));
16779
+ });
16780
+ Modal.displayName = "Modal";
16666
16781
 
16667
16782
  var _excluded$1l = ["children", "open", "onClose", "className", "enableBackgroundClick", "disableCloseOnEsc", "animate", "onClickOutside", "size", "height"];
16668
16783
  // Modal only treats a child as a transition when its props already carry `in`, so this element
@@ -31351,6 +31466,8 @@
31351
31466
  exports.FolderOutlineIcon = FolderOutlineIcon$1;
31352
31467
  exports.FolderPlusIcon = FolderPlusIcon$1;
31353
31468
  exports.FromElement = FromElement;
31469
+ exports.GROW_ENTER = GROW_ENTER;
31470
+ exports.GROW_EXIT = GROW_EXIT;
31354
31471
  exports.GearFailedIcon = GearFailedIcon$1;
31355
31472
  exports.GearIcon = GearIcon$1;
31356
31473
  exports.GiftIcon = GiftIcon$1;
@@ -31368,6 +31485,7 @@
31368
31485
  exports.GlobalAddButton = GlobalAddButton;
31369
31486
  exports.GlobalStyle = GlobalStyle;
31370
31487
  exports.GroupByIcon = GroupByIcon$1;
31488
+ exports.Grow = Grow;
31371
31489
  exports.HashIcon = HashIcon$1;
31372
31490
  exports.HashtagIcon = HashtagIcon$1;
31373
31491
  exports.Header = Header;