@synerise/ds-date-range-picker 0.21.1 → 0.21.2

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.
package/CHANGELOG.md CHANGED
@@ -3,6 +3,26 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## [0.21.2](https://github.com/Synerise/synerise-design/compare/@synerise/ds-date-range-picker@0.21.1...@synerise/ds-date-range-picker@0.21.2) (2023-04-14)
7
+
8
+
9
+ ### Bug Fixes
10
+
11
+ * **date-range-picker:** "more" dropdown trigger should toggle dropdown ([7083de0](https://github.com/Synerise/synerise-design/commit/7083de02906eb79a2274ef952b2cbd2c8122e1a7))
12
+ * **date-range-picker:** add some it.todo in tests ([ec6f52a](https://github.com/Synerise/synerise-design/commit/ec6f52a69df81e2d14312850521bc47114a70bdc))
13
+ * **date-range-picker:** date range picker us notation fixes ([c17afe0](https://github.com/Synerise/synerise-design/commit/c17afe052c3c0226ab4ed2f7c25655a0d2e89a75))
14
+ * **date-range-picker:** disable AM mode for 12 PM lower limit ([237bc00](https://github.com/Synerise/synerise-design/commit/237bc00277fa3fa3cb6dacba14a2630da75706fe))
15
+ * **date-range-picker:** fixes filter unselect all ([592b48e](https://github.com/Synerise/synerise-design/commit/592b48eedc876dd8215790d2b73a08f3e0ade170))
16
+ * **date-range-picker:** fixes issues with range cloning in old filters ([15fc3b4](https://github.com/Synerise/synerise-design/commit/15fc3b4878e761e2685cda99afdfd1ff590e2ac4))
17
+ * **date-range-picker:** month filter US notation fixes ([06ce486](https://github.com/Synerise/synerise-design/commit/06ce4861a1cc468b15ba01b82f75eca374f96f0f))
18
+ * **date-range-picker:** rangePicker 12HoursClock disabling options fix ([5de9505](https://github.com/Synerise/synerise-design/commit/5de95050e786821892557528cd3a61a0b5eadcbf))
19
+ * **date-range-picker:** tests fixes ([68935f3](https://github.com/Synerise/synerise-design/commit/68935f394b102e4af8cb1f04f314275cb45a41bb))
20
+ * **date-range-picker:** uS_NOTATION_MONTH_DAYS_INDEXES order fix ([1e1f701](https://github.com/Synerise/synerise-design/commit/1e1f701521a8a50c21f33bcf476cf41449e5c0f2))
21
+
22
+
23
+
24
+
25
+
6
26
  ## [0.21.1](https://github.com/Synerise/synerise-design/compare/@synerise/ds-date-range-picker@0.21.0...@synerise/ds-date-range-picker@0.21.1) (2023-04-12)
7
27
 
8
28
 
@@ -78,11 +78,11 @@ var Weekly = function Weekly(_ref) {
78
78
  onChange(scheduleToUpdate);
79
79
  }, [onChange]);
80
80
  React.useEffect(function () {
81
- var entriesWithActiveDaysValue = Object.keys(value).filter(function (id) {
81
+ var entriesWithActiveDaysValue = activeDays.length ? Object.keys(value).filter(function (id) {
82
82
  return activeDays.every(function (day) {
83
83
  return !!value[id][day] && haveActiveDaysCommonRange(value[id], activeDays);
84
84
  });
85
- });
85
+ }) : [];
86
86
  removeEmptyEntries(value);
87
87
  setFilteredSchedule(entriesWithActiveDaysValue);
88
88
  }, [value, activeDays, removeEmptyEntries]);
@@ -30,7 +30,7 @@ import AddButton from '../AddButton/AddButton';
30
30
  import RangeFormContainer from './RangeFormContainer/RangeFormContainer';
31
31
  import Day from './Day/Day';
32
32
  import SelectionHint from '../SelectionHint/SelectionHint';
33
- import { EU_NOTATION_WEEK_DAYS_INDEXES, US_NOTATION_WEEK_DAYS_INDEXES } from './constants/timeWindow.constants';
33
+ import { EU_NOTATION_MONTH_DAYS_INDEXES, EU_NOTATION_WEEK_DAYS_INDEXES, US_NOTATION_MONTH_DAYS_INDEXES, US_NOTATION_WEEK_DAYS_INDEXES } from './constants/timeWindow.constants';
34
34
  export var DEFAULT_LIMIT_MODE = 'Range';
35
35
 
36
36
  var TimeWindowBase = /*#__PURE__*/function (_React$PureComponent) {
@@ -189,7 +189,8 @@ var TimeWindowBase = /*#__PURE__*/function (_React$PureComponent) {
189
189
 
190
190
  _defineProperty(_assertThisInitialized(_this), "handleClearSelection", function () {
191
191
  _this.setState({
192
- activeDays: []
192
+ activeDays: [],
193
+ isRangeDefined: false
193
194
  });
194
195
  });
195
196
 
@@ -263,17 +264,30 @@ var TimeWindowBase = /*#__PURE__*/function (_React$PureComponent) {
263
264
  });
264
265
  });
265
266
 
267
+ _defineProperty(_assertThisInitialized(_this), "replaceDaysIndexesForUSNotation", function (daysIndexes) {
268
+ var isSundayFirstWeekDay = _this.props.isSundayFirstWeekDay;
269
+ var stringifyDaysIndexes = JSON.stringify(daysIndexes);
270
+ var stringifyEUNotationWeekDaysIndexes = JSON.stringify(EU_NOTATION_WEEK_DAYS_INDEXES);
271
+ var stringifyEUNotationMonthDaysIndexes = JSON.stringify(EU_NOTATION_MONTH_DAYS_INDEXES);
272
+ var result = daysIndexes;
273
+
274
+ if (stringifyDaysIndexes === stringifyEUNotationWeekDaysIndexes && isSundayFirstWeekDay) {
275
+ result = US_NOTATION_WEEK_DAYS_INDEXES;
276
+ }
277
+
278
+ if (stringifyDaysIndexes === stringifyEUNotationMonthDaysIndexes && isSundayFirstWeekDay) {
279
+ result = US_NOTATION_MONTH_DAYS_INDEXES;
280
+ }
281
+
282
+ return result;
283
+ });
284
+
266
285
  _defineProperty(_assertThisInitialized(_this), "getAllKeys", function () {
267
286
  var _this$props7 = _this.props,
268
287
  numberOfDays = _this$props7.numberOfDays,
269
- customDays = _this$props7.customDays,
270
- isSundayFirstWeekDay = _this$props7.isSundayFirstWeekDay;
288
+ customDays = _this$props7.customDays;
271
289
  var keys = range(numberOfDays);
272
-
273
- if (JSON.stringify(keys) === JSON.stringify(EU_NOTATION_WEEK_DAYS_INDEXES) && isSundayFirstWeekDay) {
274
- keys = US_NOTATION_WEEK_DAYS_INDEXES;
275
- }
276
-
290
+ keys = _this.replaceDaysIndexesForUSNotation(keys).slice();
277
291
  if (customDays) keys = [].concat(keys, Object.keys(customDays));
278
292
  return keys;
279
293
  });
@@ -444,9 +458,10 @@ var TimeWindowBase = /*#__PURE__*/function (_React$PureComponent) {
444
458
  };
445
459
 
446
460
  _proto.componentDidUpdate = function componentDidUpdate(prevProps, prevState) {
461
+ var activeDays = this.state.activeDays;
447
462
  var hasCommonRange = this.haveActiveDaysCommonRange();
448
463
 
449
- if (prevState.isRangeDefined !== hasCommonRange) {
464
+ if (prevState.isRangeDefined !== hasCommonRange && activeDays.length) {
450
465
  // eslint-disable-next-line react/no-did-update-set-state
451
466
  this.setState(function (state) {
452
467
  return _objectSpread({}, state, {
@@ -1,2 +1,4 @@
1
1
  export declare const EU_NOTATION_WEEK_DAYS_INDEXES: number[];
2
2
  export declare const US_NOTATION_WEEK_DAYS_INDEXES: number[];
3
+ export declare const EU_NOTATION_MONTH_DAYS_INDEXES: number[];
4
+ export declare const US_NOTATION_MONTH_DAYS_INDEXES: number[];
@@ -1,2 +1,4 @@
1
1
  export var EU_NOTATION_WEEK_DAYS_INDEXES = [0, 1, 2, 3, 4, 5, 6];
2
- export var US_NOTATION_WEEK_DAYS_INDEXES = [6, 0, 1, 2, 3, 4, 5];
2
+ export var US_NOTATION_WEEK_DAYS_INDEXES = [6, 0, 1, 2, 3, 4, 5];
3
+ export var EU_NOTATION_MONTH_DAYS_INDEXES = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34];
4
+ export var US_NOTATION_MONTH_DAYS_INDEXES = [6, 0, 1, 2, 3, 4, 5, 13, 7, 8, 9, 10, 11, 12, 20, 14, 15, 16, 17, 18, 19, 27, 21, 22, 23, 24, 25, 26, 34, 28, 29, 30, 31, 32, 33];
@@ -337,7 +337,9 @@ var RangePicker = /*#__PURE__*/function (_React$PureComponent) {
337
337
  });
338
338
 
339
339
  _defineProperty(_assertThisInitialized(_this), "renderTimePicker", function (side) {
340
- var value = _this.props.value;
340
+ var _this$props8 = _this.props,
341
+ value = _this$props8.value,
342
+ is12HoursClock = _this$props8.is12HoursClock;
341
343
  var from = value.from,
342
344
  to = value.to;
343
345
 
@@ -354,9 +356,9 @@ var RangePicker = /*#__PURE__*/function (_React$PureComponent) {
354
356
  key: "time-picker-" + side,
355
357
  value: getDateFromString(from),
356
358
  onChange: _this.handleFromTimeChange,
357
- disabledHours: getDisabledTimeOptions(from, 'HOURS', null, to),
358
- disabledMinutes: getDisabledTimeOptions(from, 'MINUTES', null, to),
359
- disabledSeconds: getDisabledTimeOptions(from, 'SECONDS', null, to),
359
+ disabledHours: getDisabledTimeOptions(from, 'HOURS', null, to, is12HoursClock),
360
+ disabledMinutes: getDisabledTimeOptions(from, 'MINUTES', null, to, is12HoursClock),
361
+ disabledSeconds: getDisabledTimeOptions(from, 'SECONDS', null, to, is12HoursClock),
360
362
  onShortNext: sidesAreAdjacent ? undefined : function () {
361
363
  _this.handleAddDay(1, COLUMNS.LEFT);
362
364
  },
@@ -372,9 +374,9 @@ var RangePicker = /*#__PURE__*/function (_React$PureComponent) {
372
374
  key: "time-picker-" + side,
373
375
  value: getDateFromString(to),
374
376
  onChange: _this.handleToTimeChange,
375
- disabledHours: getDisabledTimeOptions(to, 'HOURS', from, null),
376
- disabledMinutes: getDisabledTimeOptions(to, 'MINUTES', from, null),
377
- disabledSeconds: getDisabledTimeOptions(to, 'SECONDS', from, null),
377
+ disabledHours: getDisabledTimeOptions(to, 'HOURS', from, null, is12HoursClock),
378
+ disabledMinutes: getDisabledTimeOptions(to, 'MINUTES', from, null, is12HoursClock),
379
+ disabledSeconds: getDisabledTimeOptions(to, 'SECONDS', from, null, is12HoursClock),
378
380
  onShortNext: function onShortNext() {
379
381
  _this.handleAddDay(1, COLUMNS.RIGHT);
380
382
  },
@@ -420,10 +422,10 @@ var RangePicker = /*#__PURE__*/function (_React$PureComponent) {
420
422
  _proto.getSnapshotBeforeUpdate = function getSnapshotBeforeUpdate(prevProps) {
421
423
  var _prevProps$value, _prevProps$value2;
422
424
 
423
- var _this$props8 = this.props,
424
- value = _this$props8.value,
425
- forceAdjacentMonths = _this$props8.forceAdjacentMonths,
426
- startAlwaysOnTheLeft = _this$props8.startAlwaysOnTheLeft;
425
+ var _this$props9 = this.props,
426
+ value = _this$props9.value,
427
+ forceAdjacentMonths = _this$props9.forceAdjacentMonths,
428
+ startAlwaysOnTheLeft = _this$props9.startAlwaysOnTheLeft;
427
429
  var _this$props$jumpToSta = this.props.jumpToStartAndEnd,
428
430
  jumpToStartAndEnd = _this$props$jumpToSta === void 0 ? true : _this$props$jumpToSta;
429
431
  var _this$state3 = this.state,
@@ -462,14 +464,14 @@ var RangePicker = /*#__PURE__*/function (_React$PureComponent) {
462
464
  };
463
465
 
464
466
  _proto.render = function render() {
465
- var _this$props9 = this.props,
466
- mode = _this$props9.mode,
467
- onChange = _this$props9.onChange,
468
- value = _this$props9.value,
469
- canSwitchMode = _this$props9.canSwitchMode,
470
- dateOnly = _this$props9.dateOnly,
471
- onSwitchMode = _this$props9.onSwitchMode,
472
- texts = _this$props9.texts;
467
+ var _this$props10 = this.props,
468
+ mode = _this$props10.mode,
469
+ onChange = _this$props10.onChange,
470
+ value = _this$props10.value,
471
+ canSwitchMode = _this$props10.canSwitchMode,
472
+ dateOnly = _this$props10.dateOnly,
473
+ onSwitchMode = _this$props10.onSwitchMode,
474
+ texts = _this$props10.texts;
473
475
  return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(S.Sides, null, /*#__PURE__*/React.createElement(S.Side, {
474
476
  mode: mode
475
477
  }, this.renderSide(COLUMNS.LEFT)), /*#__PURE__*/React.createElement(S.Side, {
@@ -4,7 +4,7 @@ import fnsMin from 'date-fns/min';
4
4
  import fnsMax from 'date-fns/max';
5
5
  import fnsIsValid from 'date-fns/isValid';
6
6
  import dayjs from 'dayjs';
7
- import { AM, PM, HOUR_12, MAP_24_HOUR_TO_12, HOUR } from '@synerise/ds-time-picker';
7
+ import { AM, PM, HOUR_12, MAP_24_HOUR_TO_12, HOUR, DISABLE_CLOCK_MODE_HOUR } from '@synerise/ds-time-picker';
8
8
  import { fnsEndOfDay, fnsIsSameMonth, fnsStartOfDay, fnsStartOfMonth } from '../fns';
9
9
  import { TIME_OPTIONS } from '../constants';
10
10
  import SET from '../dateUtils/set';
@@ -46,10 +46,21 @@ export var getDisabledTimeOptions = function getDisabledTimeOptions(initialDay,
46
46
  var dayClockMode = getAmOrPmFromDate(legacyParse(day));
47
47
  var lowerLimitClockMode = getAmOrPmFromDate(legacyParse(lowerLimit));
48
48
  var upperLimitClockMode = getAmOrPmFromDate(legacyParse(upperLimit));
49
+ var dayBuilder = dayjs(day);
50
+ var dayHour = dayBuilder.get(HOUR);
49
51
 
50
52
  if (is12HoursClock && lowerLimit) {
51
53
  if (lowerLimitClockMode === PM && dayjs(lowerLimit).get(HOUR) === HOUR_12) {
52
- return [];
54
+ return [DISABLE_CLOCK_MODE_HOUR];
55
+ }
56
+
57
+ if (lowerLimitClockMode === AM && dayClockMode === PM) {
58
+ var day12HBuilder = dayjs(change24To12Hour(dayBuilder.toDate()));
59
+ var lowLimitDayBuilder = dayjs(lowerLimit);
60
+
61
+ if (day12HBuilder.isBefore(lowLimitDayBuilder)) {
62
+ return [DISABLE_CLOCK_MODE_HOUR];
63
+ }
53
64
  }
54
65
 
55
66
  if (lowerLimitClockMode === AM && dayClockMode === PM) {
@@ -65,15 +76,22 @@ export var getDisabledTimeOptions = function getDisabledTimeOptions(initialDay,
65
76
  if (is12HoursClock && upperLimit) {
66
77
  if (upperLimitClockMode === PM && dayClockMode === PM) {
67
78
  day = change24To12Hour(legacyParse(day));
68
- upperLimit = change24To12Hour(legacyParse(upperLimit));
79
+ }
80
+
81
+ upperLimit = change24To12Hour(legacyParse(upperLimit));
82
+ var upLimitDayBuilder = dayjs(upperLimit);
83
+
84
+ if (upperLimitClockMode === PM && dayClockMode === AM && dayBuilder.isAfter(upLimitDayBuilder)) {
85
+ return [DISABLE_CLOCK_MODE_HOUR];
86
+ }
87
+
88
+ if (upperLimitClockMode === PM && dayClockMode === AM) {
89
+ return [];
69
90
  }
70
91
  }
71
92
 
72
93
  if (is12HoursClock && granularity !== HOURS_GRANULARITY) {
73
- var dayBuilder = dayjs(day);
74
- var hour = dayBuilder.get(HOUR);
75
-
76
- if (hour === HOUR_12) {
94
+ if (dayHour === HOUR_12) {
77
95
  return [];
78
96
  }
79
97
  }
@@ -97,6 +115,22 @@ export var getDisabledTimeOptions = function getDisabledTimeOptions(initialDay,
97
115
  result = result.filter(function (item) {
98
116
  return item !== HOUR_12;
99
117
  });
118
+
119
+ var _lowLimitDayBuilder = dayjs(lowLimit);
120
+
121
+ var lowerLimitHour = _lowLimitDayBuilder.get(HOUR);
122
+
123
+ if (lowerLimitClockMode === PM && lowerLimitHour !== HOUR_12 && result[0] === 0) {
124
+ result.push(HOUR_12);
125
+ }
126
+
127
+ if (lowerLimitClockMode === AM && lowerLimitHour !== 0 && dayClockMode === AM && initialLowerLimit !== null) {
128
+ result.push(HOUR_12);
129
+ }
130
+
131
+ if (upperLimit && upperLimitClockMode === AM && dayClockMode === AM) {
132
+ result.push(DISABLE_CLOCK_MODE_HOUR);
133
+ }
100
134
  }
101
135
  }
102
136
 
@@ -48,8 +48,8 @@ var RangeDropdown = function RangeDropdown(_ref) {
48
48
  dropVisible = _React$useState[0],
49
49
  setDropVisible = _React$useState[1];
50
50
 
51
- var overlayRef = React.useRef(null);
52
- useOnClickOutside(overlayRef, function () {
51
+ var dropdownRef = React.useRef(null);
52
+ useOnClickOutside(dropdownRef, function () {
53
53
  setDropVisible(false);
54
54
  });
55
55
  var onMenuItemClick = React.useCallback(function (_ref2) {
@@ -70,7 +70,6 @@ var RangeDropdown = function RangeDropdown(_ref) {
70
70
  }, ranges) || anyOfTransformedRangesMatchesCurrentRange;
71
71
  var overlay = /*#__PURE__*/React.createElement(S.OverlayWrapper, {
72
72
  visible: dropVisible,
73
- ref: overlayRef,
74
73
  width: DROPDOWN_WIDTH
75
74
  }, /*#__PURE__*/React.createElement(Scrollbar, {
76
75
  maxHeight: MAX_ITEMS_COUNT * ITEMS_HEIGHT,
@@ -90,7 +89,9 @@ var RangeDropdown = function RangeDropdown(_ref) {
90
89
  })
91
90
  }, range.translationKey ? texts[range.translationKey] : range.key);
92
91
  }))));
93
- return /*#__PURE__*/React.createElement(S.DropdownContainer, null, /*#__PURE__*/React.createElement(S.Range, {
92
+ return /*#__PURE__*/React.createElement(S.DropdownContainer, {
93
+ ref: dropdownRef
94
+ }, /*#__PURE__*/React.createElement(S.Range, {
94
95
  type: containsCurrentRange ? 'primary' : 'tertiary',
95
96
  mode: "label-icon",
96
97
  onClick: function onClick() {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@synerise/ds-date-range-picker",
3
- "version": "0.21.1",
3
+ "version": "0.21.2",
4
4
  "description": "Date-Range-Picker UI Component for the Synerise Design System",
5
5
  "license": "ISC",
6
6
  "repository": "Synerise/synerise-design",
@@ -34,10 +34,10 @@
34
34
  "dependencies": {
35
35
  "@date-fns/upgrade": "^1.0.3",
36
36
  "@synerise/ds-button": "^0.17.12",
37
- "@synerise/ds-date-picker": "^0.9.5",
37
+ "@synerise/ds-date-picker": "^0.9.6",
38
38
  "@synerise/ds-icon": "^0.54.0",
39
- "@synerise/ds-manageable-list": "^0.25.0",
40
- "@synerise/ds-time-picker": "^0.7.4",
39
+ "@synerise/ds-manageable-list": "^0.25.1",
40
+ "@synerise/ds-time-picker": "^0.7.5",
41
41
  "@synerise/ds-tooltip": "^0.13.0",
42
42
  "@synerise/ds-utils": "^0.19.0",
43
43
  "date-fns": "^2.16.1",
@@ -54,5 +54,5 @@
54
54
  "devDependencies": {
55
55
  "@types/ramda": "^0.27.14"
56
56
  },
57
- "gitHead": "3bc6aad4f4a0cbb7ceb7a92c5854d0680047bcdc"
57
+ "gitHead": "a81aad1ee5bb7249f069115cab0ec06b66ab12b0"
58
58
  }