@reltio/components 1.4.1956 → 1.4.1957

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 (47) hide show
  1. package/cjs/AttributesFiltersBuilder/AttributesFiltersBuilder.js +1 -1
  2. package/cjs/AttributesFiltersBuilder/helpers.d.ts +1 -1
  3. package/cjs/AttributesFiltersBuilder/helpers.js +25 -22
  4. package/cjs/AttributesFiltersButton/AttributesFiltersButton.js +1 -1
  5. package/cjs/AttributesFiltersButton/components/ActionButtons/styles.js +2 -2
  6. package/cjs/AttributesFiltersButton/styles.d.ts +1 -1
  7. package/cjs/AttributesFiltersButton/styles.js +10 -7
  8. package/cjs/CustomDateRangeEditor/CustomDateRangeEditor.js +1 -1
  9. package/cjs/DateIntervalSelector/DateIntervalSelector.js +1 -1
  10. package/cjs/DateRangeSelector/DateRangeSelector.d.ts +9 -0
  11. package/cjs/DateRangeSelector/DateRangeSelector.js +144 -0
  12. package/cjs/DateRangeSelector/DateRangeSelector.specs.js +294 -0
  13. package/cjs/DateRangeSelector/index.d.ts +1 -0
  14. package/cjs/DateRangeSelector/index.js +5 -0
  15. package/cjs/DateRangeSelector/styles.d.ts +1 -0
  16. package/cjs/DateRangeSelector/styles.js +30 -0
  17. package/cjs/features/activity-log/ActivityFilterEditor/components/DateRangeSelector/DateRangeSelector.js +3 -108
  18. package/cjs/features/activity-log/ActivityFilterEditor/components/DateRangeSelector/styles.d.ts +1 -1
  19. package/cjs/features/activity-log/ActivityFilterEditor/components/DateRangeSelector/styles.js +0 -54
  20. package/cjs/index.d.ts +1 -0
  21. package/cjs/index.js +6 -4
  22. package/esm/AttributesFiltersBuilder/AttributesFiltersBuilder.js +2 -2
  23. package/esm/AttributesFiltersBuilder/helpers.d.ts +1 -1
  24. package/esm/AttributesFiltersBuilder/helpers.js +24 -21
  25. package/esm/AttributesFiltersButton/AttributesFiltersButton.js +1 -1
  26. package/esm/AttributesFiltersButton/components/ActionButtons/styles.js +2 -2
  27. package/esm/AttributesFiltersButton/styles.d.ts +1 -1
  28. package/esm/AttributesFiltersButton/styles.js +10 -7
  29. package/esm/CustomDateRangeEditor/CustomDateRangeEditor.js +1 -1
  30. package/esm/DateIntervalSelector/DateIntervalSelector.js +1 -1
  31. package/esm/DateRangeSelector/DateRangeSelector.d.ts +9 -0
  32. package/esm/DateRangeSelector/DateRangeSelector.js +114 -0
  33. package/esm/DateRangeSelector/DateRangeSelector.specs.js +289 -0
  34. package/esm/DateRangeSelector/index.d.ts +1 -0
  35. package/esm/DateRangeSelector/index.js +1 -0
  36. package/esm/DateRangeSelector/styles.d.ts +1 -0
  37. package/esm/DateRangeSelector/styles.js +27 -0
  38. package/esm/features/activity-log/ActivityFilterEditor/components/DateRangeSelector/DateRangeSelector.js +3 -85
  39. package/esm/features/activity-log/ActivityFilterEditor/components/DateRangeSelector/styles.d.ts +1 -1
  40. package/esm/features/activity-log/ActivityFilterEditor/components/DateRangeSelector/styles.js +0 -54
  41. package/esm/index.d.ts +1 -0
  42. package/esm/index.js +1 -0
  43. package/package.json +2 -2
  44. package/cjs/features/activity-log/ActivityFilterEditor/components/DateRangeSelector/DateRangeSelector.specs.js +0 -185
  45. package/esm/features/activity-log/ActivityFilterEditor/components/DateRangeSelector/DateRangeSelector.specs.js +0 -180
  46. /package/cjs/{features/activity-log/ActivityFilterEditor/components/DateRangeSelector → DateRangeSelector}/DateRangeSelector.specs.d.ts +0 -0
  47. /package/esm/{features/activity-log/ActivityFilterEditor/components/DateRangeSelector → DateRangeSelector}/DateRangeSelector.specs.d.ts +0 -0
