@activecollab/components 2.0.434 → 2.0.436

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 (92) hide show
  1. package/dist/cjs/components/ConfirmDialog/ConfirmDialog.js +6 -5
  2. package/dist/cjs/components/ConfirmDialog/ConfirmDialog.js.map +1 -1
  3. package/dist/cjs/components/Dialog/Dialog.js +65 -43
  4. package/dist/cjs/components/Dialog/Dialog.js.map +1 -1
  5. package/dist/cjs/components/Dialog/DialogActions.js +13 -5
  6. package/dist/cjs/components/Dialog/DialogActions.js.map +1 -1
  7. package/dist/cjs/components/Dialog/DialogContent.js +4 -5
  8. package/dist/cjs/components/Dialog/DialogContent.js.map +1 -1
  9. package/dist/cjs/components/Dialog/DialogContext.js +14 -7
  10. package/dist/cjs/components/Dialog/DialogContext.js.map +1 -1
  11. package/dist/cjs/components/Dialog/DialogTitle.js +19 -5
  12. package/dist/cjs/components/Dialog/DialogTitle.js.map +1 -1
  13. package/dist/cjs/components/Dialog/Styles.js +55 -13
  14. package/dist/cjs/components/Dialog/Styles.js.map +1 -1
  15. package/dist/cjs/components/Dialog/index.js +11 -0
  16. package/dist/cjs/components/Dialog/index.js.map +1 -1
  17. package/dist/cjs/components/Modal/Modal.js +3 -2
  18. package/dist/cjs/components/Modal/Modal.js.map +1 -1
  19. package/dist/cjs/components/Popper/Popper.js +4 -3
  20. package/dist/cjs/components/Popper/Popper.js.map +1 -1
  21. package/dist/cjs/components/Tooltip/Tooltip.js +3 -1
  22. package/dist/cjs/components/Tooltip/Tooltip.js.map +1 -1
  23. package/dist/cjs/components/Transitions/Fade/Fade.js +11 -2
  24. package/dist/cjs/components/Transitions/Fade/Fade.js.map +1 -1
  25. package/dist/cjs/components/Transitions/SlideFromTop/SlideFromTop.js +46 -30
  26. package/dist/cjs/components/Transitions/SlideFromTop/SlideFromTop.js.map +1 -1
  27. package/dist/cjs/components/Wizard/Step.js +4 -1
  28. package/dist/cjs/components/Wizard/Step.js.map +1 -1
  29. package/dist/cjs/components/Wizard/Wizard.js +14 -2
  30. package/dist/cjs/components/Wizard/Wizard.js.map +1 -1
  31. package/dist/esm/components/ConfirmDialog/ConfirmDialog.d.ts +3 -0
  32. package/dist/esm/components/ConfirmDialog/ConfirmDialog.d.ts.map +1 -1
  33. package/dist/esm/components/ConfirmDialog/ConfirmDialog.js +6 -5
  34. package/dist/esm/components/ConfirmDialog/ConfirmDialog.js.map +1 -1
  35. package/dist/esm/components/Dialog/Dialog.d.ts +7 -2
  36. package/dist/esm/components/Dialog/Dialog.d.ts.map +1 -1
  37. package/dist/esm/components/Dialog/Dialog.js +65 -48
  38. package/dist/esm/components/Dialog/Dialog.js.map +1 -1
  39. package/dist/esm/components/Dialog/DialogActions.d.ts.map +1 -1
  40. package/dist/esm/components/Dialog/DialogActions.js +10 -5
  41. package/dist/esm/components/Dialog/DialogActions.js.map +1 -1
  42. package/dist/esm/components/Dialog/DialogContent.d.ts +5 -1
  43. package/dist/esm/components/Dialog/DialogContent.d.ts.map +1 -1
  44. package/dist/esm/components/Dialog/DialogContent.js +4 -5
  45. package/dist/esm/components/Dialog/DialogContent.js.map +1 -1
  46. package/dist/esm/components/Dialog/DialogContext.d.ts +11 -1
  47. package/dist/esm/components/Dialog/DialogContext.d.ts.map +1 -1
  48. package/dist/esm/components/Dialog/DialogContext.js +10 -8
  49. package/dist/esm/components/Dialog/DialogContext.js.map +1 -1
  50. package/dist/esm/components/Dialog/DialogTitle.d.ts +4 -1
  51. package/dist/esm/components/Dialog/DialogTitle.d.ts.map +1 -1
  52. package/dist/esm/components/Dialog/DialogTitle.js +20 -6
  53. package/dist/esm/components/Dialog/DialogTitle.js.map +1 -1
  54. package/dist/esm/components/Dialog/Styles.d.ts +19 -2
  55. package/dist/esm/components/Dialog/Styles.d.ts.map +1 -1
  56. package/dist/esm/components/Dialog/Styles.js +47 -11
  57. package/dist/esm/components/Dialog/Styles.js.map +1 -1
  58. package/dist/esm/components/Dialog/index.d.ts +1 -0
  59. package/dist/esm/components/Dialog/index.d.ts.map +1 -1
  60. package/dist/esm/components/Dialog/index.js +1 -0
  61. package/dist/esm/components/Dialog/index.js.map +1 -1
  62. package/dist/esm/components/Modal/Modal.d.ts.map +1 -1
  63. package/dist/esm/components/Modal/Modal.js +3 -2
  64. package/dist/esm/components/Modal/Modal.js.map +1 -1
  65. package/dist/esm/components/Popper/Popper.d.ts +6 -1
  66. package/dist/esm/components/Popper/Popper.d.ts.map +1 -1
  67. package/dist/esm/components/Popper/Popper.js +4 -3
  68. package/dist/esm/components/Popper/Popper.js.map +1 -1
  69. package/dist/esm/components/Tooltip/Tooltip.d.ts +3 -1
  70. package/dist/esm/components/Tooltip/Tooltip.d.ts.map +1 -1
  71. package/dist/esm/components/Tooltip/Tooltip.js +3 -1
  72. package/dist/esm/components/Tooltip/Tooltip.js.map +1 -1
  73. package/dist/esm/components/Transitions/Fade/Fade.d.ts.map +1 -1
  74. package/dist/esm/components/Transitions/Fade/Fade.js +11 -2
  75. package/dist/esm/components/Transitions/Fade/Fade.js.map +1 -1
  76. package/dist/esm/components/Transitions/SlideFromTop/SlideFromTop.d.ts +2 -0
  77. package/dist/esm/components/Transitions/SlideFromTop/SlideFromTop.d.ts.map +1 -1
  78. package/dist/esm/components/Transitions/SlideFromTop/SlideFromTop.js +46 -30
  79. package/dist/esm/components/Transitions/SlideFromTop/SlideFromTop.js.map +1 -1
  80. package/dist/esm/components/Wizard/Step.d.ts +4 -0
  81. package/dist/esm/components/Wizard/Step.d.ts.map +1 -1
  82. package/dist/esm/components/Wizard/Step.js +4 -1
  83. package/dist/esm/components/Wizard/Step.js.map +1 -1
  84. package/dist/esm/components/Wizard/Wizard.d.ts +3 -0
  85. package/dist/esm/components/Wizard/Wizard.d.ts.map +1 -1
  86. package/dist/esm/components/Wizard/Wizard.js +14 -2
  87. package/dist/esm/components/Wizard/Wizard.js.map +1 -1
  88. package/dist/index.js +264 -120
  89. package/dist/index.js.map +1 -1
  90. package/dist/index.min.js +1 -1
  91. package/dist/index.min.js.map +1 -1
  92. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -14685,7 +14685,7 @@
