baseui 10.4.0 → 10.7.1

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 (195) 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/map-marker/constants.js +69 -0
  64. package/es/map-marker/fixed-marker.js +98 -0
  65. package/es/map-marker/floating-marker.js +65 -0
  66. package/es/map-marker/index.js +9 -0
  67. package/es/map-marker/pin-head.js +108 -0
  68. package/es/map-marker/styled-components.js +156 -0
  69. package/es/map-marker/types.js +8 -0
  70. package/es/menu/maybe-child-menu.js +1 -0
  71. package/es/popover/popover.js +6 -5
  72. package/es/popover/stateful-container.js +8 -2
  73. package/es/rating/emoticon-rating.js +3 -1
  74. package/es/rating/star-rating.js +3 -1
  75. package/es/select/select-component.js +20 -5
  76. package/es/select/styled-components.js +34 -4
  77. package/es/snackbar/snackbar-context.js +16 -4
  78. package/es/table-semantic/styled-components.js +6 -4
  79. package/es/table-semantic/table-builder.js +3 -0
  80. package/es/themes/dark-theme/color-component-tokens.js +1 -1
  81. package/es/themes/light-theme/color-component-tokens.js +9 -9
  82. package/es/themes/shared/lighting.js +5 -1
  83. package/es/timepicker/timepicker.js +16 -11
  84. package/es/tooltip/styled-components.js +8 -0
  85. package/es/tooltip/tooltip.js +1 -0
  86. package/esm/app-nav-bar/user-menu.js +1 -0
  87. package/esm/button/styled-components.js +1 -1
  88. package/esm/card/styled-components.js +0 -1
  89. package/esm/combobox/combobox.js +5 -1
  90. package/esm/data-table/column-datetime.js +2 -0
  91. package/esm/datepicker/calendar-header.js +255 -110
  92. package/esm/datepicker/calendar.js +7 -2
  93. package/esm/datepicker/constants.js +6 -1
  94. package/esm/datepicker/datepicker.js +136 -74
  95. package/esm/datepicker/day.js +2 -0
  96. package/esm/datepicker/month.js +3 -0
  97. package/esm/datepicker/styled-components.js +112 -55
  98. package/esm/datepicker/types.js +1 -1
  99. package/esm/datepicker/utils/calendar-header-helpers.js +45 -0
  100. package/esm/datepicker/utils/date-helpers.js +1 -1
  101. package/esm/datepicker/week.js +1 -0
  102. package/esm/dnd-list/index.js +2 -1
  103. package/esm/dnd-list/list.js +1 -2
  104. package/esm/dnd-list/styled-components.js +1 -1
  105. package/esm/drawer/drawer.js +2 -1
  106. package/esm/helper/helper.js +1 -0
  107. package/esm/layer/layer.js +8 -0
  108. package/esm/map-marker/constants.js +62 -0
  109. package/esm/map-marker/fixed-marker.js +137 -0
  110. package/esm/map-marker/floating-marker.js +94 -0
  111. package/esm/map-marker/index.js +9 -0
  112. package/esm/map-marker/pin-head.js +144 -0
  113. package/esm/map-marker/styled-components.js +168 -0
  114. package/esm/map-marker/types.js +8 -0
  115. package/esm/menu/maybe-child-menu.js +1 -0
  116. package/esm/popover/popover.js +6 -5
  117. package/esm/popover/stateful-container.js +8 -2
  118. package/esm/rating/emoticon-rating.js +2 -2
  119. package/esm/rating/star-rating.js +2 -2
  120. package/esm/select/select-component.js +19 -5
  121. package/esm/select/styled-components.js +28 -4
  122. package/esm/snackbar/snackbar-context.js +16 -4
  123. package/esm/table-semantic/styled-components.js +6 -4
  124. package/esm/table-semantic/table-builder.js +3 -0
  125. package/esm/themes/dark-theme/color-component-tokens.js +1 -1
  126. package/esm/themes/light-theme/color-component-tokens.js +9 -9
  127. package/esm/themes/shared/lighting.js +5 -1
  128. package/esm/timepicker/timepicker.js +17 -11
  129. package/esm/tooltip/styled-components.js +8 -0
  130. package/esm/tooltip/tooltip.js +1 -0
  131. package/helper/helper.js +1 -0
  132. package/helper/helper.js.flow +1 -0
  133. package/layer/layer.js +8 -0
  134. package/layer/layer.js.flow +9 -0
  135. package/link/index.d.ts +1 -0
  136. package/map-marker/constants.js +82 -0
  137. package/map-marker/constants.js.flow +74 -0
  138. package/map-marker/fixed-marker.js +152 -0
  139. package/map-marker/fixed-marker.js.flow +137 -0
  140. package/map-marker/floating-marker.js +109 -0
  141. package/map-marker/floating-marker.js.flow +102 -0
  142. package/map-marker/index.d.ts +105 -0
  143. package/map-marker/index.js +55 -0
  144. package/map-marker/index.js.flow +23 -0
  145. package/map-marker/package.json +4 -0
  146. package/map-marker/pin-head.js +159 -0
  147. package/map-marker/pin-head.js.flow +155 -0
  148. package/map-marker/styled-components.js +184 -0
  149. package/map-marker/styled-components.js.flow +177 -0
  150. package/map-marker/types.js +11 -0
  151. package/map-marker/types.js.flow +114 -0
  152. package/menu/index.d.ts +7 -0
  153. package/menu/maybe-child-menu.js +1 -0
  154. package/menu/maybe-child-menu.js.flow +1 -0
  155. package/menu/types.js.flow +12 -0
  156. package/modal/index.d.ts +1 -1
  157. package/modal/types.js.flow +4 -1
  158. package/package.json +5 -3
  159. package/popover/index.d.ts +2 -1
  160. package/popover/popover.js +6 -5
  161. package/popover/popover.js.flow +11 -4
  162. package/popover/stateful-container.js +8 -2
  163. package/popover/stateful-container.js.flow +5 -0
  164. package/popover/types.js.flow +6 -1
  165. package/rating/emoticon-rating.js +2 -2
  166. package/rating/emoticon-rating.js.flow +4 -1
  167. package/rating/star-rating.js +2 -2
  168. package/rating/star-rating.js.flow +4 -1
  169. package/select/select-component.js +19 -5
  170. package/select/select-component.js.flow +19 -5
  171. package/select/styled-components.js +28 -4
  172. package/select/styled-components.js.flow +30 -2
  173. package/select/types.js.flow +9 -0
  174. package/snackbar/index.d.ts +21 -16
  175. package/snackbar/snackbar-context.js +15 -4
  176. package/snackbar/snackbar-context.js.flow +15 -3
  177. package/table-semantic/styled-components.js +6 -4
  178. package/table-semantic/styled-components.js.flow +6 -4
  179. package/table-semantic/table-builder.js +3 -0
  180. package/table-semantic/table-builder.js.flow +3 -0
  181. package/themes/dark-theme/color-component-tokens.js +1 -1
  182. package/themes/dark-theme/color-component-tokens.js.flow +1 -1
  183. package/themes/light-theme/color-component-tokens.js +9 -9
  184. package/themes/light-theme/color-component-tokens.js.flow +9 -9
  185. package/themes/shared/lighting.js +5 -1
  186. package/themes/shared/lighting.js.flow +4 -0
  187. package/themes/types.js.flow +4 -0
  188. package/timepicker/index.d.ts +1 -0
  189. package/timepicker/timepicker.js +17 -11
  190. package/timepicker/timepicker.js.flow +31 -12
  191. package/timepicker/types.js.flow +10 -0
  192. package/tooltip/styled-components.js +8 -0
  193. package/tooltip/styled-components.js.flow +8 -0
  194. package/tooltip/tooltip.js +1 -0
  195. package/tooltip/tooltip.js.flow +6 -1
