baseui 10.5.0 → 10.7.2

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 (165) hide show
  1. package/app-nav-bar/user-menu.js +1 -0
  2. package/app-nav-bar/user-menu.js.flow +1 -0
  3. package/button/styled-components.js +1 -1
  4. package/button/styled-components.js.flow +4 -1
  5. package/card/styled-components.js +0 -1
  6. package/card/styled-components.js.flow +0 -1
  7. package/combobox/combobox.js +5 -1
  8. package/combobox/combobox.js.flow +4 -0
  9. package/combobox/index.d.ts +6 -3
  10. package/data-table/column-datetime.js +2 -0
  11. package/data-table/column-datetime.js.flow +2 -0
  12. package/datepicker/calendar-header.js +255 -109
  13. package/datepicker/calendar-header.js.flow +282 -145
  14. package/datepicker/calendar.js +6 -1
  15. package/datepicker/calendar.js.flow +5 -1
  16. package/datepicker/constants.js +9 -2
  17. package/datepicker/constants.js.flow +7 -0
  18. package/datepicker/datepicker.js +135 -73
  19. package/datepicker/datepicker.js.flow +161 -62
  20. package/datepicker/day.js +2 -0
  21. package/datepicker/day.js.flow +2 -0
  22. package/datepicker/index.d.ts +8 -0
  23. package/datepicker/month.js +4 -0
  24. package/datepicker/month.js.flow +3 -0
  25. package/datepicker/styled-components.js +116 -56
  26. package/datepicker/styled-components.js.flow +101 -36
  27. package/datepicker/types.js.flow +18 -1
  28. package/datepicker/utils/calendar-header-helpers.js +51 -0
  29. package/datepicker/utils/calendar-header-helpers.js.flow +53 -0
  30. package/datepicker/utils/date-helpers.js +1 -1
  31. package/datepicker/utils/date-helpers.js.flow +1 -1
  32. package/datepicker/week.js +1 -0
  33. package/datepicker/week.js.flow +1 -0
  34. package/dnd-list/index.js.flow +2 -1
  35. package/dnd-list/list.js +1 -2
  36. package/dnd-list/list.js.flow +1 -1
  37. package/dnd-list/styled-components.js +1 -1
  38. package/dnd-list/styled-components.js.flow +1 -0
  39. package/drawer/drawer.js +2 -1
  40. package/drawer/drawer.js.flow +1 -1
  41. package/es/app-nav-bar/user-menu.js +1 -0
  42. package/es/button/styled-components.js +1 -1
  43. package/es/card/styled-components.js +0 -1
  44. package/es/combobox/combobox.js +5 -1
  45. package/es/data-table/column-datetime.js +2 -0
  46. package/es/datepicker/calendar-header.js +204 -93
  47. package/es/datepicker/calendar.js +7 -2
  48. package/es/datepicker/constants.js +6 -1
  49. package/es/datepicker/datepicker.js +70 -42
  50. package/es/datepicker/day.js +2 -0
  51. package/es/datepicker/month.js +3 -0
  52. package/es/datepicker/styled-components.js +98 -37
  53. package/es/datepicker/types.js +1 -1
  54. package/es/datepicker/utils/calendar-header-helpers.js +34 -0
  55. package/es/datepicker/utils/date-helpers.js +1 -1
  56. package/es/datepicker/week.js +1 -0
  57. package/es/dnd-list/index.js +2 -1
  58. package/es/dnd-list/list.js +1 -2
  59. package/es/dnd-list/styled-components.js +1 -0
  60. package/es/drawer/drawer.js +2 -1
  61. package/es/helper/helper.js +1 -0
  62. package/es/layer/layer.js +8 -0
  63. package/es/menu/maybe-child-menu.js +1 -0
  64. package/es/popover/popover.js +6 -5
  65. package/es/popover/stateful-container.js +8 -2
  66. package/es/rating/emoticon-rating.js +3 -1
  67. package/es/rating/star-rating.js +3 -1
  68. package/es/select/select-component.js +5 -5
  69. package/es/select/styled-components.js +34 -4
  70. package/es/snackbar/snackbar-context.js +16 -4
  71. package/es/table-semantic/styled-components.js +6 -4
  72. package/es/table-semantic/table-builder.js +3 -0
  73. package/es/themes/dark-theme/color-component-tokens.js +1 -1
  74. package/es/themes/light-theme/color-component-tokens.js +9 -9
  75. package/es/themes/shared/lighting.js +5 -1
  76. package/es/timepicker/timepicker.js +16 -11
  77. package/es/tooltip/styled-components.js +8 -0
  78. package/es/tooltip/tooltip.js +1 -0
  79. package/esm/app-nav-bar/user-menu.js +1 -0
  80. package/esm/button/styled-components.js +1 -1
  81. package/esm/card/styled-components.js +0 -1
  82. package/esm/combobox/combobox.js +5 -1
  83. package/esm/data-table/column-datetime.js +2 -0
  84. package/esm/datepicker/calendar-header.js +255 -110
  85. package/esm/datepicker/calendar.js +7 -2
  86. package/esm/datepicker/constants.js +6 -1
  87. package/esm/datepicker/datepicker.js +136 -74
  88. package/esm/datepicker/day.js +2 -0
  89. package/esm/datepicker/month.js +3 -0
  90. package/esm/datepicker/styled-components.js +112 -55
  91. package/esm/datepicker/types.js +1 -1
  92. package/esm/datepicker/utils/calendar-header-helpers.js +45 -0
  93. package/esm/datepicker/utils/date-helpers.js +1 -1
  94. package/esm/datepicker/week.js +1 -0
  95. package/esm/dnd-list/index.js +2 -1
  96. package/esm/dnd-list/list.js +1 -2
  97. package/esm/dnd-list/styled-components.js +1 -1
  98. package/esm/drawer/drawer.js +2 -1
  99. package/esm/helper/helper.js +1 -0
  100. package/esm/layer/layer.js +8 -0
  101. package/esm/menu/maybe-child-menu.js +1 -0
  102. package/esm/popover/popover.js +6 -5
  103. package/esm/popover/stateful-container.js +8 -2
  104. package/esm/rating/emoticon-rating.js +2 -2
  105. package/esm/rating/star-rating.js +2 -2
  106. package/esm/select/select-component.js +5 -5
  107. package/esm/select/styled-components.js +28 -4
  108. package/esm/snackbar/snackbar-context.js +16 -4
  109. package/esm/table-semantic/styled-components.js +6 -4
  110. package/esm/table-semantic/table-builder.js +3 -0
  111. package/esm/themes/dark-theme/color-component-tokens.js +1 -1
  112. package/esm/themes/light-theme/color-component-tokens.js +9 -9
  113. package/esm/themes/shared/lighting.js +5 -1
  114. package/esm/timepicker/timepicker.js +17 -11
  115. package/esm/tooltip/styled-components.js +8 -0
  116. package/esm/tooltip/tooltip.js +1 -0
  117. package/helper/helper.js +1 -0
  118. package/helper/helper.js.flow +1 -0
  119. package/layer/layer.js +8 -0
  120. package/layer/layer.js.flow +9 -0
  121. package/link/index.d.ts +1 -0
  122. package/map-marker/index.d.ts +6 -5
  123. package/menu/index.d.ts +7 -0
  124. package/menu/maybe-child-menu.js +1 -0
  125. package/menu/maybe-child-menu.js.flow +1 -0
  126. package/menu/types.js.flow +12 -0
  127. package/modal/index.d.ts +1 -1
  128. package/modal/types.js.flow +4 -1
  129. package/package.json +4 -3
  130. package/popover/index.d.ts +2 -1
  131. package/popover/popover.js +6 -5
  132. package/popover/popover.js.flow +11 -4
  133. package/popover/stateful-container.js +8 -2
  134. package/popover/stateful-container.js.flow +5 -0
  135. package/popover/types.js.flow +6 -1
  136. package/rating/emoticon-rating.js +2 -2
  137. package/rating/emoticon-rating.js.flow +4 -1
  138. package/rating/star-rating.js +2 -2
  139. package/rating/star-rating.js.flow +4 -1
  140. package/select/select-component.js +5 -5
  141. package/select/select-component.js.flow +5 -5
  142. package/select/styled-components.js +28 -4
  143. package/select/styled-components.js.flow +30 -2
  144. package/snackbar/index.d.ts +21 -16
  145. package/snackbar/snackbar-context.js +15 -4
  146. package/snackbar/snackbar-context.js.flow +15 -3
  147. package/table-semantic/styled-components.js +6 -4
  148. package/table-semantic/styled-components.js.flow +6 -4
  149. package/table-semantic/table-builder.js +3 -0
  150. package/table-semantic/table-builder.js.flow +3 -0
  151. package/themes/dark-theme/color-component-tokens.js +1 -1
  152. package/themes/dark-theme/color-component-tokens.js.flow +1 -1
  153. package/themes/light-theme/color-component-tokens.js +9 -9
  154. package/themes/light-theme/color-component-tokens.js.flow +9 -9
  155. package/themes/shared/lighting.js +5 -1
  156. package/themes/shared/lighting.js.flow +4 -0
  157. package/themes/types.js.flow +4 -0
  158. package/timepicker/index.d.ts +1 -0
  159. package/timepicker/timepicker.js +17 -11
  160. package/timepicker/timepicker.js.flow +31 -12
  161. package/timepicker/types.js.flow +10 -0
  162. package/tooltip/styled-components.js +8 -0
  163. package/tooltip/styled-components.js.flow +8 -0
  164. package/tooltip/tooltip.js +1 -0
  165. package/tooltip/tooltip.js.flow +6 -1