14685
14685
  componentId: "sc-1hgjasy-0"
14686
14686
  })(["&[data-popper-reference-hidden]{display:none !important;pointer-events:none !important;}"]);
14687
14687
 
14688
- var _excluded$1F = ["children", "anchorEl", "open", "style", "transition", "placement", "strategy", "afterWrite"];
14688
+ var _excluded$1F = ["children", "anchorEl", "open", "style", "transition", "placement", "strategy", "afterWrite", "modifiers"];
14689
14689
  var Popper = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
14690
14690
  var children = _ref.children,
14691
14691
  anchorEl = _ref.anchorEl,
@@ -14699,6 +14699,7 @@
14699
14699
  _ref$strategy = _ref.strategy,
14700
14700
  strategy = _ref$strategy === void 0 ? "absolute" : _ref$strategy,
14701
14701
  afterWrite = _ref.afterWrite,
14702
+ extraModifiers = _ref.modifiers,
14702
14703
  rest = _objectWithoutProperties(_ref, _excluded$1F);
14703
14704
  var _useState = React.useState(true),
14704
14705
  _useState2 = _slicedToArray(_useState, 2),
@@ -14721,7 +14722,7 @@
14721
14722
  if (popperRef.current) {
14722
14723
  popperRef.current.destroy();
14723
14724
  }
14724
- var modifiers = [{
14725
+ var modifiers = [...(extraModifiers || []), {
14725
14726
  name: "hide",
14726
14727
  enabled: true,
14727
14728
  phase: "main",
@@ -14760,7 +14761,7 @@
14760
14761
  strategy,
14761
14762
  modifiers
14762
14763
  });
14763
- }, [afterWrite, anchorEl, open, placement, strategy]);
14764
+ }, [afterWrite, anchorEl, extraModifiers, open, placement, strategy]);
14764
14765
  var handleClose = function handleClose() {
14765
14766
  if (!popperRef.current) {
14766
14767
  return;
@@ -15571,7 +15572,7 @@
15571
15572
  return props.$isLight && styled.css(["background-color:var(--page-paper-main);box-shadow:var(--shadow-secondary);color:var(--color-theme-700);"]);
15572
15573
  });
15573
15574
 
