@synerise/ds-date-range-picker 0.22.0 → 0.23.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.
package/CHANGELOG.md CHANGED
@@ -3,6 +3,22 @@
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.23.0](https://github.com/Synerise/synerise-design/compare/@synerise/ds-date-range-picker@0.22.0...@synerise/ds-date-range-picker@0.23.0) (2023-08-22)
7
+
8
+
9
+ ### Bug Fixes
10
+
11
+ * **date-range-picker:** adds weekly types exports ([9d145bd](https://github.com/Synerise/synerise-design/commit/9d145bd6bd0060e7c044f694bdfeb7badaf8e475))
12
+
13
+
14
+ ### Features
15
+
16
+ * **date-range-picker:** added prop to hide "now" button ([61fe484](https://github.com/Synerise/synerise-design/commit/61fe484482b1610a872d918efa79760c906f3e7a))
17
+
18
+
19
+
20
+
21
+
6
22
  # [0.22.0](https://github.com/Synerise/synerise-design/compare/@synerise/ds-date-range-picker@0.21.24...@synerise/ds-date-range-picker@0.22.0) (2023-08-20)
7
23
 
8
24
 
package/README.md CHANGED
@@ -54,6 +54,7 @@ const value = {
54
54
  | relativePast | Enable relative filter for past ranges | boolean | `false` |
55
55
  | relativeFuture | Enable relative filter for future ranges | boolean | `false` |
56
56
  | showTime | Enable user to choose particular hour | boolean | `false` |
57
+ | showNowButton | Include "now" button to select current time (last minue) | boolean | `true` |
57
58
  | showFilter | Enable range filtering | boolean | `false` |
58
59
  | showCustomRange | Enable custom range form in relative range picker | boolean | `true` |
59
60
  | validate | Function to specify if particular date ranges are correct | (date:Date)=>boolean | - |
@@ -1,4 +1,4 @@
1
- import * as React from 'react';
1
+ import { ReactNode } from 'react';
2
2
  import { WrappedComponentProps } from 'react-intl';
3
3
  import { PopoverProps } from 'antd/lib/popover';
4
4
  import { DateToFormatOptions } from '@synerise/ds-data-format';
@@ -41,7 +41,7 @@ export interface DateRangePickerProps extends WrappedComponentProps {
41
41
  onVisibleChange?: (visible: boolean) => void;
42
42
  onFilterSave?: (filters: SavedFilter[]) => void;
43
43
  popoverProps?: Partial<PopoverProps>;
44
- popoverTrigger?: React.ReactNode;
44
+ popoverTrigger?: ReactNode;
45
45
  ranges?: DateRange[];
46
46
  rangeUnits?: Array<RelativeUnits>;
47
47
  relativeFuture?: boolean;
@@ -52,6 +52,7 @@ export interface DateRangePickerProps extends WrappedComponentProps {
52
52
  showFilter?: boolean;
53
53
  showTime?: boolean;
54
54
  showCustomRange?: boolean;
55
+ showNowButton?: boolean;
55
56
  texts: Texts;
56
57
  validate?: (value: DateRange) => {
57
58
  valid: boolean;
@@ -82,7 +83,7 @@ export interface State {
82
83
  visibleAddonKey?: string | undefined;
83
84
  }
84
85
  export declare type Texts = {
85
- [k in Translations]: string | React.ReactNode;
86
+ [k in Translations]: string | ReactNode;
86
87
  } & {
87
88
  [k in TranslationsPlaceholders]: string;
88
89
  };
@@ -92,6 +93,6 @@ export declare type WithTranslations = {
92
93
  texts?: Texts;
93
94
  };
94
95
  export declare type AddonType = {
95
- content: React.ReactNode;
96
+ content: ReactNode;
96
97
  key: string;
97
98
  };
@@ -1,7 +1,7 @@
1
1
  /// <reference types="react" />
2
2
  import { WrappedComponentProps } from 'react-intl';
3
3
  import { DateToFormatOptions } from '@synerise/ds-data-format';
4
- import { Texts } from 'DateRangePicker.types';
4
+ import { Texts } from '../DateRangePicker.types';
5
5
  import { DateRange } from '../date.types';
6
6
  export declare type Props = {
7
7
  mode: string;
@@ -1,4 +1,4 @@
1
- import * as React from 'react';
1
+ import React from 'react';
2
2
  import { RangePickerProps as Props } from './RangePicker.types';
3
3
  declare const _default: React.FC<Props>;
4
4
  export default _default;
@@ -8,7 +8,7 @@ function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.crea
8
8
 
9
9
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
10
10
 
11
- import * as React from 'react';
11
+ import React, { PureComponent } from 'react';
12
12
  import { DateUtils } from 'react-day-picker';
13
13
  import fnsIsSameDay from 'date-fns/isSameDay';
14
14
  import fnsIsValid from 'date-fns/isValid';
@@ -73,13 +73,13 @@ function replaceRange(value, day) {
73
73
  };
74
74
  }
75
75
 
76
- var RangePicker = /*#__PURE__*/function (_React$PureComponent) {
77
- _inheritsLoose(RangePicker, _React$PureComponent);
76
+ var RangePicker = /*#__PURE__*/function (_PureComponent) {
77
+ _inheritsLoose(RangePicker, _PureComponent);
78
78
 
79
79
  function RangePicker(props) {
80
80
  var _this;
81
81
 
82
- _this = _React$PureComponent.call(this, props) || this; // eslint-disable-next-line react/state-in-constructor
82
+ _this = _PureComponent.call(this, props) || this; // eslint-disable-next-line react/state-in-constructor
83
83
 
84
84
  _defineProperty(_assertThisInitialized(_this), "componentDidUpdate", NOOP);
85
85
 
@@ -472,11 +472,13 @@ var RangePicker = /*#__PURE__*/function (_React$PureComponent) {
472
472
  dateOnly = _this$props10.dateOnly,
473
473
  onSwitchMode = _this$props10.onSwitchMode,
474
474
  texts = _this$props10.texts;
475
+ var _this$props$showNowBu = this.props.showNowButton,
476
+ showNowButton = _this$props$showNowBu === void 0 ? true : _this$props$showNowBu;
475
477
  return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(S.Sides, null, /*#__PURE__*/React.createElement(S.Side, {
476
478
  mode: mode
477
479
  }, this.renderSide(COLUMNS.LEFT)), /*#__PURE__*/React.createElement(S.Side, {
478
480
  mode: mode
479
- }, this.renderSide(COLUMNS.RIGHT))), /*#__PURE__*/React.createElement(S.PickerFooter, null, /*#__PURE__*/React.createElement(Range, {
481
+ }, this.renderSide(COLUMNS.RIGHT))), /*#__PURE__*/React.createElement(S.PickerFooter, null, showNowButton && /*#__PURE__*/React.createElement(Range, {
480
482
  onClick: function onClick(_ref) {
481
483
  var currentTarget = _ref.currentTarget;
482
484
  var now = new Date();
@@ -503,6 +505,6 @@ var RangePicker = /*#__PURE__*/function (_React$PureComponent) {
503
505
  };
504
506
 
505
507
  return RangePicker;
506
- }(React.PureComponent);
508
+ }(PureComponent);
507
509
 
508
510
  export default withDataFormat(RangePicker);
@@ -12,6 +12,7 @@ export interface RangePickerProps extends WrappedComponentProps {
12
12
  texts: Texts;
13
13
  forceAdjacentMonths?: boolean;
14
14
  showCustomRange?: boolean;
15
+ showNowButton?: boolean;
15
16
  startAlwaysOnTheLeft?: boolean;
16
17
  jumpToStartAndEnd?: boolean;
17
18
  }
@@ -1,9 +1,9 @@
1
- import * as React from 'react';
1
+ import React, { PureComponent } from 'react';
2
2
  import type { DateRangePickerProps, DateRangePickerProps as Props, State, AddonType } from './DateRangePicker.types';
3
3
  import type { DateRange, RelativeDateRange } from './date.types';
4
4
  import { FilterDefinition, FilterValue } from './RangeFilter/RangeFilter.types';
5
5
  export declare function defaultValueTransformer(value: DateRange): DateRange;
6
- export declare class RawDateRangePicker extends React.PureComponent<DateRangePickerProps, State> {
6
+ export declare class RawDateRangePicker extends PureComponent<DateRangePickerProps, State> {
7
7
  static defaultProps: {
8
8
  ranges: DateRange[];
9
9
  relativePast: boolean;
@@ -27,7 +27,7 @@ export declare class RawDateRangePicker extends React.PureComponent<DateRangePic
27
27
  getAddons: () => AddonType[];
28
28
  render(): JSX.Element;
29
29
  }
30
- declare const _default: React.ForwardRefExoticComponent<Pick<DateRangePickerProps, "readOnly" | "texts" | "valueFormatOptions" | "format" | "value" | "onVisibleChange" | "rangeUnits" | "containerClass" | "disableDefaultTexts" | "disabledDate" | "forceAdjacentMonths" | "forceAbsolute" | "footerProps" | "onValueChange" | "onApply" | "onFilterSave" | "popoverProps" | "popoverTrigger" | "ranges" | "relativeFuture" | "relativePast" | "relativeModes" | "savedFilters" | "showRelativePicker" | "showFilter" | "showTime" | "showCustomRange" | "validate" | "valueTransformer" | "arrowColor" | "disableAbsoluteTimepickerInRelative" | "rangePickerInputProps" | "allowedFilterTypes" | "renderPopoverTrigger" | "isTruncateMs" | "filterValueSelectionModes"> & {
30
+ declare const _default: React.ForwardRefExoticComponent<Pick<DateRangePickerProps, "readOnly" | "texts" | "valueFormatOptions" | "format" | "value" | "onVisibleChange" | "rangeUnits" | "containerClass" | "disableDefaultTexts" | "disabledDate" | "forceAdjacentMonths" | "forceAbsolute" | "footerProps" | "onValueChange" | "onApply" | "onFilterSave" | "popoverProps" | "popoverTrigger" | "ranges" | "relativeFuture" | "relativePast" | "relativeModes" | "savedFilters" | "showRelativePicker" | "showFilter" | "showTime" | "showCustomRange" | "showNowButton" | "validate" | "valueTransformer" | "arrowColor" | "disableAbsoluteTimepickerInRelative" | "rangePickerInputProps" | "allowedFilterTypes" | "renderPopoverTrigger" | "isTruncateMs" | "filterValueSelectionModes"> & {
31
31
  forwardedRef?: ((instance: any) => void) | React.RefObject<any> | null | undefined;
32
32
  } & React.RefAttributes<any>> & {
33
33
  WrappedComponent: React.ComponentType<DateRangePickerProps>;
@@ -10,7 +10,7 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
10
10
 
11
11
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
12
12
 
13
- import * as React from 'react';
13
+ import React, { PureComponent } from 'react';
14
14
  import { omitBy, isUndefined } from 'lodash';
15
15
  import { injectIntl } from 'react-intl';
16
16
  import fnsIsValid from 'date-fns/isValid';
@@ -74,13 +74,13 @@ export function defaultValueTransformer(value) {
74
74
 
75
75
  return value;
76
76
  }
77
- export var RawDateRangePicker = /*#__PURE__*/function (_React$PureComponent) {
78
- _inheritsLoose(RawDateRangePicker, _React$PureComponent);
77
+ export var RawDateRangePicker = /*#__PURE__*/function (_PureComponent) {
78
+ _inheritsLoose(RawDateRangePicker, _PureComponent);
79
79
 
80
80
  function RawDateRangePicker(props) {
81
81
  var _this;
82
82
 
83
- _this = _React$PureComponent.call(this, props) || this; // eslint-disable-next-line react/state-in-constructor
83
+ _this = _PureComponent.call(this, props) || this; // eslint-disable-next-line react/state-in-constructor
84
84
 
85
85
  _defineProperty(_assertThisInitialized(_this), "handleFilterCancel", function () {
86
86
  _this.setState({
@@ -329,7 +329,9 @@ export var RawDateRangePicker = /*#__PURE__*/function (_React$PureComponent) {
329
329
  allowedFilterTypes = _this$props4.allowedFilterTypes,
330
330
  _this$props4$disableA = _this$props4.disableAbsoluteTimepickerInRelative,
331
331
  disableAbsoluteTimepickerInRelative = _this$props4$disableA === void 0 ? false : _this$props4$disableA,
332
- filterValueSelectionModes = _this$props4.filterValueSelectionModes;
332
+ filterValueSelectionModes = _this$props4.filterValueSelectionModes,
333
+ _this$props4$showNowB = _this$props4.showNowButton,
334
+ showNowButton = _this$props4$showNowB === void 0 ? true : _this$props4$showNowB;
333
335
  var _this$state3 = this.state,
334
336
  value = _this$state3.value,
335
337
  mode = _this$state3.mode;
@@ -372,10 +374,11 @@ export var RawDateRangePicker = /*#__PURE__*/function (_React$PureComponent) {
372
374
  var isValidSince = value.type === 'SINCE' && Boolean(value.offset && value.duration); // TODO apply ranges and find mapped lifetime here, this applies only for defaultValueTransformer
373
375
 
374
376
  var isValid = (isValidAbsolute || isValidRelative || isValidSince || key === CONST.ALL_TIME) && validator.valid;
375
- var canSwitchToTimePicker = isValid && (!disableAbsoluteTimepickerInRelative || value.type === 'ABSOLUTE');
377
+ var canSwitchToTimePicker = isValid && !isLifetime(value) && (!disableAbsoluteTimepickerInRelative || value.type === 'ABSOLUTE');
376
378
  return /*#__PURE__*/React.createElement(Container, {
377
379
  className: containerClass
378
380
  }, /*#__PURE__*/React.createElement(RangePicker, {
381
+ showNowButton: showNowButton,
379
382
  value: value,
380
383
  onChange: this.handleRangeChange,
381
384
  mode: mode,
@@ -409,7 +412,7 @@ export var RawDateRangePicker = /*#__PURE__*/function (_React$PureComponent) {
409
412
  };
410
413
 
411
414
  return RawDateRangePicker;
412
- }(React.PureComponent); // eslint-disable-next-line @typescript-eslint/ban-ts-ignore
415
+ }(PureComponent); // eslint-disable-next-line @typescript-eslint/ban-ts-ignore
413
416
  // @ts-ignore
414
417
 
415
418
  _defineProperty(RawDateRangePicker, "defaultProps", {
@@ -8,6 +8,7 @@ var RangeButtons = function RangeButtons(_ref) {
8
8
  onChange = _ref.onChange;
9
9
  return /*#__PURE__*/React.createElement(React.Fragment, null, ranges.map(function (range) {
10
10
  return /*#__PURE__*/React.createElement(S.Range, {
11
+ "data-testid": "relative-range-preset-" + (range.key || range.id),
11
12
  key: range.key || range.id,
12
13
  onClick: function onClick() {
13
14
  onChange && onChange(range);
@@ -238,6 +238,7 @@ var RelativeRangePicker = /*#__PURE__*/function (_React$PureComponent) {
238
238
  var hiddenRanges = groupedRanges ? groupedRanges.slice(3) : [];
239
239
  if (!currentGroup) return null;
240
240
  return /*#__PURE__*/React.createElement(S.Container, null, /*#__PURE__*/React.createElement(S.Ranges, null, showCustomRange && /*#__PURE__*/React.createElement(S.Range, {
241
+ "data-testid": "relative-range-preset-" + CUSTOM_RANGE_KEY,
241
242
  key: CUSTOM_RANGE_KEY,
242
243
  onClick: this.handleCustomClick,
243
244
  type: isCustomValue ? 'primary' : 'tertiary'
package/dist/index.d.ts CHANGED
@@ -5,4 +5,6 @@ export { RawDateRangePicker } from './RawDateRangePicker';
5
5
  export * as utils from './utils';
6
6
  export * as CONST from './constants';
7
7
  export { default } from './DateRangePicker';
8
+ export { fnsFormat } from './fns';
9
+ export type { WeeklyProps, WeeklyScheduleDayValue, WeeklySchedule, DayOfWeekIndex, } from './RangeFilter/Filters/new/Weekly/Weekly.types';
8
10
  export { getDisabledTimeOptions } from './RangePicker/utils';
package/dist/index.js CHANGED
@@ -7,4 +7,5 @@ export { _utils as utils };
7
7
  import * as _CONST from './constants';
8
8
  export { _CONST as CONST };
9
9
  export { default } from './DateRangePicker';
10
+ export { fnsFormat } from './fns';
10
11
  export { getDisabledTimeOptions } from './RangePicker/utils';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@synerise/ds-date-range-picker",
3
- "version": "0.22.0",
3
+ "version": "0.23.0",
4
4
  "description": "Date-Range-Picker UI Component for the Synerise Design System",
5
5
  "license": "ISC",
6
6
  "repository": "Synerise/synerise-design",
@@ -37,19 +37,19 @@
37
37
  "@synerise/ds-button": "^0.18.0",
38
38
  "@synerise/ds-button-group": "^0.6.28",
39
39
  "@synerise/ds-data-format": "^0.4.0",
40
- "@synerise/ds-date-picker": "^0.10.9",
41
- "@synerise/ds-dropdown": "^0.17.72",
40
+ "@synerise/ds-date-picker": "^0.10.10",
41
+ "@synerise/ds-dropdown": "^0.17.73",
42
42
  "@synerise/ds-icon": "^0.58.0",
43
- "@synerise/ds-inline-edit": "^0.6.71",
44
- "@synerise/ds-input": "^0.18.46",
45
- "@synerise/ds-input-number": "^0.8.19",
46
- "@synerise/ds-manageable-list": "^0.26.0",
47
- "@synerise/ds-menu": "^0.17.15",
48
- "@synerise/ds-scrollbar": "^0.6.4",
49
- "@synerise/ds-select": "^0.15.11",
50
- "@synerise/ds-tags": "^0.8.6",
51
- "@synerise/ds-time-picker": "^0.8.0",
52
- "@synerise/ds-tooltip": "^0.14.1",
43
+ "@synerise/ds-inline-edit": "^0.6.72",
44
+ "@synerise/ds-input": "^0.18.47",
45
+ "@synerise/ds-input-number": "^0.8.20",
46
+ "@synerise/ds-manageable-list": "^0.26.1",
47
+ "@synerise/ds-menu": "^0.17.16",
48
+ "@synerise/ds-scrollbar": "^0.6.5",
49
+ "@synerise/ds-select": "^0.15.12",
50
+ "@synerise/ds-tags": "^0.8.7",
51
+ "@synerise/ds-time-picker": "^0.8.1",
52
+ "@synerise/ds-tooltip": "^0.14.2",
53
53
  "@synerise/ds-utils": "^0.19.0",
54
54
  "date-fns": "^2.16.1",
55
55
  "dayjs": "^1.8.35",
@@ -60,10 +60,12 @@
60
60
  },
61
61
  "peerDependencies": {
62
62
  "@synerise/ds-core": "*",
63
- "react": ">=16.9.0 < 17.0.0"
63
+ "antd": "^4",
64
+ "react": ">=16.9.0 < 17.0.0",
65
+ "styled-components": "5.0.1"
64
66
  },
65
67
  "devDependencies": {
66
68
  "@types/ramda": "^0.27.14"
67
69
  },
68
- "gitHead": "0795eb5071d9160e429731ba8f8807c1ae509085"
70
+ "gitHead": "1f03e5affd1f22c9d3c7b4f1401887263d32d3d5"
69
71
  }
@@ -1 +0,0 @@
1
- import '@testing-library/jest-dom/extend-expect';
@@ -1,36 +0,0 @@
1
- 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; }
2
-
3
- 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; }
4
-
5
- function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
6
-
7
- import '@testing-library/jest-dom/extend-expect';
8
- import { removeEmptyEntries } from './utils';
9
- var dayValue = {
10
- "start": "06:00:00.000",
11
- "stop": "20:59:59.999",
12
- "restricted": true,
13
- "display": false,
14
- "inverted": false,
15
- "mode": "Range"
16
- };
17
- var scheduleWithEmptyEntries = {
18
- '5de64ead-e81e-4bf9-8e13-47e8829b8cc3': {
19
- 0: _objectSpread({}, dayValue),
20
- 1: _objectSpread({}, dayValue),
21
- 2: _objectSpread({}, dayValue),
22
- 3: _objectSpread({}, dayValue),
23
- 4: _objectSpread({}, dayValue),
24
- 5: _objectSpread({}, dayValue),
25
- 6: _objectSpread({}, dayValue)
26
- },
27
- // @ts-ignore
28
- '5dr44ead-e81e-4bf9-8e13-47e8829b8cc3': {}
29
- };
30
- describe('Weekly utils', function () {
31
- it('removeEmptyEntries should clear entries with no day data', function () {
32
- removeEmptyEntries(scheduleWithEmptyEntries);
33
- expect(Object.keys(scheduleWithEmptyEntries).length).toBe(1);
34
- expect(Object.keys(scheduleWithEmptyEntries)[0]).toBe('5de64ead-e81e-4bf9-8e13-47e8829b8cc3');
35
- });
36
- });