@kaizen/components 1.70.13 → 1.70.15

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 (19) hide show
  1. package/dist/cjs/Calendar/CalendarRange/CalendarRange.cjs +7 -4
  2. package/dist/cjs/Calendar/CalendarRange/CalendarRange.module.scss.cjs +1 -0
  3. package/dist/cjs/Filter/FilterDateRangePicker/FilterDateRangePicker.cjs +6 -1
  4. package/dist/cjs/Filter/FilterDateRangePicker/FilterDateRangePicker.module.css.cjs +6 -0
  5. package/dist/cjs/Filter/FilterDateRangePicker/subcomponents/FilterDateRangePickerField/FilterDateRangePickerField.cjs +4 -1
  6. package/dist/esm/Calendar/CalendarRange/CalendarRange.mjs +7 -4
  7. package/dist/esm/Calendar/CalendarRange/CalendarRange.module.scss.mjs +1 -0
  8. package/dist/esm/Filter/FilterDateRangePicker/FilterDateRangePicker.mjs +5 -1
  9. package/dist/esm/Filter/FilterDateRangePicker/FilterDateRangePicker.module.css.mjs +4 -0
  10. package/dist/esm/Filter/FilterDateRangePicker/subcomponents/FilterDateRangePickerField/FilterDateRangePickerField.mjs +4 -1
  11. package/dist/styles.css +12 -0
  12. package/dist/types/Calendar/CalendarRange/CalendarRange.d.ts +1 -1
  13. package/package.json +55 -3
  14. package/src/Calendar/CalendarRange/CalendarRange.module.scss +5 -0
  15. package/src/Calendar/CalendarRange/CalendarRange.tsx +3 -1
  16. package/src/Filter/FilterDateRangePicker/FilterDateRangePicker.module.css +7 -0
  17. package/src/Filter/FilterDateRangePicker/FilterDateRangePicker.tsx +3 -1
  18. package/src/Filter/FilterDateRangePicker/_docs/FilterDateRangePicker.stories.tsx +36 -1
  19. package/src/Filter/FilterDateRangePicker/subcomponents/FilterDateRangePickerField/FilterDateRangePickerField.tsx +5 -1
@@ -24,9 +24,11 @@ var CalendarRange = function (_a) {
24
24
  classNameOverride = _a.classNameOverride,
25
25
  selected = _a.selected,
26
26
  defaultMonth = _a.defaultMonth,
27
- _d = _a.locale,
28
- locale$1 = _d === undefined ? locale.enAU : _d,
29
- restProps = tslib.__rest(_a, ["id", "onMount", "hasDivider", "classNameOverride", "selected", "defaultMonth", "locale"]);
27
+ _d = _a.numberOfMonths,
28
+ numberOfMonths = _d === undefined ? 2 : _d,
29
+ _e = _a.locale,
30
+ locale$1 = _e === undefined ? locale.enAU : _e,
31
+ restProps = tslib.__rest(_a, ["id", "onMount", "hasDivider", "classNameOverride", "selected", "defaultMonth", "numberOfMonths", "locale"]);
30
32
  var calendarRef = React.useRef(null);
31
33
  React.useEffect(function () {
32
34
  if (calendarRef.current) onMount === null || onMount === undefined ? undefined : onMount(calendarRef.current);
@@ -37,6 +39,7 @@ var CalendarRange = function (_a) {
37
39
  var classNames = tslib.__assign(tslib.__assign({}, baseCalendarClassNames.baseCalendarClassNames), {
38
40
  month: hasDivider ? CalendarRange_module.monthWithDivider : CalendarRange_module.month,
39
41
  caption_end: CalendarRange_module.captionEnd,
42
+ caption_start: CalendarRange_module.captionStart,
40
43
  nav: CalendarRange_module.nav,
41
44
  day_range_start: CalendarRange_module.dayRangeStart,
42
45
  day_range_end: CalendarRange_module.dayRangeEnd,
@@ -68,7 +71,7 @@ var CalendarRange = function (_a) {
68
71
  });
69
72
  }
70
73
  },
71
- numberOfMonths: 2,
74
+ numberOfMonths: numberOfMonths,
72
75
  locale: locale$1
73
76
  }, restProps)));
74
77
  };