15574
- var defaultStyle$3 = {
15575
+ var defaultStyle$2 = {
15575
15576
  transitionProperty: "opacity, transform",
15576
15577
  transitionDuration: ".15s, .10s, .15s",
15577
15578
  transitionTimingFunction: "ease, ease, cubic-bezier(0.39, 0.575, 0.565, 1)",
@@ -15579,7 +15580,7 @@
15579
15580
  transform: "scale(.85)",
15580
15581
  opacity: 0
15581
15582
  };
15582
- var transitionStyles$4 = {
15583
+ var transitionStyles$3 = {
15583
15584
  entering: {
15584
15585
  opacity: 1,
15585
15586
  transform: "scale(1)",
@@ -15617,7 +15618,7 @@
15617
15618
  return /*#__PURE__*/React.cloneElement(children, {
15618
15619
  style: _objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2({
15619
15620
  visibility: state === "exited" && !inProp ? "hidden" : undefined
15620
- }, defaultStyle$3), transitionStyles$4[state]), style), children.props.style)
15621
+ }, defaultStyle$2), transitionStyles$3[state]), style), children.props.style)
15621
15622
  });
15622
15623
  });
15623
15624
  };
@@ -15644,7 +15645,8 @@
15644
15645
  TransitionComponent = _ref2$TransitionCompo === void 0 ? TooltipAnimation : _ref2$TransitionCompo,
15645
15646
  popperTooltipStyle = _ref2.popperTooltipStyle,
15646
15647
  popperTooltipClassName = _ref2.popperTooltipClassName,
15647
- disable = _ref2.disable;
15648
+ disable = _ref2.disable,
15649
+ popperModifiers = _ref2.popperModifiers;
15648
15650
  var _useLayerContext = useLayerContext(),
15649
15651
  _useLayerContext$zInd = _useLayerContext.zIndex,
15650
15652
  zIndex = _useLayerContext$zInd === void 0 ? layers.skyscraper : _useLayerContext$zInd;
@@ -15683,6 +15685,7 @@
15683
15685
  open: childNode ? open : false,
15684
15686
  placement: placement,
15685
15687
  transition: true,
15688
+ modifiers: popperModifiers,
15686
15689
  className: popperTooltipClassName,
15687
15690
  style: _objectSpread2({
15688
15691
  zIndex
@@ -16037,6 +16040,24 @@
16037
16040
  });
16038
16041
  Checkbox.displayName = "Checkbox";
16039
16042
 
16043
+ var DialogContext = /*#__PURE__*/React.createContext(null);
16044
+ var useDialogContext = function useDialogContext() {
16045
+ return React.useContext(DialogContext);
16046
+ };
16047
+
16048
+ /**
16049
+ * Closes the dialog the way clicking the overlay does: the exit transition runs first, and the
16050
+ * dialog's own onClose fires once it finishes. Use it for a Cancel button instead of calling the
16051
+ * parent's close handler, which would unmount the dialog before it can animate out.
16052
+ */
16053
+ var useDialogClose = function useDialogClose(fallback) {
16054
+ var _ref, _context$requestClose;
16055
+ var context = React.useContext(DialogContext);
16056
+ return (_ref = (_context$requestClose = context === null || context === void 0 ? void 0 : context.requestClose) !== null && _context$requestClose !== void 0 ? _context$requestClose : fallback) !== null && _ref !== void 0 ? _ref : function () {
16057
+ return undefined;
16058
+ };
16059
+ };
16060
+
16040
16061
  var size = {
16041
16062
  sm: "640px",
16042
16063
  md: "768px",
@@ -16063,57 +16084,104 @@
16063
16084
  xxl: "@media (max-width: ".concat(below(size.xxl), ")")
16064
16085
  };
16065
16086
 
16087
+ var dialogSizes = {
16088
+ s: 440,
16089
+ m: 540,
16090
+ l: 700,
16091
+ xl: 840,
16092
+ xxl: 1000,
16093
+ xxxl: 1120
16094
+ };
16095
+ var MIN_GAP = "2.5vh";
16096
+ var MAX_DIALOG_HEIGHT = "95vh";
16097
+
16098
+ // The dialog hangs at a fixed offset while there is room below it, then grows in both directions at
16099
+ // once. Two shrinkable spacers express that: only the lower one grows, and past the crossover both
16100
+ // shrink from the same basis, so the gaps stay equal down to MIN_GAP.
16101
+ var StyledDialogViewport = styled__default["default"].div.withConfig({
16102
+ displayName: "Styles__StyledDialogViewport",
16103
+ componentId: "sc-jwpvgm-0"
16104
+ })(["position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;padding-left:16px;padding-right:16px;pointer-events:none;--ac-dialog-offset:60px;", "{--ac-dialog-offset:126px;}&::before,&::after{content:\"\";flex-shrink:1;flex-basis:var(--ac-dialog-offset);min-height:", ";}&::before{flex-grow:0;}&::after{flex-grow:1;}", ""], screen.sm, MIN_GAP, BoxSizingStyle);
16105
+ StyledDialogViewport.displayName = "StyledDialogViewport";
16066
16106
  var StyledDialog = styled__default["default"].div.withConfig({
16067
16107
  displayName: "Styles__StyledDialog",
16068
- componentId: "sc-jwpvgm-0"
16069
- })(["display:flex;flex-direction:column;flex:1 1 auto;max-height:calc(100vh - 156px);background-color:var(--page-paper-main);color:var(--color-theme-900);box-shadow:var(--shadow-primary);border-radius:8px;width:310px;margin:60px auto 30px auto;position:relative;@media (max-width:640px){width:calc(100% - 32px);max-width:640px;margin-left:16px !important;margin-right:16px !important;}", " ", " ", "{width:540px;margin:126px auto 30px auto;}"], FontStyle, BoxSizingStyle, screen.sm);
16108
+ componentId: "sc-jwpvgm-1"
16109
+ })(["display:flex;flex-direction:column;flex:0 0 auto;pointer-events:auto;width:100%;max-width:", "px;max-height:", ";background-color:var(--page-paper-main);color:var(--color-theme-900);box-shadow:var(--shadow-primary);border-radius:8px;position:relative;transition:max-width 0.2s ease,height 0.2s ease;@media (prefers-reduced-motion:reduce){transition:none;}", " ", " ", ""], function (props) {
16110
+ return props.$maxWidth;
16111
+ }, MAX_DIALOG_HEIGHT, function (props) {
16112
+ return props.$height && styled.css(["height:", ";"], props.$height);
16113
+ }, FontStyle, BoxSizingStyle);
16070
16114
  StyledDialog.displayName = "StyledDialog";