@@ -52,6 +52,9 @@ class StatefulContainer extends React.Component<
52
52
  if (this.props.onBlur) {
53
53
  this.props.onBlur(e);
54
54
  }
55
+ if (this.props.focusLock || this.props.autoFocus) {
56
+ return;
57
+ }
55
58
  this.close();
56
59
  };
57
60
 
@@ -168,6 +171,7 @@ class StatefulContainer extends React.Component<
168
171
  showArrow,
169
172
  triggerType,
170
173
  popoverMargin,
174
+ focusOptions,
171
175
  } = this.props;
172
176
 
173
177
  const popoverProps: PopoverPropsWithoutChildrenT = {
@@ -193,6 +197,7 @@ class StatefulContainer extends React.Component<
193
197
  showArrow,
194
198
  triggerType,
195
199
  popoverMargin,
200
+ focusOptions,
196
201
  };
197
202
 
198
203
  if (dismissOnClickOutside) {
@@ -83,6 +83,8 @@ export type BasePopoverPropsT = {
83
83
  onClick?: (e: Event) => mixed,
84
84
  /** Handler for 'Esc' keypress events */
85
85
  onFocus?: (e: Event) => mixed,
86
+ /** Pass FocusOptions for focusing (used as `HtmlElement.focus(focusOptions)`) */
87
+ focusOptions?: FocusOptions,
86
88
  /** Handler for mouseenter events on trigger element. */
87
89
  onMouseEnter?: (e: Event) => mixed,
88
90
  /** Number of milliseconds to wait before showing the popover after mouse enters the trigger element (for triggerType `hover`). */
@@ -104,7 +106,10 @@ export type BasePopoverPropsT = {
104
106
  /** If true, focus will shift back to the original element that triggered the popover
105
107
  * Be careful with elements that open the popover on focus (e.g. input) this will cause the popover to reopen on close!
106
108
  */
107
- returnFocus?: boolean,
109
+ returnFocus?:
110
+ | boolean
111
+ | FocusOptions
112
+ | ((returnTo: Element) => boolean | FocusOptions),
108
113
  /** Whether or not to show the arrow pointing from the popover to the trigger. */
109
114
  showArrow?: boolean,
110
115
  /** Whether to toggle the popover when trigger is clicked or hovered. */
@@ -222,8 +222,8 @@ var EmoticonRating = /*#__PURE__*/function (_React$Component) {
222
222
  return /*#__PURE__*/React.createElement(Root, _extends({
223
223
  "data-baseweb": "emoticon-rating",
224
224
  role: "radiogroup",
225
- onBlur: function onBlur() {
226
- return _this2.updatePreview(undefined);
225
+ onBlur: function onBlur(e) {
226
+ if (!e.currentTarget.contains(e.relatedTarget)) _this2.updatePreview(undefined);
227
227
  },
228
228
  onMouseLeave: function onMouseLeave() {
229
229
  return _this2.updatePreview(undefined);
@@ -135,7 +135,10 @@ class EmoticonRating extends React.Component<
135
135
  <Root
136
136
  data-baseweb="emoticon-rating"
137
137
  role="radiogroup"
138
- onBlur={() => this.updatePreview(undefined)}
138
+ onBlur={e => {
139
+ if (!e.currentTarget.contains(e.relatedTarget))
140
+ this.updatePreview(undefined);
141
+ }}
139
142
  onMouseLeave={() => this.updatePreview(undefined)}
140
143
  {...rootProps}
141
144
  >
@@ -225,8 +225,8 @@ var StarRating = /*#__PURE__*/function (_React$Component) {
225
225
  return /*#__PURE__*/React.createElement(Root, _extends({
226
226
  "data-baseweb": "star-rating",
227
227
  role: "radiogroup",
228
- onBlur: function onBlur() {
229
- return _this2.updatePreview(undefined);
228
+ onBlur: function onBlur(e) {
229
+ if (!e.currentTarget.contains(e.relatedTarget)) _this2.updatePreview(undefined);
230
230
  },
231
231
  onMouseLeave: function onMouseLeave() {
232
232
  return _this2.updatePreview(undefined);
@@ -133,7 +133,10 @@ class StarRating extends React.Component<StarRatingPropsT, RatingStateT> {
133
133
  <Root
134
134
  data-baseweb="star-rating"
135
135
  role="radiogroup"
136
- onBlur={() => this.updatePreview(undefined)}
136
+ onBlur={e => {
137
+ if (!e.currentTarget.contains(e.relatedTarget))
138
+ this.updatePreview(undefined);
139
+ }}
137
140
  onMouseLeave={() => this.updatePreview(undefined)}
138
141
  {...rootProps}
139
142
  >
@@ -180,7 +180,7 @@ var Select = /*#__PURE__*/function (_React$Component) {
180
180
  isPseudoFocused: false
181
181
  });
182
182
 
183
- _defineProperty(_assertThisInitialized(_this), "isMounted", false);
183
+ _defineProperty(_assertThisInitialized(_this), "isItMounted", false);
184
184
 
185
185
  _defineProperty(_assertThisInitialized(_this), "handleTouchOutside", function (event) {
186
186
  if (containsNode(_this.dropdown.current, event.target)) return;
@@ -328,7 +328,7 @@ var Select = /*#__PURE__*/function (_React$Component) {
328
328
  _this.props.onBlur(event);
329
329
  }
330
330
 
331
- if (_this.isMounted) {
331
+ if (_this.isItMounted) {
332
332
  _this.setState({
333
333
  isFocused: false,
334
334
  isOpen: false,
@@ -682,7 +682,7 @@ var Select = /*#__PURE__*/function (_React$Component) {
682
682
  this.focus();
683
683
  }
684
684
 
685
- this.isMounted = true;
685
+ this.isItMounted = true;
686
686
 
687
687
  if (this.props.methodsRef) {
688
688
  var methodsRef = this.props.methodsRef;
@@ -718,7 +718,7 @@ var Select = /*#__PURE__*/function (_React$Component) {
718
718
  document.removeEventListener('click', this.handleClickOutside);
719
719
  }
720
720
 
721
- this.isMounted = false;
721
+ this.isItMounted = false;
722
722
  }
723
723
  }, {
724
724
  key: "focus",
@@ -947,7 +947,6 @@ var Select = /*#__PURE__*/function (_React$Component) {
947
947
 
948
948
  var ariaLabel = this.props.multi ? 'Clear all' : 'Clear value';
949
949
  return /*#__PURE__*/React.createElement(ClearIcon, _extends({
950
- size: 16,
951
950
  title: ariaLabel,
952
951
  "aria-label": ariaLabel,
953
952
  onClick: this.clearValue,
@@ -1169,6 +1168,7 @@ var Select = /*#__PURE__*/function (_React$Component) {
1169
1168
  if (!ref) return;
1170
1169
  _this6.anchor = ref.anchorRef;
1171
1170
  },
1171
+ autoFocus: false,
1172
1172
  focusLock: false,
1173
1173
  mountNode: _this6.props.mountNode,
1174
1174
  onEsc: function onEsc() {
@@ -117,13 +117,13 @@ class Select extends React.Component<PropsT, SelectStateT> {
117
117
  isPseudoFocused: false,
118
118
  };
119
119
 
120
- isMounted: boolean = false;
120
+ isItMounted: boolean = false;
121
121
 
122
122
  componentDidMount() {
123
123
  if (this.props.autoFocus) {
124
124
  this.focus();
125
125
  }
126
- this.isMounted = true;
126
+ this.isItMounted = true;
127
127
 
128
128
  if (this.props.methodsRef) {
129
129
  const {methodsRef} = this.props;
@@ -157,7 +157,7 @@ class Select extends React.Component<PropsT, SelectStateT> {
157
157
  document.removeEventListener('touchstart', this.handleTouchOutside);
158
158
  document.removeEventListener('click', this.handleClickOutside);
159
159
  }
160
- this.isMounted = false;
160
+ this.isItMounted = false;
161
161
  }
162
162
 
163
163
  focus() {
@@ -319,7 +319,7 @@ class Select extends React.Component<PropsT, SelectStateT> {
319
319
  this.props.onBlur(event);
320
320
  }
321
321
 
322
- if (this.isMounted) {
322
+ if (this.isItMounted) {
323
323
  this.setState({
324
324
  isFocused: false,
325
325
  isOpen: false,
@@ -793,7 +793,6 @@ class Select extends React.Component<PropsT, SelectStateT> {
793
793
 
794
794
  return (
795
795
  <ClearIcon
796
- size={16}
797
796
  title={ariaLabel}
798
797
  aria-label={ariaLabel}
799
798
  onClick={this.clearValue}
@@ -1026,6 +1025,7 @@ class Select extends React.Component<PropsT, SelectStateT> {
1026
1025
  if (!ref) return;
1027
1026
  this.anchor = ref.anchorRef;
1028
1027
  }}
1028
+ autoFocus={false}
1029
1029
  focusLock={false}
1030
1030
  mountNode={this.props.mountNode}
1031
1031
  onEsc={() => this.closeMenu()}
@@ -342,26 +342,50 @@ function getSvgStyles(_ref4) {
342
342
  }
343
343
 
344
344
  var StyledSelectArrow = (0, _index.styled)('svg', function (props) {
345
+ var _sizes;
346
+
345
347
  var $theme = props.$theme,
346
- $disabled = props.$disabled;
348
+ $disabled = props.$disabled,
349
+ $size = props.$size;
347
350
  var colors = $theme.colors;
351
+ var sizes = (_sizes = {}, _defineProperty(_sizes, _constants.SIZE.mini, 16), _defineProperty(_sizes, _constants.SIZE.compact, 16), _defineProperty(_sizes, _constants.SIZE.default, 20), _defineProperty(_sizes, _constants.SIZE.large, 24), _sizes);
352
+ var size = sizes[_constants.SIZE.default];
353
+
354
+ if ($size) {
355
+ size = sizes[$size];
356
+ }
357
+
348
358
  return _objectSpread(_objectSpread({}, getSvgStyles({
349
359
  $theme: $theme
350
360
  })), {}, {
351
361
  color: $disabled ? colors.inputTextDisabled : colors.contentPrimary,
352
- cursor: $disabled ? 'not-allowed' : 'pointer'
362
+ cursor: $disabled ? 'not-allowed' : 'pointer',
363
+ height: "".concat(size, "px"),
364
+ width: "".concat(size, "px")
353
365
  });
354
366
  });
355
367
  exports.StyledSelectArrow = StyledSelectArrow;
356
368
  StyledSelectArrow.displayName = "StyledSelectArrow";
357
369
  var StyledClearIcon = (0, _index.styled)('svg', function (props) {
358
- var $theme = props.$theme;
370
+ var _sizes2;
371
+
372
+ var $theme = props.$theme,
373
+ $size = props.$size;
359
374
  var colors = $theme.colors;
375
+ var sizes = (_sizes2 = {}, _defineProperty(_sizes2, _constants.SIZE.mini, 15), _defineProperty(_sizes2, _constants.SIZE.compact, 15), _defineProperty(_sizes2, _constants.SIZE.default, 18), _defineProperty(_sizes2, _constants.SIZE.large, 22), _sizes2);
376
+ var size = sizes[_constants.SIZE.default];
377
+
378
+ if ($size) {
379
+ size = sizes[$size];
380
+ }
381
+
360
382
  return _objectSpread(_objectSpread({}, getSvgStyles({
361
383
  $theme: $theme
362
384
  })), {}, {
363
385
  color: colors.contentPrimary,
364
- cursor: 'pointer'
386
+ cursor: 'pointer',
387
+ height: "".concat(size, "px"),
388
+ width: "".concat(size, "px")
365
389
  });
366
390
  });
367
391
  exports.StyledClearIcon = StyledClearIcon;
@@ -425,22 +425,50 @@ function getSvgStyles({$theme}) {
425
425
  }
426
426
 
427
427
  export const StyledSelectArrow = styled<SharedStylePropsArgT>('svg', props => {
428
- const {$theme, $disabled} = props;
428
+ const {$theme, $disabled, $size} = props;
429
429
  const {colors} = $theme;
430
+
431
+ const sizes = {
432
+ [SIZE.mini]: 16,
433
+ [SIZE.compact]: 16,
434
+ [SIZE.default]: 20,
435
+ [SIZE.large]: 24,
436
+ };
437
+ let size = sizes[SIZE.default];
438
+ if ($size) {
439
+ size = sizes[$size];
440
+ }
441
+
430
442
  return {
431
443
  ...getSvgStyles({$theme}),
432
444
  color: $disabled ? colors.inputTextDisabled : colors.contentPrimary,
433
445
  cursor: $disabled ? 'not-allowed' : 'pointer',
446
+ height: `${size}px`,
447
+ width: `${size}px`,
434
448
  };
435
449
  });
436
450
 
437
451
  export const StyledClearIcon = styled<SharedStylePropsArgT>('svg', props => {
438
- const {$theme} = props;
452
+ const {$theme, $size} = props;
439
453
  const {colors} = $theme;
454
+
455
+ const sizes = {
456
+ [SIZE.mini]: 15,
457
+ [SIZE.compact]: 15,
458
+ [SIZE.default]: 18,
459
+ [SIZE.large]: 22,
460
+ };
461
+ let size = sizes[SIZE.default];
462
+ if ($size) {
463
+ size = sizes[$size];
464
+ }
465
+
440
466
  return {
441
467
  ...getSvgStyles({$theme}),
442
468
  color: colors.contentPrimary,
443
469
  cursor: 'pointer',
470
+ height: `${size}px`,
471
+ width: `${size}px`,
444
472
  };
445
473
  });
446
474
 
@@ -1,22 +1,27 @@
1
1
  import * as React from 'react';
2
2
 
3
3
  import {Override} from '../overrides';
4
- import {DURATION, PLACEMENT} from './constants.js';
5
- export {DURATION, PLACEMENT} from './constants.js';
6
-
7
- export type DurationT =
8
- | typeof DURATION.infinite
9
- | typeof DURATION.short
10
- | typeof DURATION.medium
11
- | typeof DURATION.long;
12
-
13
- export type PlacementT =
14
- | typeof PLACEMENT.topLeft
15
- | typeof PLACEMENT.top
16
- | typeof PLACEMENT.topRight
17
- | typeof PLACEMENT.bottomLeft
18
- | typeof PLACEMENT.bottom
19
- | typeof PLACEMENT.bottomRight;
4
+
5
+ declare const DURATION: {
6
+ infinite: number;
7
+ short: number;
8
+ medium: number;
9
+ long: number;
10
+ };
11
+
12
+ declare const PLACEMENT: {
13
+ topLeft: 'topLeft';
14
+ top: 'top';
15
+ topRight: 'topRight';
16
+ bottomRight: 'bottomRight';
17
+ bottom: 'bottom';
18
+ bottomLeft: 'bottomLeft';
19
+ };
20
+ export {DURATION, PLACEMENT};
21
+
22
+ export type DurationT = (typeof DURATION)[keyof typeof DURATION];
23
+
24
+ export type PlacementT = (typeof PLACEMENT)[keyof typeof PLACEMENT];
20
25
 
21
26
  export type SnackbarElementOverridesT = {
22
27
  Root?: Override<any>;
@@ -81,6 +81,14 @@ function useSnackbar() {
81
81
  };
82
82
  }
83
83
 
84
+ function usePrevious(value) {
85
+ var ref = React.useRef();
86
+ React.useEffect(function () {
87
+ ref.current = value;
88
+ });
89
+ return ref.current;
90
+ }
91
+
84
92
  function SnackbarProvider(_ref) {
85
93
  var children = _ref.children,
86
94
  _ref$overrides = _ref.overrides,
@@ -115,10 +123,6 @@ function SnackbarProvider(_ref) {
115
123
  function enqueue(elementProps) {
116
124
  var duration = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultDuration;
117
125
  setSnackbars(function (prev) {
118
- if (prev.length === 0) {
119
- enter(duration);
120
- }
121
-
122
126
  return [].concat(_toConsumableArray(prev), [{
123
127
  elementProps: elementProps,
124
128
  duration: duration
@@ -126,6 +130,13 @@ function SnackbarProvider(_ref) {
126
130
  });
127
131
  }
128
132
 
133
+ var prevSnackbars = usePrevious(snackbars) || [];
134
+ React.useEffect(function () {
135
+ if (prevSnackbars.length === 0 && snackbars.length >= 1) {
136
+ enter(snackbars[0].duration);
137
+ }
138
+ }, [snackbars, prevSnackbars]);
139
+
129
140
  function dequeue() {
130
141
  setContainerHeight(0);
131
142
  setSnackbars(function (prev) {
@@ -43,6 +43,14 @@ export function useSnackbar() {
43
43
  return {enqueue: context.enqueue, dequeue: context.dequeue};
44
44
  }
45
45
 
46
+ function usePrevious(value) {
47
+ const ref = React.useRef();
48
+ React.useEffect(() => {
49
+ ref.current = value;
50
+ });
51
+ return ref.current;
52
+ }
53
+
46
54
  export default function SnackbarProvider({
47
55
  children,
48
56
  overrides = {},
@@ -61,13 +69,17 @@ export default function SnackbarProvider({
61
69
 
62
70
  function enqueue(elementProps, duration = defaultDuration) {
63
71
  setSnackbars(prev => {
64
- if (prev.length === 0) {
65
- enter(duration);
66
- }
67
72
  return [...prev, {elementProps, duration}];
68
73
  });
69
74
  }
70
75
 
76
+ const prevSnackbars = usePrevious(snackbars) || [];
77
+ React.useEffect(() => {
78
+ if (prevSnackbars.length === 0 && snackbars.length >= 1) {
79
+ enter(snackbars[0].duration);
80
+ }
81
+ }, [snackbars, prevSnackbars]);
82
+
71
83
  function dequeue() {
72
84
  setContainerHeight(0);
73
85
 
@@ -81,7 +81,8 @@ var StyledTableHeadCell = (0, _index.styled)('th', function (_ref5) {
81
81
 
82
82
  var $theme = _ref5.$theme,
83
83
  $size = _ref5.$size,
84
- $divider = _ref5.$divider;
84
+ $divider = _ref5.$divider,
85
+ $isNumeric = _ref5.$isNumeric;
85
86
  var borderDir = $theme.direction === 'rtl' ? 'Left' : 'Right';
86
87
  var borderVertical = $divider === _constants.DIVIDER.grid || $divider === _constants.DIVIDER.vertical;
87
88
  var padding = sizeToCellPadding($theme, $size);
@@ -94,7 +95,7 @@ var StyledTableHeadCell = (0, _index.styled)('th', function (_ref5) {
94
95
  paddingLeft: padding,
95
96
  backgroundColor: $theme.colors.tableHeadBackgroundColor,
96
97
  color: $theme.colors.contentPrimary,
97
- textAlign: $theme.direction === 'rtl' ? 'right' : 'left',
98
+ textAlign: $theme.direction === 'rtl' || $isNumeric ? 'right' : 'left',
98
99
  verticalAlign: 'top',
99
100
  whiteSpace: 'nowrap',
100
101
  zIndex: 1
@@ -182,14 +183,15 @@ var StyledTableBodyCell = (0, _index.styled)('td', function (_ref12) {
182
183
  $size = _ref12.$size,
183
184
  $divider = _ref12.$divider,
184
185
  $isNumeric = _ref12.$isNumeric,
185
- $isLastRow = _ref12.$isLastRow;
186
+ $isLastRow = _ref12.$isLastRow,
187
+ $isSortable = _ref12.$isSortable;
186
188
  var borderDir = $theme.direction === 'rtl' ? 'Left' : 'Right';
187
189
  var borderVertical = $divider === _constants.DIVIDER.vertical || $divider === _constants.DIVIDER.grid;
188
190
  var borderHorizontal = $divider === undefined || $divider === _constants.DIVIDER.horizontal || $divider === _constants.DIVIDER.grid;
189
191
  var padding = sizeToCellPadding($theme, $size);
190
192
  return _objectSpread(_objectSpread({}, $theme.typography.font200), {}, {
191
193
  paddingTop: padding,
192
- paddingRight: padding,
194
+ paddingRight: !$isSortable ? padding : $theme.sizing.scale1000,
193
195
  paddingBottom: padding,
194
196
  paddingLeft: padding,
195
197
  color: $theme.colors.contentPrimary,
@@ -78,12 +78,13 @@ type StyledTableHeadCellPropsT = {
78
78
  $col?: {},
79
79
  $colIndex?: ?number,
80
80
  $divider?: DividerT,
81
+ $isNumeric?: ?boolean,
81
82
  $size?: SizeT,
82
83
  };
83
84
 
84
85
  export const StyledTableHeadCell = styled<StyledTableHeadCellPropsT>(
85
86
  'th',
86
- ({$theme, $size, $divider}) => {
87
+ ({$theme, $size, $divider, $isNumeric}) => {
87
88
  const borderDir: string = $theme.direction === 'rtl' ? 'Left' : 'Right';
88
89
  const borderVertical =
89
90
  $divider === DIVIDER.grid || $divider === DIVIDER.vertical;
@@ -99,7 +100,7 @@ export const StyledTableHeadCell = styled<StyledTableHeadCellPropsT>(
99
100
  paddingLeft: padding,
100
101
  backgroundColor: $theme.colors.tableHeadBackgroundColor,
101
102
  color: $theme.colors.contentPrimary,
102
- textAlign: $theme.direction === 'rtl' ? 'right' : 'left',
103
+ textAlign: $theme.direction === 'rtl' || $isNumeric ? 'right' : 'left',
103
104
  verticalAlign: 'top',
104
105
  whiteSpace: 'nowrap',
105
106
  zIndex: 1,
@@ -215,11 +216,12 @@ type StyledTableBodyCellPropsT = {
215
216
  $size?: SizeT,
216
217
  $isNumeric?: ?boolean,
217
218
  $isLastRow?: ?boolean,
219
+ $isSortable?: ?boolean,
218
220
  };
219
221
 
220
222
  export const StyledTableBodyCell = styled<StyledTableBodyCellPropsT>(
221
223
  'td',
222
- ({$theme, $size, $divider, $isNumeric, $isLastRow}) => {
224
+ ({$theme, $size, $divider, $isNumeric, $isLastRow, $isSortable}) => {
223
225
  const borderDir: string = $theme.direction === 'rtl' ? 'Left' : 'Right';
224
226
  const borderVertical =
225
227
  $divider === DIVIDER.vertical || $divider === DIVIDER.grid;
@@ -232,7 +234,7 @@ export const StyledTableBodyCell = styled<StyledTableBodyCellPropsT>(
232
234
  return {
233
235
  ...$theme.typography.font200,
234
236
  paddingTop: padding,
235
- paddingRight: padding,
237
+ paddingRight: !$isSortable ? padding : $theme.sizing.scale1000,
236
238
  paddingBottom: padding,
237
239
  paddingLeft: padding,
238
240
  color: $theme.colors.contentPrimary,
@@ -208,6 +208,7 @@ var TableBuilder = /*#__PURE__*/function (_React$Component) {
208
208
  $col: col,
209
209
  $colIndex: colIndex,
210
210
  $divider: divider,
211
+ $isNumeric: col.numeric,
211
212
  $size: size
212
213
  }, tableHeadCellProps, colTableHeadCellProps), col.header);
213
214
  }
@@ -250,6 +251,7 @@ var TableBuilder = /*#__PURE__*/function (_React$Component) {
250
251
  $col: col,
251
252
  $colIndex: colIndex,
252
253
  $divider: divider,
254
+ $isNumeric: col.numeric,
253
255
  role: "button",
254
256
  tabIndex: "0",
255
257
  "aria-label": "".concat(col.tableHeadAriaLabel || col.header, ", ").concat(sortLabel),
@@ -283,6 +285,7 @@ var TableBuilder = /*#__PURE__*/function (_React$Component) {
283
285
  $rowIndex: rowIndex,
284
286
  $isNumeric: col.numeric,
285
287
  $isLastRow: rowIndex === lastRowindex,
288
+ $isSortable: col.sortable,
286
289
  $size: size
287
290
  }, tableBodyCellProps, colTableBodyCellProps), col.children(row, rowIndex));
288
291
  }
@@ -153,6 +153,7 @@ export default class TableBuilder<T> extends React.Component<
153
153
  $col={col}
154
154
  $colIndex={colIndex}
155
155
  $divider={divider}
156
+ $isNumeric={col.numeric}
156
157
  $size={size}
157
158
  {...tableHeadCellProps}
158
159
  {...colTableHeadCellProps}
@@ -211,6 +212,7 @@ export default class TableBuilder<T> extends React.Component<
211
212
  $col={col}
212
213
  $colIndex={colIndex}
213
214
  $divider={divider}
215
+ $isNumeric={col.numeric}
214
216
  role="button"
215
217
  tabIndex="0"
216
218
  aria-label={`${col.tableHeadAriaLabel || col.header}, ${sortLabel}`}
@@ -249,6 +251,7 @@ export default class TableBuilder<T> extends React.Component<
249
251
  $rowIndex={rowIndex}
250
252
  $isNumeric={col.numeric}
251
253
  $isLastRow={rowIndex === lastRowindex}
254
+ $isSortable={col.sortable}
252
255
  $size={size}
253
256
  {...tableBodyCellProps}
254
257
  {...colTableBodyCellProps}
@@ -103,7 +103,7 @@ var _default = function _default() {
103
103
  linkActive: themePrimitives.primary300,
104
104
  // List
105
105
  listHeaderFill: themePrimitives.mono600,
106
- listBodyFill: themePrimitives.mono700,
106
+ listBodyFill: themePrimitives.mono800,
107
107
  listIconFill: themePrimitives.mono100,
108
108
  listBorder: themePrimitives.mono500,
109
109
  // ProgressSteps
@@ -107,7 +107,7 @@ export default (
107
107
 
108
108
  // List
109
109
  listHeaderFill: themePrimitives.mono600,
110
- listBodyFill: themePrimitives.mono700,
110
+ listBodyFill: themePrimitives.mono800,
111
111
  listIconFill: themePrimitives.mono100,
112
112
  listBorder: themePrimitives.mono500,
113
113
 
@@ -32,32 +32,32 @@ var _default = function _default() {
32
32
  buttonPrimaryActive: themePrimitives.primary600,
33
33
  buttonPrimarySelectedFill: themePrimitives.primary600,
34
34
  buttonPrimarySelectedText: themePrimitives.white,
35
- buttonPrimarySpinnerForeground: themePrimitives.primary50,
36
- buttonPrimarySpinnerBackground: themePrimitives.primary500,
35
+ buttonPrimarySpinnerForeground: themePrimitives.accent,
36
+ buttonPrimarySpinnerBackground: themePrimitives.primaryB,
37
37
  buttonSecondaryFill: themePrimitives.primary100,
38
38
  buttonSecondaryText: themePrimitives.primary,
39
39
  buttonSecondaryHover: themePrimitives.primary200,
40
40
  buttonSecondaryActive: themePrimitives.primary300,
41
41
  buttonSecondarySelectedFill: themePrimitives.primary300,
42
42
  buttonSecondarySelectedText: themePrimitives.primary,
43
- buttonSecondarySpinnerForeground: themePrimitives.primary700,
44
- buttonSecondarySpinnerBackground: themePrimitives.primary300,
43
+ buttonSecondarySpinnerForeground: themePrimitives.accent,
44
+ buttonSecondarySpinnerBackground: themePrimitives.primaryB,
45
45
  buttonTertiaryFill: 'transparent',
46
46
  buttonTertiaryText: themePrimitives.primary,
47
47
  buttonTertiaryHover: themePrimitives.primary50,
48
48
  buttonTertiaryActive: themePrimitives.primary100,
49
49
  buttonTertiarySelectedFill: themePrimitives.primary100,
50
50
  buttonTertiarySelectedText: themePrimitives.primary,
51
- buttonTertiarySpinnerForeground: themePrimitives.primary700,
52
- buttonTertiarySpinnerBackground: themePrimitives.primary300,
51
+ buttonTertiarySpinnerForeground: themePrimitives.accent,
52
+ buttonTertiarySpinnerBackground: themePrimitives.primary100,
53
53
  buttonMinimalFill: 'transparent',
54
54
  buttonMinimalText: themePrimitives.primary,
55
55
  buttonMinimalHover: themePrimitives.primary50,
56
56
  buttonMinimalActive: themePrimitives.primary100,
57
57
  buttonMinimalSelectedFill: themePrimitives.primary100,
58
58
  buttonMinimalSelectedText: themePrimitives.primary,
59
- buttonMinimalSpinnerForeground: themePrimitives.primary700,
60
- buttonMinimalSpinnerBackground: themePrimitives.primary300,
59
+ buttonMinimalSpinnerForeground: themePrimitives.accent,
60
+ buttonMinimalSpinnerBackground: themePrimitives.primary100,
61
61
  buttonDisabledFill: themePrimitives.mono200,
62
62
  buttonDisabledText: themePrimitives.mono600,
63
63
  buttonDisabledSpinnerForeground: themePrimitives.mono600,
@@ -103,7 +103,7 @@ var _default = function _default() {
103
103
  linkActive: themePrimitives.primary500,
104
104
  // List
105
105
  listHeaderFill: themePrimitives.white,
106
- listBodyFill: themePrimitives.mono200,
106
+ listBodyFill: themePrimitives.white,
107
107
  listIconFill: themePrimitives.mono500,
108
108
  listBorder: themePrimitives.mono500,
109
109
  // ProgressSteps