baseui 10.3.0 → 10.7.0

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 (213) 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/data-table/data-table.js +13 -3
  13. package/data-table/data-table.js.flow +20 -4
  14. package/data-table/types.js.flow +2 -1
  15. package/datepicker/calendar-header.js +255 -109
  16. package/datepicker/calendar-header.js.flow +282 -145
  17. package/datepicker/calendar.js +6 -1
  18. package/datepicker/calendar.js.flow +5 -1
  19. package/datepicker/constants.js +9 -2
  20. package/datepicker/constants.js.flow +7 -0
  21. package/datepicker/datepicker.js +135 -73
  22. package/datepicker/datepicker.js.flow +161 -62
  23. package/datepicker/day.js +2 -0
  24. package/datepicker/day.js.flow +2 -0
  25. package/datepicker/index.d.ts +8 -0
  26. package/datepicker/month.js +4 -0
  27. package/datepicker/month.js.flow +3 -0
  28. package/datepicker/styled-components.js +116 -56
  29. package/datepicker/styled-components.js.flow +101 -36
  30. package/datepicker/types.js.flow +18 -1
  31. package/datepicker/utils/calendar-header-helpers.js +51 -0
  32. package/datepicker/utils/calendar-header-helpers.js.flow +53 -0
  33. package/datepicker/utils/date-helpers.js +1 -1
  34. package/datepicker/utils/date-helpers.js.flow +1 -1
  35. package/datepicker/week.js +1 -0
  36. package/datepicker/week.js.flow +1 -0
  37. package/dnd-list/index.js.flow +2 -1
  38. package/dnd-list/list.js +1 -2
  39. package/dnd-list/list.js.flow +1 -1
  40. package/dnd-list/styled-components.js +1 -1
  41. package/dnd-list/styled-components.js.flow +1 -0
  42. package/drawer/close-icon.js +3 -2
  43. package/drawer/close-icon.js.flow +2 -2
  44. package/drawer/drawer.js +5 -2
  45. package/drawer/drawer.js.flow +2 -2
  46. package/es/app-nav-bar/user-menu.js +1 -0
  47. package/es/button/styled-components.js +1 -1
  48. package/es/card/styled-components.js +0 -1
  49. package/es/combobox/combobox.js +5 -1
  50. package/es/data-table/column-datetime.js +2 -0
  51. package/es/data-table/data-table.js +13 -3
  52. package/es/datepicker/calendar-header.js +204 -93
  53. package/es/datepicker/calendar.js +7 -2
  54. package/es/datepicker/constants.js +6 -1
  55. package/es/datepicker/datepicker.js +70 -42
  56. package/es/datepicker/day.js +2 -0
  57. package/es/datepicker/month.js +3 -0
  58. package/es/datepicker/styled-components.js +98 -37
  59. package/es/datepicker/types.js +1 -1
  60. package/es/datepicker/utils/calendar-header-helpers.js +34 -0
  61. package/es/datepicker/utils/date-helpers.js +1 -1
  62. package/es/datepicker/week.js +1 -0
  63. package/es/dnd-list/index.js +2 -1
  64. package/es/dnd-list/list.js +1 -2
  65. package/es/dnd-list/styled-components.js +1 -0
  66. package/es/drawer/close-icon.js +3 -2
  67. package/es/drawer/drawer.js +5 -2
  68. package/es/helper/helper.js +1 -0
  69. package/es/layer/layer.js +8 -0
  70. package/es/list/list-heading.js +17 -6
  71. package/es/map-marker/constants.js +69 -0
  72. package/es/map-marker/fixed-marker.js +98 -0
  73. package/es/map-marker/floating-marker.js +65 -0
  74. package/es/map-marker/index.js +9 -0
  75. package/es/map-marker/pin-head.js +108 -0
  76. package/es/map-marker/styled-components.js +156 -0
  77. package/es/map-marker/types.js +8 -0
  78. package/es/menu/maybe-child-menu.js +1 -0
  79. package/es/popover/popover.js +6 -5
  80. package/es/popover/stateful-container.js +8 -2
  81. package/es/rating/emoticon-rating.js +3 -1
  82. package/es/rating/star-rating.js +3 -1
  83. package/es/select/select-component.js +20 -5
  84. package/es/select/styled-components.js +34 -4
  85. package/es/snackbar/snackbar-context.js +16 -4
  86. package/es/spinner/styled-components.js +1 -1
  87. package/es/table-semantic/styled-components.js +6 -4
  88. package/es/table-semantic/table-builder.js +3 -0
  89. package/es/themes/dark-theme/color-component-tokens.js +1 -1
  90. package/es/themes/light-theme/color-component-tokens.js +9 -9
  91. package/es/themes/shared/lighting.js +5 -1
  92. package/es/timepicker/timepicker.js +16 -11
  93. package/es/tooltip/styled-components.js +8 -0
  94. package/es/tooltip/tooltip.js +1 -0
  95. package/esm/app-nav-bar/user-menu.js +1 -0
  96. package/esm/button/styled-components.js +1 -1
  97. package/esm/card/styled-components.js +0 -1
  98. package/esm/combobox/combobox.js +5 -1
  99. package/esm/data-table/column-datetime.js +2 -0
  100. package/esm/data-table/data-table.js +13 -3
  101. package/esm/datepicker/calendar-header.js +255 -110
  102. package/esm/datepicker/calendar.js +7 -2
  103. package/esm/datepicker/constants.js +6 -1
  104. package/esm/datepicker/datepicker.js +136 -74
  105. package/esm/datepicker/day.js +2 -0
  106. package/esm/datepicker/month.js +3 -0
  107. package/esm/datepicker/styled-components.js +112 -55
  108. package/esm/datepicker/types.js +1 -1
  109. package/esm/datepicker/utils/calendar-header-helpers.js +45 -0
  110. package/esm/datepicker/utils/date-helpers.js +1 -1
  111. package/esm/datepicker/week.js +1 -0
  112. package/esm/dnd-list/index.js +2 -1
  113. package/esm/dnd-list/list.js +1 -2
  114. package/esm/dnd-list/styled-components.js +1 -1
  115. package/esm/drawer/close-icon.js +3 -2
  116. package/esm/drawer/drawer.js +5 -2
  117. package/esm/helper/helper.js +1 -0
  118. package/esm/layer/layer.js +8 -0
  119. package/esm/list/list-heading.js +17 -6
  120. package/esm/map-marker/constants.js +62 -0
  121. package/esm/map-marker/fixed-marker.js +137 -0
  122. package/esm/map-marker/floating-marker.js +94 -0
  123. package/esm/map-marker/index.js +9 -0
  124. package/esm/map-marker/pin-head.js +144 -0
  125. package/esm/map-marker/styled-components.js +168 -0
  126. package/esm/map-marker/types.js +8 -0
  127. package/esm/menu/maybe-child-menu.js +1 -0
  128. package/esm/popover/popover.js +6 -5
  129. package/esm/popover/stateful-container.js +8 -2
  130. package/esm/rating/emoticon-rating.js +2 -2
  131. package/esm/rating/star-rating.js +2 -2
  132. package/esm/select/select-component.js +19 -5
  133. package/esm/select/styled-components.js +28 -4
  134. package/esm/snackbar/snackbar-context.js +16 -4
  135. package/esm/spinner/styled-components.js +1 -1
  136. package/esm/table-semantic/styled-components.js +6 -4
  137. package/esm/table-semantic/table-builder.js +3 -0
  138. package/esm/themes/dark-theme/color-component-tokens.js +1 -1
  139. package/esm/themes/light-theme/color-component-tokens.js +9 -9
  140. package/esm/themes/shared/lighting.js +5 -1
  141. package/esm/timepicker/timepicker.js +17 -11
  142. package/esm/tooltip/styled-components.js +8 -0
  143. package/esm/tooltip/tooltip.js +1 -0
  144. package/helper/helper.js +1 -0
  145. package/helper/helper.js.flow +1 -0
  146. package/layer/layer.js +8 -0
  147. package/layer/layer.js.flow +9 -0
  148. package/link/index.d.ts +1 -0
  149. package/list/index.d.ts +36 -0
  150. package/list/list-heading.js +24 -7
  151. package/list/list-heading.js.flow +17 -8
  152. package/map-marker/constants.js +82 -0
  153. package/map-marker/constants.js.flow +74 -0
  154. package/map-marker/fixed-marker.js +152 -0
  155. package/map-marker/fixed-marker.js.flow +137 -0
  156. package/map-marker/floating-marker.js +109 -0
  157. package/map-marker/floating-marker.js.flow +102 -0
  158. package/map-marker/index.d.ts +105 -0
  159. package/map-marker/index.js +55 -0
  160. package/map-marker/index.js.flow +23 -0
  161. package/map-marker/package.json +4 -0
  162. package/map-marker/pin-head.js +159 -0
  163. package/map-marker/pin-head.js.flow +155 -0
  164. package/map-marker/styled-components.js +184 -0
  165. package/map-marker/styled-components.js.flow +177 -0
  166. package/map-marker/types.js +11 -0
  167. package/map-marker/types.js.flow +114 -0
  168. package/menu/index.d.ts +7 -0
  169. package/menu/maybe-child-menu.js +1 -0
  170. package/menu/maybe-child-menu.js.flow +1 -0
  171. package/menu/types.js.flow +12 -0
  172. package/modal/index.d.ts +1 -1
  173. package/modal/types.js.flow +4 -1
  174. package/package.json +5 -3
  175. package/popover/index.d.ts +2 -1
  176. package/popover/popover.js +6 -5
  177. package/popover/popover.js.flow +11 -4
  178. package/popover/stateful-container.js +8 -2
  179. package/popover/stateful-container.js.flow +5 -0
  180. package/popover/types.js.flow +6 -1
  181. package/rating/emoticon-rating.js +2 -2
  182. package/rating/emoticon-rating.js.flow +4 -1
  183. package/rating/star-rating.js +2 -2
  184. package/rating/star-rating.js.flow +4 -1
  185. package/select/select-component.js +19 -5
  186. package/select/select-component.js.flow +19 -5
  187. package/select/styled-components.js +28 -4
  188. package/select/styled-components.js.flow +30 -2
  189. package/select/types.js.flow +9 -0
  190. package/snackbar/index.d.ts +21 -16
  191. package/snackbar/snackbar-context.js +15 -4
  192. package/snackbar/snackbar-context.js.flow +15 -3
  193. package/spinner/styled-components.js +1 -1
  194. package/spinner/styled-components.js.flow +1 -1
  195. package/table-semantic/styled-components.js +6 -4
  196. package/table-semantic/styled-components.js.flow +6 -4
  197. package/table-semantic/table-builder.js +3 -0
  198. package/table-semantic/table-builder.js.flow +3 -0
  199. package/themes/dark-theme/color-component-tokens.js +1 -1
  200. package/themes/dark-theme/color-component-tokens.js.flow +1 -1
  201. package/themes/light-theme/color-component-tokens.js +9 -9
  202. package/themes/light-theme/color-component-tokens.js.flow +9 -9
  203. package/themes/shared/lighting.js +5 -1
  204. package/themes/shared/lighting.js.flow +4 -0
  205. package/themes/types.js.flow +4 -0
  206. package/timepicker/index.d.ts +1 -0
  207. package/timepicker/timepicker.js +17 -11
  208. package/timepicker/timepicker.js.flow +31 -12
  209. package/timepicker/types.js.flow +10 -0
  210. package/tooltip/styled-components.js +8 -0
  211. package/tooltip/styled-components.js.flow +8 -0
  212. package/tooltip/tooltip.js +1 -0
  213. package/tooltip/tooltip.js.flow +6 -1