@@ -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
 
@@ -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
 
@@ -22,7 +22,11 @@ var lighting = {
22
22
  overlay300: 'inset 0 0 0 1000px hsla(0, 0%, 0%, 0.12)',
23
23
  overlay400: 'inset 0 0 0 1000px hsla(0, 0%, 0%, 0.16)',
24
24
  overlay500: 'inset 0 0 0 1000px hsla(0, 0%, 0%, 0.2)',
25
- overlay600: 'inset 0 0 0 1000px hsla(0, 0%, 0%, 0.24)'
25
+ overlay600: 'inset 0 0 0 1000px hsla(0, 0%, 0%, 0.24)',
26
+ shallowAbove: '0px -4px 16px rgba(0, 0, 0, 0.12)',
27
+ shallowBelow: '0px 4px 16px rgba(0, 0, 0, 0.12)',
28
+ deepAbove: '0px -16px 48px rgba(0, 0, 0, 0.22)',
29
+ deepBelow: '0px 16px 48px rgba(0, 0, 0, 0.22)'
26
30
  };
27
31
  var _default = lighting;
28
32
  exports.default = _default;
@@ -19,6 +19,10 @@ const lighting: LightingT = {
19
19
  overlay400: 'inset 0 0 0 1000px hsla(0, 0%, 0%, 0.16)',
20
20
  overlay500: 'inset 0 0 0 1000px hsla(0, 0%, 0%, 0.2)',
21
21
  overlay600: 'inset 0 0 0 1000px hsla(0, 0%, 0%, 0.24)',
22
+ shallowAbove: '0px -4px 16px rgba(0, 0, 0, 0.12)',
23
+ shallowBelow: '0px 4px 16px rgba(0, 0, 0, 0.12)',
24
+ deepAbove: '0px -16px 48px rgba(0, 0, 0, 0.22)',
25
+ deepBelow: '0px 16px 48px rgba(0, 0, 0, 0.22)',
22
26
  };