@@ -5,6 +5,7 @@ var styles = {
5
5
  "monthWithDivider": "CalendarRange-module_monthWithDivider__JY-56",
6
6
  "nav": "CalendarRange-module_nav__OtaVb",
7
7
  "captionEnd": "CalendarRange-module_captionEnd__GSLQO",
8
+ "captionStart": "CalendarRange-module_captionStart__K5hlF",
8
9
  "dayRangeStart": "CalendarRange-module_dayRangeStart__TwdDT",
9
10
  "dayRangeEnd": "CalendarRange-module_dayRangeEnd__y6dEB",
10
11
  "dayRangeMiddle": "CalendarRange-module_dayRangeMiddle__SybKY"
@@ -2,6 +2,7 @@
2
2
 
3
3
  var tslib = require('tslib');
4
4
  var React = require('react');
5
+ var classnames = require('classnames');
5
6
  var getLocale = require('../../DatePicker/utils/getLocale.cjs');
6
7
  var Filter = require('../Filter/Filter.cjs');
7
8
  var FilterContents = require('../Filter/subcomponents/FilterContents/FilterContents.cjs');
@@ -9,12 +10,14 @@ var DateRangeDisplayLabel = require('./subcomponents/DateRangeDisplayLabel/DateR
9
10
  var FilterDateRangePickerField = require('./subcomponents/FilterDateRangePickerField/FilterDateRangePickerField.cjs');
10
11
  var isValidRange = require('./subcomponents/FilterDateRangePickerField/utils/isValidRange.cjs');
11
12
  var isCompleteDateRange = require('./utils/isCompleteDateRange.cjs');
13
+ var FilterDateRangePicker_module = require('./FilterDateRangePicker.module.css.cjs');
12
14
  function _interopDefault(e) {
13
15
  return e && e.__esModule ? e : {
14
16
  default: e
15
17
  };
16
18
  }
17
19
  var React__default = /*#__PURE__*/_interopDefault(React);
20
+ var classnames__default = /*#__PURE__*/_interopDefault(classnames);
18
21
  var FilterDateRangePicker = function (_a) {
19
22
  var propsId = _a.id,
20
23
  isOpen = _a.isOpen,
@@ -38,7 +41,9 @@ var FilterDateRangePicker = function (_a) {
38
41
  label: label
39
42
  }, triggerProps));
40
43
  }