@@ -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,14 @@ var Select = /*#__PURE__*/function (_React$Component) {
682
682
  this.focus();
683
683
  }
684
684
 
685
- this.isMounted = true;
685
+ this.isItMounted = true;
686
+
687
+ if (this.props.methodsRef) {
688
+ var methodsRef = this.props.methodsRef;
689
+ methodsRef.current = {
690
+ setDropdownOpen: this.handleDropdownOpen.bind(this)
691
+ };
692
+ }
686
693
  }
687
694
  }, {
688
695
  key: "componentDidUpdate",
@@ -711,13 +718,20 @@ var Select = /*#__PURE__*/function (_React$Component) {
711
718
  document.removeEventListener('click', this.handleClickOutside);
712
719
  }
713
720
 
714
- this.isMounted = false;
721
+ this.isItMounted = false;
715
722
  }
716
723
  }, {
717
724
  key: "focus",
718
725
  value: function focus() {
719
726
  if (!this.input) return;
720
727
  this.input.focus();
728
+ }
729
+ }, {
730
+ key: "handleDropdownOpen",
731
+ value: function handleDropdownOpen(nextOpenState) {
732
+ this.setState({
733
+ isOpen: nextOpenState
734
+ });
721
735
  } // Handle touch outside on mobile to dismiss menu, ensures that the
722
736
  // touch target is not within the anchor DOM node.
723
737
 
@@ -933,7 +947,6 @@ var Select = /*#__PURE__*/function (_React$Component) {
933
947
 
934
948
  var ariaLabel = this.props.multi ? 'Clear all' : 'Clear value';
935
949
  return /*#__PURE__*/React.createElement(ClearIcon, _extends({
936
- size: 16,
937
950
  title: ariaLabel,
938
951
  "aria-label": ariaLabel,
939
952
  onClick: this.clearValue,
@@ -1155,6 +1168,7 @@ var Select = /*#__PURE__*/function (_React$Component) {
1155
1168
  if (!ref) return;
1156
1169
  _this6.anchor = ref.anchorRef;
1157
1170
  },
1171
+ autoFocus: false,
1158
1172
  focusLock: false,
1159
1173
  mountNode: _this6.props.mountNode,
1160
1174
  onEsc: function onEsc() {
@@ -117,13 +117,21 @@ 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
+
128
+ if (this.props.methodsRef) {
129
+ const {methodsRef} = this.props;
130
+
131
+ methodsRef.current = {
132
+ setDropdownOpen: this.handleDropdownOpen.bind(this),
133
+ };
134
+ }
127
135
  }
128
136
 
129
137
  componentDidUpdate(prevProps: PropsT, prevState: SelectStateT) {
@@ -149,7 +157,7 @@ class Select extends React.Component<PropsT, SelectStateT> {
149
157
  document.removeEventListener('touchstart', this.handleTouchOutside);
150
158
  document.removeEventListener('click', this.handleClickOutside);
151
159
  }
152
- this.isMounted = false;
160
+ this.isItMounted = false;
153
161
  }
154
162
 
155
163
  focus() {
@@ -157,6 +165,12 @@ class Select extends React.Component<PropsT, SelectStateT> {
157
165
  this.input.focus();
158
166
  }
159
167
 
168
+ handleDropdownOpen(nextOpenState: boolean) {
169
+ this.setState({
170
+ isOpen: nextOpenState,
171
+ });
172
+ }
173
+
160
174
  // Handle touch outside on mobile to dismiss menu, ensures that the
161
175
  // touch target is not within the anchor DOM node.
162
176
  handleTouchOutside = (event: TouchEvent) => {
@@ -305,7 +319,7 @@ class Select extends React.Component<PropsT, SelectStateT> {
305
319
  this.props.onBlur(event);
306
320
  }
307
321
 
308
- if (this.isMounted) {
322
+ if (this.isItMounted) {
309
323
  this.setState({
310
324
  isFocused: false,
311
325
  isOpen: false,
@@ -779,7 +793,6 @@ class Select extends React.Component<PropsT, SelectStateT> {
779
793
 
780
794
  return (
781
795
  <ClearIcon
782
- size={16}
783
796
  title={ariaLabel}
784
797
  aria-label={ariaLabel}
785
798
  onClick={this.clearValue}
@@ -1012,6 +1025,7 @@ class Select extends React.Component<PropsT, SelectStateT> {
1012
1025
  if (!ref) return;
1013
1026
  this.anchor = ref.anchorRef;
1014
1027
  }}
1028
+ autoFocus={false}
1015
1029
  focusLock={false}
1016
1030
  mountNode={this.props.mountNode}
1017
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
 
@@ -72,6 +72,13 @@ export type OverridesDropdownT = {
72
72
  StatefulMenu?: OverrideT,
73
73
  };
74
74
 
75
+ type ImperativeFnsT = {|
76
+ setDropdownOpen: boolean => mixed,
77
+ |};
78
+ export type MethodsRefT = {
79
+ current: ImperativeFnsT | null,
80
+ };
81
+
75
82
  export type PropsT = {
76
83
  'aria-label': ?string,
77
84
  'aria-describedby': ?string,
@@ -134,6 +141,8 @@ export type PropsT = {
134
141
  maxDropdownHeight: string,
135
142
  /** Defines if multiple options can be selected. */
136
143
  multi: boolean,
144
+ /** Handle for accessing internal methods. */
145
+ methodsRef?: MethodsRefT,
137
146
  /** Message to be displayed if no options is found for a search query. */
138
147
  noResultsMsg?: React.Node,
139
148
  onBlur: (e: Event) => mixed,
@@ -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
 
@@ -59,7 +59,7 @@ var StyledActivePath = (0, _index.styled)('path', function (props) {
59
59
 
60
60
  exports.StyledActivePath = StyledActivePath;
61
61
  StyledActivePath.displayName = "StyledActivePath";
62
- var StyledSpinnerNext = (0, _index.styled)('div', function (_ref) {
62
+ var StyledSpinnerNext = (0, _index.styled)('i', function (_ref) {
63
63
  var $theme = _ref.$theme,
64
64
  _ref$$size = _ref.$size,
65
65
  $size = _ref$$size === void 0 ? _constants.SIZE.medium : _ref$$size;
@@ -51,7 +51,7 @@ export const StyledActivePath = styled<StylePropsT>('path', props => ({
51
51
 
52
52
  // TODO(v11): Replace Spinner with SpinnerNext
53
53
  export const StyledSpinnerNext = styled<{$size?: SizeT}>(
54
- 'div',
54
+ 'i',
55
55
  ({$theme, $size = SIZE.medium}) => {
56
56
  const borderWidth = {
57
57
  large: $theme.sizing.scale300,
@@ -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
@@ -25,8 +25,8 @@ export default (
25
25
  buttonPrimaryActive: themePrimitives.primary600,
26
26
  buttonPrimarySelectedFill: themePrimitives.primary600,
27
27
  buttonPrimarySelectedText: themePrimitives.white,
28
- buttonPrimarySpinnerForeground: themePrimitives.primary50,
29
- buttonPrimarySpinnerBackground: themePrimitives.primary500,
28
+ buttonPrimarySpinnerForeground: themePrimitives.accent,
29
+ buttonPrimarySpinnerBackground: themePrimitives.primaryB,
30
30
 
31
31
  buttonSecondaryFill: themePrimitives.primary100,
32
32
  buttonSecondaryText: themePrimitives.primary,
@@ -34,8 +34,8 @@ export default (
34
34
  buttonSecondaryActive: themePrimitives.primary300,
35
35
  buttonSecondarySelectedFill: themePrimitives.primary300,
36
36
  buttonSecondarySelectedText: themePrimitives.primary,
37
- buttonSecondarySpinnerForeground: themePrimitives.primary700,
38
- buttonSecondarySpinnerBackground: themePrimitives.primary300,
37
+ buttonSecondarySpinnerForeground: themePrimitives.accent,
38
+ buttonSecondarySpinnerBackground: themePrimitives.primaryB,
39
39
 
40
40
  buttonTertiaryFill: 'transparent',
41
41
  buttonTertiaryText: themePrimitives.primary,
@@ -43,8 +43,8 @@ export default (
43
43
  buttonTertiaryActive: themePrimitives.primary100,
44
44
  buttonTertiarySelectedFill: themePrimitives.primary100,
45
45
  buttonTertiarySelectedText: themePrimitives.primary,
46
- buttonTertiarySpinnerForeground: themePrimitives.primary700,
47
- buttonTertiarySpinnerBackground: themePrimitives.primary300,
46
+ buttonTertiarySpinnerForeground: themePrimitives.accent,
47
+ buttonTertiarySpinnerBackground: themePrimitives.primary100,
48
48
 
49
49
  buttonMinimalFill: 'transparent',
50
50
  buttonMinimalText: themePrimitives.primary,
@@ -52,8 +52,8 @@ export default (
52
52
  buttonMinimalActive: themePrimitives.primary100,
53
53
  buttonMinimalSelectedFill: themePrimitives.primary100,
54
54
  buttonMinimalSelectedText: themePrimitives.primary,
55
- buttonMinimalSpinnerForeground: themePrimitives.primary700,
56
- buttonMinimalSpinnerBackground: themePrimitives.primary300,
55
+ buttonMinimalSpinnerForeground: themePrimitives.accent,
56
+ buttonMinimalSpinnerBackground: themePrimitives.primary100,
57
57
 
58
58
  buttonDisabledFill: themePrimitives.mono200,
59
59
  buttonDisabledText: themePrimitives.mono600,
@@ -107,7 +107,7 @@ export default (
107
107
 
108
108
  // List
109
109
  listHeaderFill: themePrimitives.white,
110
- listBodyFill: themePrimitives.mono200,
110
+ listBodyFill: themePrimitives.white,
111
111
  listIconFill: themePrimitives.mono500,
112
112
  listBorder: themePrimitives.mono500,
113
113