@bigbinary/neeto-filters-frontend 3.3.1 → 3.3.2
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 +2 -2
- package/dist/index.cjs.js +126 -6
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.js +127 -7
- package/dist/index.js.map +1 -1
- package/package.json +12 -12
- package/types.d.ts +2 -1
package/README.md
CHANGED
|
@@ -432,8 +432,8 @@ this case, all the users whose email address contains `bigbinary` in the
|
|
|
432
432
|
### Adding a new type
|
|
433
433
|
|
|
434
434
|
- `NeetoFiltersEngine` provides the following types: `text`, `number`,
|
|
435
|
-
`single_option`, `multi_option`, `date`, `time`, `datetime`, `date_range`,
|
|
436
|
-
`time_range`.
|
|
435
|
+
`single_option`, `multi_option`, `date`, `time`, `datetime`, `date_range`,
|
|
436
|
+
`time_range`, and `tree_select`.
|
|
437
437
|
- Sometimes we need to filter attributes that are not present in the available
|
|
438
438
|
types. In this case a new type needs to be created.
|
|
439
439
|
- In this case, the type needs to be specified to the NPM package by passing the
|
package/dist/index.cjs.js
CHANGED
|
@@ -384,6 +384,16 @@ var DEFAULT_BOOLEAN_OPTIONS = [{
|
|
|
384
384
|
label: i18next.t("neetoFilters.common.no"),
|
|
385
385
|
value: "false"
|
|
386
386
|
}];
|
|
387
|
+
var TREE_SELECT_RULES = [{
|
|
388
|
+
label: i18next.t("neetoFilters.rules.in"),
|
|
389
|
+
value: "in"
|
|
390
|
+
}, {
|
|
391
|
+
label: i18next.t("neetoFilters.rules.notIn"),
|
|
392
|
+
value: "not_in"
|
|
393
|
+
}, {
|
|
394
|
+
label: i18next.t("neetoFilters.rules.isEmpty"),
|
|
395
|
+
value: "is_unknown"
|
|
396
|
+
}];
|
|
387
397
|
var DEFAULT_HELP_ICON_PROPS = {
|
|
388
398
|
icon: neetoIcons.Help,
|
|
389
399
|
tooltipProps: {
|
|
@@ -439,6 +449,9 @@ var isText = function isText(type) {
|
|
|
439
449
|
var isDigit = function isDigit(type) {
|
|
440
450
|
return ["number", "decimal", "custom.decimal", "custom.number"].includes(type);
|
|
441
451
|
};
|
|
452
|
+
var isTreeSelect = function isTreeSelect(type) {
|
|
453
|
+
return type === "tree_select";
|
|
454
|
+
};
|
|
442
455
|
var isCustomDateRange = function isCustomDateRange(value) {
|
|
443
456
|
return !ramda.pluck("value", DATE_OPTIONS).includes(value);
|
|
444
457
|
};
|
|
@@ -553,6 +566,11 @@ var buildUpdatedFilter = function buildUpdatedFilter(_ref8) {
|
|
|
553
566
|
value: option.value,
|
|
554
567
|
rule: rule
|
|
555
568
|
});
|
|
569
|
+
} else if (isTreeSelect(defaultType)) {
|
|
570
|
+
return ramda.mergeLeft(filter, {
|
|
571
|
+
value: option,
|
|
572
|
+
rule: rule
|
|
573
|
+
});
|
|
556
574
|
}
|
|
557
575
|
return ramda.mergeLeft(filter, {
|
|
558
576
|
value: option.value,
|
|
@@ -582,7 +600,7 @@ var buildFiltersFromSearchParams = function buildFiltersFromSearchParams(columns
|
|
|
582
600
|
return ramda.mergeLeft({
|
|
583
601
|
value: value
|
|
584
602
|
}, column);
|
|
585
|
-
} else if (isMulti(defaultType)) {
|
|
603
|
+
} else if (isMulti(defaultType) || isTreeSelect(defaultType)) {
|
|
586
604
|
var _value$split = value.split("+rule-"),
|
|
587
605
|
_value$split2 = _slicedToArray(_value$split, 2),
|
|
588
606
|
filterValue = _value$split2[0],
|
|
@@ -753,7 +771,7 @@ var buildFiltersPayload = function buildFiltersPayload(filters) {
|
|
|
753
771
|
}
|
|
754
772
|
if (isDate(defaultType)) {
|
|
755
773
|
return ramda.mergeRight(filterPayload, buildDatePayload(value));
|
|
756
|
-
} else if (isMulti(defaultType)) {
|
|
774
|
+
} else if (isMulti(defaultType) || isTreeSelect(defaultType)) {
|
|
757
775
|
return ramda.mergeRight(filterPayload, {
|
|
758
776
|
value: buildMultiOptionPayload(value)
|
|
759
777
|
});
|
|
@@ -891,7 +909,7 @@ var createUrlParamString = function createUrlParamString(_ref15) {
|
|
|
891
909
|
return "".concat(value, "+rule-").concat(rule);
|
|
892
910
|
} else if (isSingleDate(defaultType) || isSingleTime(defaultType)) {
|
|
893
911
|
return value && "".concat(value, "+rule-").concat(rule) || value;
|
|
894
|
-
} else if (isMulti(defaultType)) {
|
|
912
|
+
} else if (isMulti(defaultType) || isTreeSelect(defaultType)) {
|
|
895
913
|
return "".concat(value.join("|"), "+rule-").concat(rule);
|
|
896
914
|
} else if (isSingle(defaultType)) {
|
|
897
915
|
return "".concat(value, "+rule-").concat(rule);
|
|
@@ -1031,7 +1049,7 @@ var buildDropdownValue = function buildDropdownValue(_ref) {
|
|
|
1031
1049
|
filter = _ref.filter,
|
|
1032
1050
|
options = _ref.options;
|
|
1033
1051
|
if (!filter) return null;
|
|
1034
|
-
if (isMulti(defaultType)) {
|
|
1052
|
+
if (isMulti(defaultType) || isTreeSelect(defaultType)) {
|
|
1035
1053
|
return options.filter(function (_ref2) {
|
|
1036
1054
|
var value = _ref2.value;
|
|
1037
1055
|
return filter.value.includes(value);
|
|
@@ -1769,6 +1787,100 @@ var Time = function Time(_ref) {
|
|
|
1769
1787
|
};
|
|
1770
1788
|
var Time$1 = /*#__PURE__*/React__default["default"].memo(Time);
|
|
1771
1789
|
|
|
1790
|
+
var TreeSelect = function TreeSelect(_ref) {
|
|
1791
|
+
var _findBy;
|
|
1792
|
+
var autoFocus = _ref.autoFocus,
|
|
1793
|
+
column = _ref.column,
|
|
1794
|
+
filter = _ref.filter,
|
|
1795
|
+
handleApplyFilter = _ref.handleApplyFilter;
|
|
1796
|
+
var key = column.key,
|
|
1797
|
+
label = column.label,
|
|
1798
|
+
_column$defaultType = column.defaultType,
|
|
1799
|
+
defaultType = _column$defaultType === void 0 ? column.type : _column$defaultType,
|
|
1800
|
+
defaultValue = column.defaultValue,
|
|
1801
|
+
_column$helpIconProps = column.helpIconProps,
|
|
1802
|
+
helpIconProps = _column$helpIconProps === void 0 ? {} : _column$helpIconProps,
|
|
1803
|
+
_column$isClearable = column.isClearable,
|
|
1804
|
+
isClearable = _column$isClearable === void 0 ? true : _column$isClearable,
|
|
1805
|
+
_column$showRuleSelec = column.showRuleSelector,
|
|
1806
|
+
showRuleSelector = _column$showRuleSelec === void 0 ? false : _column$showRuleSelec,
|
|
1807
|
+
options = column.values;
|
|
1808
|
+
var initialRule = (_findBy = neetoCist.findBy({
|
|
1809
|
+
value: filter === null || filter === void 0 ? void 0 : filter.rule
|
|
1810
|
+
}, TREE_SELECT_RULES)) !== null && _findBy !== void 0 ? _findBy : TREE_SELECT_RULES[0];
|
|
1811
|
+
var _useState = React.useState(initialRule),
|
|
1812
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
1813
|
+
selectedRule = _useState2[0],
|
|
1814
|
+
setSelectedRule = _useState2[1];
|
|
1815
|
+
var _useTranslation = reactI18next.useTranslation(),
|
|
1816
|
+
t = _useTranslation.t;
|
|
1817
|
+
var selectedOption = buildDropdownValue({
|
|
1818
|
+
defaultType: defaultType,
|
|
1819
|
+
filter: filter,
|
|
1820
|
+
options: options
|
|
1821
|
+
});
|
|
1822
|
+
var handleChange = function handleChange(option) {
|
|
1823
|
+
if (neetoCist.isNotPresent(option)) return handleApplyFilter({
|
|
1824
|
+
_delete: true
|
|
1825
|
+
});
|
|
1826
|
+
var updatedFilter = buildUpdatedFilter({
|
|
1827
|
+
column: column,
|
|
1828
|
+
defaultType: defaultType,
|
|
1829
|
+
option: option,
|
|
1830
|
+
rule: selectedRule.value
|
|
1831
|
+
});
|
|
1832
|
+
return handleApplyFilter(updatedFilter);
|
|
1833
|
+
};
|
|
1834
|
+
var handleRuleChange = function handleRuleChange(rule) {
|
|
1835
|
+
var isPreviousRuleEmpty = isRuleEmpty(selectedRule.value);
|
|
1836
|
+
var isNewRuleEmpty = isRuleEmpty(rule.value);
|
|
1837
|
+
setSelectedRule(rule);
|
|
1838
|
+
if (isPreviousRuleEmpty || !isNewRuleEmpty && neetoCist.isNotPresent(filter === null || filter === void 0 ? void 0 : filter.value)) {
|
|
1839
|
+
return handleApplyFilter({
|
|
1840
|
+
_delete: true
|
|
1841
|
+
});
|
|
1842
|
+
}
|
|
1843
|
+
var updatedFilter = buildUpdatedFilter({
|
|
1844
|
+
column: column,
|
|
1845
|
+
defaultType: defaultType,
|
|
1846
|
+
option: isNewRuleEmpty ? [options[0]] : selectedOption,
|
|
1847
|
+
rule: rule.value
|
|
1848
|
+
});
|
|
1849
|
+
return handleApplyFilter(updatedFilter);
|
|
1850
|
+
};
|
|
1851
|
+
return /*#__PURE__*/React__default["default"].createElement("div", {
|
|
1852
|
+
className: "neeto-filters-pane-filter__item-wrapper"
|
|
1853
|
+
}, showRuleSelector && /*#__PURE__*/React__default["default"].createElement(neetoui.Select, {
|
|
1854
|
+
label: label,
|
|
1855
|
+
defaultValue: TREE_SELECT_RULES[0],
|
|
1856
|
+
options: TREE_SELECT_RULES,
|
|
1857
|
+
value: selectedRule,
|
|
1858
|
+
onChange: handleRuleChange
|
|
1859
|
+
}), !isRuleEmpty(selectedRule.value) &&
|
|
1860
|
+
/*#__PURE__*/
|
|
1861
|
+
// eslint-disable-next-line @bigbinary/neeto/merge-spread-attributes
|
|
1862
|
+
React__default["default"].createElement(neetoui.TreeSelect, _extends({
|
|
1863
|
+
autoFocus: autoFocus,
|
|
1864
|
+
multiple: true,
|
|
1865
|
+
showSearch: true,
|
|
1866
|
+
treeDataSimpleMode: true,
|
|
1867
|
+
allowClear: !defaultValue && isClearable,
|
|
1868
|
+
"data-cy": "neeto-filters-".concat(neetoCist.hyphenate(key), "-filter"),
|
|
1869
|
+
label: !showRuleSelector && label,
|
|
1870
|
+
treeData: options,
|
|
1871
|
+
value: selectedOption,
|
|
1872
|
+
placeholder: t("neetoFilters.messages.selectResource", {
|
|
1873
|
+
resource: label
|
|
1874
|
+
}),
|
|
1875
|
+
onChange: handleChange
|
|
1876
|
+
}, neetoCist.isNotEmpty(helpIconProps) && {
|
|
1877
|
+
labelProps: {
|
|
1878
|
+
helpIconProps: buildHelpIconProps(helpIconProps)
|
|
1879
|
+
}
|
|
1880
|
+
}, getOtherProps(column))));
|
|
1881
|
+
};
|
|
1882
|
+
var TreeSelect$1 = /*#__PURE__*/React__default["default"].memo(TreeSelect);
|
|
1883
|
+
|
|
1772
1884
|
var Item = function Item(_ref) {
|
|
1773
1885
|
var column = _ref.column,
|
|
1774
1886
|
filters = _ref.filters,
|
|
@@ -1843,6 +1955,14 @@ var Item = function Item(_ref) {
|
|
|
1843
1955
|
handleApplyFilter: handleApplyFilter
|
|
1844
1956
|
});
|
|
1845
1957
|
}
|
|
1958
|
+
if (isTreeSelect(defaultType)) {
|
|
1959
|
+
return /*#__PURE__*/React__default["default"].createElement(TreeSelect$1, {
|
|
1960
|
+
autoFocus: autoFocus,
|
|
1961
|
+
column: column,
|
|
1962
|
+
filter: filter,
|
|
1963
|
+
handleApplyFilter: handleApplyFilter
|
|
1964
|
+
});
|
|
1965
|
+
}
|
|
1846
1966
|
return /*#__PURE__*/React__default["default"].createElement(Dropdown$1, {
|
|
1847
1967
|
autoFocus: autoFocus,
|
|
1848
1968
|
column: column,
|
|
@@ -2167,7 +2287,7 @@ var buildFilterValue = function buildFilterValue(filter) {
|
|
|
2167
2287
|
return value.map(utils.dateFormat.time).join(" - ");
|
|
2168
2288
|
} else if (isDate(defaultType) || isTime(defaultType)) {
|
|
2169
2289
|
return neetoCist.humanize(value);
|
|
2170
|
-
} else if (isMulti(defaultType)) {
|
|
2290
|
+
} else if (isMulti(defaultType) || isTreeSelect(defaultType)) {
|
|
2171
2291
|
return value.map(function (value) {
|
|
2172
2292
|
var _findBy;
|
|
2173
2293
|
return ((_findBy = neetoCist.findBy({
|
|
@@ -2207,7 +2327,7 @@ var buildRuleValue = function buildRuleValue(_ref) {
|
|
|
2207
2327
|
return neetoCist.findBy({
|
|
2208
2328
|
value: rule
|
|
2209
2329
|
}, SINGLE_TIME_OPTIONS).label;
|
|
2210
|
-
} else if (isMulti(defaultType) || isSingle(defaultType)) {
|
|
2330
|
+
} else if (isMulti(defaultType) || isSingle(defaultType) || isTreeSelect(defaultType)) {
|
|
2211
2331
|
return isRuleEmpty(rule) ? i18next.t("neetoFilters.rules.isEmpty") : "";
|
|
2212
2332
|
}
|
|
2213
2333
|
return "";
|