@bigbinary/neeto-filters-frontend 2.11.19 → 2.12.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/README.md +29 -0
- package/dist/index.cjs.js +113 -29
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.js +114 -31
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/types.d.ts +16 -0
package/README.md
CHANGED
|
@@ -188,6 +188,35 @@ const [filters, setFilters] = useState(() => buildFiltersFromURL([...SAMPLE_FIL
|
|
|
188
188
|
const [selectors, setSelectors] = useState(() => buildSelectorsFromURL(FILTER_COLUMNS));
|
|
189
189
|
```
|
|
190
190
|
|
|
191
|
+
### 5. `buildFilterColumnsFromFields` function
|
|
192
|
+
|
|
193
|
+
The `buildFilterColumnsFromFields` function is used to generate an array of filter columns based on the provided fields and selected field names.
|
|
194
|
+
|
|
195
|
+
#### Parameters
|
|
196
|
+
|
|
197
|
+
- `fields` (array): An array of field objects representing the available fields.
|
|
198
|
+
- `selectedFields` (array, optional): An array of strings representing the selected field names. Defaults to an empty array.
|
|
199
|
+
|
|
200
|
+
```js
|
|
201
|
+
const fields = [
|
|
202
|
+
{
|
|
203
|
+
id: '1',
|
|
204
|
+
name: 'name',
|
|
205
|
+
kind: 'text',
|
|
206
|
+
},
|
|
207
|
+
{
|
|
208
|
+
id: '2',
|
|
209
|
+
name: 'age',
|
|
210
|
+
kind: 'number',
|
|
211
|
+
},
|
|
212
|
+
// Add more field objects as needed
|
|
213
|
+
];
|
|
214
|
+
|
|
215
|
+
const selectedFields = ['name', 'age'];
|
|
216
|
+
|
|
217
|
+
const filterColumns = buildFilterColumnsFromFields(fields, selectedFields);
|
|
218
|
+
```
|
|
219
|
+
|
|
191
220
|
## Development
|
|
192
221
|
|
|
193
222
|
Install all the dependencies by executing the following command
|
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"
|
|
@@ -3539,28 +3545,28 @@ var groupByGroup = ramda.groupBy(function (_ref) {
|
|
|
3539
3545
|
return group || "individual";
|
|
3540
3546
|
});
|
|
3541
3547
|
var isBoolean = function isBoolean(type) {
|
|
3542
|
-
return type === "boolean";
|
|
3548
|
+
return type === "boolean" || type === "custom.boolean";
|
|
3543
3549
|
};
|
|
3544
3550
|
var isDate = function isDate(type) {
|
|
3545
|
-
return type === "date";
|
|
3551
|
+
return type === "date" || type === "custom.date";
|
|
3546
3552
|
};
|
|
3547
3553
|
var isSingleDate = function isSingleDate(type) {
|
|
3548
|
-
return type === "single_date";
|
|
3554
|
+
return type === "single_date" || type === "custom.single_date";
|
|
3549
3555
|
};
|
|
3550
3556
|
var isSingleTime = function isSingleTime(type) {
|
|
3551
|
-
return type === "single_time";
|
|
3557
|
+
return type === "single_time" || type === "custom.single_time";
|
|
3552
3558
|
};
|
|
3553
3559
|
var isTime = function isTime(type) {
|
|
3554
|
-
return type === "time";
|
|
3560
|
+
return type === "time" || type === "custom.time";
|
|
3555
3561
|
};
|
|
3556
3562
|
var isMulti = function isMulti(type) {
|
|
3557
|
-
return type === "multi_option";
|
|
3563
|
+
return type === "multi_option" || type === "custom.multi_option";
|
|
3558
3564
|
};
|
|
3559
3565
|
var isText = function isText(type) {
|
|
3560
|
-
return type === "text";
|
|
3566
|
+
return type === "text" || type === "custom.text";
|
|
3561
3567
|
};
|
|
3562
3568
|
var isDigit = function isDigit(type) {
|
|
3563
|
-
return type === "number" || type === "decimal";
|
|
3569
|
+
return type === "number" || type === "decimal" || type === "custom.number";
|
|
3564
3570
|
};
|
|
3565
3571
|
var isCustomDateRange = function isCustomDateRange(value) {
|
|
3566
3572
|
return !ramda.pluck("value", DATE_OPTIONS).includes(value);
|
|
@@ -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 =
|
|
3630
|
+
var dateValue = ["before", "after", "custom-date-range"].includes(value) ? "" : value;
|
|
3625
3631
|
return {
|
|
3626
3632
|
value: dateValue,
|
|
3627
3633
|
rule: rule,
|
|
@@ -4073,7 +4079,47 @@ var buildUrlFromSegment = function buildUrlFromSegment(_ref19) {
|
|
|
4073
4079
|
var getKeywordValueFromUrl = function getKeywordValueFromUrl() {
|
|
4074
4080
|
return utils.getQueryParams()["keyword"] || "";
|
|
4075
4081
|
};
|
|
4082
|
+
var buildFilterColumnsFromFields = function buildFilterColumnsFromFields(fields) {
|
|
4083
|
+
var selectedFields = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
|
|
4084
|
+
if (ramda.isEmpty(selectedFields)) {
|
|
4085
|
+
return fields.map(function (field) {
|
|
4086
|
+
var id = field.id,
|
|
4087
|
+
name = field.name,
|
|
4088
|
+
kind = field.kind;
|
|
4089
|
+
return {
|
|
4090
|
+
key: name,
|
|
4091
|
+
node: "".concat(name, ":").concat(id),
|
|
4092
|
+
label: pure.capitalize(name),
|
|
4093
|
+
type: "custom.".concat(kind)
|
|
4094
|
+
};
|
|
4095
|
+
});
|
|
4096
|
+
}
|
|
4097
|
+
return fields.reduce(function (columns, field) {
|
|
4098
|
+
if (selectedFields.includes(field.name)) {
|
|
4099
|
+
var id = field.id,
|
|
4100
|
+
name = field.name,
|
|
4101
|
+
kind = field.kind;
|
|
4102
|
+
columns.push({
|
|
4103
|
+
key: name,
|
|
4104
|
+
node: "".concat(name, ":").concat(id),
|
|
4105
|
+
label: pure.capitalize(name),
|
|
4106
|
+
type: "custom.".concat(kind)
|
|
4107
|
+
});
|
|
4108
|
+
}
|
|
4109
|
+
return columns;
|
|
4110
|
+
}, []);
|
|
4111
|
+
};
|
|
4076
4112
|
|
|
4113
|
+
var buildCustomDateValue = function buildCustomDateValue(value) {
|
|
4114
|
+
var isBeforeOrAfter = Math.abs(dayjs__default["default"](value[1]).diff(dayjs__default["default"](value[0]), "year")) >= 90;
|
|
4115
|
+
if (isBeforeOrAfter) {
|
|
4116
|
+
var currentMoment = dayjs__default["default"]();
|
|
4117
|
+
var diffWithStart = Math.abs(currentMoment.diff(dayjs__default["default"](value[0]), "year"));
|
|
4118
|
+
var diffWithEnd = Math.abs(currentMoment.diff(dayjs__default["default"](value[1]), "year"));
|
|
4119
|
+
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")));
|
|
4120
|
+
}
|
|
4121
|
+
return value.map(utils.dateFormat.date).join(" - ");
|
|
4122
|
+
};
|
|
4077
4123
|
var buildFilterValue = function buildFilterValue(filter) {
|
|
4078
4124
|
var _findBy2;
|
|
4079
4125
|
var _filter$defaultType = filter.defaultType,
|
|
@@ -4086,7 +4132,7 @@ var buildFilterValue = function buildFilterValue(filter) {
|
|
|
4086
4132
|
return value.toString();
|
|
4087
4133
|
}));
|
|
4088
4134
|
if (isDate(defaultType) && isCustomDateRange(value)) {
|
|
4089
|
-
return value
|
|
4135
|
+
return buildCustomDateValue(value);
|
|
4090
4136
|
} else if (isTime(defaultType) && isCustomTimeRange(value)) {
|
|
4091
4137
|
return value.map(utils.dateFormat.time).join(" - ");
|
|
4092
4138
|
} else if (isDate(defaultType) || isTime(defaultType)) {
|
|
@@ -7136,13 +7182,6 @@ var buildDropdownValue = function buildDropdownValue(_ref) {
|
|
|
7136
7182
|
value: filter.value
|
|
7137
7183
|
}, options);
|
|
7138
7184
|
};
|
|
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
7185
|
var buildSingleTimeValue = function buildSingleTimeValue(filter) {
|
|
7147
7186
|
var _findBy2;
|
|
7148
7187
|
if (!filter) return null;
|
|
@@ -7179,6 +7218,44 @@ var buildDropdownOptions = function buildDropdownOptions(_ref3) {
|
|
|
7179
7218
|
}
|
|
7180
7219
|
return options;
|
|
7181
7220
|
};
|
|
7221
|
+
var initializeDateRule = function initializeDateRule(filter) {
|
|
7222
|
+
return filter ? pure.findBy({
|
|
7223
|
+
value: filter === null || filter === void 0 ? void 0 : filter.value
|
|
7224
|
+
}, DATE_OPTIONS) || findDateOption(filter, DATE_OPTIONS) : {};
|
|
7225
|
+
};
|
|
7226
|
+
var getDateValue = function getDateValue(value, rule) {
|
|
7227
|
+
if (ramda.isEmpty(value) || ramda.isNil(value)) {
|
|
7228
|
+
return null;
|
|
7229
|
+
}
|
|
7230
|
+
if (rule.value === "custom-date-range") {
|
|
7231
|
+
return value;
|
|
7232
|
+
}
|
|
7233
|
+
return rule.value === "before" ? dayjs__default["default"](value[1]).add(1, "day") : dayjs__default["default"](value[0]).subtract(1, "day");
|
|
7234
|
+
};
|
|
7235
|
+
var findDateOption = function findDateOption(filter, options) {
|
|
7236
|
+
var value = filter.value;
|
|
7237
|
+
var isBeforeOrAfter = dayjs__default["default"](value[1]).diff(dayjs__default["default"](value[0]), "year") >= 90;
|
|
7238
|
+
if (ramda.not(isBeforeOrAfter)) {
|
|
7239
|
+
return ramda.last(options);
|
|
7240
|
+
}
|
|
7241
|
+
var currentMoment = dayjs__default["default"]();
|
|
7242
|
+
var diffWithStart = Math.abs(currentMoment.diff(dayjs__default["default"](value[0]), "year"));
|
|
7243
|
+
var diffWithEnd = Math.abs(currentMoment.diff(dayjs__default["default"](value[1]), "year"));
|
|
7244
|
+
var returnOption = diffWithStart < diffWithEnd ? pure.findBy({
|
|
7245
|
+
value: "after"
|
|
7246
|
+
}, options) : pure.findBy({
|
|
7247
|
+
value: "before"
|
|
7248
|
+
}, options);
|
|
7249
|
+
return returnOption;
|
|
7250
|
+
};
|
|
7251
|
+
var buildDateValues = function buildDateValues(dates, selectedRule) {
|
|
7252
|
+
if (selectedRule.value === "after") {
|
|
7253
|
+
return [dates.add(1, "day"), dates.add(100, "year")];
|
|
7254
|
+
} else if (selectedRule.value === "before") {
|
|
7255
|
+
return [dates.subtract(100, "year"), dates.subtract(1, "day")];
|
|
7256
|
+
}
|
|
7257
|
+
return dates;
|
|
7258
|
+
};
|
|
7182
7259
|
|
|
7183
7260
|
var Boolean$1 = function Boolean(_ref) {
|
|
7184
7261
|
var column = _ref.column,
|
|
@@ -7234,22 +7311,27 @@ var Datetime = function Datetime(_ref) {
|
|
|
7234
7311
|
filter = _ref.filter,
|
|
7235
7312
|
handleApplyFilter = _ref.handleApplyFilter,
|
|
7236
7313
|
autoFocus = _ref.autoFocus;
|
|
7314
|
+
var _useState = React.useState(initializeDateRule(filter)),
|
|
7315
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
7316
|
+
selectedRule = _useState2[0],
|
|
7317
|
+
setSelectedRule = _useState2[1];
|
|
7318
|
+
var _useTranslation = useTranslation(),
|
|
7319
|
+
t = _useTranslation.t;
|
|
7237
7320
|
var key = column.key,
|
|
7238
7321
|
_column$defaultType = column.defaultType,
|
|
7239
7322
|
defaultType = _column$defaultType === void 0 ? column.type : _column$defaultType,
|
|
7240
7323
|
label = column.label;
|
|
7324
|
+
var isDatePickerShown = filter && isCustomDateRange(filter.value);
|
|
7241
7325
|
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
7326
|
var handleChange = function handleChange(option) {
|
|
7247
7327
|
if (ramda.isEmpty(option) || ramda.isNil(option)) {
|
|
7248
7328
|
handleApplyFilter({
|
|
7249
7329
|
_delete: true
|
|
7250
7330
|
});
|
|
7331
|
+
setSelectedRule({});
|
|
7251
7332
|
return;
|
|
7252
7333
|
}
|
|
7334
|
+
setSelectedRule(option);
|
|
7253
7335
|
var updatedFilter = buildUpdatedFilter({
|
|
7254
7336
|
column: column,
|
|
7255
7337
|
defaultType: defaultType,
|
|
@@ -7262,13 +7344,14 @@ var Datetime = function Datetime(_ref) {
|
|
|
7262
7344
|
handleApplyFilter({
|
|
7263
7345
|
_delete: true
|
|
7264
7346
|
});
|
|
7347
|
+
setSelectedRule({});
|
|
7265
7348
|
return;
|
|
7266
7349
|
}
|
|
7267
7350
|
var updatedFilter = buildUpdatedFilter({
|
|
7268
7351
|
column: column,
|
|
7269
7352
|
defaultType: defaultType,
|
|
7270
7353
|
option: {
|
|
7271
|
-
value: ramda.pluck("$d", dates).map(function (date) {
|
|
7354
|
+
value: ramda.pluck("$d", buildDateValues(dates, selectedRule)).map(function (date) {
|
|
7272
7355
|
return date.toISOString();
|
|
7273
7356
|
})
|
|
7274
7357
|
}
|
|
@@ -7284,15 +7367,15 @@ var Datetime = function Datetime(_ref) {
|
|
|
7284
7367
|
label: label,
|
|
7285
7368
|
options: DATE_OPTIONS,
|
|
7286
7369
|
strategy: "fixed",
|
|
7287
|
-
value:
|
|
7370
|
+
value: selectedRule,
|
|
7288
7371
|
placeholder: t("messages.selectResource", {
|
|
7289
7372
|
resource: label.toLocaleLowerCase()
|
|
7290
7373
|
}),
|
|
7291
7374
|
onChange: handleChange
|
|
7292
|
-
}),
|
|
7375
|
+
}), isDatePickerShown && /*#__PURE__*/React__default["default"].createElement(neetoui.DatePicker, _extends$1({
|
|
7293
7376
|
"data-cy": "neeto-filters-".concat(key, "-date-range"),
|
|
7294
|
-
type: "range",
|
|
7295
|
-
value: filter.value,
|
|
7377
|
+
type: (selectedRule === null || selectedRule === void 0 ? void 0 : selectedRule.value) === "custom-date-range" ? "range" : "date",
|
|
7378
|
+
value: getDateValue(filter === null || filter === void 0 ? void 0 : filter.value, selectedRule),
|
|
7296
7379
|
onChange: handleDateRangeChange
|
|
7297
7380
|
}, otherProps)));
|
|
7298
7381
|
};
|
|
@@ -7541,7 +7624,7 @@ var Text = function Text(_ref) {
|
|
|
7541
7624
|
var ruleOptions = buildRuleOptions({
|
|
7542
7625
|
defaultType: defaultType
|
|
7543
7626
|
});
|
|
7544
|
-
var inputType = defaultType === "text" ? "text" : "number";
|
|
7627
|
+
var inputType = defaultType === "text" || defaultType === "custom.text" ? "text" : "number";
|
|
7545
7628
|
var _useState = React.useState(filter === null || filter === void 0 ? void 0 : filter.value),
|
|
7546
7629
|
_useState2 = _slicedToArray(_useState, 2),
|
|
7547
7630
|
inputValue = _useState2[0],
|
|
@@ -8399,6 +8482,7 @@ instance.use(initReactI18next).init({
|
|
|
8399
8482
|
exports.Bar = Bar;
|
|
8400
8483
|
exports.Filters = Filters;
|
|
8401
8484
|
exports.Segments = index;
|
|
8485
|
+
exports.buildFilterColumnsFromFields = buildFilterColumnsFromFields;
|
|
8402
8486
|
exports.buildFiltersFromURL = buildFiltersFromURL;
|
|
8403
8487
|
exports.buildSelectorsFromURL = buildSelectorsFromURL;
|
|
8404
8488
|
//# sourceMappingURL=index.cjs.js.map
|