23
27
 
24
28
  export default lighting;
@@ -690,6 +690,10 @@ export type LightingT = {
690
690
  overlay400: string,
691
691
  overlay500: string,
692
692
  overlay600: string,
693
+ shallowAbove: string,
694
+ shallowBelow: string,
695
+ deepAbove: string,
696
+ deepBelow: string,
693
697
  };
694
698
 
695
699
  export type AnimationT = {
@@ -22,6 +22,7 @@ export interface TimePickerProps {
22
22
  size?: SIZE[keyof SIZE];
23
23
  minTime?: Date;
24
24
  maxTime?: Date;
25
+ ignoreMinMaxDateComponent?: boolean;
25
26
  }
26
27
  export interface TimePickerState {
27
28
  steps: number[];
@@ -219,26 +219,31 @@ var TimePicker = /*#__PURE__*/function (_React$Component) {
219
219
  _defineProperty(_assertThisInitialized(_this), "getTimeWindowInSeconds", function (step) {
220
220
  var _this$props = _this.props,
221
221
  min = _this$props.minTime,
222
- max = _this$props.maxTime;
222
+ max = _this$props.maxTime,
223
+ ignoreMinMaxDateComponent = _this$props.ignoreMinMaxDateComponent;
223
224
 
224
- var midnight = _this.setTime(_this.props.value, 0, 0, 0);
225
+ var dayStart = _this.setTime(_this.props.value, 0, 0, 0);
225
226
 
226
- if (!min) {
227
- min = midnight;
227
+ var dayEnd = _this.setTime(_this.props.value, 24, 0, 0);
228
+
229
+ if (!min || _this.props.adapter.isBefore(min, dayStart) && !ignoreMinMaxDateComponent) {
230
+ min = dayStart;
231
+ } else {
232
+ min = _this.setTime(_this.props.value, _this.props.adapter.getHours(min), _this.props.adapter.getMinutes(min), _this.props.adapter.getSeconds(min));
228
233
  }
229
234
 
230
- if (!max) {
231
- max = _this.setTime(_this.props.value, 24, 0, 0);
235
+ if (!max || _this.props.adapter.isAfter(max, dayEnd) && !ignoreMinMaxDateComponent) {
236
+ max = dayEnd;
232
237
  } else {
233
- // maxTime (if provided) should be inclusive, so add an extra step here
234
- max = _this.props.adapter.setSeconds(_this.props.adapter.date(max), _this.props.adapter.getSeconds(max) + step);
238
+ max = _this.setTime(_this.props.value, _this.props.adapter.getHours(max), _this.props.adapter.getMinutes(max), // maxTime (if provided) should be inclusive, so add an extra second here
239
+ _this.props.adapter.getSeconds(max) + 1);
235
240
  }
236
241
 
237
242
  var minDate = _this.props.adapter.toJsDate(min);
238
243
 
239
244
  var maxDate = _this.props.adapter.toJsDate(max);
240
245
 
241
- var midnightDate = _this.props.adapter.toJsDate(midnight);
246
+ var midnightDate = _this.props.adapter.toJsDate(dayStart);
242
247
 
243
248
  return {
244
249
  start: (minDate - midnightDate) / 1000,
@@ -325,7 +330,7 @@ var TimePicker = /*#__PURE__*/function (_React$Component) {
325
330
  steps: steps,
326
331
  value: this.props.nullable ? undefined : {
327
332
  id: closestStep,
328
- label: this.secondsToLabel(closestStep, undefined)
333
+ label: this.secondsToLabel(closestStep, this.props.format)
329
334
  }
330
335
  });
331
336
 
@@ -427,7 +432,8 @@ _defineProperty(TimePicker, "defaultProps", {
427
432
  format: '12',
428
433
  step: 900,
429
434
  creatable: false,
430
- adapter: _dateFnsAdapter.default
435
+ adapter: _dateFnsAdapter.default,
436
+ ignoreMinMaxDateComponent: false
431
437
  });
432
438
 
433
439
  var _default = TimePicker;
@@ -34,6 +34,7 @@ class TimePicker<T = Date> extends React.Component<
34
34
  step: 900,
35
35
  creatable: false,
36
36
  adapter: dateFnsAdapter,
37
+ ignoreMinMaxDateComponent: false,
37
38
  };
38
39
  dateHelpers: DateHelpers<T>;
39
40
 
@@ -66,7 +67,7 @@ class TimePicker<T = Date> extends React.Component<
66
67
  ? undefined
67
68
  : {
68
69
  id: closestStep,
69
- label: this.secondsToLabel(closestStep, undefined),
70
+ label: this.secondsToLabel(closestStep, this.props.format),
70
71
  },
71
72
  });
72
73
  if (this.props.value || (!this.props.nullable && !this.props.value)) {
@@ -200,24 +201,42 @@ class TimePicker<T = Date> extends React.Component<
200
201
  };
201
202
 
202
203
  getTimeWindowInSeconds = (step: number): {start: number, end: number} => {
203
- let {minTime: min, maxTime: max} = this.props;
204
- let midnight = this.setTime(this.props.value, 0, 0, 0);
205
- if (!min) {
206
- min = midnight;
204
+ let {minTime: min, maxTime: max, ignoreMinMaxDateComponent} = this.props;
205
+ const dayStart = this.setTime(this.props.value, 0, 0, 0);
206
+ const dayEnd = this.setTime(this.props.value, 24, 0, 0);
207
+
208
+ if (
209
+ !min ||
210
+ (this.props.adapter.isBefore(min, dayStart) && !ignoreMinMaxDateComponent)
211
+ ) {
212
+ min = dayStart;
213
+ } else {
214
+ min = this.setTime(
215
+ this.props.value,
216
+ this.props.adapter.getHours(min),
217
+ this.props.adapter.getMinutes(min),
218
+ this.props.adapter.getSeconds(min),
219
+ );
207
220
  }
208
- if (!max) {
209
- max = this.setTime(this.props.value, 24, 0, 0);
221
+
222
+ if (
223
+ !max ||
224
+ (this.props.adapter.isAfter(max, dayEnd) && !ignoreMinMaxDateComponent)
225
+ ) {
226
+ max = dayEnd;
210
227
  } else {
211
- // maxTime (if provided) should be inclusive, so add an extra step here
212
- max = this.props.adapter.setSeconds(
213
- this.props.adapter.date(max),
214
- this.props.adapter.getSeconds(max) + step,
228
+ max = this.setTime(
229
+ this.props.value,
230
+ this.props.adapter.getHours(max),
231
+ this.props.adapter.getMinutes(max),
232
+ // maxTime (if provided) should be inclusive, so add an extra second here
233
+ this.props.adapter.getSeconds(max) + 1,
215
234
  );
216
235
  }
217
236
 
218
237
  const minDate = this.props.adapter.toJsDate(min);
219
238
  const maxDate = this.props.adapter.toJsDate(max);
220
- const midnightDate = this.props.adapter.toJsDate(midnight);
239
+ const midnightDate = this.props.adapter.toJsDate(dayStart);
221
240
  return {
222
241
  start: (minDate - midnightDate) / 1000,
223
242
  end: (maxDate - midnightDate) / 1000,
@@ -37,6 +37,15 @@ export type TimePickerPropsT<T = Date> = {
37
37
  size?: SizeT,
38
38
  minTime?: T,
39
39
  maxTime?: T,
40
+ /**
41
+ * There are two strategies available for setting min/max times. If the min/max datetimes are
42
+ * beyond the start/end times of the current value's date, Timepicker could either clamp the
43
+ * min/max time of the start/end of the day or it can ignore the min/max date components and
44
+ * only apply the time components. Each strategy has the potential to save developer time in
45
+ * avoiding the need to perform conversion before providing min/max datetimes to the component.
46
+ * By default the component will clamp the time window and setting this flag will ignore dates.
47
+ */
48
+ ignoreMinMaxDateComponent?: boolean,
40
49
  };
41
50
  export type TimePickerStateT = {
42
51
  /** List of times (in seconds) displayed in the dropdown menu. */
@@ -50,6 +59,7 @@ export type TimePickerDefaultPropsT = {
50
59
  step: 900,
51
60
  creatable: false,
52
61
  adapter: DateIOAdapter<Date>,
62
+ ignoreMinMaxDateComponent: false,
53
63
  };
54
64
 
55
65
  declare var __DEV__: boolean;