16071
16115
  var StyledDialogTitle = styled__default["default"].div.withConfig({
16072
16116
  displayName: "Styles__StyledDialogTitle",
16073
- componentId: "sc-jwpvgm-1"
16074
- })(["padding:20px 30px;", " ", ""], FontStyle, BoxSizingStyle);
16117
+ componentId: "sc-jwpvgm-2"
16118
+ })(["padding:20px 30px;flex:0 0 auto;", " ", ""], FontStyle, BoxSizingStyle);
16075
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";
16076
16137
  var StyledDialogContent = styled__default["default"].div.withConfig({
16077
16138
  displayName: "Styles__StyledDialogContent",
16078
- componentId: "sc-jwpvgm-2"
16079
- })(["padding:20px 30px;max-height:580px;overflow-y:auto;flex:1 1 auto;", " ", ""], FontStyle, BoxSizingStyle);
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);
16080
16143
  StyledDialogContent.displayName = "StyledDialogContent";
16081
16144
  var StyledDialogContentDivider = styled__default["default"].div.withConfig({
16082
16145
  displayName: "Styles__StyledDialogContentDivider",
16083
- componentId: "sc-jwpvgm-3"
16084
- })(["border-top:1px solid var(--border-primary);height:1px;"]);
16146
+ componentId: "sc-jwpvgm-6"
16147
+ })(["border-top:1px solid var(--border-primary);height:1px;flex:0 0 auto;"]);
16085
16148
  StyledDialogContentDivider.displayName = "StyledDialogContentDivider";
16086
16149
  var StyledDialogActions = styled__default["default"].div.withConfig({
16087
16150
  displayName: "Styles__StyledDialogActions",
16088
- componentId: "sc-jwpvgm-4"
16089
- })(["padding:20px 30px;", " ", ""], FontStyle, BoxSizingStyle);
16151
+ componentId: "sc-jwpvgm-7"
16152
+ })(["padding:20px 30px;flex:0 0 auto;display:flex;align-items:center;gap:12px;", " ", ""], FontStyle, BoxSizingStyle);
16090
16153
  StyledDialogActions.displayName = "StyledDialogActions";
16091
16154
 
16092
16155
  var _excluded$1u = ["className", "children"];
16093
- // import { useDialogContext } from "./DialogContext";
16094
-
16095
16156
  var DialogActions = function DialogActions(_ref) {
16096
16157
  var className = _ref.className,
16097
16158
  children = _ref.children,
16098
16159
  rest = _objectWithoutProperties(_ref, _excluded$1u);
16099
- // useDialogContext();
16100
-
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;
16101
16170
  return /*#__PURE__*/React__default["default"].createElement(StyledDialogActions, _extends({
16102
16171
  className: classNames__default["default"]("c-dialog-actions", className)
16103
- }, rest), children);
16172
+ }, rest), wired);
16104
16173
  };
16105
16174
  DialogActions.displayName = "DialogActions";
16106
16175
 
16107
- var _excluded$1t = ["className", "children"];
16108
- // import { useDialogContext } from "./DialogContext";
16109
-
16176
+ var _excluded$1t = ["className", "children", "scroll"];
16110
16177
  var DialogContent = function DialogContent(_ref) {
16111
16178
  var className = _ref.className,
16112
16179
  children = _ref.children,
16180
+ _ref$scroll = _ref.scroll,
16181
+ scroll = _ref$scroll === void 0 ? true : _ref$scroll,
16113
16182
  rest = _objectWithoutProperties(_ref, _excluded$1t);
16114
- // useDialogContext();
16115
-
16116
16183
  return /*#__PURE__*/React__default["default"].createElement(StyledDialogContent, _extends({
16184
+ $scroll: scroll,
16117
16185
  className: classNames__default["default"]("c-dialog-content", className)
16118
16186
  }, rest), children);
16119
16187
  };
@@ -16143,20 +16211,31 @@
16143
16211
  });
16144
16212
  Header3.displayName = "Header3";
16145
16213
 
