baseui 10.12.1 → 11.0.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 (271) hide show
  1. package/README.md +3 -3
  2. package/accordion/accordion.js +60 -13
  3. package/accordion/accordion.js.flow +49 -12
  4. package/accordion/index.d.ts +0 -3
  5. package/accordion/panel.js +7 -6
  6. package/accordion/panel.js.flow +20 -20
  7. package/accordion/stateless-accordion.js +2 -4
  8. package/accordion/stateless-accordion.js.flow +0 -2
  9. package/accordion/types.js.flow +0 -5
  10. package/button/constants.js +1 -2
  11. package/button/constants.js.flow +0 -1
  12. package/button/index.d.ts +0 -1
  13. package/button/styled-components.js +2 -29
  14. package/button/styled-components.js.flow +2 -30
  15. package/checkbox/checkbox.js +6 -30
  16. package/checkbox/checkbox.js.flow +7 -38
  17. package/checkbox/constants.js +2 -1
  18. package/checkbox/constants.js.flow +2 -1
  19. package/checkbox/index.d.ts +4 -6
  20. package/checkbox/index.js +0 -6
  21. package/checkbox/index.js.flow +0 -1
  22. package/checkbox/styled-components.js +52 -149
  23. package/checkbox/styled-components.js.flow +59 -165
  24. package/checkbox/types.js.flow +0 -5
  25. package/data-table/column-categorical.js +1 -1
  26. package/data-table/column-categorical.js.flow +1 -1
  27. package/data-table/column-datetime.js +1 -1
  28. package/data-table/column-datetime.js.flow +3 -1
  29. package/data-table/column.js +6 -2
  30. package/data-table/column.js.flow +9 -7
  31. package/data-table/data-table.js +1 -1
  32. package/data-table/data-table.js.flow +1 -1
  33. package/data-table/header-cell.js +3 -0
  34. package/data-table/header-cell.js.flow +1 -1
  35. package/datepicker/calendar.js +15 -7
  36. package/datepicker/calendar.js.flow +23 -9
  37. package/datepicker/constants.js +12 -2
  38. package/datepicker/constants.js.flow +10 -0
  39. package/datepicker/datepicker.js +61 -30
  40. package/datepicker/datepicker.js.flow +77 -37
  41. package/datepicker/day.js +85 -34
  42. package/datepicker/day.js.flow +118 -54
  43. package/datepicker/locale.js.flow +0 -1
  44. package/datepicker/month.js +3 -1
  45. package/datepicker/month.js.flow +2 -0
  46. package/datepicker/stateful-container.js.flow +2 -1
  47. package/datepicker/styled-components.js +23 -1
  48. package/datepicker/styled-components.js.flow +12 -2
  49. package/datepicker/types.js.flow +35 -10
  50. package/datepicker/utils/date-helpers.js +30 -0
  51. package/datepicker/utils/date-helpers.js.flow +12 -0
  52. package/datepicker/week.js +3 -1
  53. package/datepicker/week.js.flow +2 -0
  54. package/es/accordion/accordion.js +52 -12
  55. package/es/accordion/panel.js +7 -5
  56. package/es/accordion/stateless-accordion.js +2 -4
  57. package/es/button/constants.js +1 -2
  58. package/es/button/styled-components.js +2 -29
  59. package/es/checkbox/checkbox.js +7 -32
  60. package/es/checkbox/constants.js +2 -1
  61. package/es/checkbox/index.js +1 -1
  62. package/es/checkbox/styled-components.js +51 -146
  63. package/es/data-table/column-categorical.js +1 -1
  64. package/es/data-table/column-datetime.js +1 -1
  65. package/es/data-table/column.js +6 -2
  66. package/es/data-table/data-table.js +1 -1
  67. package/es/data-table/header-cell.js +3 -0
  68. package/es/datepicker/calendar.js +15 -7
  69. package/es/datepicker/constants.js +8 -0
  70. package/es/datepicker/datepicker.js +56 -29
  71. package/es/datepicker/day.js +77 -34
  72. package/es/datepicker/month.js +3 -1
  73. package/es/datepicker/styled-components.js +8 -2
  74. package/es/datepicker/types.js +1 -1
  75. package/es/datepicker/utils/date-helpers.js +16 -0
  76. package/es/datepicker/week.js +3 -1
  77. package/es/file-uploader/file-uploader.js +4 -4
  78. package/es/header-navigation/styled-components.js +3 -3
  79. package/es/helpers/overrides.js +1 -2
  80. package/es/input/styled-components.js +4 -4
  81. package/es/layer/layer.js +4 -4
  82. package/es/locale/index.js +0 -7
  83. package/es/menu/stateful-container.js +0 -1
  84. package/es/menu/styled-components.js +1 -1
  85. package/es/modal/index.js +1 -1
  86. package/es/modal/modal.js +19 -65
  87. package/es/modal/styled-components.js +12 -48
  88. package/es/phone-input/default-props.js +1 -1
  89. package/es/phone-input/index.js +0 -4
  90. package/es/phone-input/phone-input-lite.js +55 -31
  91. package/es/radio/radio.js +1 -7
  92. package/es/radio/radiogroup.js +3 -28
  93. package/es/radio/styled-components.js +4 -5
  94. package/es/rating/styled-components.js +3 -3
  95. package/es/select/index.js +1 -2
  96. package/es/select/select-component.js +4 -8
  97. package/es/select/styled-components.js +4 -4
  98. package/es/snackbar/styled-components.js +2 -2
  99. package/es/spinner/index.js +3 -9
  100. package/es/spinner/styled-components.js +2 -32
  101. package/es/table/filter.js +3 -3
  102. package/es/tag/styled-components.js +1 -1
  103. package/es/themes/dark-theme/color-component-tokens.js +0 -38
  104. package/es/themes/dark-theme/color-tokens.js +0 -2
  105. package/es/themes/dark-theme/create-dark-theme.js +0 -2
  106. package/es/themes/dark-theme/dark-theme.js +0 -2
  107. package/es/themes/light-theme/color-component-tokens.js +0 -38
  108. package/es/themes/light-theme/color-tokens.js +0 -2
  109. package/es/themes/light-theme/create-light-theme.js +0 -2
  110. package/es/themes/light-theme/light-theme.js +0 -2
  111. package/es/timepicker/timepicker.js +1 -8
  112. package/es/typography/index.js +1 -31
  113. package/esm/accordion/accordion.js +60 -13
  114. package/esm/accordion/panel.js +7 -6
  115. package/esm/accordion/stateless-accordion.js +2 -4
  116. package/esm/button/constants.js +1 -2
  117. package/esm/button/styled-components.js +2 -29
  118. package/esm/checkbox/checkbox.js +7 -30
  119. package/esm/checkbox/constants.js +2 -1
  120. package/esm/checkbox/index.js +1 -1
  121. package/esm/checkbox/styled-components.js +52 -147
  122. package/esm/data-table/column-categorical.js +1 -1
  123. package/esm/data-table/column-datetime.js +1 -1
  124. package/esm/data-table/column.js +6 -2
  125. package/esm/data-table/data-table.js +1 -1
  126. package/esm/data-table/header-cell.js +3 -0
  127. package/esm/datepicker/calendar.js +15 -7
  128. package/esm/datepicker/constants.js +8 -0
  129. package/esm/datepicker/datepicker.js +60 -30
  130. package/esm/datepicker/day.js +84 -34
  131. package/esm/datepicker/month.js +3 -1
  132. package/esm/datepicker/styled-components.js +24 -2
  133. package/esm/datepicker/types.js +1 -1
  134. package/esm/datepicker/utils/date-helpers.js +30 -0
  135. package/esm/datepicker/week.js +3 -1
  136. package/esm/file-uploader/file-uploader.js +4 -4
  137. package/esm/header-navigation/styled-components.js +3 -3
  138. package/esm/helpers/overrides.js +1 -2
  139. package/esm/input/styled-components.js +4 -4
  140. package/esm/layer/layer.js +4 -4
  141. package/esm/locale/index.js +0 -7
  142. package/esm/menu/stateful-container.js +0 -1
  143. package/esm/menu/styled-components.js +1 -1
  144. package/esm/modal/index.js +1 -1
  145. package/esm/modal/modal.js +28 -71
  146. package/esm/modal/styled-components.js +6 -38
  147. package/esm/phone-input/default-props.js +1 -1
  148. package/esm/phone-input/index.js +0 -4
  149. package/esm/phone-input/phone-input-lite.js +60 -37
  150. package/esm/radio/radio.js +1 -7
  151. package/esm/radio/radiogroup.js +3 -28
  152. package/esm/radio/styled-components.js +4 -5
  153. package/esm/rating/styled-components.js +3 -3
  154. package/esm/select/index.js +1 -2
  155. package/esm/select/select-component.js +4 -8
  156. package/esm/select/styled-components.js +4 -4
  157. package/esm/snackbar/styled-components.js +2 -2
  158. package/esm/spinner/index.js +3 -9
  159. package/esm/spinner/styled-components.js +2 -40
  160. package/esm/table/filter.js +3 -3
  161. package/esm/tag/styled-components.js +1 -1
  162. package/esm/themes/dark-theme/color-component-tokens.js +0 -38
  163. package/esm/themes/dark-theme/color-tokens.js +0 -2
  164. package/esm/themes/dark-theme/create-dark-theme.js +1 -2
  165. package/esm/themes/dark-theme/dark-theme.js +1 -2
  166. package/esm/themes/light-theme/color-component-tokens.js +0 -38
  167. package/esm/themes/light-theme/color-tokens.js +0 -2
  168. package/esm/themes/light-theme/create-light-theme.js +1 -2
  169. package/esm/themes/light-theme/light-theme.js +1 -2
  170. package/esm/timepicker/timepicker.js +1 -8
  171. package/esm/typography/index.js +1 -35
  172. package/file-uploader/file-uploader.js +3 -3
  173. package/file-uploader/file-uploader.js.flow +4 -4
  174. package/header-navigation/styled-components.js +3 -3
  175. package/header-navigation/styled-components.js.flow +3 -3
  176. package/helpers/overrides.js +1 -2
  177. package/helpers/overrides.js.flow +1 -1
  178. package/input/index.d.ts +5 -9
  179. package/input/styled-components.js +4 -4
  180. package/input/styled-components.js.flow +4 -4
  181. package/layer/layer.js +4 -4
  182. package/layer/layer.js.flow +4 -3
  183. package/locale/index.js +0 -7
  184. package/locale/index.js.flow +0 -7
  185. package/locale.ts +0 -1
  186. package/menu/index.d.ts +1 -3
  187. package/menu/stateful-container.js +0 -1
  188. package/menu/stateful-container.js.flow +0 -1
  189. package/menu/styled-components.js +1 -1
  190. package/menu/styled-components.js.flow +1 -1
  191. package/modal/index.d.ts +4 -6
  192. package/modal/index.js +0 -6
  193. package/modal/index.js.flow +0 -1
  194. package/modal/modal.js +27 -70
  195. package/modal/modal.js.flow +17 -83
  196. package/modal/styled-components.js +7 -40
  197. package/modal/styled-components.js.flow +12 -44
  198. package/modal/types.js.flow +1 -10
  199. package/package.json +2 -2
  200. package/phone-input/default-props.js +1 -1
  201. package/phone-input/default-props.js.flow +1 -1
  202. package/phone-input/index.d.ts +0 -1
  203. package/phone-input/index.js +0 -36
  204. package/phone-input/index.js.flow +0 -4
  205. package/phone-input/phone-input-lite.js +63 -38
  206. package/phone-input/phone-input-lite.js.flow +66 -44
  207. package/radio/index.d.ts +4 -9
  208. package/radio/radio.js +1 -7
  209. package/radio/radio.js.flow +1 -8
  210. package/radio/radiogroup.js +3 -28
  211. package/radio/radiogroup.js.flow +2 -26
  212. package/radio/styled-components.js +4 -5
  213. package/radio/styled-components.js.flow +3 -4
  214. package/radio/types.js.flow +4 -15
  215. package/rating/styled-components.js +3 -3
  216. package/rating/styled-components.js.flow +3 -3
  217. package/select/index.d.ts +0 -2
  218. package/select/index.js +0 -6
  219. package/select/index.js.flow +0 -2
  220. package/select/select-component.js +4 -8
  221. package/select/select-component.js.flow +2 -3
  222. package/select/styled-components.js +4 -4
  223. package/select/styled-components.js.flow +4 -4
  224. package/snackbar/styled-components.js +1 -1
  225. package/snackbar/styled-components.js.flow +11 -11
  226. package/spinner/index.d.ts +5 -18
  227. package/spinner/index.js +2 -68
  228. package/spinner/index.js.flow +2 -27
  229. package/spinner/styled-components.js +9 -45
  230. package/spinner/styled-components.js.flow +2 -34
  231. package/spinner/types.js.flow +1 -19
  232. package/styles/types.js.flow +0 -2
  233. package/table/filter.js +3 -3
  234. package/table/filter.js.flow +3 -3
  235. package/tag/styled-components.js +1 -1
  236. package/tag/styled-components.js.flow +1 -1
  237. package/theme.ts +0 -81
  238. package/themes/dark-theme/color-component-tokens.js +0 -38
  239. package/themes/dark-theme/color-component-tokens.js.flow +0 -42
  240. package/themes/dark-theme/color-tokens.js +0 -2
  241. package/themes/dark-theme/color-tokens.js.flow +0 -2
  242. package/themes/dark-theme/create-dark-theme.js +1 -3
  243. package/themes/dark-theme/create-dark-theme.js.flow +0 -2
  244. package/themes/dark-theme/dark-theme.js +1 -3
  245. package/themes/dark-theme/dark-theme.js.flow +0 -2
  246. package/themes/light-theme/color-component-tokens.js +0 -38
  247. package/themes/light-theme/color-component-tokens.js.flow +0 -43
  248. package/themes/light-theme/color-tokens.js +0 -2
  249. package/themes/light-theme/color-tokens.js.flow +0 -2
  250. package/themes/light-theme/create-light-theme.js +1 -3
  251. package/themes/light-theme/create-light-theme.js.flow +0 -2
  252. package/themes/light-theme/light-theme.js +1 -3
  253. package/themes/light-theme/light-theme.js.flow +0 -2
  254. package/themes/types.js.flow +0 -68
  255. package/timepicker/timepicker.js +1 -8
  256. package/timepicker/timepicker.js.flow +4 -10
  257. package/typography/index.d.ts +0 -23
  258. package/typography/index.js +2 -57
  259. package/typography/index.js.flow +0 -31
  260. package/es/spinner/spinner.js +0 -68
  261. package/es/themes/dark-theme/color-deprecated-semantic-tokens.js +0 -35
  262. package/es/themes/light-theme/color-deprecated-semantic-tokens.js +0 -35
  263. package/esm/spinner/spinner.js +0 -125
  264. package/esm/themes/dark-theme/color-deprecated-semantic-tokens.js +0 -38
  265. package/esm/themes/light-theme/color-deprecated-semantic-tokens.js +0 -38
  266. package/spinner/spinner.js +0 -136
  267. package/spinner/spinner.js.flow +0 -75
  268. package/themes/dark-theme/color-deprecated-semantic-tokens.js +0 -50
  269. package/themes/dark-theme/color-deprecated-semantic-tokens.js.flow +0 -42
  270. package/themes/light-theme/color-deprecated-semantic-tokens.js +0 -50
  271. package/themes/light-theme/color-deprecated-semantic-tokens.js.flow +0 -42