@@ -75,7 +75,7 @@ var AttributesFiltersBuilder = function (_a) {
75
75
  var currentEntityType = (0, react_1.useMemo)(function () {
76
76
  var entityTypesUris = attributesTypesGroups.map(function (_a) {
77
77
  var attributeTypes = _a.attributeTypes;
78
- return (0, helpers_1.getEntityTypeFromAttrTypes)(attributeTypes);
78
+ return (0, helpers_1.getOperationalTypeUriFromAttrTypes)(attributeTypes);
79
79
  });
80
80
  var closestEntityTypeAncestorUri = (0, mdm_sdk_1.findClosestCommonAncestor)(metadata, entityTypesUris);
81
81
  return (0, mdm_sdk_1.getEntityType)(metadata, closestEntityTypeAncestorUri);
@@ -10,4 +10,4 @@ export declare const getRowsDataFromFilters: (filters: SearchFilter[], attribute
10
10
  id: number;
11
11
  values: import("@reltio/mdm-sdk").SearchValue[];
12
12
  }[];
13
- export declare const getEntityTypeFromAttrTypes: (attributeTypes: AttributeType[]) => any;
13
+ export declare const getOperationalTypeUriFromAttrTypes: (attributeTypes: AttributeType[]) => any;
@@ -20,30 +20,33 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
20
20
  return to.concat(ar || Array.prototype.slice.call(from));
21
21
  };
22
22
  Object.defineProperty(exports, "__esModule", { value: true });
23
- exports.getEntityTypeFromAttrTypes = exports.getRowsDataFromFilters = exports.findValue = exports.getAttributeSelectorItems = void 0;
23
+ exports.getOperationalTypeUriFromAttrTypes = exports.getRowsDataFromFilters = exports.findValue = exports.getAttributeSelectorItems = void 0;
24
24
  var mdm_sdk_1 = require("@reltio/mdm-sdk");
25
25
  var ramda_1 = require("ramda");
26
- var createAttributeItem = function (metadata, attrType, entityTypeUri, parents) {
27
- var entityTypeLabel = (0, mdm_sdk_1.getEntityTypeLabel)(metadata, { type: entityTypeUri });
26
+ var createAttributeItem = function (metadata, attrType, operationalTypeUri, parents) {
28
27
  var title = attrType.label || attrType.name;
29
- var attributeProps = (0, mdm_sdk_1.isSpecialAttribute)(attrType)
30
- ? {
31
- fieldName: attrType.name
32
- }
33
- : {
34
- entityTypeUri: entityTypeUri,
35
- pathToTitle: Array.isArray(parents)
36
- ? __spreadArray(__spreadArray([entityTypeLabel], (0, ramda_1.chain)((0, ramda_1.prop)('label'), parents), true), [title], false) : [entityTypeLabel, title],
37
- fieldName: (0, mdm_sdk_1.attributeUriToSearchUri)(attrType.uri, parents)
38
- };
39
- return __assign({ attrType: attrType, title: title }, attributeProps);
28
+ if ((0, mdm_sdk_1.isSpecialAttribute)(attrType)) {
29
+ return { attrType: attrType, title: title, fieldName: attrType.name };
30
+ }
31
+ if ((0, mdm_sdk_1.isInteractionTypeUri)(operationalTypeUri)) {
32
+ return { attrType: attrType, title: title, fieldName: (0, mdm_sdk_1.attributeUriToSearchUri)(attrType.uri, parents) };
33
+ }
34
+ var entityTypeLabel = (0, mdm_sdk_1.getEntityTypeLabel)(metadata, { type: operationalTypeUri });
35
+ return {
36
+ attrType: attrType,
37
+ title: title,
38
+ entityTypeUri: operationalTypeUri,
39
+ pathToTitle: Array.isArray(parents)
40
+ ? __spreadArray(__spreadArray([entityTypeLabel], (0, ramda_1.chain)((0, ramda_1.prop)('label'), parents), true), [title], false) : [entityTypeLabel, title],
41
+ fieldName: (0, mdm_sdk_1.attributeUriToSearchUri)(attrType.uri, parents)
42
+ };
40
43
  };
41
- var createAttributesConfig = function (metadata, attrNode, entityTypeUri, parents) {
44
+ var createAttributesConfig = function (metadata, attrNode, operationalTypeUri, parents) {
42
45
  if (parents === void 0) { parents = []; }
43
- var resConfig = __assign(__assign({}, createAttributeItem(metadata, attrNode, entityTypeUri, parents)), { uri: attrNode.uri });
46
+ var resConfig = __assign(__assign({}, createAttributeItem(metadata, attrNode, operationalTypeUri, parents)), { uri: attrNode.uri });
44
47
  var children = attrNode.children
45
48
  ? attrNode.children.map(function (childNode) {
46
- return createAttributesConfig(metadata, childNode, entityTypeUri, parents.concat(attrNode));
49
+ return createAttributesConfig(metadata, childNode, operationalTypeUri, parents.concat(attrNode));
47
50
  })
48
51
  : [];
49
52
  if (children.length) {
@@ -54,13 +57,13 @@ var createAttributesConfig = function (metadata, attrNode, entityTypeUri, parent
54
57
  var getAttributeSelectorItems = function (metadata, attributesTypesGroups, attributesTypesGroupFilter) {
55
58
  var attributeSelectorItemsGroup = attributesTypesGroups.map(function (_a) {
56
59
  var id = _a.id, title = _a.title, attributeTypes = _a.attributeTypes;
57
- var entityType = (0, mdm_sdk_1.getEntityType)(metadata, (0, exports.getEntityTypeFromAttrTypes)(attributeTypes));
60
+ var operationalTypeUri = (0, exports.getOperationalTypeUriFromAttrTypes)(attributeTypes);
58
61
  return {
59
62
  id: id,
60
63
  title: title,
61
64
  attributes: (0, mdm_sdk_1.getAttributesTreeFromAttributes)(attributeTypes, metadata).map(function (attrNode) {
62
- var entityTypeUri = (0, mdm_sdk_1.isSpecialAttribute)(attrNode) ? null : entityType.uri;
63
- return createAttributesConfig(metadata, attrNode, entityTypeUri);
65
+ var uri = (0, mdm_sdk_1.isSpecialAttribute)(attrNode) ? null : operationalTypeUri;
66
+ return createAttributesConfig(metadata, attrNode, uri);
64
67
  })
65
68
  };
66
69
  });
@@ -108,8 +111,8 @@ var getRowsDataFromFilters = function (filters, attributesGroupArr) {
108
111
  });
109
112
  };
110
113
  exports.getRowsDataFromFilters = getRowsDataFromFilters;
111
- var getEntityTypeFromAttrTypes = function (attributeTypes) {
114
+ var getOperationalTypeUriFromAttrTypes = function (attributeTypes) {
112
115
  var regularAttribute = (0, mdm_sdk_1.findRegularAttribute)(attributeTypes);
113
116
  return regularAttribute ? (0, mdm_sdk_1.getBaseUri)(regularAttribute.uri) : null;
114
117
  };
115
- exports.getEntityTypeFromAttrTypes = getEntityTypeFromAttrTypes;
118
+ exports.getOperationalTypeUriFromAttrTypes = getOperationalTypeUriFromAttrTypes;
@@ -85,7 +85,7 @@ var AttributesFiltersButton = function (_a) {
85
85
  horizontal: 'left'
86
86
  } },
87
87
  react_1.default.createElement(react_1.default.Fragment, null,
88
- react_1.default.createElement(Typography_1.default, { variant: "h6" }, title !== null && title !== void 0 ? title : ui_i18n_1.default.text('Filter')),
88
+ react_1.default.createElement(Typography_1.default, { variant: "h6", className: styles.title }, title !== null && title !== void 0 ? title : ui_i18n_1.default.text('Filter')),
89
89
  react_1.default.createElement("div", { className: styles.filtersBuilderWrapper },
90
90
  children,
91
91
  react_1.default.createElement(AttributesFiltersBuilder_1.AttributesFiltersBuilder, { attributesTypesGroups: attributesTypesGroups, attributesTypesGroupFilter: attributesTypesGroupFilter, filters: filters, onChange: setFilters, components: components, onFilterAttributeChange: onFilterAttributeChange, classes: classes })),
@@ -20,7 +20,7 @@ exports.useStyles = (0, styles_1.makeStyles)(function () { return ({
20
20
  buttonsWrapper: {
21
21
  display: 'flex'
22
22
  },
23
- applyButton: __assign(__assign({}, allButtonsStyle), { marginRight: '16px' }),
23
+ applyButton: __assign(__assign({}, allButtonsStyle), { marginRight: '12px' }),
24
24
  cancelButton: __assign(__assign({}, allButtonsStyle), { marginLeft: 'auto' }),
25
- clearButon: __assign({}, allButtonsStyle)
25
+ clearButon: __assign(__assign({}, allButtonsStyle), { marginLeft: '12px' })
26
26
  }); });
@@ -1 +1 @@
1
- export declare const useStyles: (props?: any) => import("@mui/styles").ClassNameMap<"divider" | "triggerButton" | "filtersBuilderWrapper" | "popupContent" | "changedFiltersIndicator">;
1
+ export declare const useStyles: (props?: any) => import("@mui/styles").ClassNameMap<"title" | "divider" | "triggerButton" | "filtersBuilderWrapper" | "popupContent" | "changedFiltersIndicator">;
@@ -4,6 +4,9 @@ exports.useStyles = void 0;
4
4
  var styles_1 = require("@mui/material/styles");
5
5
  var styles_2 = require("@mui/styles");
6
6
  exports.useStyles = (0, styles_2.makeStyles)(function (theme) { return ({
7
+ title: {
8
+ padding: '0px 16px'
9
+ },
7
10
  triggerButton: {
8
11
  minWidth: 0,
9
12
  color: 'rgba(0,0,0,0.54)',
@@ -12,18 +15,18 @@ exports.useStyles = (0, styles_2.makeStyles)(function (theme) { return ({
12
15
  marginRight: '12px'
13
16
  },
14
17
  filtersBuilderWrapper: {
15
- marginTop: '20px'
18
+ padding: '8px 16px',
19
+ display: 'flex',
20
+ flexDirection: 'column'
16
21
  },
17
22
  popupContent: {
18
- paddingLeft: '16px',
19
- paddingTop: '20px',
20
- paddingBottom: '6px',
23
+ paddingTop: '12px',
24
+ paddingBottom: '8px',
21
25
  width: '770px'
22
26
  },
23
27
  divider: {
24
- marginBottom: '14px',
25
- marginLeft: '-16px',
26
- borderColor: 'rgba(0, 0, 0, 0.121569)'
28
+ marginBottom: '4px',
29
+ borderColor: 'rgba(0, 0, 0, 0.1)'
27
30
  },
28
31
  changedFiltersIndicator: {
29
32
  backgroundColor: (0, styles_1.alpha)(theme.palette.primary.main, 0.12)
@@ -60,7 +60,7 @@ var CustomDateRangeEditor = function (_a) {
60
60
  var onCancel = function () {
61
61
  setOpen(false);
62
62
  };
63
- return (react_1.default.createElement("div", { className: styles.root },
63
+ return (react_1.default.createElement("div", { "data-reltio-id": "custom-date-range-editor", className: styles.root },
64
64
  react_1.default.createElement(TextField_1.default, { fullWidth: true, value: values.map(function (value) { return formatValue(value, placeholder); }).join(' \u2014 '), onClick: handleToggle, variant: "filled", ref: inputRef, InputProps: {
65
65
  endAdornment: (react_1.default.createElement(ReactSelectDropdownIndicatorWithIconButton_1.ReactSelectDropdownIndicatorWithIconButton, { selectProps: { classes: styles, menuIsOpen: open }, innerProps: {} })),
66
66
  disableUnderline: (0, ramda_1.isNil)(values),
@@ -23,7 +23,7 @@ var DateIntervalSelector = function (_a) {
23
23
  };
24
24
  var onNumberChange = (0, ramda_1.pipe)(events_1.getValue, parseInt, getIntervalFromValue, onChange);
25
25
  var onUnitChange = (0, ramda_1.pipe)(getIntervalFromUnit, onChange);
26
- return (react_1.default.createElement("div", { className: styles.root },
26
+ return (react_1.default.createElement("div", { "data-reltio-id": "date-interval-selector", className: styles.root },
27
27
  react_1.default.createElement(TextField_1.default, { variant: "standard", type: "number", value: value || '', onChange: onNumberChange, inputProps: { min: 1, onFocus: onFocus }, InputProps: { classes: { root: styles.input } }, className: styles.inputNumber }),
28
28
  react_1.default.createElement(SimpleDropDownSelector_1.SimpleDropDownSelector, { label: '', placeholder: (0, utils_1.capitalize)(unit), className: styles.inputUnit, value: { value: unit, label: (0, utils_1.capitalize)((0, mdm_sdk_1.getIntervalUnitLabel)(unit)) }, options: periods.map(function (value) { return ({
29
29
  value: value,
@@ -0,0 +1,9 @@
1
+ import React from 'react';
2
+ import { DateRangeFilter, DateRangeTypes } from '@reltio/mdm-sdk';
3
+ type Props = {
4
+ value: DateRangeFilter;
5
+ dateRangeTypes?: DateRangeTypes[];
6
+ onChange: (range: DateRangeFilter) => void;
7
+ };
8
+ export declare const DateRangeSelector: ({ value, onChange, dateRangeTypes }: Props) => React.JSX.Element;
9
+ export {};
@@ -0,0 +1,144 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ var desc = Object.getOwnPropertyDescriptor(m, k);
16
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
17
+ desc = { enumerable: true, get: function() { return m[k]; } };
18
+ }
19
+ Object.defineProperty(o, k2, desc);
20
+ }) : (function(o, m, k, k2) {
21
+ if (k2 === undefined) k2 = k;
22
+ o[k2] = m[k];
23
+ }));
24
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
25
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
26
+ }) : function(o, v) {
27
+ o["default"] = v;
28
+ });
29
+ var __importStar = (this && this.__importStar) || function (mod) {
30
+ if (mod && mod.__esModule) return mod;
31
+ var result = {};
32
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
33
+ __setModuleDefault(result, mod);
34
+ return result;
35
+ };
36
+ var __importDefault = (this && this.__importDefault) || function (mod) {
37
+ return (mod && mod.__esModule) ? mod : { "default": mod };
38
+ };
39
+ Object.defineProperty(exports, "__esModule", { value: true });
40
+ exports.DateRangeSelector = void 0;
41
+ var react_1 = __importStar(require("react"));
42
+ var ui_i18n_1 = __importDefault(require("ui-i18n"));
43
+ var ramda_1 = require("ramda");
44
+ var classnames_1 = __importDefault(require("classnames"));
45
+ var mdm_sdk_1 = require("@reltio/mdm-sdk");
46
+ var FormControlLabel_1 = __importDefault(require("@mui/material/FormControlLabel"));
47
+ var Radio_1 = __importDefault(require("@mui/material/Radio"));
48
+ var RadioGroup_1 = __importDefault(require("@mui/material/RadioGroup"));
49
+ var Typography_1 = __importDefault(require("@mui/material/Typography"));
50
+ var DateIntervalSelector_1 = require("../DateIntervalSelector");
51
+ var CustomDateRangeEditor_1 = require("../CustomDateRangeEditor");
52
+ var useDidUpdateEffect_1 = require("../hooks/useDidUpdateEffect");
53
+ var events_1 = require("../helpers/events");
54
+ var styles_1 = require("./styles");
55
+ var emptyDates = [null, null];
56
+ var emptyInterval = [null, 'minutes'];
57
+ var DateRangeSelector = function (_a) {
58
+ var value = _a.value, onChange = _a.onChange, dateRangeTypes = _a.dateRangeTypes;
59
+ var styles = (0, styles_1.useStyles)();
60
+ var getInitPeriodByType = function (type) {
61
+ if ((value === null || value === void 0 ? void 0 : value.type) === type) {
62
+ return value.period;
63
+ }
64
+ else if (type === mdm_sdk_1.DateRangeTypes.WITHIN || type === mdm_sdk_1.DateRangeTypes.AGO) {
65
+ return emptyInterval;
66
+ }
67
+ else if (type === mdm_sdk_1.DateRangeTypes.BETWEEN) {
68
+ return emptyDates;
69
+ }
70
+ };
71
+ var _b = (0, react_1.useState)(getInitPeriodByType(mdm_sdk_1.DateRangeTypes.BETWEEN)), datesInterval = _b[0], setDatesInterval = _b[1];
72
+ var _c = (0, react_1.useState)(getInitPeriodByType(mdm_sdk_1.DateRangeTypes.WITHIN)), withinInterval = _c[0], setWithinInterval = _c[1];
73
+ var _d = (0, react_1.useState)(getInitPeriodByType(mdm_sdk_1.DateRangeTypes.AGO)), agoInterval = _d[0], setAgoInterval = _d[1];
74
+ var getCurrentPeriodByType = function (type) {
75
+ if (type === mdm_sdk_1.DateRangeTypes.WITHIN) {
76
+ return withinInterval;
77
+ }
78
+ else if (type === mdm_sdk_1.DateRangeTypes.AGO) {
79
+ return agoInterval;
80
+ }
81
+ else if (type === mdm_sdk_1.DateRangeTypes.BETWEEN) {
82
+ return datesInterval;
83
+ }
84
+ };
85
+ var changeType = function (type) {
86
+ if ((value === null || value === void 0 ? void 0 : value.type) !== type) {
87
+ onChange({ period: getCurrentPeriodByType(type), type: type });
88
+ }
89
+ };
90
+ var changePeriod = function (period) {
91
+ onChange(__assign(__assign({}, value), { period: period }));
92
+ };
93
+ var isEditorVisible = function (_a) {
94
+ var type = _a.type;
95
+ return !dateRangeTypes || dateRangeTypes.includes(type);
96
+ };
97
+ (0, useDidUpdateEffect_1.useDidUpdateEffect)(function () {
98
+ if (value) {
99
+ if (value.type === mdm_sdk_1.DateRangeTypes.WITHIN) {
100
+ setWithinInterval(value.period);
101
+ }
102
+ else if (value.type === mdm_sdk_1.DateRangeTypes.AGO) {
103
+ setAgoInterval(value.period);
104
+ }
105
+ else if (value.type === mdm_sdk_1.DateRangeTypes.BETWEEN) {
106
+ setDatesInterval(value.period);
107
+ }
108
+ }
109
+ else {
110
+ setDatesInterval(emptyDates);
111
+ setWithinInterval(emptyInterval);
112
+ setAgoInterval(emptyInterval);
113
+ }
114
+ }, [value]);
115
+ var editors = [
116
+ {
117
+ label: ui_i18n_1.default.text('Within the last'),
118
+ type: mdm_sdk_1.DateRangeTypes.WITHIN,
119
+ editor: (react_1.default.createElement(DateIntervalSelector_1.DateIntervalSelector, { interval: withinInterval, onChange: changePeriod, onFocus: function () { return changeType(mdm_sdk_1.DateRangeTypes.WITHIN); } })),
120
+ className: styles.dateOptionWithin
121
+ },
122
+ {
123
+ label: ui_i18n_1.default.text('More than'),
124
+ type: mdm_sdk_1.DateRangeTypes.AGO,
125
+ editor: (react_1.default.createElement(react_1.default.Fragment, null,
126
+ react_1.default.createElement(DateIntervalSelector_1.DateIntervalSelector, { interval: agoInterval, onChange: changePeriod, onFocus: function () { return changeType(mdm_sdk_1.DateRangeTypes.AGO); } }),
127
+ react_1.default.createElement(Typography_1.default, { className: styles.agoLabel, variant: 'subtitle1' }, ui_i18n_1.default.text('Ago')))),
128
+ className: styles.dateOptionAgo
129
+ },
130
+ {
131
+ label: ui_i18n_1.default.text('Date range'),
132
+ type: mdm_sdk_1.DateRangeTypes.BETWEEN,
133
+ editor: (react_1.default.createElement(CustomDateRangeEditor_1.CustomDateRangeEditor, { values: datesInterval, onChange: changePeriod, onFocus: function () { return changeType(mdm_sdk_1.DateRangeTypes.BETWEEN); } })),
134
+ className: styles.dateOption
135
+ }
136
+ ];
137
+ return (react_1.default.createElement(RadioGroup_1.default, { value: (value === null || value === void 0 ? void 0 : value.type) || null, onChange: (0, ramda_1.pipe)(events_1.getValue, changeType), "data-reltio-id": "reltio-date-range-selector" }, editors.filter(isEditorVisible).map(function (_a) {
138
+ var type = _a.type, editor = _a.editor, label = _a.label, className = _a.className;
139
+ return (react_1.default.createElement("div", { key: type, className: className },
140
+ react_1.default.createElement(FormControlLabel_1.default, { value: type, label: label, control: react_1.default.createElement(Radio_1.default, { color: "primary" }), classes: { label: (0, classnames_1.default)(styles.dateOptionLabel, styles.labels) } }),
141
+ editor));
142
+ })));
143
+ };
144
+ exports.DateRangeSelector = DateRangeSelector;
@@ -0,0 +1,294 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
14
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
15
+ return new (P || (P = Promise))(function (resolve, reject) {
16
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
17
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
18
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
19
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
20
+ });
21
+ };
22
+ var __generator = (this && this.__generator) || function (thisArg, body) {
23
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
24
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
25
+ function verb(n) { return function (v) { return step([n, v]); }; }
26
+ function step(op) {
27
+ if (f) throw new TypeError("Generator is already executing.");
28
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
29
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
30
+ if (y = 0, t) op = [op[0] & 2, t.value];
31
+ switch (op[0]) {
32
+ case 0: case 1: t = op; break;
33
+ case 4: _.label++; return { value: op[1], done: false };
34
+ case 5: _.label++; y = op[1]; op = [0]; continue;
35
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
36
+ default:
37
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
38
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
39
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
40
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
41
+ if (t[2]) _.ops.pop();
42
+ _.trys.pop(); continue;
43
+ }
44
+ op = body.call(thisArg, _);
45
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
46
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
47
+ }
48
+ };
49
+ var __importDefault = (this && this.__importDefault) || function (mod) {
50
+ return (mod && mod.__esModule) ? mod : { "default": mod };
51
+ };
52
+ Object.defineProperty(exports, "__esModule", { value: true });
53
+ var react_1 = __importDefault(require("react"));
54
+ var react_2 = require("@testing-library/react");
55
+ var user_event_1 = __importDefault(require("@testing-library/user-event"));
56
+ var mdm_sdk_1 = require("@reltio/mdm-sdk");
57
+ var LocalizationProvider_1 = require("@mui/x-date-pickers/LocalizationProvider");
58
+ var AdapterMoment_1 = require("@mui/x-date-pickers/AdapterMoment");
59
+ var DateRangeSelector_1 = require("./DateRangeSelector");
60
+ describe('DateRangeSelector tests', function () {
61
+ var value = {
62
+ type: mdm_sdk_1.DateRangeTypes.WITHIN,
63
+ period: [4, 'months']
64
+ };
65
+ var defaultProps = { value: value, onChange: jest.fn() };
66
+ var setUp = function (props) {
67
+ if (props === void 0) { props = {}; }
68
+ var user = user_event_1.default.setup();
69
+ var Providers = function (_a) {
70
+ var children = _a.children;
71
+ return (react_1.default.createElement(LocalizationProvider_1.LocalizationProvider, { dateAdapter: AdapterMoment_1.AdapterMoment }, children));
72
+ };
73
+ return __assign({ user: user }, (0, react_2.render)(react_1.default.createElement(DateRangeSelector_1.DateRangeSelector, __assign({}, defaultProps, props)), { wrapper: Providers }));
74
+ };
75
+ beforeEach(function () {
76
+ jest.clearAllMocks();
77
+ });
78
+ it('should render correct default state', function () {
79
+ setUp();
80
+ var radios = react_2.screen.getAllByRole('radio');
81
+ expect(radios).toHaveLength(3);
82
+ expect(radios[0]).toBeChecked();
83
+ var selectors = react_2.screen.getAllByTestId('date-interval-selector');
84
+ var valueEditors = react_2.screen.getAllByRole('spinbutton');
85
+ var periodSelectors = react_2.screen.getAllByRole('combobox');
86
+ expect(selectors).toHaveLength(2);
87
+ expect(valueEditors).toHaveLength(2);
88
+ expect(periodSelectors).toHaveLength(2);
89
+ react_2.screen.getByText('Within the last');
90
+ expect(valueEditors[0]).toHaveValue(4);
91
+ react_2.screen.getByText('Months');
92
+ react_2.screen.getByText('More than');
93
+ expect(valueEditors[1]).not.toHaveValue();
94
+ react_2.screen.getByText('Minutes');
95
+ react_2.screen.getByText('Ago');
96
+ react_2.screen.getByText('Date range');
97
+ react_2.screen.getByTestId('custom-date-range-editor');
98
+ });
99
+ it('should render correctly with empty value', function () {
100
+ setUp({ value: null });
101
+ var radios = react_2.screen.getAllByRole('radio');
102
+ expect(radios[0]).not.toBeChecked();
103
+ expect(radios[1]).not.toBeChecked();
104
+ expect(radios[2]).not.toBeChecked();
105
+ var selectors = react_2.screen.getAllByTestId('date-interval-selector');
106
+ var valueEditors = react_2.screen.getAllByRole('spinbutton');
107
+ var periodSelectors = react_2.screen.getAllByRole('combobox');
108
+ var selectorsValues = react_2.screen.getAllByText('Minutes');
109
+ expect(selectors).toHaveLength(2);
110
+ expect(valueEditors).toHaveLength(2);
111
+ expect(periodSelectors).toHaveLength(2);
112
+ expect(selectorsValues).toHaveLength(2);
113
+ react_2.screen.getByText('Within the last');
114
+ expect(valueEditors[0]).not.toHaveValue();
115
+ react_2.screen.getByText('More than');
116
+ expect(valueEditors[1]).not.toHaveValue();
117
+ react_2.screen.getByText('Ago');
118
+ react_2.screen.getByText('Date range');
119
+ react_2.screen.getByTestId('custom-date-range-editor');
120
+ });
121
+ describe('Within', function () {
122
+ it('should call props.onChange when type is changed to withing', function () { return __awaiter(void 0, void 0, void 0, function () {
123
+ var value, user;
124
+ return __generator(this, function (_a) {
125
+ switch (_a.label) {
126
+ case 0:
127
+ value = {
128
+ type: mdm_sdk_1.DateRangeTypes.AGO,
129
+ period: [4, 'months']
130
+ };
131
+ user = setUp({ value: value }).user;
132
+ return [4 /*yield*/, user.click(react_2.screen.getByLabelText('Within the last'))];
133
+ case 1:
134
+ _a.sent();
135
+ expect(defaultProps.onChange).toHaveBeenCalledWith({
136
+ type: mdm_sdk_1.DateRangeTypes.WITHIN,
137
+ period: [null, 'minutes']
138
+ });
139
+ return [2 /*return*/];
140
+ }
141
+ });
142
+ }); });
143
+ it('should call props.onChange when within number is changed', function () { return __awaiter(void 0, void 0, void 0, function () {
144
+ var user;
145
+ return __generator(this, function (_a) {
146
+ switch (_a.label) {
147
+ case 0:
148
+ user = setUp().user;
149
+ return [4 /*yield*/, user.type(react_2.screen.getAllByRole('spinbutton')[0], '3')];
150
+ case 1:
151
+ _a.sent();
152
+ expect(defaultProps.onChange).toHaveBeenCalledWith({
153
+ type: mdm_sdk_1.DateRangeTypes.WITHIN,
154
+ period: [43, 'months']
155
+ });
156
+ return [2 /*return*/];
157
+ }
158
+ });
159
+ }); });
160
+ it('should call props.onChange when ago period is changed', function () { return __awaiter(void 0, void 0, void 0, function () {
161
+ var user;
162
+ return __generator(this, function (_a) {
163
+ switch (_a.label) {
164
+ case 0:
165
+ user = setUp().user;
166
+ return [4 /*yield*/, user.click(react_2.screen.getAllByRole('combobox')[0])];
167
+ case 1:
168
+ _a.sent();
169
+ return [4 /*yield*/, user.click(react_2.screen.getByText('Days'))];
170
+ case 2:
171
+ _a.sent();
172
+ expect(defaultProps.onChange).toHaveBeenCalledWith({
173
+ type: mdm_sdk_1.DateRangeTypes.WITHIN,
174
+ period: [4, 'days']
175
+ });
176
+ return [2 /*return*/];
177
+ }
178
+ });
179
+ }); });
180
+ });
181
+ describe('Ago', function () {
182
+ it('should call props.onChange when type is changed to ago', function () { return __awaiter(void 0, void 0, void 0, function () {
183
+ var user;
184
+ return __generator(this, function (_a) {
185
+ switch (_a.label) {
186
+ case 0:
187
+ user = setUp().user;
188
+ return [4 /*yield*/, user.click(react_2.screen.getByLabelText('More than'))];
189
+ case 1:
190
+ _a.sent();
191
+ expect(defaultProps.onChange).toHaveBeenCalledWith({
192
+ type: mdm_sdk_1.DateRangeTypes.AGO,
193
+ period: [null, 'minutes']
194
+ });
195
+ return [2 /*return*/];
196
+ }
197
+ });
198
+ }); });
199
+ it('should call props.onChange when within number is changed', function () { return __awaiter(void 0, void 0, void 0, function () {
200
+ var value, user;
201
+ return __generator(this, function (_a) {
202
+ switch (_a.label) {
203
+ case 0:
204
+ value = {
205
+ type: mdm_sdk_1.DateRangeTypes.AGO,
206
+ period: [1, 'months']
207
+ };
208
+ user = setUp({ value: value }).user;
209
+ return [4 /*yield*/, user.type(react_2.screen.getAllByRole('spinbutton')[1], '3')];
210
+ case 1:
211
+ _a.sent();
212
+ expect(defaultProps.onChange).toHaveBeenCalledWith({
213
+ type: mdm_sdk_1.DateRangeTypes.AGO,
214
+ period: [13, 'months']
215
+ });
216
+ return [2 /*return*/];
217
+ }
218
+ });
219
+ }); });
220
+ it('should call props.onChange when ago period is changed', function () { return __awaiter(void 0, void 0, void 0, function () {
221
+ var value, user;
222
+ return __generator(this, function (_a) {
223
+ switch (_a.label) {
224
+ case 0:
225
+ value = {
226
+ type: mdm_sdk_1.DateRangeTypes.AGO,
227
+ period: [4, 'months']
228
+ };
229
+ user = setUp({ value: value }).user;
230
+ return [4 /*yield*/, user.click(react_2.screen.getAllByRole('combobox')[1])];
231
+ case 1:
232
+ _a.sent();
233
+ return [4 /*yield*/, user.click(react_2.screen.getByText('Days'))];
234
+ case 2:
235
+ _a.sent();
236
+ expect(defaultProps.onChange).toHaveBeenCalledWith({
237
+ type: mdm_sdk_1.DateRangeTypes.AGO,
238
+ period: [4, 'days']
239
+ });
240
+ return [2 /*return*/];
241
+ }
242
+ });
243
+ }); });
244
+ });
245
+ describe('Between', function () {
246
+ it('should call props.onChange when type is changed to between', function () { return __awaiter(void 0, void 0, void 0, function () {
247
+ var user;
248
+ return __generator(this, function (_a) {
249
+ switch (_a.label) {
250
+ case 0:
251
+ user = setUp().user;
252
+ return [4 /*yield*/, user.click(react_2.screen.getByLabelText('Date range'))];
253
+ case 1:
254
+ _a.sent();
255
+ expect(defaultProps.onChange).toHaveBeenCalledWith({
256
+ type: mdm_sdk_1.DateRangeTypes.BETWEEN,
257
+ period: [null, null]
258
+ });
259
+ return [2 /*return*/];
260
+ }
261
+ });
262
+ }); });
263
+ it('should call props.onChange when between period is changed', function () { return __awaiter(void 0, void 0, void 0, function () {
264
+ var value, user;
265
+ return __generator(this, function (_a) {
266
+ switch (_a.label) {
267
+ case 0:
268
+ value = {
269
+ type: mdm_sdk_1.DateRangeTypes.BETWEEN,
270
+ period: [new Date(123), new Date(456)]
271
+ };
272
+ user = setUp({ value: value }).user;
273
+ return [4 /*yield*/, user.click(react_2.screen.getByRole('textbox'))];
274
+ case 1:
275
+ _a.sent();
276
+ return [4 /*yield*/, user.type(react_2.screen.getByText('From'), '01/03/2022')];
277
+ case 2:
278
+ _a.sent();
279
+ return [4 /*yield*/, user.type(react_2.screen.getByText('To'), '02/03/2022')];
280
+ case 3:
281
+ _a.sent();
282
+ return [4 /*yield*/, user.click(react_2.screen.getByText('Update'))];
283
+ case 4:
284
+ _a.sent();
285
+ expect(defaultProps.onChange).toHaveBeenCalledWith({
286
+ type: mdm_sdk_1.DateRangeTypes.BETWEEN,
287
+ period: [new Date('01/03/2022'), new Date('02/03/2022')]
288
+ });
289
+ return [2 /*return*/];
290
+ }
291
+ });
292
+ }); });
293
+ });
294
+ });
@@ -0,0 +1 @@
1
+ export { DateRangeSelector } from './DateRangeSelector';
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DateRangeSelector = void 0;
4
+ var DateRangeSelector_1 = require("./DateRangeSelector");
5
+ Object.defineProperty(exports, "DateRangeSelector", { enumerable: true, get: function () { return DateRangeSelector_1.DateRangeSelector; } });
@@ -0,0 +1 @@
1
+ export declare const useStyles: (props?: any) => import("@mui/styles").ClassNameMap<"labels" | "agoLabel" | "dateOption" | "dateOptionAgo" | "dateOptionWithin" | "dateOptionLabel">;