16146
- var _excluded$1r = ["children", "className", "disableDefaultHeading"];
16147
- // import { useDialogContext } from "./DialogContext";
16148
-
16214
+ var _excluded$1r = ["children", "className", "disableDefaultHeading", "onClose", "closeLabel"];
16149
16215
  var DialogTitle = function DialogTitle(_ref) {
16216
+ var _dialog$requestClose;
16150
16217
  var children = _ref.children,
16151
16218
  className = _ref.className,
16152
16219
  _ref$disableDefaultHe = _ref.disableDefaultHeading,
16153
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,
16154
16224
  rest = _objectWithoutProperties(_ref, _excluded$1r);
16155
- // useDialogContext();
16225
+ var dialog = useDialogContext();
16226
+ var heading = disableDefaultHeading ? children : /*#__PURE__*/React__default["default"].createElement(Header3, null, children);
16156
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;
16157
16231
  return /*#__PURE__*/React__default["default"].createElement(StyledDialogTitle, _extends({
16158
16232
  className: classNames__default["default"]("c-dialog-title-wrapper", className)
16159
- }, rest), disableDefaultHeading ? children : /*#__PURE__*/React__default["default"].createElement(Header3, null, children));
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);
16160
16239
  };
16161
16240
  DialogTitle.displayName = "DialogTitle";
16162
16241
 
@@ -16247,11 +16326,12 @@
16247
16326
  props = {
16248
16327
  onEnter: createChainedFunction(handleEnter, children.props.onEnter),
16249
16328
  onExited: createChainedFunction(handleExited, children.props.onExited),
16250
- in: open
16329
+ in: open,
16330
+ forceClose: handleClose
16251
16331
  };
16252
16332
  }
16253
16333
  return props;
16254
- }, [children, handleEnter, handleExited, hasTransition, open]);
16334
+ }, [children, handleClose, handleEnter, handleExited, hasTransition, open]);
16255
16335
  if (!open && (!hasTransition || exited)) {
16256
16336
  return null;
16257
16337
  }
@@ -16268,14 +16348,14 @@
16268
16348
  });
16269
16349
  Modal.displayName = "Modal";
16270
16350
 
16271
- var _excluded$1p = ["in", "children", "style", "timeout"];
16272
- var defaultStyle$2 = function defaultStyle(duration) {
16351
+ var _excluded$1p = ["in", "children", "style", "timeout", "onEnter"];
16352
+ var defaultStyle$1 = function defaultStyle(duration) {
16273
16353
  return {
16274
16354
  transition: "all ".concat(duration, "ms ease-in-out"),
16275
16355
  opacity: 0
16276
16356
  };
16277
16357
  };
16278
- var transitionStyles$3 = {
16358
+ var transitionStyles$2 = {
16279
16359
  entering: {
16280
16360
  opacity: 1
16281
16361
  },
@@ -16296,16 +16376,25 @@
16296
16376
  style = _ref.style,
16297
16377
  _ref$timeout = _ref.timeout,
16298
16378
  timeout = _ref$timeout === void 0 ? 500 : _ref$timeout,
16379
+ onEnter = _ref.onEnter,
16299
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
+ };
16300
16388
  return /*#__PURE__*/React__default["default"].createElement(reactTransitionGroup.Transition, _extends({
16301
16389
  appear: true,
16302
16390
  in: inProp,
16303
- timeout: timeout
16391
+ timeout: timeout,
16392
+ onEnter: handleEnter
16304
16393
  }, rest), function (state) {
16305
16394
  return /*#__PURE__*/React.cloneElement(children, {
16306
16395
  style: _objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2({
16307
16396
  visibility: state === "exited" && !inProp ? "hidden" : undefined
16308
- }, defaultStyle$2(timeout)), transitionStyles$3[state]), style), children.props.style)
16397
+ }, defaultStyle$1(timeout)), transitionStyles$2[state]), style), children.props.style)
16309
16398
  });
16310
16399
  });
16311
16400
  };
@@ -16368,33 +16457,37 @@
16368
16457
  };
16369
16458
  Slide.displayName = "Slide";
16370
16459
 
16371
- var defaultStyle$1 = {
16372
- transitionProperty: "opacity, transform",
16373
- transitionTimingFunction: "linear ease-out",
16374
- transform: "translateY(-100%)",
16375
- opacity: 0
16376
- };
16377
- var transitionStyles$2 = {
16378
- entering: {
16379
- opacity: 1,
16380
- transform: "translateY(0)",
16381
- transitionDuration: ".3s"
16382
- },
16383
- entered: {
16384
- opacity: 1,
16385
- transform: "translateY(0)",
16386
- transitionDuration: ".3s"
16387
- },
16388
- exiting: {
16389
- opacity: 0,
16390
- transform: "translateY(-100%)",
16391
- transitionDuration: ".2s"
16392
- },
16393
- exited: {
16394
- opacity: 0,
16395
- transform: "translateY(-100%)",
16396
- transitionDuration: ".2s"
16397
- }
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
+ };
16398
16491
  };
