@bigbinary/neeto-filters-frontend 2.11.19 → 2.11.20
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/dist/index.cjs.js +73 -20
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.js +73 -20
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -2,13 +2,13 @@ import React, { useContext, useState, useRef, useEffect, useCallback, useMemo }
|
|
|
2
2
|
import classnames from 'classnames';
|
|
3
3
|
import { removeBy, findBy, isNotEmpty, humanize, noop as noop$2, toLabelAndValue, replaceBy, isPresent, existsBy, filterBy } from '@bigbinary/neeto-commons-frontend/pure';
|
|
4
4
|
import { Tooltip, Typography, Dropdown as Dropdown$2, Button, Pane as Pane$1, Alert, Select, DatePicker, TimePicker, Input as Input$1, Accordion, Spinner } from '@bigbinary/neetoui';
|
|
5
|
-
import { groupBy, anyPass, isNil, isEmpty, any, mergeLeft, identity, omit, mergeRight, concat, pluck, either, has as has$1, toPairs, equals, pick, modify, prop, isNotNil, append, last } from 'ramda';
|
|
5
|
+
import { groupBy, anyPass, isNil, isEmpty, any, mergeLeft, identity, omit, mergeRight, concat, pluck, either, has as has$1, toPairs, equals, pick, modify, prop, isNotNil, append, last, not } from 'ramda';
|
|
6
6
|
import { useHistory, useLocation } from 'react-router-dom';
|
|
7
7
|
import { useHotKeys, useDebounce } from '@bigbinary/neeto-commons-frontend/react-utils';
|
|
8
8
|
import { Close, Search, Check, MenuHorizontal, Down, Settings } from '@bigbinary/neeto-icons';
|
|
9
|
+
import dayjs from 'dayjs';
|
|
9
10
|
import { getQueryParams, dateFormat } from '@bigbinary/neeto-commons-frontend/utils';
|
|
10
11
|
import * as yup from 'yup';
|
|
11
|
-
import dayjs from 'dayjs';
|
|
12
12
|
import timezone from 'dayjs/plugin/timezone';
|
|
13
13
|
import utc from 'dayjs/plugin/utc';
|
|
14
14
|
import weekday from 'dayjs/plugin/weekday';
|
|
@@ -3360,6 +3360,12 @@ var DATE_OPTIONS = [{
|
|
|
3360
3360
|
}, {
|
|
3361
3361
|
label: "All time",
|
|
3362
3362
|
value: "all-time"
|
|
3363
|
+
}, {
|
|
3364
|
+
label: "After",
|
|
3365
|
+
value: "after"
|
|
3366
|
+
}, {
|
|
3367
|
+
label: "Before",
|
|
3368
|
+
value: "before"
|
|
3363
3369
|
}, {
|
|
3364
3370
|
label: "Custom date range",
|
|
3365
3371
|
value: "custom-date-range"
|
|
@@ -3586,7 +3592,7 @@ var splitFilter = function splitFilter(multiColumnFilter) {
|
|
|
3586
3592
|
var buildDateValue = function buildDateValue(_ref6) {
|
|
3587
3593
|
var value = _ref6.value;
|
|
3588
3594
|
var rule = DATE_RULES[value] || "between";
|
|
3589
|
-
var dateValue =
|
|
3595
|
+
var dateValue = ["before", "after", "custom-date-range"].includes(value) ? "" : value;
|
|
3590
3596
|
return {
|
|
3591
3597
|
value: dateValue,
|
|
3592
3598
|
rule: rule,
|
|
@@ -4039,6 +4045,16 @@ var getKeywordValueFromUrl = function getKeywordValueFromUrl() {
|
|
|
4039
4045
|
return getQueryParams()["keyword"] || "";
|
|
4040
4046
|
};
|
|
4041
4047
|
|
|
4048
|
+
var buildCustomDateValue = function buildCustomDateValue(value) {
|
|
4049
|
+
var isBeforeOrAfter = Math.abs(dayjs(value[1]).diff(dayjs(value[0]), "year")) >= 90;
|
|
4050
|
+
if (isBeforeOrAfter) {
|
|
4051
|
+
var currentMoment = dayjs();
|
|
4052
|
+
var diffWithStart = Math.abs(currentMoment.diff(dayjs(value[0]), "year"));
|
|
4053
|
+
var diffWithEnd = Math.abs(currentMoment.diff(dayjs(value[1]), "year"));
|
|
4054
|
+
return diffWithStart < diffWithEnd ? "after-".concat(dateFormat.date(dayjs(value[0]).subtract(1, "day"))) : "before-".concat(dateFormat.date(dayjs(value[1]).add(1, "day")));
|
|
4055
|
+
}
|
|
4056
|
+
return value.map(dateFormat.date).join(" - ");
|
|
4057
|
+
};
|
|
4042
4058
|
var buildFilterValue = function buildFilterValue(filter) {
|
|
4043
4059
|
var _findBy2;
|
|
4044
4060
|
var _filter$defaultType = filter.defaultType,
|
|
@@ -4051,7 +4067,7 @@ var buildFilterValue = function buildFilterValue(filter) {
|
|
|
4051
4067
|
return value.toString();
|
|
4052
4068
|
}));
|
|
4053
4069
|
if (isDate(defaultType) && isCustomDateRange(value)) {
|
|
4054
|
-
return value
|
|
4070
|
+
return buildCustomDateValue(value);
|
|
4055
4071
|
} else if (isTime(defaultType) && isCustomTimeRange(value)) {
|
|
4056
4072
|
return value.map(dateFormat.time).join(" - ");
|
|
4057
4073
|
} else if (isDate(defaultType) || isTime(defaultType)) {
|
|
@@ -7101,13 +7117,6 @@ var buildDropdownValue = function buildDropdownValue(_ref) {
|
|
|
7101
7117
|
value: filter.value
|
|
7102
7118
|
}, options);
|
|
7103
7119
|
};
|
|
7104
|
-
var buildDatetimeValue = function buildDatetimeValue(filter) {
|
|
7105
|
-
var _findBy;
|
|
7106
|
-
if (!filter) return null;
|
|
7107
|
-
return (_findBy = findBy({
|
|
7108
|
-
value: filter.value
|
|
7109
|
-
}, DATE_OPTIONS)) !== null && _findBy !== void 0 ? _findBy : last(DATE_OPTIONS);
|
|
7110
|
-
};
|
|
7111
7120
|
var buildSingleTimeValue = function buildSingleTimeValue(filter) {
|
|
7112
7121
|
var _findBy2;
|
|
7113
7122
|
if (!filter) return null;
|
|
@@ -7144,6 +7153,44 @@ var buildDropdownOptions = function buildDropdownOptions(_ref3) {
|
|
|
7144
7153
|
}
|
|
7145
7154
|
return options;
|
|
7146
7155
|
};
|
|
7156
|
+
var initializeDateRule = function initializeDateRule(filter) {
|
|
7157
|
+
return filter ? findBy({
|
|
7158
|
+
value: filter === null || filter === void 0 ? void 0 : filter.value
|
|
7159
|
+
}, DATE_OPTIONS) || findDateOption(filter, DATE_OPTIONS) : {};
|
|
7160
|
+
};
|
|
7161
|
+
var getDateValue = function getDateValue(value, rule) {
|
|
7162
|
+
if (isEmpty(value) || isNil(value)) {
|
|
7163
|
+
return null;
|
|
7164
|
+
}
|
|
7165
|
+
if (rule.value === "custom-date-range") {
|
|
7166
|
+
return value;
|
|
7167
|
+
}
|
|
7168
|
+
return rule.value === "before" ? dayjs(value[1]).add(1, "day") : dayjs(value[0]).subtract(1, "day");
|
|
7169
|
+
};
|
|
7170
|
+
var findDateOption = function findDateOption(filter, options) {
|
|
7171
|
+
var value = filter.value;
|
|
7172
|
+
var isBeforeOrAfter = dayjs(value[1]).diff(dayjs(value[0]), "year") >= 90;
|
|
7173
|
+
if (not(isBeforeOrAfter)) {
|
|
7174
|
+
return last(options);
|
|
7175
|
+
}
|
|
7176
|
+
var currentMoment = dayjs();
|
|
7177
|
+
var diffWithStart = Math.abs(currentMoment.diff(dayjs(value[0]), "year"));
|
|
7178
|
+
var diffWithEnd = Math.abs(currentMoment.diff(dayjs(value[1]), "year"));
|
|
7179
|
+
var returnOption = diffWithStart < diffWithEnd ? findBy({
|
|
7180
|
+
value: "after"
|
|
7181
|
+
}, options) : findBy({
|
|
7182
|
+
value: "before"
|
|
7183
|
+
}, options);
|
|
7184
|
+
return returnOption;
|
|
7185
|
+
};
|
|
7186
|
+
var buildDateValues = function buildDateValues(dates, selectedRule) {
|
|
7187
|
+
if (selectedRule.value === "after") {
|
|
7188
|
+
return [dates.add(1, "day"), dates.add(100, "year")];
|
|
7189
|
+
} else if (selectedRule.value === "before") {
|
|
7190
|
+
return [dates.subtract(100, "year"), dates.subtract(1, "day")];
|
|
7191
|
+
}
|
|
7192
|
+
return dates;
|
|
7193
|
+
};
|
|
7147
7194
|
|
|
7148
7195
|
var Boolean$1 = function Boolean(_ref) {
|
|
7149
7196
|
var column = _ref.column,
|
|
@@ -7199,22 +7246,27 @@ var Datetime = function Datetime(_ref) {
|
|
|
7199
7246
|
filter = _ref.filter,
|
|
7200
7247
|
handleApplyFilter = _ref.handleApplyFilter,
|
|
7201
7248
|
autoFocus = _ref.autoFocus;
|
|
7249
|
+
var _useState = useState(initializeDateRule(filter)),
|
|
7250
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
7251
|
+
selectedRule = _useState2[0],
|
|
7252
|
+
setSelectedRule = _useState2[1];
|
|
7253
|
+
var _useTranslation = useTranslation(),
|
|
7254
|
+
t = _useTranslation.t;
|
|
7202
7255
|
var key = column.key,
|
|
7203
7256
|
_column$defaultType = column.defaultType,
|
|
7204
7257
|
defaultType = _column$defaultType === void 0 ? column.type : _column$defaultType,
|
|
7205
7258
|
label = column.label;
|
|
7259
|
+
var isDatePickerShown = filter && isCustomDateRange(filter.value);
|
|
7206
7260
|
var otherProps = getOtherProps(column);
|
|
7207
|
-
var value = buildDatetimeValue(filter);
|
|
7208
|
-
var isCustomDateRangeShown = filter && isCustomDateRange(filter.value);
|
|
7209
|
-
var _useTranslation = useTranslation(),
|
|
7210
|
-
t = _useTranslation.t;
|
|
7211
7261
|
var handleChange = function handleChange(option) {
|
|
7212
7262
|
if (isEmpty(option) || isNil(option)) {
|
|
7213
7263
|
handleApplyFilter({
|
|
7214
7264
|
_delete: true
|
|
7215
7265
|
});
|
|
7266
|
+
setSelectedRule({});
|
|
7216
7267
|
return;
|
|
7217
7268
|
}
|
|
7269
|
+
setSelectedRule(option);
|
|
7218
7270
|
var updatedFilter = buildUpdatedFilter({
|
|
7219
7271
|
column: column,
|
|
7220
7272
|
defaultType: defaultType,
|
|
@@ -7227,13 +7279,14 @@ var Datetime = function Datetime(_ref) {
|
|
|
7227
7279
|
handleApplyFilter({
|
|
7228
7280
|
_delete: true
|
|
7229
7281
|
});
|
|
7282
|
+
setSelectedRule({});
|
|
7230
7283
|
return;
|
|
7231
7284
|
}
|
|
7232
7285
|
var updatedFilter = buildUpdatedFilter({
|
|
7233
7286
|
column: column,
|
|
7234
7287
|
defaultType: defaultType,
|
|
7235
7288
|
option: {
|
|
7236
|
-
value: pluck("$d", dates).map(function (date) {
|
|
7289
|
+
value: pluck("$d", buildDateValues(dates, selectedRule)).map(function (date) {
|
|
7237
7290
|
return date.toISOString();
|
|
7238
7291
|
})
|
|
7239
7292
|
}
|
|
@@ -7249,15 +7302,15 @@ var Datetime = function Datetime(_ref) {
|
|
|
7249
7302
|
label: label,
|
|
7250
7303
|
options: DATE_OPTIONS,
|
|
7251
7304
|
strategy: "fixed",
|
|
7252
|
-
value:
|
|
7305
|
+
value: selectedRule,
|
|
7253
7306
|
placeholder: t("messages.selectResource", {
|
|
7254
7307
|
resource: label.toLocaleLowerCase()
|
|
7255
7308
|
}),
|
|
7256
7309
|
onChange: handleChange
|
|
7257
|
-
}),
|
|
7310
|
+
}), isDatePickerShown && /*#__PURE__*/React.createElement(DatePicker, _extends$1({
|
|
7258
7311
|
"data-cy": "neeto-filters-".concat(key, "-date-range"),
|
|
7259
|
-
type: "range",
|
|
7260
|
-
value: filter.value,
|
|
7312
|
+
type: (selectedRule === null || selectedRule === void 0 ? void 0 : selectedRule.value) === "custom-date-range" ? "range" : "date",
|
|
7313
|
+
value: getDateValue(filter === null || filter === void 0 ? void 0 : filter.value, selectedRule),
|
|
7261
7314
|
onChange: handleDateRangeChange
|
|
7262
7315
|
}, otherProps)));
|
|
7263
7316
|
};
|