41
- }, React__default.default.createElement(FilterContents.FilterContents, null, React__default.default.createElement(FilterDateRangePickerField.FilterDateRangePickerField, tslib.__assign({
44
+ }, React__default.default.createElement(FilterContents.FilterContents, {
45
+ classNameOverride: classnames__default.default(FilterDateRangePicker_module.filterDateRangePickerContents)
46
+ }, React__default.default.createElement(FilterDateRangePickerField.FilterDateRangePickerField, tslib.__assign({
42
47
  id: "".concat(id, "--input"),
43
48
  label: label,
44
49
  locale: locale,
@@ -0,0 +1,6 @@
1
+ 'use strict';
2
+
3
+ var styles = {
4
+ "filterDateRangePickerContents": "FilterDateRangePicker-module_filterDateRangePickerContents__P7eNa"
5
+ };
6
+ module.exports = styles;
@@ -13,6 +13,7 @@ require('react-day-picker');
13
13
  var parseDateFromTextFormatValue = require('../../../../Calendar/utils/parseDateFromTextFormatValue.cjs');
14
14
  var getLocale = require('../../../../DatePicker/utils/getLocale.cjs');
15
15
  var useDateInputHandlers = require('../../../FilterDatePicker/hooks/useDateInputHandlers.cjs');
16
+ var useMediaQueries = require('../../../../utils/useMediaQueries.cjs');
16
17
  var DateRangeInputField = require('../DateRangeInputField/DateRangeInputField.cjs');
17
18
  var filterDateRangePickerFieldReducer = require('./filterDateRangePickerFieldReducer.cjs');
18
19
  var useEndDateValidation = require('./hooks/useEndDateValidation.cjs');
@@ -44,6 +45,7 @@ var FilterDateRangePickerField = function (_a) {
44
45
  restProps = tslib.__rest(_a, ["id", "label", "locale", "defaultMonth", "selectedRange", "onRangeChange", "disabledDays", "inputStartDateProps", "inputEndDateProps", "description", "validationMessage", "onValidate", "classNameOverride"]);
45
46
  var formatMessage = i18nReactIntl.useIntl().formatMessage;
46
47
  var locale = getLocale.getLocale(propsLocale);
48
+ var queries = useMediaQueries.useMediaQueries().queries;
47
49
  var translatedDateFrom = formatMessage({
48
50
  id: 'filterDateRangePicker.dateFrom',
49
51
  defaultMessage: 'Date from',
@@ -222,7 +224,7 @@ var FilterDateRangePickerField = function (_a) {
222
224
  dateStart: dateStartValidation.validationMessage,
223
225
  dateEnd: dateEndValidation.validationMessage
224
226
  },
225
- classNameOverride: FilterDateRangePickerField_module.dateRangeInputField
227
+ classNameOverride: classnames__default.default(FilterDateRangePickerField_module.dateRangeInputField)
226
228
  }), React__default.default.createElement(CalendarRange.CalendarRange, {
227
229
  disabled: disabledDays,
228
230
  locale: locale,
@@ -232,6 +234,7 @@ var FilterDateRangePickerField = function (_a) {
232
234
  },
233
235
  onSelect: handleCalendarSelectRange,
234
236
  month: state.startMonth,
237
+ numberOfMonths: queries.isSmall ? 1 : 2,
235
238
  onMonthChange: function (value) {
236
239
  return dispatch({
237
240
  type: 'navigate_months',
@@ -17,9 +17,11 @@ const CalendarRange = /*#__PURE__*/function () {
17
17
  classNameOverride = _a.classNameOverride,
18
18
  selected = _a.selected,
19
19
  defaultMonth = _a.defaultMonth,
20
- _d = _a.locale,
21
- locale = _d === undefined ? enAU : _d,
22
- restProps = __rest(_a, ["id", "onMount", "hasDivider", "classNameOverride", "selected", "defaultMonth", "locale"]);
20
+ _d = _a.numberOfMonths,
21
+ numberOfMonths = _d === undefined ? 2 : _d,
22
+ _e = _a.locale,
23
+ locale = _e === undefined ? enAU : _e,
24
+ restProps = __rest(_a, ["id", "onMount", "hasDivider", "classNameOverride", "selected", "defaultMonth", "numberOfMonths", "locale"]);
23
25
  var calendarRef = useRef(null);
24
26
  useEffect(function () {
25
27
  if (calendarRef.current) onMount === null || onMount === undefined ? undefined : onMount(calendarRef.current);
@@ -30,6 +32,7 @@ const CalendarRange = /*#__PURE__*/function () {
30
32
  var classNames = __assign(__assign({}, baseCalendarClassNames), {
31
33
  month: hasDivider ? styles.monthWithDivider : styles.month,
32
34
  caption_end: styles.captionEnd,
35
+ caption_start: styles.captionStart,
33
36
  nav: styles.nav,
34
37
  day_range_start: styles.dayRangeStart,
35
38
  day_range_end: styles.dayRangeEnd,
@@ -61,7 +64,7 @@ const CalendarRange = /*#__PURE__*/function () {
61
64
  });
62
65
  }
63
66
  },
64
- numberOfMonths: 2,
67
+ numberOfMonths: numberOfMonths,
65
68
  locale: locale
66
69
  }, restProps)));
67
70
  };
@@ -3,6 +3,7 @@ var styles = {
3
3
  "monthWithDivider": "CalendarRange-module_monthWithDivider__JY-56",
4
4
  "nav": "CalendarRange-module_nav__OtaVb",
5
5
  "captionEnd": "CalendarRange-module_captionEnd__GSLQO",
6
+ "captionStart": "CalendarRange-module_captionStart__K5hlF",
6
7
  "dayRangeStart": "CalendarRange-module_dayRangeStart__TwdDT",
7
8
  "dayRangeEnd": "CalendarRange-module_dayRangeEnd__y6dEB",
8
9
  "dayRangeMiddle": "CalendarRange-module_dayRangeMiddle__SybKY"
@@ -1,5 +1,6 @@
1
1
  import { __rest, __assign } from 'tslib';
2
2
  import React, { useId } from 'react';
3
+ import classnames from 'classnames';
3
4
  import { getLocale } from '../../DatePicker/utils/getLocale.mjs';
4
5
  import { Filter } from '../Filter/Filter.mjs';
5
6
  import { FilterContents } from '../Filter/subcomponents/FilterContents/FilterContents.mjs';
@@ -7,6 +8,7 @@ import { DateRangeDisplayLabel } from './subcomponents/DateRangeDisplayLabel/Dat
7
8
  import { FilterDateRangePickerField } from './subcomponents/FilterDateRangePickerField/FilterDateRangePickerField.mjs';
8
9
  import { isValidRange } from './subcomponents/FilterDateRangePickerField/utils/isValidRange.mjs';
9
10
  import { isCompleteDateRange } from './utils/isCompleteDateRange.mjs';
11
+ import styles from './FilterDateRangePicker.module.css.mjs';
10
12
  const FilterDateRangePicker = /*#__PURE__*/function () {
11
13
  const FilterDateRangePicker = function (_a) {
12
14
  var propsId = _a.id,
@@ -31,7 +33,9 @@ const FilterDateRangePicker = /*#__PURE__*/function () {
31
33
  label: label
32
34
  }, triggerProps));
33
35
  }
34
- }, /*#__PURE__*/React.createElement(FilterContents, null, /*#__PURE__*/React.createElement(FilterDateRangePickerField, __assign({
36
+ }, /*#__PURE__*/React.createElement(FilterContents, {
37
+ classNameOverride: classnames(styles.filterDateRangePickerContents)
38
+ }, /*#__PURE__*/React.createElement(FilterDateRangePickerField, __assign({
35
39
  id: "".concat(id, "--input"),
36
40
  label: label,
37
41
  locale: locale,
@@ -0,0 +1,4 @@
1
+ var styles = {
2
+ "filterDateRangePickerContents": "FilterDateRangePicker-module_filterDateRangePickerContents__P7eNa"
3
+ };
4
+ export { styles as default };
@@ -11,6 +11,7 @@ import 'react-day-picker';
11
11
  import { parseDateFromTextFormatValue } from '../../../../Calendar/utils/parseDateFromTextFormatValue.mjs';
12
12
  import { getLocale } from '../../../../DatePicker/utils/getLocale.mjs';
13
13
  import { useDateInputHandlers } from '../../../FilterDatePicker/hooks/useDateInputHandlers.mjs';
14
+ import { useMediaQueries } from '../../../../utils/useMediaQueries.mjs';
14
15
  import { DateRangeInputField } from '../DateRangeInputField/DateRangeInputField.mjs';
15
16
  import { filterDatePickerFieldReducer } from './filterDateRangePickerFieldReducer.mjs';
16
17
  import { useEndDateValidation } from './hooks/useEndDateValidation.mjs';
@@ -36,6 +37,7 @@ const FilterDateRangePickerField = /*#__PURE__*/function () {
36
37
  restProps = __rest(_a, ["id", "label", "locale", "defaultMonth", "selectedRange", "onRangeChange", "disabledDays", "inputStartDateProps", "inputEndDateProps", "description", "validationMessage", "onValidate", "classNameOverride"]);
37
38
  var formatMessage = useIntl().formatMessage;
38
39
  var locale = getLocale(propsLocale);
40
+ var queries = useMediaQueries().queries;
39
41
  var translatedDateFrom = formatMessage({
40
42
  id: 'filterDateRangePicker.dateFrom',
41
43
  defaultMessage: 'Date from',
@@ -214,7 +216,7 @@ const FilterDateRangePickerField = /*#__PURE__*/function () {
214
216
  dateStart: dateStartValidation.validationMessage,
215
217
  dateEnd: dateEndValidation.validationMessage
216
218
  },
217
- classNameOverride: styles.dateRangeInputField
219
+ classNameOverride: classnames(styles.dateRangeInputField)
218
220
  }), /*#__PURE__*/React.createElement(CalendarRange, {
219
221
  disabled: disabledDays,
220
222
  locale: locale,
@@ -224,6 +226,7 @@ const FilterDateRangePickerField = /*#__PURE__*/function () {
224
226
  },
225
227
  onSelect: handleCalendarSelectRange,
226
228
  month: state.startMonth,
229
+ numberOfMonths: queries.isSmall ? 1 : 2,
227
230
  onMonthChange: function (value) {
228
231
  return dispatch({
229
232
  type: 'navigate_months',
package/dist/styles.css CHANGED
@@ -1863,6 +1863,10 @@
1863
1863
  .CalendarRange-module_captionEnd__GSLQO .CalendarRange-module_nav__OtaVb {
1864
1864
  flex-direction: row-reverse;
1865
1865
  }
1866
+ .CalendarRange-module_captionStart__K5hlF.CalendarRange-module_captionEnd__GSLQO .CalendarRange-module_nav__OtaVb {
1867
+ justify-content: space-between;
1868
+ flex-direction: row;
1869
+ }
1866
1870
 
1867
1871
  .CalendarRange-module_dayRangeStart__TwdDT,
1868
1872
  .CalendarRange-module_dayRangeEnd__y6dEB {
@@ -3711,6 +3715,14 @@ input[type=range].InputRange-module_ratingScaleRange__gI-rs::-ms-thumb:not(:disa
3711
3715
  .FilterDateRangePickerField-module_dateRangeInputField__EEU-X {
3712
3716
  margin-bottom: var(--spacing-24, 1.5rem);
3713
3717
  }
3718
+ @media (width <= 320px) {
3719
+ .FilterDateRangePicker-module_filterDateRangePickerContents__P7eNa {
3720
+ padding: var(--spacing-16);
3721
+ max-width: 320px;
3722
+ box-sizing: border-box;
3723
+ }
3724
+ }
3725
+
3714
3726
  /** THIS IS AN AUTOGENERATED FILE **/
3715
3727
  .ListBox-module_listBox__q95MO {
3716
3728
  list-style: none;
@@ -7,6 +7,6 @@ export type CalendarRangeProps = {
7
7
  hasDivider?: boolean;
8
8
  } & OverrideClassName<Omit<DayPickerRangeProps, 'mode'>>;
9
9
  export declare const CalendarRange: {
10
- ({ id, onMount, hasDivider, classNameOverride, selected, defaultMonth, locale, ...restProps }: CalendarRangeProps): JSX.Element;
10
+ ({ id, onMount, hasDivider, classNameOverride, selected, defaultMonth, numberOfMonths, locale, ...restProps }: CalendarRangeProps): JSX.Element;
11
11
  displayName: string;
12
12
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kaizen/components",
3
- "version": "1.70.13",
3
+ "version": "1.70.15",
4
4
  "description": "Kaizen component library",
5
5
  "author": "Geoffrey Chong <geoff.chong@cultureamp.com>",
6
6
  "homepage": "https://cultureamp.design",
@@ -30,6 +30,58 @@
30
30
  "sideEffects": [
31
31
  "styles.css"
32
32
  ],
33
+ "exports": {
34
+ ".": {
35
+ "import": "./dist/esm/index.mjs",
36
+ "require": "./dist/cjs/index.cjs",
37
+ "types": "./dist/types/index.d.ts"
38
+ },
39
+ "./future": {
40
+ "import": "./dist/esm/future.mjs",
41
+ "require": "./dist/cjs/future.cjs",
42
+ "types": "./dist/types/__rc__/index.d.ts"
43
+ },
44
+ "./v1/actions": {
45
+ "import": "./dist/esm/actionsV1.mjs",
46
+ "require": "./dist/cjs/actionsV1.cjs",
47
+ "types": "./dist/types/v1-actions.d.ts"
48
+ },
49
+ "./v1/overlays": {
50
+ "import": "./dist/esm/overlaysV1.mjs",
51
+ "main": "./dist/cjs/overlaysV1.cjs",
52
+ "types": "./dist/types/v1-overlays.d.ts"
53
+ },
54
+ "./v2/actions": {
55
+ "import": "./dist/esm/actionsV2.mjs",
56
+ "require": "./dist/cjs/actionsV2.cjs",
57
+ "types": "./dist/types/v2-actions.d.ts"
58
+ },
59
+ "./v2/overlays": {
60
+ "import": "./dist/esm/overlaysV2.mjs",
61
+ "require": "./dist/cjs/overlaysV2.cjs",
62
+ "types": "./dist/types/v2-overlays.d.ts"
63
+ },
64
+ "./v3/actions": {
65
+ "import": "./dist/esm/actionsV3.mjs",
66
+ "require": "./dist/cjs/actionsV3.cjs",
67
+ "types": "./dist/types/v3-actions.d.ts"
68
+ },
69
+ "./v3/overlays": {
70
+ "import": "./dist/esm/overlaysV3.mjs",
71
+ "require": "./dist/cjs/overlaysV3.cjs",
72
+ "types": "./dist/types/v3-overlays.d.ts"
73
+ },
74
+ "./v3/react-aria": {
75
+ "import": "./dist/esm/reactAriaV3.mjs",
76
+ "require": "./dist/cjs/reactAriaV3.cjs",
77
+ "types": "./dist/types/__react-aria__/index.d.ts"
78
+ },
79
+ "./v3/react-aria-components": {
80
+ "import": "./dist/esm/reactAriaComponentsV3.mjs",
81
+ "require": "./dist/cjs/reactAriaComponentsV3.cjs",
82
+ "types": "./dist/types/__react-aria-components__/index.d.ts"
83
+ }
84
+ },
33
85
  "bin": {
34
86
  "kaizen-codemod": "./bin/codemod.sh"
35
87
  },
@@ -117,8 +169,8 @@
117
169
  "svgo": "^3.3.2",
118
170
  "tslib": "^2.8.1",
119
171
  "tsx": "^4.19.2",
120
- "@kaizen/package-bundler": "2.0.4",
121
- "@kaizen/design-tokens": "10.8.7"
172
+ "@kaizen/design-tokens": "10.8.7",
173
+ "@kaizen/package-bundler": "2.0.4"
122
174
  },
123
175
  "devDependenciesComments": {
124
176
  "sass": "Prevent deprecation warnings introduced in 1.80 as we plan to move away from sass",
@@ -47,6 +47,11 @@ $cell-border-radius: 3px;
47
47
  .captionEnd & {
48
48
  flex-direction: row-reverse;
49
49
  }
50
+
51
+ .captionStart.captionEnd & {
52
+ justify-content: space-between;
53
+ flex-direction: row;
54
+ }
50
55
  }
51
56
 
52
57
  .dayRangeStart,
@@ -22,6 +22,7 @@ export const CalendarRange = ({
22
22
  classNameOverride,
23
23
  selected,
24
24
  defaultMonth,
25
+ numberOfMonths = 2,
25
26
  locale = enAU,
26
27
  ...restProps
27
28
  }: CalendarRangeProps): JSX.Element => {
@@ -39,6 +40,7 @@ export const CalendarRange = ({
39
40
  ...baseCalendarClassNames,
40
41
  month: hasDivider ? styles.monthWithDivider : styles.month,
41
42
  caption_end: styles.captionEnd,
43
+ caption_start: styles.captionStart,
42
44
  nav: styles.nav,
43
45
  day_range_start: styles.dayRangeStart,
44
46
  day_range_end: styles.dayRangeEnd,
@@ -57,7 +59,7 @@ export const CalendarRange = ({
57
59
  IconRight: () => <Icon name="arrow_forward" isPresentational shouldMirrorInRTL />,
58
60
  IconLeft: () => <Icon name="arrow_back" isPresentational shouldMirrorInRTL />,
59
61
  }}
60
- numberOfMonths={2}
62
+ numberOfMonths={numberOfMonths}
61
63
  locale={locale}
62
64
  {...restProps}
63
65
  />
@@ -0,0 +1,7 @@
1
+ @media (width <= 320px) {
2
+ .filterDateRangePickerContents {
3
+ padding: var(--spacing-16);
4
+ max-width: 320px;
5
+ box-sizing: border-box;
6
+ }
7
+ }
@@ -1,4 +1,5 @@
1
1
  import React, { useId } from 'react'
2
+ import classNames from 'classnames'
2
3
  import { getLocale } from '~components/DatePicker/utils/getLocale'
3
4
  import { Filter, FilterContents, type FilterProps } from '~components/Filter/Filter'
4
5
  import { type FilterButtonProps } from '../FilterButton'
@@ -9,6 +10,7 @@ import {
9
10
  } from './subcomponents/FilterDateRangePickerField'
10
11
  import { isValidRange } from './subcomponents/FilterDateRangePickerField/utils/isValidRange'
11
12
  import { isCompleteDateRange } from './utils/isCompleteDateRange'
13
+ import styles from './FilterDateRangePicker.module.css'
12
14
 
13
15
  export type FilterDateRangePickerProps = {
14
16
  id?: string
@@ -46,7 +48,7 @@ export const FilterDateRangePicker = ({
46
48
  })
47
49
  }
48
50
  >
49
- <FilterContents>
51
+ <FilterContents classNameOverride={classNames(styles.filterDateRangePickerContents)}>
50
52
  <FilterDateRangePickerField
51
53
  id={`${id}--input`}
52
54
  label={label}
@@ -1,6 +1,6 @@
1
1
  import React, { useEffect, useState } from 'react'
2
2
  import { type Meta, type StoryObj } from '@storybook/react'
3
- import { fn } from '@storybook/test'
3
+ import { expect, fn, waitFor, within } from '@storybook/test'
4
4
  import Highlight from 'react-highlight'
5
5
  import { type DateRange } from '~components/Calendar'
6
6
  import { defaultMonthControls } from '~components/Calendar/_docs/controls/defaultMonthControls'
@@ -428,3 +428,38 @@ export const Validation: Story = {
428
428
  controls: { disable: true },
429
429
  },
430
430
  }
431
+
432
+ export const OnSmallViewport: Story = {
433
+ parameters: { viewport: { defaultViewport: 'mobile1' } },
434
+ ...FilterDateRangePickerTemplate,
435
+ play: async ({ canvasElement, step }) => {
436
+ const canvas = within(canvasElement)
437
+
438
+ await step('initial render complete', async () => {
439
+ await waitFor(() => {
440
+ canvas.getByRole('button', {
441
+ name: 'Dates',
442
+ })
443
+ })
444
+ })
445
+
446
+ await step('Can open the date picker', async () => {
447
+ await waitFor(() => {
448
+ const button = canvas.getByRole('button', {
449
+ name: 'Dates',
450
+ })
451
+ button.click()
452
+ })
453
+ })
454
+
455
+ await step('Back and Forward arrow and both visible', async () => {
456
+ await waitFor(() => {
457
+ const prevMonth = canvas.getByLabelText('Go to previous month')
458
+ const nextMonth = canvas.getByLabelText('Go to next month')
459
+
460
+ expect(prevMonth).toBeVisible()
461
+ expect(nextMonth).toBeVisible()
462
+ })
463
+ })
464
+ },
465
+ }
@@ -15,6 +15,7 @@ import { type DateValidationResponse } from '~components/Filter/FilterDatePicker
15
15
  import { useDateInputHandlers } from '~components/Filter/FilterDatePicker/hooks/useDateInputHandlers'
16
16
  import { type DataAttributes } from '~components/types/DataAttributes'
17
17
  import { type OverrideClassName } from '~components/types/OverrideClassName'
18
+ import { useMediaQueries } from '~components/utils/useMediaQueries'
18
19
  import { DateRangeInputField, type DateRangeInputFieldProps } from '../DateRangeInputField'
19
20
  import { filterDatePickerFieldReducer } from './filterDateRangePickerFieldReducer'
20
21
  import { useEndDateValidation } from './hooks/useEndDateValidation'
@@ -84,6 +85,8 @@ export const FilterDateRangePickerField = ({
84
85
  const { formatMessage } = useIntl()
85
86
  const locale = getLocale(propsLocale)
86
87
 
88
+ const { queries } = useMediaQueries()
89
+
87
90
  const translatedDateFrom = formatMessage({
88
91
  id: 'filterDateRangePicker.dateFrom',
89
92
  defaultMessage: 'Date from',
@@ -292,7 +295,7 @@ export const FilterDateRangePickerField = ({
292
295
  dateStart: dateStartValidation.validationMessage,
293
296
  dateEnd: dateEndValidation.validationMessage,
294
297
  }}
295
- classNameOverride={styles.dateRangeInputField}
298
+ classNameOverride={classnames(styles.dateRangeInputField)}
296
299
  />
297
300
  <CalendarRange
298
301
  disabled={disabledDays}
@@ -303,6 +306,7 @@ export const FilterDateRangePickerField = ({
303
306
  }}
304
307
  onSelect={handleCalendarSelectRange}
305
308
  month={state.startMonth}
309
+ numberOfMonths={queries.isSmall ? 1 : 2}
306
310
  onMonthChange={(value: Date) => dispatch({ type: 'navigate_months', date: value })}
307
311
  />
308
312
  </div>