16399
16492
  var SlideFromTop = function SlideFromTop(_ref) {
16400
16493
  var _ref$in = _ref.in,
@@ -16404,18 +16497,30 @@
16404
16497
  children = _ref.children,
16405
16498
  style = _ref.style,
16406
16499
  _ref$timeout = _ref.timeout,
16407
- timeout = _ref$timeout === void 0 ? 400 : _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);
16504
+
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
+ };
16408
16513
  return /*#__PURE__*/React__default["default"].createElement(reactTransitionGroup.Transition, {
16409
16514
  appear: true,
16410
16515
  in: inProp,
16411
16516
  timeout: timeout,
16412
- onEnter: onEnter,
16517
+ onEnter: handleEnter,
16413
16518
  onExited: onExited
16414
16519
  }, function (state) {
16415
16520
  return /*#__PURE__*/React.cloneElement(children, {
16416
16521
  style: _objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2({
16417
16522
  visibility: state === "exited" && !inProp ? "hidden" : undefined
16418
- }, defaultStyle$1), transitionStyles$2[state]), style), children.props.style)
16523
+ }, styles.base), styles[state]), style), children.props.style)
16419
16524
  });
16420
16525
  });
16421
16526
  };
@@ -16559,50 +16664,71 @@
16559
16664
  };
16560
16665
  Scale.displayName = "Scale";
16561
16666
 
16562
- var _excluded$1l = ["children", "open", "onClose", "className", "enableBackgroundClick", "disableCloseOnEsc", "animate", "onClickOutside"];
16563
- var _Dialog = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
16564
- var children = _ref.children,
16565
- _ref$open = _ref.open,
16566
- open = _ref$open === void 0 ? false : _ref$open,
16667
+ var _excluded$1l = ["children", "open", "onClose", "className", "enableBackgroundClick", "disableCloseOnEsc", "animate", "onClickOutside", "size", "height"];
16668
+ // Modal only treats a child as a transition when its props already carry `in`, so this element
16669
+ // must declare it even though Modal overwrites it on clone.
16670
+ var DialogSurface = function DialogSurface(_ref) {
16671
+ var _ref$in = _ref.in,
16672
+ inProp = _ref$in === void 0 ? false : _ref$in,
16673
+ onEnter = _ref.onEnter,
16674
+ onExited = _ref.onExited,
16675
+ forceClose = _ref.forceClose,
16567
16676
  onClose = _ref.onClose,
16568
- className = _ref.className,
16569
- _ref$enableBackground = _ref.enableBackgroundClick,
16570
- enableBackgroundClick = _ref$enableBackground === void 0 ? false : _ref$enableBackground,
16571
- _ref$disableCloseOnEs = _ref.disableCloseOnEsc,
16572
- disableCloseOnEsc = _ref$disableCloseOnEs === void 0 ? false : _ref$disableCloseOnEs,
16573
- _ref$animate = _ref.animate,
16574
- animate = _ref$animate === void 0 ? "slide" : _ref$animate,
16575
- onClickOutside = _ref.onClickOutside,
16576
- rest = _objectWithoutProperties(_ref, _excluded$1l);
16577
- var animateDialog = function animateDialog() {
16578
- switch (animate) {
16579
- case "fade":
16580
- return /*#__PURE__*/React__default["default"].createElement(Fade, {
16581
- in: open
16582
- }, /*#__PURE__*/React__default["default"].createElement(StyledDialog, {
16583
- className: classNames__default["default"]("c-dialog", className)
16584
- }, children));
16585
- default:
16586
- return /*#__PURE__*/React__default["default"].createElement(SlideFromTop, {
16587
- in: open
16588
- }, /*#__PURE__*/React__default["default"].createElement(StyledDialog, {
16589
- className: classNames__default["default"]("c-dialog", className)
16590
- }, children));
16591
- }
16592
- };
16593
- return (
16594
- /*#__PURE__*/
16595
- // <DialogContext.Provider value={{}}>
16596
- React__default["default"].createElement(Modal, _extends({
16597
- ref: ref,
16598
- open: open,
16599
- onClose: onClose,
16600
- disableBackgroundClick: !enableBackgroundClick,
16601
- disableCloseOnEsc: disableCloseOnEsc,
16602
- onClickOutside: onClickOutside
16603
- }, rest), animateDialog())
16604
- // </DialogContext.Provider>
16605
- );
16677
+ animate = _ref.animate,
16678
+ children = _ref.children;
16679
+ var Animation = animate === "fade" ? Fade : SlideFromTop;
16680
+ var value = React.useMemo(function () {
16681
+ return {
16682
+ requestClose: forceClose,
16683
+ onClose
16684
+ };
16685
+ }, [forceClose, onClose]);
16686
+ return /*#__PURE__*/React__default["default"].createElement(DialogContext.Provider, {
16687
+ value: value
16688
+ }, /*#__PURE__*/React__default["default"].createElement(StyledDialogViewport, {
16689
+ className: "c-dialog-viewport"
16690
+ }, /*#__PURE__*/React__default["default"].createElement(Animation, {
16691
+ in: inProp,
16692
+ onEnter: onEnter,
16693
+ onExited: onExited
16694
+ }, children)));
16695
+ };
16696
+ DialogSurface.displayName = "DialogSurface";
16697
+ var _Dialog = /*#__PURE__*/React.forwardRef(function (_ref2, ref) {
16698
+ var _dialogSizes$size;
16699
+ var children = _ref2.children,
16700
+ _ref2$open = _ref2.open,
16701
+ open = _ref2$open === void 0 ? false : _ref2$open,
16702
+ onClose = _ref2.onClose,
16703
+ className = _ref2.className,
16704
+ _ref2$enableBackgroun = _ref2.enableBackgroundClick,
16705
+ enableBackgroundClick = _ref2$enableBackgroun === void 0 ? false : _ref2$enableBackgroun,
16706
+ _ref2$disableCloseOnE = _ref2.disableCloseOnEsc,
16707
+ disableCloseOnEsc = _ref2$disableCloseOnE === void 0 ? false : _ref2$disableCloseOnE,
16708
+ _ref2$animate = _ref2.animate,
16709
+ animate = _ref2$animate === void 0 ? "slide" : _ref2$animate,
16710
+ onClickOutside = _ref2.onClickOutside,
16711
+ _ref2$size = _ref2.size,
16712
+ size = _ref2$size === void 0 ? "m" : _ref2$size,
16713
+ _ref2$height = _ref2.height,
16714
+ height = _ref2$height === void 0 ? "fluid" : _ref2$height,
16715
+ rest = _objectWithoutProperties(_ref2, _excluded$1l);
16716
+ return /*#__PURE__*/React__default["default"].createElement(Modal, _extends({
16717
+ ref: ref,
16718
+ open: open,
16719
+ onClose: onClose,
16720
+ disableBackgroundClick: !enableBackgroundClick,
16721
+ disableCloseOnEsc: disableCloseOnEsc,
16722
+ onClickOutside: onClickOutside
16723
+ }, rest), /*#__PURE__*/React__default["default"].createElement(DialogSurface, {
16724
+ in: open,
16725
+ onClose: onClose,
16726
+ animate: animate
16727
+ }, /*#__PURE__*/React__default["default"].createElement(StyledDialog, {
16728
+ $maxWidth: (_dialogSizes$size = dialogSizes[size]) !== null && _dialogSizes$size !== void 0 ? _dialogSizes$size : dialogSizes.m,
16729
+ $height: height === "fluid" ? undefined : height,
16730
+ className: classNames__default["default"]("c-dialog", className)
16731
+ }, children)));
16606
16732
  });
