@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 CHANGED
@@ -10,9 +10,9 @@ var ramda = require('ramda');
10
10
  var reactRouterDom = require('react-router-dom');
11
11
  var reactUtils = require('@bigbinary/neeto-commons-frontend/react-utils');
12
12
  var neetoIcons = require('@bigbinary/neeto-icons');
13
+ var dayjs = require('dayjs');
13
14
  var utils = require('@bigbinary/neeto-commons-frontend/utils');
14
15
  var yup = require('yup');
15
- var dayjs = require('dayjs');
16
16
  var timezone = require('dayjs/plugin/timezone');
17
17
  var utc = require('dayjs/plugin/utc');
18
18
  var weekday = require('dayjs/plugin/weekday');
@@ -44,8 +44,8 @@ function _interopNamespace(e) {
44
44
 
45
45
  var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
46
46
  var classnames__default = /*#__PURE__*/_interopDefaultLegacy(classnames);
47
- var yup__namespace = /*#__PURE__*/_interopNamespace(yup);
48
47
  var dayjs__default = /*#__PURE__*/_interopDefaultLegacy(dayjs);
48
+ var yup__namespace = /*#__PURE__*/_interopNamespace(yup);
49
49
  var timezone__default = /*#__PURE__*/_interopDefaultLegacy(timezone);
50
50
  var utc__default = /*#__PURE__*/_interopDefaultLegacy(utc);
51
51
  var weekday__default = /*#__PURE__*/_interopDefaultLegacy(weekday);
@@ -3395,6 +3395,12 @@ var DATE_OPTIONS = [{
3395
3395
  }, {
3396
3396
  label: "All time",
3397
3397
  value: "all-time"
3398
+ }, {
3399
+ label: "After",
3400
+ value: "after"
3401
+ }, {
3402
+ label: "Before",
3403
+ value: "before"
3398
3404
  }, {
3399
3405
  label: "Custom date range",
3400
3406
  value: "custom-date-range"
@@ -3621,7 +3627,7 @@ var splitFilter = function splitFilter(multiColumnFilter) {
3621
3627
  var buildDateValue = function buildDateValue(_ref6) {
3622
3628
  var value = _ref6.value;
3623
3629
  var rule = DATE_RULES[value] || "between";
3624
- var dateValue = value === "custom-date-range" ? "" : value;
3630
+ var dateValue = ["before", "after", "custom-date-range"].includes(value) ? "" : value;
3625
3631
  return {
3626
3632
  value: dateValue,
3627
3633
  rule: rule,
@@ -4074,6 +4080,16 @@ var getKeywordValueFromUrl = function getKeywordValueFromUrl() {
4074
4080
  return utils.getQueryParams()["keyword"] || "";
4075
4081
  };
4076
4082
 
4083
+ var buildCustomDateValue = function buildCustomDateValue(value) {
4084
+ var isBeforeOrAfter = Math.abs(dayjs__default["default"](value[1]).diff(dayjs__default["default"](value[0]), "year")) >= 90;
4085
+ if (isBeforeOrAfter) {
4086
+ var currentMoment = dayjs__default["default"]();
4087
+ var diffWithStart = Math.abs(currentMoment.diff(dayjs__default["default"](value[0]), "year"));
4088
+ var diffWithEnd = Math.abs(currentMoment.diff(dayjs__default["default"](value[1]), "year"));
4089
+ return diffWithStart < diffWithEnd ? "after-".concat(utils.dateFormat.date(dayjs__default["default"](value[0]).subtract(1, "day"))) : "before-".concat(utils.dateFormat.date(dayjs__default["default"](value[1]).add(1, "day")));
4090
+ }
4091
+ return value.map(utils.dateFormat.date).join(" - ");
4092
+ };
4077
4093
  var buildFilterValue = function buildFilterValue(filter) {
4078
4094
  var _findBy2;
4079
4095
  var _filter$defaultType = filter.defaultType,
@@ -4086,7 +4102,7 @@ var buildFilterValue = function buildFilterValue(filter) {
4086
4102
  return value.toString();
4087
4103
  }));
4088
4104
  if (isDate(defaultType) && isCustomDateRange(value)) {
4089
- return value.map(utils.dateFormat.date).join(" - ");
4105
+ return buildCustomDateValue(value);
4090
4106
  } else if (isTime(defaultType) && isCustomTimeRange(value)) {
4091
4107
  return value.map(utils.dateFormat.time).join(" - ");
4092
4108
  } else if (isDate(defaultType) || isTime(defaultType)) {
@@ -7136,13 +7152,6 @@ var buildDropdownValue = function buildDropdownValue(_ref) {
7136
7152
  value: filter.value
7137
7153
  }, options);
7138
7154
  };
7139
- var buildDatetimeValue = function buildDatetimeValue(filter) {
7140
- var _findBy;
7141
- if (!filter) return null;
7142
- return (_findBy = pure.findBy({
7143
- value: filter.value
7144
- }, DATE_OPTIONS)) !== null && _findBy !== void 0 ? _findBy : ramda.last(DATE_OPTIONS);
7145
- };
7146
7155
  var buildSingleTimeValue = function buildSingleTimeValue(filter) {
7147
7156
  var _findBy2;
7148
7157
  if (!filter) return null;
@@ -7179,6 +7188,44 @@ var buildDropdownOptions = function buildDropdownOptions(_ref3) {
7179
7188
  }
7180
7189
  return options;
7181
7190
  };
7191
+ var initializeDateRule = function initializeDateRule(filter) {
7192
+ return filter ? pure.findBy({
7193
+ value: filter === null || filter === void 0 ? void 0 : filter.value
7194
+ }, DATE_OPTIONS) || findDateOption(filter, DATE_OPTIONS) : {};
7195
+ };
7196
+ var getDateValue = function getDateValue(value, rule) {
7197
+ if (ramda.isEmpty(value) || ramda.isNil(value)) {
7198
+ return null;
7199
+ }
7200
+ if (rule.value === "custom-date-range") {
7201
+ return value;
7202
+ }
7203
+ return rule.value === "before" ? dayjs__default["default"](value[1]).add(1, "day") : dayjs__default["default"](value[0]).subtract(1, "day");
7204
+ };
7205
+ var findDateOption = function findDateOption(filter, options) {
7206
+ var value = filter.value;
7207
+ var isBeforeOrAfter = dayjs__default["default"](value[1]).diff(dayjs__default["default"](value[0]), "year") >= 90;
7208
+ if (ramda.not(isBeforeOrAfter)) {
7209
+ return ramda.last(options);
7210
+ }
7211
+ var currentMoment = dayjs__default["default"]();
7212
+ var diffWithStart = Math.abs(currentMoment.diff(dayjs__default["default"](value[0]), "year"));
7213
+ var diffWithEnd = Math.abs(currentMoment.diff(dayjs__default["default"](value[1]), "year"));
7214
+ var returnOption = diffWithStart < diffWithEnd ? pure.findBy({
7215
+ value: "after"
7216
+ }, options) : pure.findBy({
7217
+ value: "before"
7218
+ }, options);
7219
+ return returnOption;
7220
+ };
7221
+ var buildDateValues = function buildDateValues(dates, selectedRule) {
7222
+ if (selectedRule.value === "after") {
7223
+ return [dates.add(1, "day"), dates.add(100, "year")];
7224
+ } else if (selectedRule.value === "before") {
7225
+ return [dates.subtract(100, "year"), dates.subtract(1, "day")];
7226
+ }
7227
+ return dates;
7228
+ };
7182
7229
 
7183
7230
  var Boolean$1 = function Boolean(_ref) {
7184
7231
  var column = _ref.column,
@@ -7234,22 +7281,27 @@ var Datetime = function Datetime(_ref) {
7234
7281
  filter = _ref.filter,
7235
7282
  handleApplyFilter = _ref.handleApplyFilter,
7236
7283
  autoFocus = _ref.autoFocus;
7284
+ var _useState = React.useState(initializeDateRule(filter)),
7285
+ _useState2 = _slicedToArray(_useState, 2),
7286
+ selectedRule = _useState2[0],
7287
+ setSelectedRule = _useState2[1];
7288
+ var _useTranslation = useTranslation(),
7289
+ t = _useTranslation.t;
7237
7290
  var key = column.key,
7238
7291
  _column$defaultType = column.defaultType,
7239
7292
  defaultType = _column$defaultType === void 0 ? column.type : _column$defaultType,
7240
7293
  label = column.label;
7294
+ var isDatePickerShown = filter && isCustomDateRange(filter.value);
7241
7295
  var otherProps = getOtherProps(column);
7242
- var value = buildDatetimeValue(filter);
7243
- var isCustomDateRangeShown = filter && isCustomDateRange(filter.value);
7244
- var _useTranslation = useTranslation(),
7245
- t = _useTranslation.t;
7246
7296
  var handleChange = function handleChange(option) {
7247
7297
  if (ramda.isEmpty(option) || ramda.isNil(option)) {
7248
7298
  handleApplyFilter({
7249
7299
  _delete: true
7250
7300
  });
7301
+ setSelectedRule({});
7251
7302
  return;
7252
7303
  }
7304
+ setSelectedRule(option);
7253
7305
  var updatedFilter = buildUpdatedFilter({
7254
7306
  column: column,
7255
7307
  defaultType: defaultType,
@@ -7262,13 +7314,14 @@ var Datetime = function Datetime(_ref) {
7262
7314
  handleApplyFilter({
7263
7315
  _delete: true
7264
7316
  });
7317
+ setSelectedRule({});
7265
7318
  return;
7266
7319
  }
7267
7320
  var updatedFilter = buildUpdatedFilter({
7268
7321
  column: column,
7269
7322
  defaultType: defaultType,
7270
7323
  option: {
7271
- value: ramda.pluck("$d", dates).map(function (date) {
7324
+ value: ramda.pluck("$d", buildDateValues(dates, selectedRule)).map(function (date) {
7272
7325
  return date.toISOString();
7273
7326
  })
7274
7327
  }
@@ -7284,15 +7337,15 @@ var Datetime = function Datetime(_ref) {
7284
7337
  label: label,
7285
7338
  options: DATE_OPTIONS,
7286
7339
  strategy: "fixed",
7287
- value: value,
7340
+ value: selectedRule,
7288
7341
  placeholder: t("messages.selectResource", {
7289
7342
  resource: label.toLocaleLowerCase()
7290
7343
  }),
7291
7344
  onChange: handleChange
7292
- }), isCustomDateRangeShown && /*#__PURE__*/React__default["default"].createElement(neetoui.DatePicker, _extends$1({
7345
+ }), isDatePickerShown && /*#__PURE__*/React__default["default"].createElement(neetoui.DatePicker, _extends$1({
7293
7346
  "data-cy": "neeto-filters-".concat(key, "-date-range"),
7294
- type: "range",
7295
- value: filter.value,
7347
+ type: (selectedRule === null || selectedRule === void 0 ? void 0 : selectedRule.value) === "custom-date-range" ? "range" : "date",
7348
+ value: getDateValue(filter === null || filter === void 0 ? void 0 : filter.value, selectedRule),
7296
7349
  onChange: handleDateRangeChange
7297
7350
  }, otherProps)));
7298
7351
  };