@@ -15,6 +15,7 @@ import DateHelpers from './utils/date-helpers.js';
15
15
  import { getOverrides } from '../helpers/overrides.js';
16
16
  import { LocaleContext } from '../locale/index.js';
17
17
  import { isFocusVisible } from '../utils/focusVisible.js';
18
+ import { INPUT_ROLE } from './constants.js';
18
19
  export default class Day extends React.Component {
19
20
  constructor(props) {
20
21
  super(props);
@@ -41,22 +42,46 @@ export default class Day extends React.Component {
41
42
  range,
42
43
  value
43
44
  } = this.props;
44
- let date;
45
+ let nextDate;
46
+
47
+ if (Array.isArray(value) && range && this.props.hasLockedBehavior) {
48
+ const currentDate = this.props.value;
49
+ let nextStartDate = null;
50
+ let nextEndDate = null;
51
+
52
+ if (this.props.selectedInput === INPUT_ROLE.startDate) {
53
+ nextStartDate = selectedDate;
54
+ nextEndDate = Array.isArray(currentDate) && currentDate[1] ? currentDate[1] : null;
55
+ } else if (this.props.selectedInput === INPUT_ROLE.endDate) {
56
+ nextStartDate = Array.isArray(currentDate) && currentDate[0] ? currentDate[0] : null;
57
+ nextEndDate = selectedDate;
58
+ }
59
+
60
+ nextDate = [nextStartDate];
45
61
 
46
- if (Array.isArray(value) && range) {
47
- if (!value.length || value.length > 1) {
48
- date = [selectedDate];
49
- } else if (this.dateHelpers.isAfter(selectedDate, value[0])) {
50
- date = [value[0], selectedDate];
62
+ if (nextEndDate) {
63
+ nextDate.push(nextEndDate);
64
+ }
65
+ } else if (Array.isArray(value) && range && !this.props.hasLockedBehavior) {
66
+ const [start, end] = value; // Starting a new range
67
+
68
+ if (!start && !end || start && end) {
69
+ nextDate = [selectedDate, null]; // EndDate needs a StartDate, SelectedDate comes before EndDate
70
+ } else if (!start && end && this.dateHelpers.isAfter(end, selectedDate)) {
71
+ nextDate = [selectedDate, end]; // EndDate needs a StartDate, but SelectedDate comes after EndDate
72
+ } else if (!start && end && this.dateHelpers.isAfter(selectedDate, end)) {
73
+ nextDate = [end, selectedDate]; // StartDate needs an EndDate, SelectedDate comes after StartDate
74
+ } else if (start && !end && this.dateHelpers.isAfter(selectedDate, start)) {
75
+ nextDate = [start, selectedDate];
51
76
  } else {
52
- date = [selectedDate, value[0]];
77
+ nextDate = [selectedDate, start];
53
78
  }
54
79
  } else {
55
- date = selectedDate;
80
+ nextDate = selectedDate;
56
81
  }
57
82
 
58
83
  this.props.onSelect({
59
- date
84
+ date: nextDate
60
85
  });
61
86
  });
62
87
 
@@ -233,13 +258,16 @@ export default class Day extends React.Component {
233
258
  value
234
259
  } = this.props;
235
260
 
236
- if (Array.isArray(value) && !value[0] && !value[1]) {
237
- return false;
238
- } // fix flow by passing a specific arg type and remove 'Array.isArray(value)'
261
+ if (Array.isArray(value)) {
262
+ const [start, end] = value;
239
263
 
264
+ if (!start && !end) {
265
+ return false;
266
+ }
240
267
 
241
- if (Array.isArray(value) && value.length > 1) {
242
- return this.dateHelpers.isDayInRange(this.clampToDayStart(date), this.clampToDayStart(value[0]), this.clampToDayStart(value[1]));
268
+ if (start && end) {
269
+ return this.dateHelpers.isDayInRange(this.clampToDayStart(date), this.clampToDayStart(start), this.clampToDayStart(end));
270
+ }
243
271
  }
244
272
  } // calculated for range case only
245
273
 
@@ -251,16 +279,27 @@ export default class Day extends React.Component {
251
279
  highlightedDate
252
280
  } = this.props;
253
281
 
254
- if (Array.isArray(value) && !value[0] && !value[1]) {
255
- return false;
256
- } // fix flow by passing a specific arg type and remove 'Array.isArray(value)'
282
+ if (Array.isArray(value)) {
283
+ const [start, end] = value;
257
284
 
285
+ if (!start && !end) {
286
+ return false;
287
+ }
258
288
 
259
- if (Array.isArray(value) && highlightedDate && value[0] && !value[1]) {
260
- if (this.dateHelpers.isAfter(highlightedDate, value[0])) {
261
- return this.dateHelpers.isDayInRange(this.clampToDayStart(date), this.clampToDayStart(value[0]), this.clampToDayStart(highlightedDate));
262
- } else {
263
- return this.dateHelpers.isDayInRange(this.clampToDayStart(date), this.clampToDayStart(highlightedDate), this.clampToDayStart(value[0]));
289
+ if (highlightedDate && start && !end) {
290
+ if (this.dateHelpers.isAfter(highlightedDate, start)) {
291
+ return this.dateHelpers.isDayInRange(this.clampToDayStart(date), this.clampToDayStart(start), this.clampToDayStart(highlightedDate));
292
+ } else {
293
+ return this.dateHelpers.isDayInRange(this.clampToDayStart(date), this.clampToDayStart(highlightedDate), this.clampToDayStart(start));
294
+ }
295
+ }
296
+
297
+ if (highlightedDate && !start && end) {
298
+ if (this.dateHelpers.isAfter(highlightedDate, end)) {
299
+ return this.dateHelpers.isDayInRange(this.clampToDayStart(date), this.clampToDayStart(end), this.clampToDayStart(highlightedDate));
300
+ } else {
301
+ return this.dateHelpers.isDayInRange(this.clampToDayStart(date), this.clampToDayStart(highlightedDate), this.clampToDayStart(end));
302
+ }
264
303
  }
265
304
  }
266
305
  }
@@ -271,22 +310,23 @@ export default class Day extends React.Component {
271
310
  value,
272
311
  highlightedDate,
273
312
  range,
274
- highlighted
313
+ highlighted,
314
+ peekNextMonth
275
315
  } = this.props;
276
316
  const $isHighlighted = highlighted;
277
317
  const $selected = this.isSelected();
278
- const $hasRangeHighlighted = !!(Array.isArray(value) && range && value.length === 1 && highlightedDate && !this.dateHelpers.isSameDay(value[0], highlightedDate));
279
- const $outsideMonth = !this.props.peekNextMonth && this.isOutsideMonth();
280
- const $outsideMonthWithinRange = !!(Array.isArray(value) && range && $outsideMonth && !this.props.peekNextMonth && this.isOutsideOfMonthButWithinRange());
318
+ const $hasRangeHighlighted = !!(Array.isArray(value) && range && highlightedDate && (value[0] && !value[1] && !this.dateHelpers.isSameDay(value[0], highlightedDate) || !value[0] && value[1] && !this.dateHelpers.isSameDay(value[1], highlightedDate)));
319
+ const $outsideMonth = !peekNextMonth && this.isOutsideMonth();
320
+ const $outsideMonthWithinRange = !!(Array.isArray(value) && range && $outsideMonth && !peekNextMonth && this.isOutsideOfMonthButWithinRange());
281
321
  return {
282
322
  $date: date,
283
323
  $density: this.props.density,
284
324
  $disabled: this.props.disabled,
285
- $endDate: Array.isArray(value) && this.props.range && $selected && this.dateHelpers.isSameDay(date, value[1]) || false,
325
+ $endDate: Array.isArray(value) && !!(value[0] && value[1]) && range && $selected && this.dateHelpers.isSameDay(date, value[1]) || false,
286
326
  $hasDateLabel: !!this.props.dateLabel,
287
327
  $hasRangeHighlighted,
288
- $hasRangeOnRight: Array.isArray(value) && $hasRangeHighlighted && highlightedDate && value[0] && this.dateHelpers.isAfter(highlightedDate, value[0]),
289
- $hasRangeSelected: Array.isArray(value) ? value.length === 2 : false,
328
+ $hasRangeOnRight: Array.isArray(value) && $hasRangeHighlighted && highlightedDate && (value[0] && this.dateHelpers.isAfter(highlightedDate, value[0]) || value[1] && this.dateHelpers.isAfter(highlightedDate, value[1])),
329
+ $hasRangeSelected: Array.isArray(value) ? !!(value[0] && value[1]) : false,
290
330
  $highlightedDate: highlightedDate,
291
331
  $isHighlighted,
292
332
  $isHovered: this.state.isHovered,
@@ -296,12 +336,15 @@ export default class Day extends React.Component {
296
336
  $month: this.getMonthProp(),
297
337
  $outsideMonth,
298
338
  $outsideMonthWithinRange,
299
- $peekNextMonth: this.props.peekNextMonth,
300
- $pseudoHighlighted: this.props.range && !$isHighlighted && !$selected ? this.isPseudoHighlighted() : false,
301
- $pseudoSelected: this.props.range && !$selected ? this.isPseudoSelected() : false,
302
- $range: this.props.range,
339
+ $peekNextMonth: peekNextMonth,
340
+ $pseudoHighlighted: range && !$isHighlighted && !$selected ? this.isPseudoHighlighted() : false,
341
+ $pseudoSelected: range && !$selected ? this.isPseudoSelected() : false,
342
+ $range: range,
303
343
  $selected,
304
- $startDate: Array.isArray(this.props.value) && this.props.value.length > 1 && this.props.range && $selected ? this.dateHelpers.isSameDay(date, this.props.value[0]) : false
344
+ $startDate: Array.isArray(value) && value[0] && value[1] && range && $selected ? this.dateHelpers.isSameDay(date, value[0]) : false,
345
+ $hasLockedBehavior: this.props.hasLockedBehavior,
346
+ $selectedInput: this.props.selectedInput,
347
+ $value: this.props.value
305
348
  };
306
349
  }
307
350
 
@@ -82,7 +82,9 @@ export default class CalendarMonth extends React.Component {
82
82
  onChange: this.props.onChange,
83
83
  overrides: this.props.overrides,
84
84
  peekNextMonth: this.props.peekNextMonth,
85
- value: this.props.value
85
+ value: this.props.value,
86
+ hasLockedBehavior: this.props.hasLockedBehavior,
87
+ selectedInput: this.props.selectedInput
86
88
  }));
87
89
  i++;
88
90
  currentWeekStart = this.dateHelpers.addWeeks(currentWeekStart, 1); // It will break on the next week if the week is out of the month
@@ -6,7 +6,7 @@ LICENSE file in the root directory of this source tree.
6
6
  */
7
7
  import { styled } from '../styles/index.js';
8
8
  import getDayStateCode from './utils/day-state.js';
9
- import { ORIENTATION, DENSITY } from './constants.js';
9
+ import { ORIENTATION, DENSITY, INPUT_ROLE } from './constants.js';
10
10
  /**
11
11
  * Main component container element
12
12
  */
@@ -447,6 +447,9 @@ export const StyledDay = styled('div', props => {
447
447
  $outsideMonthWithinRange,
448
448
  $hasDateLabel,
449
449
  $density,
450
+ $hasLockedBehavior,
451
+ $selectedInput,
452
+ $value,
450
453
  $theme: {
451
454
  colors,
452
455
  typography,
@@ -470,6 +473,9 @@ export const StyledDay = styled('div', props => {
470
473
  }
471
474
  }
472
475
 
476
+ const [startDate, endDate] = Array.isArray($value) ? $value : [$value, null];
477
+ const oppositeInputIsPopulated = $selectedInput === INPUT_ROLE.startDate ? endDate !== null && typeof endDate !== 'undefined' : startDate !== null && typeof startDate !== 'undefined';
478
+ const shouldHighlightRange = $range && !($hasLockedBehavior && !oppositeInputIsPopulated);
473
479
  return { ...($density === DENSITY.high ? typography.ParagraphSmall : typography.ParagraphMedium),
474
480
  boxSizing: 'border-box',
475
481
  position: 'relative',
@@ -533,7 +539,7 @@ export const StyledDay = styled('div', props => {
533
539
  content: null
534
540
  } : {})
535
541
  },
536
- ...($range ? {
542
+ ...(shouldHighlightRange ? {
537
543
  // :before pseudo element defines a grey background style that extends
538
544
  // the selected/highlighted day's circle and spans through a range
539
545
  ':before': {
@@ -7,4 +7,4 @@ LICENSE file in the root directory of this source tree.
7
7
 
8
8
  /* eslint-disable flowtype/generic-spacing */
9
9
  import * as React from 'react';
10
- import { ORIENTATION, STATE_CHANGE_TYPE, DENSITY } from './constants.js';
10
+ import { INPUT_ROLE, ORIENTATION, RANGED_CALENDAR_BEHAVIOR, STATE_CHANGE_TYPE, DENSITY } from './constants.js';
@@ -201,6 +201,22 @@ class DateHelpers {
201
201
  return false;
202
202
  });
203
203
 
204
+ _defineProperty(this, "dateRangeIncludesDates", (dateRange, dates) => {
205
+ const [startDate, endDate] = dateRange;
206
+
207
+ if (startDate && endDate && Array.isArray(dates) && dates.length) {
208
+ for (let i = 0; i < dates.length; i++) {
209
+ const day = dates[i];
210
+
211
+ if (this.isDayInRange(day, startDate, endDate)) {
212
+ return true;
213
+ }
214
+ }
215
+ }
216
+
217
+ return false;
218
+ });
219
+
204
220
  _defineProperty(this, "subDays", (date, days) => {
205
221
  return this.adapter.addDays(date, days * -1);
206
222
  });
@@ -56,7 +56,9 @@ export default class Week extends React.Component {
56
56
  onMouseLeave: this.props.onDayMouseLeave,
57
57
  overrides: this.props.overrides,
58
58
  peekNextMonth: this.props.peekNextMonth,
59
- value: this.props.value
59
+ value: this.props.value,
60
+ hasLockedBehavior: this.props.hasLockedBehavior,
61
+ selectedInput: this.props.selectedInput
60
62
  })
61
63
  );
62
64
  }));
@@ -13,7 +13,7 @@ import { useStyletron } from '../styles/index.js';
13
13
  import { Button, KIND, SHAPE, SIZE as BUTTON_SIZE } from '../button/index.js';
14
14
  import { getOverrides } from '../helpers/overrides.js';
15
15
  import { ProgressBar } from '../progress-bar/index.js';
16
- import { StyledSpinnerNext, SIZE as SPINNER_SIZE } from '../spinner/index.js';
16
+ import { Spinner, SIZE as SPINNER_SIZE } from '../spinner/index.js';
17
17
  import { StyledRoot, StyledFileDragAndDrop, StyledContentMessage, StyledContentSeparator, StyledErrorMessage, StyledHiddenInput } from './styled-components.js';
18
18
 
19
19
  function prependStyleProps(styleProps) {
@@ -35,7 +35,7 @@ function FileUploader(props) {
35
35
  const [ErrorMessage, errorMessageProps] = getOverrides(overrides.ErrorMessage, StyledErrorMessage);
36
36
  const [HiddenInput, hiddenInputProps] = getOverrides(overrides.HiddenInput, StyledHiddenInput);
37
37
  const [ButtonComponent, buttonProps] = getOverrides(overrides.ButtonComponent, Button);
38
- const [SpinnerComponent, spinnerProps] = getOverrides(overrides.Spinner, StyledSpinnerNext);
38
+ const [SpinnerComponent, spinnerProps] = getOverrides(overrides.Spinner, Spinner);
39
39
  const afterFileDrop = !!(props.progressAmount || props.progressMessage || props.errorMessage);
40
40
  return /*#__PURE__*/React.createElement(Dropzone, _extends({}, props, {
41
41
  disabled: props.disabled || afterFileDrop
@@ -90,7 +90,7 @@ function FileUploader(props) {
90
90
  marginBottom: theme.sizing.scale300
91
91
  }
92
92
  }, spinnerProps)), (props.errorMessage || props.progressMessage) && props.errorMessage ? /*#__PURE__*/React.createElement(ErrorMessage, _extends({}, prefixedStyledProps, errorMessageProps), props.errorMessage) : /*#__PURE__*/React.createElement(ContentMessage, _extends({}, prefixedStyledProps, contentMessageProps), props.progressMessage), props.errorMessage ? /*#__PURE__*/React.createElement(ButtonComponent, {
93
- kind: KIND.minimal,
93
+ kind: KIND.tertiary,
94
94
  onClick: () => {
95
95
  props.onRetry && props.onRetry();
96
96
  },
@@ -98,7 +98,7 @@ function FileUploader(props) {
98
98
  "aria-describedby": props['aria-describedby'],
99
99
  "aria-errormessage": props.errorMessage
100
100
  }, locale.fileuploader.retry) : /*#__PURE__*/React.createElement(ButtonComponent, {
101
- kind: KIND.minimal,
101
+ kind: KIND.tertiary,
102
102
  onClick: () => {
103
103
  props.onCancel && props.onCancel();
104
104
  },
@@ -18,7 +18,7 @@ export const Root = styled('nav', props => {
18
18
  font300
19
19
  },
20
20
  colors: {
21
- border
21
+ borderOpaque
22
22
  }
23
23
  } = $theme;
24
24
  return { ...font300,
@@ -27,8 +27,8 @@ export const Root = styled('nav', props => {
27
27
  paddingTop: scale500,
28
28
  borderBottomWidth: '1px',
29
29
  borderBottomStyle: 'solid',
30
- borderBottomColor: `${border}`,
31
- backgroundColor: $theme.colors.headerNavigationFill
30
+ borderBottomColor: `${borderOpaque}`,
31
+ backgroundColor: $theme.colors.backgroundPrimary
32
32
  };
33
33
  });
34
34
  Root.displayName = "Root";
@@ -77,8 +77,7 @@ export function toObjectOverride(override) {
77
77
  /**
78
78
  * Get a convenient override array that will always have [component, props]
79
79
  */
80
-
81
- /* flowlint unclear-type:off */
80
+ // flowlint unclear-type:off
82
81
 
83
82
  export function getOverrides(override, defaultComponent) {
84
83
  const Component = getOverride(override) || defaultComponent;
@@ -123,10 +123,10 @@ function getRootColors($disabled, $isFocused, $error, $positive = false, colors)
123
123
 
124
124
  if ($isFocused) {
125
125
  return {
126
- borderLeftColor: colors.borderFocus,
127
- borderRightColor: colors.borderFocus,
128
- borderTopColor: colors.borderFocus,
129
- borderBottomColor: colors.borderFocus,
126
+ borderLeftColor: colors.borderSelected,
127
+ borderRightColor: colors.borderSelected,
128
+ borderTopColor: colors.borderSelected,
129
+ borderBottomColor: colors.borderSelected,
130
130
  backgroundColor: colors.inputFillActive
131
131
  };
132
132
  }
package/es/layer/layer.js CHANGED
@@ -161,10 +161,10 @@ class LayerComponent extends React.Component {
161
161
  }, children) : children;
162
162
 
163
163
  if (typeof document !== 'undefined') {
164
- const portalContainer = mountNode || container;
165
-
166
- if (portalContainer) {
167
- return /*#__PURE__*/ReactDOM.createPortal(childrenToRender, portalContainer);
164
+ if (mountNode) {
165
+ return /*#__PURE__*/ReactDOM.createPortal(childrenToRender, mountNode);
166
+ } else if (container) {
167
+ return /*#__PURE__*/ReactDOM.createPortal(childrenToRender, container);
168
168
  }
169
169
 
170
170
  return null;
@@ -14,13 +14,6 @@ const LocaleProvider = props => {
14
14
  locale,
15
15
  children
16
16
  } = props;
17
-
18
- if (process.env.NODE_ENV !== "production") {
19
- if (locale.datepicker && locale.datepicker.timePickerAriaLabel) {
20
- console.warn('`timePickerAriaLabel` will be removed in v11 - please use timePickerAriaLabel12Hour and timePickerAriaLabel24Hour instead');
21
- }
22
- }
23
-
24
17
  return /*#__PURE__*/React.createElement(LocaleContext.Provider, {
25
18
  value: extend({}, en_US, locale)
26
19
  }, children);
@@ -98,7 +98,6 @@ class MenuStatefulContainerInner extends React.Component {
98
98
  this.typeAheadChars = '';
99
99
  }, 500);
100
100
  var nextIndex = prevIndex;
101
- event.preventDefault();
102
101
  var list = this.getItems();
103
102
  if (list.length === 0 || !('label' in list[0])) return;
104
103
  var notMatch = true;
@@ -87,7 +87,7 @@ export const StyledOptgroupHeader = styled('li', props => {
87
87
  const paddingX = props.$theme.sizing.scale300;
88
88
  const paddingY = props.$theme.sizing.scale200;
89
89
  return { ...props.$theme.typography.font250,
90
- color: props.$theme.colors.colorPrimary,
90
+ color: props.$theme.colors.contentPrimary,
91
91
  paddingTop: paddingY,
92
92
  paddingBottom: paddingY,
93
93
  paddingRight: paddingX,
package/es/modal/index.js CHANGED
@@ -8,4 +8,4 @@ export { default as Modal } from './modal.js';
8
8
  export { default as ModalButton } from './modal-button.js';
9
9
  export { default as FocusOnce } from './focus-once.js';
10
10
  export { SIZE, ROLE, CLOSE_SOURCE } from './constants.js';
11
- export { Root as StyledRoot, Backdrop as StyledBackdrop, Dialog as StyledDialog, DialogContainer as StyledDialogContainer, Close as StyledClose, ModalHeader, ModalBody, ModalFooter } from './styled-components.js';
11
+ export { Root as StyledRoot, Dialog as StyledDialog, DialogContainer as StyledDialogContainer, Close as StyledClose, ModalHeader, ModalBody, ModalFooter } from './styled-components.js';
package/es/modal/modal.js CHANGED
@@ -18,7 +18,7 @@ import { LocaleContext } from '../locale/index.js';
18
18
  import { getOverrides } from '../helpers/overrides.js';
19
19
  import { Layer } from '../layer/index.js';
20
20
  import { SIZE, ROLE, CLOSE_SOURCE } from './constants.js';
21
- import { Root as StyledRoot, Backdrop as StyledBackdrop, Dialog as StyledDialog, DialogContainer as StyledDialogContainer, Close as StyledClose } from './styled-components.js';
21
+ import { Root as StyledRoot, Dialog as StyledDialog, DialogContainer as StyledDialogContainer, Close as StyledClose } from './styled-components.js';
22
22
  import { CloseIcon } from './close-icon.js';
23
23
  import { isFocusVisible, forkFocus, forkBlur } from '../utils/focusVisible.js';
24
24
 
@@ -30,11 +30,13 @@ class Modal extends React.Component {
30
30
 
31
31
  _defineProperty(this, "animateStartTimer", void 0);
32
32
 
33
+ _defineProperty(this, "dialogContainerRef", /*#__PURE__*/React.createRef());
34
+
33
35
  _defineProperty(this, "lastFocus", null);
34
36
 
35
37
  _defineProperty(this, "lastMountNodeOverflowStyle", null);
36
38
 
37
- _defineProperty(this, "_refs", {});
39
+ _defineProperty(this, "rootRef", /*#__PURE__*/React.createRef());
38
40
 
39
41
  _defineProperty(this, "state", {
40
42
  isVisible: false,
@@ -67,10 +69,7 @@ class Modal extends React.Component {
67
69
  });
68
70
 
69
71
  _defineProperty(this, "onDocumentClick", e => {
70
- if (e.target && e.target instanceof HTMLElement && ( // Handles modal closure when unstable_ModalBackdropScroll is set to true
71
- e.target.contains(this.getRef('DialogContainer').current) || // Handles modal closure when unstable_ModalBackdropScroll is set to false
72
- // $FlowFixMe
73
- e.target.contains(this.getRef('DeprecatedBackdrop').current))) {
72
+ if (e.target && e.target instanceof HTMLElement && e.target.contains(this.dialogContainerRef.current)) {
74
73
  this.onBackdropClick();
75
74
  }
76
75
  });
@@ -97,25 +96,10 @@ class Modal extends React.Component {
97
96
  componentDidMount() {
98
97
  this.setState({
99
98
  mounted: true
100
- }); // TODO(v11)
99
+ });
101
100
 
102
101
  if (process.env.NODE_ENV !== "production") {
103
- if (!this.props.unstable_ModalBackdropScroll) {
104
- console.warn(`Consider setting 'unstable_ModalBackdropScroll' prop to true
105
- to prepare for the next major version upgrade. 'unstable_ModalBackdropScroll'
106
- prop will be removed in the next major version but implemented as the default behavior.`);
107
- }
108
-
109
- if (this.props.overrides && this.props.overrides.Backdrop) {
110
- console.warn(`Backdrop element will be removed in the next major version in favor of
111
- DialogContainer element that will have the backdrop styles and backdrop click handle.
112
- Consider setting 'unstable_ModalBackdropScroll' prop to true that will apply backdrop
113
- styles to DialogContainer enable modal scrolling while cursor in over the backdrop.
114
- Then pass backdrop overrides to DialogContainer instead. Tha will help you with
115
- the next major version upgrade.`);
116
- } // $FlowFixMe: flow complains that this prop doesn't exist
117
-
118
-
102
+ // $FlowFixMe: flow complains that this prop doesn't exist
119
103
  if (this.props.closable) {
120
104
  console.warn('The property `closable` is not supported on the Modal. Did you mean `closeable`?');
121
105
  }
@@ -177,7 +161,7 @@ class Modal extends React.Component {
177
161
  didOpen() {
178
162
  // Sometimes scroll starts past zero, possibly due to animation
179
163
  // Reset scroll to 0 (other libraries do this as well)
180
- const rootRef = this.getRef('Root').current;
164
+ const rootRef = this.rootRef.current;
181
165
 
182
166
  if (rootRef) {
183
167
  rootRef.scrollTop = 0;
@@ -214,8 +198,7 @@ class Modal extends React.Component {
214
198
  isOpen,
215
199
  size,
216
200
  role,
217
- closeable,
218
- unstable_ModalBackdropScroll
201
+ closeable
219
202
  } = this.props;
220
203
  return {
221
204
  $animate: animate,
@@ -224,7 +207,6 @@ class Modal extends React.Component {
224
207
  $size: size,
225
208
  $role: role,
226
209
  $closeable: !!closeable,
227
- $unstable_ModalBackdropScroll: unstable_ModalBackdropScroll,
228
210
  $isFocusVisible: this.state.isFocusVisible
229
211
  };
230
212
  }
@@ -250,21 +232,11 @@ class Modal extends React.Component {
250
232
  return typeof children === 'function' ? children() : children;
251
233
  }
252
234
 
253
- getRef(component) {
254
- if (!this._refs[component]) {
255
- this._refs[component] = /*#__PURE__*/React.createRef();
256
- }
257
-
258
- return this._refs[component];
259
- }
260
-
261
235
  renderModal() {
262
236
  const {
263
237
  overrides = {},
264
238
  closeable,
265
239
  role,
266
- unstable_ModalBackdropScroll,
267
- autofocus,
268
240
  autoFocus,
269
241
  focusLock,
270
242
  returnFocus
@@ -273,47 +245,32 @@ class Modal extends React.Component {
273
245
  Root: RootOverride,
274
246
  Dialog: DialogOverride,
275
247
  DialogContainer: DialogContainerOverride,
276
- Backdrop: BackdropOverride,
277
248
  Close: CloseOverride
278
249
  } = overrides;
279
250
  const [Root, rootProps] = getOverrides(RootOverride, StyledRoot);
280
- const [Backdrop, backdropProps] = getOverrides(BackdropOverride, StyledBackdrop);
281
251
  const [DialogContainer, dialogContainerProps] = getOverrides(DialogContainerOverride, StyledDialogContainer);
282
252
  const [Dialog, dialogProps] = getOverrides(DialogOverride, StyledDialog);
283
253
  const [Close, closeProps] = getOverrides(CloseOverride, StyledClose);
284
254
  const sharedProps = this.getSharedProps();
285
255
  const children = this.getChildren();
286
-
287
- if (autofocus === false && process.env.NODE_ENV !== "production") {
288
- console.warn(`The prop "autofocus" is deprecated in favor of "autoFocus" to be consistent across the project.
289
- The property "autofocus" will be removed in a future major version.`);
290
- } // Handles backdrop click when `unstable_ModalBackdropScroll` is set to true
291
-
292
-
293
- if (dialogContainerProps.ref) {
294
- this._refs.DialogContainer = dialogContainerProps.ref;
295
- }
296
-
297
- const dialogContainerConditionalProps = unstable_ModalBackdropScroll ? {
298
- ref: this.getRef('DialogContainer')
299
- } : {};
300
256
  return /*#__PURE__*/React.createElement(LocaleContext.Consumer, null, locale => /*#__PURE__*/React.createElement(FocusLock, {
301
257
  disabled: !focusLock // Allow focus to escape when UI is within an iframe
302
258
  ,
303
259
  crossFrame: false,
304
260
  returnFocus: returnFocus,
305
- autoFocus: autofocus !== null ? autofocus : autoFocus
261
+ autoFocus: autoFocus
306
262
  }, /*#__PURE__*/React.createElement(Root, _extends({
307
- "data-baseweb": "modal",
308
- ref: this.getRef('Root')
309
- }, sharedProps, rootProps), /*#__PURE__*/React.createElement(Backdrop, _extends({}, unstable_ModalBackdropScroll ? {} : {
310
- ref: this.getRef('DeprecatedBackdrop')
311
- }, sharedProps, backdropProps)), /*#__PURE__*/React.createElement(DialogContainer, _extends({}, dialogContainerConditionalProps, sharedProps, dialogContainerProps), /*#__PURE__*/React.createElement(Dialog, _extends({
263
+ "data-baseweb": "modal" // flowlint-next-line unclear-type:off
264
+ ,
265
+ ref: this.rootRef
266
+ }, sharedProps, rootProps), /*#__PURE__*/React.createElement(DialogContainer // flowlint-next-line unclear-type:off
267
+ , _extends({
268
+ ref: this.dialogContainerRef
269
+ }, sharedProps, dialogContainerProps), /*#__PURE__*/React.createElement(Dialog, _extends({
312
270
  tabIndex: -1,
313
271
  "aria-modal": true,
314
272
  "aria-label": "dialog",
315
- role: role,
316
- ref: this.getRef('Dialog')
273
+ role: role
317
274
  }, sharedProps, dialogProps), children, closeable ? /*#__PURE__*/React.createElement(Close, _extends({
318
275
  "aria-label": locale.modal.close,
319
276
  onClick: this.onCloseClick
@@ -345,8 +302,6 @@ class Modal extends React.Component {
345
302
 
346
303
  _defineProperty(Modal, "defaultProps", {
347
304
  animate: true,
348
- // TODO(v11): remove
349
- autofocus: null,
350
305
  autoFocus: true,
351
306
  focusLock: true,
352
307
  returnFocus: true,
@@ -355,8 +310,7 @@ _defineProperty(Modal, "defaultProps", {
355
310
  isOpen: false,
356
311
  overrides: {},
357
312
  role: ROLE.dialog,
358
- size: SIZE.default,
359
- unstable_ModalBackdropScroll: false
313
+ size: SIZE.default
360
314
  });
361
315
 
362
316
  export default Modal;