16607
16733
  _Dialog.displayName = "Dialog";
16608
16734
 
@@ -16639,7 +16765,9 @@
16639
16765
  shouldShowCancelButton = _ref$shouldShowCancel === void 0 ? true : _ref$shouldShowCancel,
16640
16766
  _ref$isLoading = _ref.isLoading,
16641
16767
  isLoading = _ref$isLoading === void 0 ? false : _ref$isLoading,
16642
- confirmationLabel = _ref.confirmationLabel;
16768
+ confirmationLabel = _ref.confirmationLabel,
16769
+ size = _ref.size,
16770
+ height = _ref.height;
16643
16771
  var _useState = React.useState(false),
16644
16772
  _useState2 = _slicedToArray(_useState, 2),
16645
16773
  confirmed = _useState2[0],
@@ -16672,7 +16800,9 @@
16672
16800
  open: open,
16673
16801
  onClose: onCancel,
16674
16802
  className: classNames__default["default"]("c-confirm-dialog", className),
16675
- disableCloseOnEsc: isLoading
16803
+ disableCloseOnEsc: isLoading,
16804
+ size: size,
16805
+ height: height
16676
16806
  }, /*#__PURE__*/React__default["default"].createElement(Dialog.Title, null, dialogTitle), /*#__PURE__*/React__default["default"].createElement(Dialog.ContentDivider, null), /*#__PURE__*/React__default["default"].createElement(Dialog.Content, null, /*#__PURE__*/React__default["default"].createElement(Body2, {
16677
16807
  lineHeight: "loose",
16678
16808
  color: "secondary",
@@ -16690,9 +16820,6 @@
16690
16820
  color: "secondary"
16691
16821
  }, confirmationLabel))) : null), /*#__PURE__*/React__default["default"].createElement(Dialog.ContentDivider, null), /*#__PURE__*/React__default["default"].createElement(Dialog.Actions, null, /*#__PURE__*/React__default["default"].createElement(Button, {
16692
16822
  variant: "primary",
16693
- style: {
16694
- marginRight: "12px"
16695
- },
16696
16823
  onClick: onConfirm,
16697
16824
  disabled: isLoading || isConfirmBlocked
16698
16825
  }, confirmBtnText), shouldShowCancelButton ? /*#__PURE__*/React__default["default"].createElement(Button, {
@@ -28601,6 +28728,8 @@
28601
28728
  customRightHeader = _ref.customRightHeader,
28602
28729
  _ref$skip = _ref.skip,
28603
28730
  skip = _ref$skip === void 0 ? false : _ref$skip;
28731
+ // The close button goes through the dialog so the exit transition runs before the caller unmounts.
28732
+ var closeDialog = useDialogClose(onClose);
28604
28733
  var onActionButtonClick = React.useCallback(function () {
28605
28734
  if (isLast && onClose) {
28606
28735
  return onClose();
@@ -28613,7 +28742,7 @@
28613
28742
  className: "tw--ml-3 tw-mr-2",
28614
28743
  disabled: changingStepInProgress
28615
28744
  }, /*#__PURE__*/React__default["default"].createElement(ArrowBackMobileIcon$1, null)) : null, /*#__PURE__*/React__default["default"].createElement(StyledStepTitle, null, /*#__PURE__*/React__default["default"].createElement(Caption2, null, title), /*#__PURE__*/React__default["default"].createElement(Header3, null, subtitle))), customRightHeader ? customRightHeader : /*#__PURE__*/React__default["default"].createElement(IconButton, {
28616
- onClick: onClose,
28745
+ onClick: closeDialog,
28617
28746
  variant: "text gray",
28618
28747
  disabled: changingStepInProgress
28619
28748
  }, /*#__PURE__*/React__default["default"].createElement(CancelCrossIcon$1, null))), /*#__PURE__*/React__default["default"].createElement(Dialog.ContentDivider, null), shouldRenderNextButton ? /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement(Dialog.Content, null, children), /*#__PURE__*/React__default["default"].createElement(Dialog.ContentDivider, null), /*#__PURE__*/React__default["default"].createElement(Dialog.Actions, null, /*#__PURE__*/React__default["default"].createElement(StepActionButton, {
@@ -28625,13 +28754,18 @@
28625
28754
  Step.displayName = "Step";
28626
28755
 
28627
28756
  var Wizard = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
28757
+ var _activeStepProps$size, _activeStepProps$heig;
28628
28758
  var title = _ref.title,
28629
28759
  open = _ref.open,
28630
28760
  onClose = _ref.onClose,
28631
28761
  _ref$disableCloseOnEs = _ref.disableCloseOnEsc,
28632
28762
  disableCloseOnEsc = _ref$disableCloseOnEs === void 0 ? false : _ref$disableCloseOnEs,
28633
28763
  children = _ref.children,
28634
- dialogClassName = _ref.dialogClassName;
28764
+ dialogClassName = _ref.dialogClassName,
28765
+ _ref$size = _ref.size,
28766
+ size = _ref$size === void 0 ? "m" : _ref$size,
28767
+ _ref$height = _ref.height,
28768
+ height = _ref$height === void 0 ? "fluid" : _ref$height;
28635
28769
  var childrenCollection = React.useMemo(function () {
28636
28770
  return React__default["default"].Children.toArray(children);
28637
28771
  }, [children]);
@@ -28668,6 +28802,11 @@
28668
28802
  }
28669
28803
  setActiveStep(index);
28670
28804
  }, [activeStep, childrenCollection]);
28805
+ var activeStepProps = React.useMemo(function () {
28806
+ var _element$props;
28807
+ var element = childrenCollection[activeStep];
28808
+ return (_element$props = element === null || element === void 0 ? void 0 : element.props) !== null && _element$props !== void 0 ? _element$props : {};
28809
+ }, [activeStep, childrenCollection]);
28671
28810
  var renderActiveStep = React.useMemo(function () {
28672
28811
  var element = childrenCollection[activeStep];
28673
28812
  if ((element === null || element === void 0 ? void 0 : element.type) === Step) {
@@ -28697,7 +28836,9 @@
28697
28836
  open: open,
28698
28837
  onClose: onClose,
28699
28838
  disableCloseOnEsc: disableCloseOnEsc,
28700
- className: dialogClassName
28839
+ className: dialogClassName,
28840
+ size: (_activeStepProps$size = activeStepProps.size) !== null && _activeStepProps$size !== void 0 ? _activeStepProps$size : size,
28841
+ height: (_activeStepProps$heig = activeStepProps.height) !== null && _activeStepProps$heig !== void 0 ? _activeStepProps$heig : height
28701
28842
  }, renderActiveStep));
28702
28843
  });
28703
28844
  Wizard.displayName = "Wizard";
@@ -31154,6 +31295,7 @@
31154
31295
  exports.DescriptionIcon = DescriptionIcon$1;
31155
31296
  exports.DescriptionSmallIcon = DescriptionSmallIcon$1;
31156
31297
  exports.Dialog = Dialog;
31298
+ exports.DialogContext = DialogContext;
31157
31299
  exports.DiscussionAddIcon = DiscussionAddIcon$1;
31158
31300
  exports.DiscussionIcon = DiscussionIcon$1;
31159
31301
  exports.DisplayCurrency = DisplayCurrency;
@@ -31536,6 +31678,8 @@
31536
31678
  exports.titledTextHeadings = titledTextHeadings;
31537
31679
  exports.toMoment = toMoment;
31538
31680
  exports.useContentStepperContext = useContentStepperContext;
31681
+ exports.useDialogClose = useDialogClose;
31682
+ exports.useDialogContext = useDialogContext;
31539
31683
  exports.useEntityGroupContext = useEntityGroupContext;
31540
31684
  exports.useForkRef = useForkRef;
31541
31685
  exports.useHeight = useHeight;