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
@@ -9,16 +9,18 @@ exports.default = void 0;
9
9
 
10
10
  var React = _interopRequireWildcard(require("react"));
11
11
 
12
- var _arrowRight = _interopRequireDefault(require("../icon/arrow-right.js"));
12
+ var _chevronRight = _interopRequireDefault(require("../icon/chevron-right.js"));
13
13
 
14
- var _arrowLeft = _interopRequireDefault(require("../icon/arrow-left.js"));
14
+ var _chevronLeft = _interopRequireDefault(require("../icon/chevron-left.js"));
15
15
 
16
- var _triangleDown = _interopRequireDefault(require("../icon/triangle-down.js"));
16
+ var _chevronDown = _interopRequireDefault(require("../icon/chevron-down.js"));
17
17
 
18
18
  var _dateFnsAdapter = _interopRequireDefault(require("./utils/date-fns-adapter.js"));
19
19
 
20
20
  var _dateHelpers = _interopRequireDefault(require("./utils/date-helpers.js"));
21
21
 
22
+ var _calendarHeaderHelpers = require("./utils/calendar-header-helpers.js");
23
+
22
24
  var _index = require("../menu/index.js");
23
25
 
24
26
  var _index2 = require("../popover/index.js");
@@ -55,6 +57,10 @@ function _iterableToArrayLimit(arr, i) { if (typeof Symbol === "undefined" || !(
55
57
 
56
58
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
57
59
 
60
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
61
+
62
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
63
+
58
64
  function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
59
65
 
60
66
  function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
@@ -93,10 +99,6 @@ var DIRECTION = {
93
99
  PREVIOUS: 'previous'
94
100
  };
95
101
 
96
- function yearMonthToId(year, month) {
97
- return "".concat(year, "-").concat(month);
98
- }
99
-
100
102
  function idToYearMonth(id) {
101
103
  return id.split('-').map(Number);
102
104
  }
@@ -115,14 +117,13 @@ var CalendarHeader = /*#__PURE__*/function (_React$Component) {
115
117
 
116
118
  _defineProperty(_assertThisInitialized(_this), "dateHelpers", void 0);
117
119
 
118
- _defineProperty(_assertThisInitialized(_this), "items", void 0);
120
+ _defineProperty(_assertThisInitialized(_this), "monthItems", void 0);
119
121
 
120
- _defineProperty(_assertThisInitialized(_this), "minYear", void 0);
121
-
122
- _defineProperty(_assertThisInitialized(_this), "maxYear", void 0);
122
+ _defineProperty(_assertThisInitialized(_this), "yearItems", void 0);
123
123
 
124
124
  _defineProperty(_assertThisInitialized(_this), "state", {
125
- isMonthYearDropdownOpen: false,
125
+ isMonthDropdownOpen: false,
126
+ isYearDropdownOpen: false,
126
127
  isFocusVisible: false
127
128
  });
128
129
 
@@ -130,17 +131,94 @@ var CalendarHeader = /*#__PURE__*/function (_React$Component) {
130
131
  return _this.props.date || _this.dateHelpers.date();
131
132
  });
132
133
 
133
- _defineProperty(_assertThisInitialized(_this), "handleYearChange", function (_ref2) {
134
- var value = _ref2.value;
134
+ _defineProperty(_assertThisInitialized(_this), "getYearItems", function () {
135
+ var date = _this.getDateProp();
135
136
 
136
- if (_this.props.onYearChange) {
137
- // $FlowFixMe
138
- _this.props.onYearChange({
139
- date: _this.dateHelpers.setYear(_this.getDateProp(), value[0].id)
137
+ var maxDate = _this.props.maxDate;
138
+ var minDate = _this.props.minDate;
139
+ var maxYear = maxDate ? _this.dateHelpers.getYear(maxDate) : MAX_YEAR;
140
+ var minYear = minDate ? _this.dateHelpers.getYear(minDate) : MIN_YEAR;
141
+
142
+ var selectedMonth = _this.dateHelpers.getMonth(date); // TODO: this logic can be optimized to only run when minDate / maxDate change
143
+
144
+
145
+ _this.yearItems = Array.from({
146
+ length: maxYear - minYear + 1
147
+ }, function (_, i) {
148
+ return minYear + i;
149
+ }).map(function (year) {
150
+ return {
151
+ id: year.toString(),
152
+ label: year.toString()
153
+ };
154
+ });
155
+ var monthOfMaxDate = maxDate ? _this.dateHelpers.getMonth(maxDate) : MAX_MONTH;
156
+ var monthOfMinDate = minDate ? _this.dateHelpers.getMonth(minDate) : MIN_MONTH; // Generates array like [0,1,.... monthOfMaxDate]
157
+
158
+ var maxYearMonths = Array.from({
159
+ length: monthOfMaxDate + 1
160
+ }, function (x, i) {
161
+ return i;
162
+ }); // Generates array like [monthOfMinDate, ...., 10, 11]
163
+
164
+ var minYearMonths = Array.from({
165
+ length: 12 - monthOfMinDate
166
+ }, function (x, i) {
167
+ return i + monthOfMinDate;
168
+ });
169
+
170
+ if (selectedMonth > maxYearMonths[maxYearMonths.length - 1]) {
171
+ var lastIdx = _this.yearItems.length - 1;
172
+ _this.yearItems[lastIdx] = _objectSpread(_objectSpread({}, _this.yearItems[lastIdx]), {}, {
173
+ disabled: true
174
+ });
175
+ }
176
+
177
+ if (selectedMonth < minYearMonths[0]) {
178
+ _this.yearItems[0] = _objectSpread(_objectSpread({}, _this.yearItems[0]), {}, {
179
+ disabled: true
140
180
  });
141
181
  }
142
182
  });
143
183
 
184
+ _defineProperty(_assertThisInitialized(_this), "getMonthItems", function () {
185
+ var date = _this.getDateProp();
186
+
187
+ var year = _this.dateHelpers.getYear(date);
188
+
189
+ var maxDate = _this.props.maxDate;
190
+ var minDate = _this.props.minDate;
191
+ var maxYear = maxDate ? _this.dateHelpers.getYear(maxDate) : MAX_YEAR;
192
+ var minYear = minDate ? _this.dateHelpers.getYear(minDate) : MIN_YEAR;
193
+ var monthOfMaxDate = maxDate ? _this.dateHelpers.getMonth(maxDate) : MAX_MONTH; // Generates array like [0,1,.... monthOfMaxDate]
194
+
195
+ var maxYearMonths = Array.from({
196
+ length: monthOfMaxDate + 1
197
+ }, function (x, i) {
198
+ return i;
199
+ });
200
+ var monthOfMinDate = minDate ? _this.dateHelpers.getMonth(minDate) : MIN_MONTH; // Generates array like [monthOfMinDate, ...., 10, 11]
201
+
202
+ var minYearMonths = Array.from({
203
+ length: 12 - monthOfMinDate
204
+ }, function (x, i) {
205
+ return i + monthOfMinDate;
206
+ });
207
+ var maxMinYearMonthsIntersection = maxYearMonths.filter(function (year) {
208
+ return minYearMonths.includes(year);
209
+ });
210
+ var filterMonthsList = year === maxYear && year === minYear ? maxMinYearMonthsIntersection : year === maxYear ? maxYearMonths : year === minYear ? minYearMonths : null;
211
+
212
+ var formatMonthLabel = function formatMonthLabel(month) {
213
+ return _this.dateHelpers.getMonthInLocale(month, _this.props.locale);
214
+ };
215
+
216
+ _this.monthItems = (0, _calendarHeaderHelpers.getFilteredMonthItems)({
217
+ filterMonthsList: filterMonthsList,
218
+ formatMonthLabel: formatMonthLabel
219
+ });
220
+ });
221
+
144
222
  _defineProperty(_assertThisInitialized(_this), "increaseMonth", function () {
145
223
  if (_this.props.onMonthChange) {
146
224
  // $FlowFixMe
@@ -208,14 +286,16 @@ var CalendarHeader = /*#__PURE__*/function (_React$Component) {
208
286
  }
209
287
  });
210
288
 
211
- _defineProperty(_assertThisInitialized(_this), "renderPreviousMonthButton", function (_ref3) {
212
- var locale = _ref3.locale,
213
- theme = _ref3.theme;
289
+ _defineProperty(_assertThisInitialized(_this), "renderPreviousMonthButton", function (_ref2) {
290
+ var locale = _ref2.locale,
291
+ theme = _ref2.theme;
214
292
 
215
293
  var date = _this.getDateProp();
216
294
 
217
- var _this$props$overrides = _this.props.overrides,
218
- overrides = _this$props$overrides === void 0 ? {} : _this$props$overrides;
295
+ var _this$props3 = _this.props,
296
+ _this$props3$override = _this$props3.overrides,
297
+ overrides = _this$props3$override === void 0 ? {} : _this$props3$override,
298
+ density = _this$props3.density;
219
299
 
220
300
  var allPrevDaysDisabled = _this.dateHelpers.monthDisabledBefore(date, _this.props);
221
301
 
@@ -244,7 +324,7 @@ var CalendarHeader = /*#__PURE__*/function (_React$Component) {
244
324
  PrevButton = _getOverrides2[0],
245
325
  prevButtonProps = _getOverrides2[1];
246
326
 
247
- var _getOverrides3 = (0, _overrides.getOverrides)(overrides.PrevButtonIcon, theme.direction === 'rtl' ? _arrowRight.default : _arrowLeft.default),
327
+ var _getOverrides3 = (0, _overrides.getOverrides)(overrides.PrevButtonIcon, theme.direction === 'rtl' ? _chevronRight.default : _chevronLeft.default),
248
328
  _getOverrides4 = _slicedToArray(_getOverrides3, 2),
249
329
  PrevButtonIcon = _getOverrides4[0],
250
330
  prevButtonIconProps = _getOverrides4[1];
@@ -265,7 +345,7 @@ var CalendarHeader = /*#__PURE__*/function (_React$Component) {
265
345
  $disabled: isDisabled,
266
346
  $order: _this.props.order
267
347
  }, prevButtonProps), isHidden ? null : /*#__PURE__*/React.createElement(PrevButtonIcon, _extends({
268
- size: '24px',
348
+ size: density === _constants.DENSITY.high ? 24 : 36,
269
349
  overrides: {
270
350
  Svg: {
271
351
  style: navBtnStyle
@@ -274,14 +354,16 @@ var CalendarHeader = /*#__PURE__*/function (_React$Component) {
274
354
  }, prevButtonIconProps)));
275
355
  });
276
356
 
277
- _defineProperty(_assertThisInitialized(_this), "renderNextMonthButton", function (_ref4) {
278
- var locale = _ref4.locale,
279
- theme = _ref4.theme;
357
+ _defineProperty(_assertThisInitialized(_this), "renderNextMonthButton", function (_ref3) {
358
+ var locale = _ref3.locale,
359
+ theme = _ref3.theme;
280
360
 
281
361
  var date = _this.getDateProp();
282
362
 
283
- var _this$props$overrides2 = _this.props.overrides,
284
- overrides = _this$props$overrides2 === void 0 ? {} : _this$props$overrides2;
363
+ var _this$props4 = _this.props,
364
+ _this$props4$override = _this$props4.overrides,
365
+ overrides = _this$props4$override === void 0 ? {} : _this$props4$override,
366
+ density = _this$props4.density;
285
367
 
286
368
  var allNextDaysDisabled = _this.dateHelpers.monthDisabledAfter(date, _this.props);
287
369
 
@@ -310,7 +392,7 @@ var CalendarHeader = /*#__PURE__*/function (_React$Component) {
310
392
  NextButton = _getOverrides6[0],
311
393
  nextButtonProps = _getOverrides6[1];
312
394
 
313
- var _getOverrides7 = (0, _overrides.getOverrides)(overrides.NextButtonIcon, theme.direction === 'rtl' ? _arrowLeft.default : _arrowRight.default),
395
+ var _getOverrides7 = (0, _overrides.getOverrides)(overrides.NextButtonIcon, theme.direction === 'rtl' ? _chevronLeft.default : _chevronRight.default),
314
396
  _getOverrides8 = _slicedToArray(_getOverrides7, 2),
315
397
  NextButtonIcon = _getOverrides8[0],
316
398
  nextButtonIconProps = _getOverrides8[1];
@@ -335,7 +417,7 @@ var CalendarHeader = /*#__PURE__*/function (_React$Component) {
335
417
  $isFocusVisible: _this.state.isFocusVisible,
336
418
  $order: _this.props.order
337
419
  }, nextButtonProps), isHidden ? null : /*#__PURE__*/React.createElement(NextButtonIcon, _extends({
338
- size: '24px',
420
+ size: density === _constants.DENSITY.high ? 24 : 36,
339
421
  overrides: {
340
422
  Svg: {
341
423
  style: navBtnStyle
@@ -345,7 +427,7 @@ var CalendarHeader = /*#__PURE__*/function (_React$Component) {
345
427
  });
346
428
 
347
429
  _defineProperty(_assertThisInitialized(_this), "canArrowsOpenDropdown", function (event) {
348
- if (!_this.state.isMonthYearDropdownOpen) {
430
+ if (!_this.state.isMonthDropdownOpen && !_this.state.isYearDropdownOpen) {
349
431
  if (event.key === 'ArrowUp' || event.key === 'ArrowDown') {
350
432
  return true;
351
433
  }
@@ -357,12 +439,15 @@ var CalendarHeader = /*#__PURE__*/function (_React$Component) {
357
439
  _defineProperty(_assertThisInitialized(_this), "renderMonthYearDropdown", function () {
358
440
  var date = _this.getDateProp();
359
441
 
360
- var _this$props3 = _this.props,
361
- locale = _this$props3.locale,
362
- maxDate = _this$props3.maxDate,
363
- minDate = _this$props3.minDate,
364
- _this$props3$override = _this$props3.overrides,
365
- overrides = _this$props3$override === void 0 ? {} : _this$props3$override;
442
+ var month = _this.dateHelpers.getMonth(date);
443
+
444
+ var year = _this.dateHelpers.getYear(date);
445
+
446
+ var _this$props5 = _this.props,
447
+ locale = _this$props5.locale,
448
+ _this$props5$override = _this$props5.overrides,
449
+ overrides = _this$props5$override === void 0 ? {} : _this$props5$override,
450
+ density = _this$props5.density;
366
451
 
367
452
  var _getOverrides9 = (0, _overrides.getOverrides)(overrides.MonthYearSelectButton, _styledComponents.StyledMonthYearSelectButton),
368
453
  _getOverrides10 = _slicedToArray(_getOverrides9, 2),
@@ -395,115 +480,146 @@ var CalendarHeader = /*#__PURE__*/function (_React$Component) {
395
480
  menuProps && menuProps.overrides); // $FlowFixMe
396
481
 
397
482
  menuProps.overrides = menuOverrides;
398
- var defaultMonths = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11];
399
- var maxYear = maxDate ? _this.dateHelpers.getYear(maxDate) : MAX_YEAR;
400
- var minYear = minDate ? _this.dateHelpers.getYear(minDate) : MIN_YEAR;
401
- var maxDateMonth = maxDate ? _this.dateHelpers.getMonth(maxDate) : MAX_MONTH; // Generates array like [0,1,.... maxDateMonth]
402
483
 
403
- var maxYearMonths = Array.from({
404
- length: maxDateMonth + 1
405
- }, function (x, i) {
406
- return i;
484
+ var initialMonthIndex = _this.monthItems.findIndex(function (month) {
485
+ return month.id === _this.dateHelpers.getMonth(date).toString();
407
486
  });
408
- var minDateMonth = minDate ? _this.dateHelpers.getMonth(minDate) : MIN_MONTH; // Generates array like [minDateMonth, ...., 10, 11]
409
487
 
410
- var minYearMonths = Array.from({
411
- length: 12 - minDateMonth
412
- }, function (x, i) {
413
- return i + minDateMonth;
488
+ var initialYearIndex = _this.yearItems.findIndex(function (year) {
489
+ return year.id === _this.dateHelpers.getYear(date).toString();
414
490
  });
415
491
 
416
- if (_this.maxYear !== maxYear || _this.minYear !== minYear) {
417
- _this.maxYear = maxYear;
418
- _this.minYear = minYear;
419
- _this.items = [];
492
+ var monthTitle = "".concat(_this.dateHelpers.getMonthInLocale(_this.dateHelpers.getMonth(date), locale));
493
+ var yearTitle = "".concat(_this.dateHelpers.getYear(date));
494
+ return _this.isMultiMonthHorizontal() ? /*#__PURE__*/React.createElement("div", null, "".concat(monthTitle, " ").concat(yearTitle)) : /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(OverriddenPopover, _extends({
495
+ placement: "bottom",
496
+ autoFocus: true,
497
+ focusLock: true,
498
+ isOpen: _this.state.isMonthDropdownOpen,
499
+ onClick: function onClick() {
500
+ _this.setState(function (prev) {
501
+ return {
502
+ isMonthDropdownOpen: !prev.isMonthDropdownOpen
503
+ };
504
+ });
505
+ },
506
+ onClickOutside: function onClickOutside() {
507
+ return _this.setState({
508
+ isMonthDropdownOpen: false
509
+ });
510
+ },
511
+ onEsc: function onEsc() {
512
+ return _this.setState({
513
+ isMonthDropdownOpen: false
514
+ });
515
+ },
516
+ content: function content() {
517
+ return /*#__PURE__*/React.createElement(OverriddenStatefulMenu, _extends({
518
+ initialState: {
519
+ highlightedIndex: initialMonthIndex,
520
+ isFocused: true
521
+ },
522
+ items: _this.monthItems,
523
+ onItemSelect: function onItemSelect(_ref4) {
524
+ var item = _ref4.item,
525
+ event = _ref4.event;
526
+ event.preventDefault();
527
+ var month = idToYearMonth(item.id);
528
+
529
+ var updatedDate = _this.dateHelpers.set(date, {
530
+ year: year,
531
+ month: month
532
+ });
420
533
 
421
- var _loop = function _loop(i) {
422
- var months = void 0;
534
+ _this.props.onMonthChange && _this.props.onMonthChange({
535
+ date: updatedDate
536
+ });
423
537
 
424
- if (i === minYear && i === maxYear) {
425
- months = maxYearMonths.filter(function (month) {
426
- return minYearMonths.includes(month);
538
+ _this.setState({
539
+ isMonthDropdownOpen: false
540
+ });
541
+ }
542
+ }, menuProps));
543
+ }
544
+ }, popoverProps), /*#__PURE__*/React.createElement(MonthYearSelectButton, _extends({
545
+ "aria-live": "polite",
546
+ type: "button",
547
+ $isFocusVisible: _this.state.isFocusVisible,
548
+ $density: density,
549
+ onKeyUp: function onKeyUp(event) {
550
+ if (_this.canArrowsOpenDropdown(event)) {
551
+ _this.setState({
552
+ isMonthDropdownOpen: true
427
553
  });
428
- } else if (i === minYear) {
429
- months = minYearMonths;
430
- } else if (i === maxYear) {
431
- months = maxYearMonths;
432
- } else {
433
- months = defaultMonths;
554
+ }
555
+ },
556
+ onKeyDown: function onKeyDown(event) {
557
+ if (_this.canArrowsOpenDropdown(event)) {
558
+ // disables page scroll
559
+ event.preventDefault();
434
560
  }
435
561
 
436
- months.forEach(function (month) {
437
- _this.items.push({
438
- id: yearMonthToId(i, month),
439
- label: "".concat(_this.dateHelpers.getMonthInLocale(month, locale), " ").concat(i)
562
+ if (event.key === 'Tab') {
563
+ _this.setState({
564
+ isMonthDropdownOpen: false
440
565
  });
441
- });
442
- };
443
-
444
- for (var i = minYear; i <= maxYear; i++) {
445
- _loop(i);
566
+ }
446
567
  }
447
- }
448
-
449
- var initialIndex = _this.items.findIndex(function (item) {
450
- return item.id === yearMonthToId(_this.dateHelpers.getYear(date), _this.dateHelpers.getMonth(date));
451
- });
452
-
453
- var monthYearTitle = "".concat(_this.dateHelpers.getMonthInLocale(_this.dateHelpers.getMonth(date), locale), " ").concat(_this.dateHelpers.getYear(date));
454
- return _this.isMultiMonthHorizontal() ? /*#__PURE__*/React.createElement("div", null, monthYearTitle) : /*#__PURE__*/React.createElement(OverriddenPopover, _extends({
568
+ }, monthYearSelectButtonProps), monthTitle, /*#__PURE__*/React.createElement(MonthYearSelectIconContainer, monthYearSelectIconContainerProps, /*#__PURE__*/React.createElement(_chevronDown.default, {
569
+ title: "",
570
+ overrides: {
571
+ Svg: {
572
+ props: {
573
+ role: 'presentation'
574
+ }
575
+ }
576
+ },
577
+ size: density === _constants.DENSITY.high ? 16 : 24
578
+ })))), /*#__PURE__*/React.createElement(OverriddenPopover, _extends({
455
579
  placement: "bottom",
456
- autoFocus: true,
457
580
  focusLock: true,
458
- isOpen: _this.state.isMonthYearDropdownOpen,
581
+ isOpen: _this.state.isYearDropdownOpen,
459
582
  onClick: function onClick() {
460
583
  _this.setState(function (prev) {
461
584
  return {
462
- isMonthYearDropdownOpen: !prev.isMonthYearDropdownOpen
585
+ isYearDropdownOpen: !prev.isYearDropdownOpen
463
586
  };
464
587
  });
465
588
  },
466
589
  onClickOutside: function onClickOutside() {
467
590
  return _this.setState({
468
- isMonthYearDropdownOpen: false
591
+ isYearDropdownOpen: false
469
592
  });
470
593
  },
471
594
  onEsc: function onEsc() {
472
595
  return _this.setState({
473
- isMonthYearDropdownOpen: false
596
+ isYearDropdownOpen: false
474
597
  });
475
598
  },
476
599
  content: function content() {
477
600
  return /*#__PURE__*/React.createElement(OverriddenStatefulMenu, _extends({
478
601
  initialState: {
479
- highlightedIndex: initialIndex,
602
+ highlightedIndex: initialYearIndex,
480
603
  isFocused: true
481
604
  },
482
- items: _this.items,
605
+ items: _this.yearItems,
483
606
  onItemSelect: function onItemSelect(_ref5) {
484
607
  var item = _ref5.item,
485
608
  event = _ref5.event;
486
609
  event.preventDefault();
487
-
488
- var _idToYearMonth = idToYearMonth(item.id),
489
- _idToYearMonth2 = _slicedToArray(_idToYearMonth, 2),
490
- year = _idToYearMonth2[0],
491
- month = _idToYearMonth2[1];
610
+ var year = idToYearMonth(item.id);
492
611
 
493
612
  var updatedDate = _this.dateHelpers.set(date, {
494
613
  year: year,
495
614
  month: month
496
615
  });
497
616
 
498
- _this.props.onMonthChange && _this.props.onMonthChange({
499
- date: updatedDate
500
- });
501
617
  _this.props.onYearChange && _this.props.onYearChange({
502
618
  date: updatedDate
503
619
  });
504
620
 
505
621
  _this.setState({
506
- isMonthYearDropdownOpen: false
622
+ isYearDropdownOpen: false
507
623
  });
508
624
  }
509
625
  }, menuProps));
@@ -512,10 +628,11 @@ var CalendarHeader = /*#__PURE__*/function (_React$Component) {
512
628
  "aria-live": "polite",
513
629
  type: "button",
514
630
  $isFocusVisible: _this.state.isFocusVisible,
631
+ $density: density,
515
632
  onKeyUp: function onKeyUp(event) {
516
633
  if (_this.canArrowsOpenDropdown(event)) {
517
634
  _this.setState({
518
- isMonthYearDropdownOpen: true
635
+ isYearDropdownOpen: true
519
636
  });
520
637
  }
521
638
  },
@@ -527,11 +644,11 @@ var CalendarHeader = /*#__PURE__*/function (_React$Component) {
527
644
 
528
645
  if (event.key === 'Tab') {
529
646
  _this.setState({
530
- isMonthYearDropdownOpen: false
647
+ isYearDropdownOpen: false
531
648
  });
532
649
  }
533
650
  }
534
- }, monthYearSelectButtonProps), monthYearTitle, /*#__PURE__*/React.createElement(MonthYearSelectIconContainer, monthYearSelectIconContainerProps, /*#__PURE__*/React.createElement(_triangleDown.default, {
651
+ }, monthYearSelectButtonProps), yearTitle, /*#__PURE__*/React.createElement(MonthYearSelectIconContainer, monthYearSelectIconContainerProps, /*#__PURE__*/React.createElement(_chevronDown.default, {
535
652
  title: "",
536
653
  overrides: {
537
654
  Svg: {
@@ -539,22 +656,48 @@ var CalendarHeader = /*#__PURE__*/function (_React$Component) {
539
656
  role: 'presentation'
540
657
  }
541
658
  }
542
- }
543
- }))));
659
+ },
660
+ size: density === _constants.DENSITY.high ? 16 : 24
661
+ })))));
544
662
  });
545
663
 
546
664
  _this.dateHelpers = new _dateHelpers.default(props.adapter);
547
- _this.items = [];
665
+ _this.monthItems = [];
666
+ _this.yearItems = [];
548
667
  return _this;
549
668
  }
550
669
 
551
670
  _createClass(CalendarHeader, [{
671
+ key: "componentDidMount",
672
+ value: function componentDidMount() {
673
+ this.getYearItems();
674
+ this.getMonthItems();
675
+ }
676
+ }, {
677
+ key: "componentDidUpdate",
678
+ value: function componentDidUpdate(prevProps) {
679
+ var selectedMonthDidChange = this.dateHelpers.getMonth(this.props.date) !== this.dateHelpers.getMonth(prevProps.date);
680
+ var selectedYearDidChange = this.dateHelpers.getYear(this.props.date) !== this.dateHelpers.getYear(prevProps.date);
681
+
682
+ if (selectedMonthDidChange) {
683
+ // re-calculate yearItems
684
+ this.getYearItems();
685
+ }
686
+
687
+ if (selectedYearDidChange) {
688
+ // re-calculate monthItems
689
+ this.getMonthItems();
690
+ }
691
+ }
692
+ }, {
552
693
  key: "render",
553
694
  value: function render() {
554
695
  var _this2 = this;
555
696
 
556
- var _this$props$overrides3 = this.props.overrides,
557
- overrides = _this$props$overrides3 === void 0 ? {} : _this$props$overrides3;
697
+ var _this$props6 = this.props,
698
+ _this$props6$override = _this$props6.overrides,
699
+ overrides = _this$props6$override === void 0 ? {} : _this$props6$override,
700
+ density = _this$props6.density;
558
701
 
559
702
  var _getOverrides17 = (0, _overrides.getOverrides)(overrides.CalendarHeader, _styledComponents.StyledCalendarHeader),
560
703
  _getOverrides18 = _slicedToArray(_getOverrides17, 2),
@@ -575,6 +718,7 @@ var CalendarHeader = /*#__PURE__*/function (_React$Component) {
575
718
  return /*#__PURE__*/React.createElement(_themeProvider.ThemeContext.Consumer, null, function (theme) {
576
719
  return /*#__PURE__*/React.createElement(_index3.LocaleContext.Consumer, null, function (locale) {
577
720
  return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(_CalendarHeader, _extends({}, calendarHeaderProps, {
721
+ $density: _this2.props.density,
578
722
  onFocus: (0, _focusVisible.forkFocus)(calendarHeaderProps, _this2.handleFocus),
579
723
  onBlur: (0, _focusVisible.forkBlur)(calendarHeaderProps, _this2.handleBlur)
580
724
  }), _this2.renderPreviousMonthButton({
@@ -591,7 +735,9 @@ var CalendarHeader = /*#__PURE__*/function (_React$Component) {
591
735
  return /*#__PURE__*/React.createElement(WeekdayHeader, _extends({
592
736
  key: offset,
593
737
  alt: _this2.dateHelpers.getWeekdayInLocale(day, _this2.props.locale)
594
- }, weekdayHeaderProps), _this2.dateHelpers.getWeekdayMinInLocale(day, _this2.props.locale));
738
+ }, weekdayHeaderProps, {
739
+ $density: density
740
+ }), _this2.dateHelpers.getWeekdayMinInLocale(day, _this2.props.locale));
595
741
  })));
596
742
  });
597
743
  });