@bigbinary/neeto-filters-frontend 3.3.1 → 3.3.3
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/dist/index.js
CHANGED
|
@@ -6,7 +6,7 @@ import { useDebounce, useQueryParams, useMutationWithInvalidation, withT } from
|
|
|
6
6
|
import { groupBy, anyPass, isNil, isEmpty, any, concat, omit, mergeLeft, toLower, identity, mergeRight, toPairs, pluck, either, not, has, equals, pick, last, modify, append, mergeDeepRight, prop, assoc, reject, sortBy, project } from 'ramda';
|
|
7
7
|
import { useQuery, useQueryClient } from 'react-query';
|
|
8
8
|
import { Help, Delete as Delete$1, Plus, Close, Down } from '@bigbinary/neeto-icons';
|
|
9
|
-
import { Select, DatePicker, TimePickerInput, Input, Button, Pane as Pane$1, Typography, Accordion, Tooltip, Dropdown as Dropdown$2, Alert, Spinner } from '@bigbinary/neetoui';
|
|
9
|
+
import { Select, DatePicker, TimePickerInput, Input, TreeSelect as TreeSelect$2, Button, Pane as Pane$1, Typography, Accordion, Tooltip, Dropdown as Dropdown$2, Alert, Spinner } from '@bigbinary/neetoui';
|
|
10
10
|
import { Form, Input as Input$1, ActionBlock } from '@bigbinary/neetoui/formik';
|
|
11
11
|
import { useTranslation, Trans } from 'react-i18next';
|
|
12
12
|
import { useHistory } from 'react-router-dom/cjs/react-router-dom.min';
|
|
@@ -350,6 +350,16 @@ var DEFAULT_BOOLEAN_OPTIONS = [{
|
|
|
350
350
|
label: t$1("neetoFilters.common.no"),
|
|
351
351
|
value: "false"
|
|
352
352
|
}];
|
|
353
|
+
var TREE_SELECT_RULES = [{
|
|
354
|
+
label: t$1("neetoFilters.rules.in"),
|
|
355
|
+
value: "in"
|
|
356
|
+
}, {
|
|
357
|
+
label: t$1("neetoFilters.rules.notIn"),
|
|
358
|
+
value: "not_in"
|
|
359
|
+
}, {
|
|
360
|
+
label: t$1("neetoFilters.rules.isEmpty"),
|
|
361
|
+
value: "is_unknown"
|
|
362
|
+
}];
|
|
353
363
|
var DEFAULT_HELP_ICON_PROPS = {
|
|
354
364
|
icon: Help,
|
|
355
365
|
tooltipProps: {
|
|
@@ -405,6 +415,9 @@ var isText = function isText(type) {
|
|
|
405
415
|
var isDigit = function isDigit(type) {
|
|
406
416
|
return ["number", "decimal", "custom.decimal", "custom.number"].includes(type);
|
|
407
417
|
};
|
|
418
|
+
var isTreeSelect = function isTreeSelect(type) {
|
|
419
|
+
return type === "tree_select";
|
|
420
|
+
};
|
|
408
421
|
var isCustomDateRange = function isCustomDateRange(value) {
|
|
409
422
|
return !pluck("value", DATE_OPTIONS).includes(value);
|
|
410
423
|
};
|
|
@@ -519,6 +532,11 @@ var buildUpdatedFilter = function buildUpdatedFilter(_ref8) {
|
|
|
519
532
|
value: option.value,
|
|
520
533
|
rule: rule
|
|
521
534
|
});
|
|
535
|
+
} else if (isTreeSelect(defaultType)) {
|
|
536
|
+
return mergeLeft(filter, {
|
|
537
|
+
value: option,
|
|
538
|
+
rule: rule
|
|
539
|
+
});
|
|
522
540
|
}
|
|
523
541
|
return mergeLeft(filter, {
|
|
524
542
|
value: option.value,
|
|
@@ -548,7 +566,7 @@ var buildFiltersFromSearchParams = function buildFiltersFromSearchParams(columns
|
|
|
548
566
|
return mergeLeft({
|
|
549
567
|
value: value
|
|
550
568
|
}, column);
|
|
551
|
-
} else if (isMulti(defaultType)) {
|
|
569
|
+
} else if (isMulti(defaultType) || isTreeSelect(defaultType)) {
|
|
552
570
|
var _value$split = value.split("+rule-"),
|
|
553
571
|
_value$split2 = _slicedToArray(_value$split, 2),
|
|
554
572
|
filterValue = _value$split2[0],
|
|
@@ -719,7 +737,7 @@ var buildFiltersPayload = function buildFiltersPayload(filters) {
|
|
|
719
737
|
}
|
|
720
738
|
if (isDate(defaultType)) {
|
|
721
739
|
return mergeRight(filterPayload, buildDatePayload(value));
|
|
722
|
-
} else if (isMulti(defaultType)) {
|
|
740
|
+
} else if (isMulti(defaultType) || isTreeSelect(defaultType)) {
|
|
723
741
|
return mergeRight(filterPayload, {
|
|
724
742
|
value: buildMultiOptionPayload(value)
|
|
725
743
|
});
|
|
@@ -857,7 +875,7 @@ var createUrlParamString = function createUrlParamString(_ref15) {
|
|
|
857
875
|
return "".concat(value, "+rule-").concat(rule);
|
|
858
876
|
} else if (isSingleDate(defaultType) || isSingleTime(defaultType)) {
|
|
859
877
|
return value && "".concat(value, "+rule-").concat(rule) || value;
|
|
860
|
-
} else if (isMulti(defaultType)) {
|
|
878
|
+
} else if (isMulti(defaultType) || isTreeSelect(defaultType)) {
|
|
861
879
|
return "".concat(value.join("|"), "+rule-").concat(rule);
|
|
862
880
|
} else if (isSingle(defaultType)) {
|
|
863
881
|
return "".concat(value, "+rule-").concat(rule);
|
|
@@ -997,7 +1015,7 @@ var buildDropdownValue = function buildDropdownValue(_ref) {
|
|
|
997
1015
|
filter = _ref.filter,
|
|
998
1016
|
options = _ref.options;
|
|
999
1017
|
if (!filter) return null;
|
|
1000
|
-
if (isMulti(defaultType)) {
|
|
1018
|
+
if (isMulti(defaultType) || isTreeSelect(defaultType)) {
|
|
1001
1019
|
return options.filter(function (_ref2) {
|
|
1002
1020
|
var value = _ref2.value;
|
|
1003
1021
|
return filter.value.includes(value);
|
|
@@ -1735,6 +1753,100 @@ var Time = function Time(_ref) {
|
|
|
1735
1753
|
};
|
|
1736
1754
|
var Time$1 = /*#__PURE__*/React.memo(Time);
|
|
1737
1755
|
|
|
1756
|
+
var TreeSelect = function TreeSelect(_ref) {
|
|
1757
|
+
var _findBy;
|
|
1758
|
+
var autoFocus = _ref.autoFocus,
|
|
1759
|
+
column = _ref.column,
|
|
1760
|
+
filter = _ref.filter,
|
|
1761
|
+
handleApplyFilter = _ref.handleApplyFilter;
|
|
1762
|
+
var key = column.key,
|
|
1763
|
+
label = column.label,
|
|
1764
|
+
_column$defaultType = column.defaultType,
|
|
1765
|
+
defaultType = _column$defaultType === void 0 ? column.type : _column$defaultType,
|
|
1766
|
+
defaultValue = column.defaultValue,
|
|
1767
|
+
_column$helpIconProps = column.helpIconProps,
|
|
1768
|
+
helpIconProps = _column$helpIconProps === void 0 ? {} : _column$helpIconProps,
|
|
1769
|
+
_column$isClearable = column.isClearable,
|
|
1770
|
+
isClearable = _column$isClearable === void 0 ? true : _column$isClearable,
|
|
1771
|
+
_column$showRuleSelec = column.showRuleSelector,
|
|
1772
|
+
showRuleSelector = _column$showRuleSelec === void 0 ? false : _column$showRuleSelec,
|
|
1773
|
+
options = column.values;
|
|
1774
|
+
var initialRule = (_findBy = findBy({
|
|
1775
|
+
value: filter === null || filter === void 0 ? void 0 : filter.rule
|
|
1776
|
+
}, TREE_SELECT_RULES)) !== null && _findBy !== void 0 ? _findBy : TREE_SELECT_RULES[0];
|
|
1777
|
+
var _useState = useState(initialRule),
|
|
1778
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
1779
|
+
selectedRule = _useState2[0],
|
|
1780
|
+
setSelectedRule = _useState2[1];
|
|
1781
|
+
var _useTranslation = useTranslation(),
|
|
1782
|
+
t = _useTranslation.t;
|
|
1783
|
+
var selectedOption = buildDropdownValue({
|
|
1784
|
+
defaultType: defaultType,
|
|
1785
|
+
filter: filter,
|
|
1786
|
+
options: options
|
|
1787
|
+
});
|
|
1788
|
+
var handleChange = function handleChange(option) {
|
|
1789
|
+
if (isNotPresent(option)) return handleApplyFilter({
|
|
1790
|
+
_delete: true
|
|
1791
|
+
});
|
|
1792
|
+
var updatedFilter = buildUpdatedFilter({
|
|
1793
|
+
column: column,
|
|
1794
|
+
defaultType: defaultType,
|
|
1795
|
+
option: option,
|
|
1796
|
+
rule: selectedRule.value
|
|
1797
|
+
});
|
|
1798
|
+
return handleApplyFilter(updatedFilter);
|
|
1799
|
+
};
|
|
1800
|
+
var handleRuleChange = function handleRuleChange(rule) {
|
|
1801
|
+
var isPreviousRuleEmpty = isRuleEmpty(selectedRule.value);
|
|
1802
|
+
var isNewRuleEmpty = isRuleEmpty(rule.value);
|
|
1803
|
+
setSelectedRule(rule);
|
|
1804
|
+
if (isPreviousRuleEmpty || !isNewRuleEmpty && isNotPresent(filter === null || filter === void 0 ? void 0 : filter.value)) {
|
|
1805
|
+
return handleApplyFilter({
|
|
1806
|
+
_delete: true
|
|
1807
|
+
});
|
|
1808
|
+
}
|
|
1809
|
+
var updatedFilter = buildUpdatedFilter({
|
|
1810
|
+
column: column,
|
|
1811
|
+
defaultType: defaultType,
|
|
1812
|
+
option: isNewRuleEmpty ? [options[0]] : selectedOption,
|
|
1813
|
+
rule: rule.value
|
|
1814
|
+
});
|
|
1815
|
+
return handleApplyFilter(updatedFilter);
|
|
1816
|
+
};
|
|
1817
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
1818
|
+
className: "neeto-filters-pane-filter__item-wrapper"
|
|
1819
|
+
}, showRuleSelector && /*#__PURE__*/React.createElement(Select, {
|
|
1820
|
+
label: label,
|
|
1821
|
+
defaultValue: TREE_SELECT_RULES[0],
|
|
1822
|
+
options: TREE_SELECT_RULES,
|
|
1823
|
+
value: selectedRule,
|
|
1824
|
+
onChange: handleRuleChange
|
|
1825
|
+
}), !isRuleEmpty(selectedRule.value) &&
|
|
1826
|
+
/*#__PURE__*/
|
|
1827
|
+
// eslint-disable-next-line @bigbinary/neeto/merge-spread-attributes
|
|
1828
|
+
React.createElement(TreeSelect$2, _extends({
|
|
1829
|
+
autoFocus: autoFocus,
|
|
1830
|
+
multiple: true,
|
|
1831
|
+
showSearch: true,
|
|
1832
|
+
treeDataSimpleMode: true,
|
|
1833
|
+
allowClear: !defaultValue && isClearable,
|
|
1834
|
+
"data-cy": "neeto-filters-".concat(hyphenate(key), "-filter"),
|
|
1835
|
+
label: !showRuleSelector && label,
|
|
1836
|
+
treeData: options,
|
|
1837
|
+
value: selectedOption,
|
|
1838
|
+
placeholder: t("neetoFilters.messages.selectResource", {
|
|
1839
|
+
resource: label
|
|
1840
|
+
}),
|
|
1841
|
+
onChange: handleChange
|
|
1842
|
+
}, isNotEmpty(helpIconProps) && {
|
|
1843
|
+
labelProps: {
|
|
1844
|
+
helpIconProps: buildHelpIconProps(helpIconProps)
|
|
1845
|
+
}
|
|
1846
|
+
}, getOtherProps(column))));
|
|
1847
|
+
};
|
|
1848
|
+
var TreeSelect$1 = /*#__PURE__*/React.memo(TreeSelect);
|
|
1849
|
+
|
|
1738
1850
|
var Item = function Item(_ref) {
|
|
1739
1851
|
var column = _ref.column,
|
|
1740
1852
|
filters = _ref.filters,
|
|
@@ -1809,6 +1921,14 @@ var Item = function Item(_ref) {
|
|
|
1809
1921
|
handleApplyFilter: handleApplyFilter
|
|
1810
1922
|
});
|
|
1811
1923
|
}
|
|
1924
|
+
if (isTreeSelect(defaultType)) {
|
|
1925
|
+
return /*#__PURE__*/React.createElement(TreeSelect$1, {
|
|
1926
|
+
autoFocus: autoFocus,
|
|
1927
|
+
column: column,
|
|
1928
|
+
filter: filter,
|
|
1929
|
+
handleApplyFilter: handleApplyFilter
|
|
1930
|
+
});
|
|
1931
|
+
}
|
|
1812
1932
|
return /*#__PURE__*/React.createElement(Dropdown$1, {
|
|
1813
1933
|
autoFocus: autoFocus,
|
|
1814
1934
|
column: column,
|
|
@@ -2133,7 +2253,7 @@ var buildFilterValue = function buildFilterValue(filter) {
|
|
|
2133
2253
|
return value.map(dateFormat.time).join(" - ");
|
|
2134
2254
|
} else if (isDate(defaultType) || isTime(defaultType)) {
|
|
2135
2255
|
return humanize(value);
|
|
2136
|
-
} else if (isMulti(defaultType)) {
|
|
2256
|
+
} else if (isMulti(defaultType) || isTreeSelect(defaultType)) {
|
|
2137
2257
|
return value.map(function (value) {
|
|
2138
2258
|
var _findBy;
|
|
2139
2259
|
return ((_findBy = findBy({
|
|
@@ -2173,7 +2293,7 @@ var buildRuleValue = function buildRuleValue(_ref) {
|
|
|
2173
2293
|
return findBy({
|
|
2174
2294
|
value: rule
|
|
2175
2295
|
}, SINGLE_TIME_OPTIONS).label;
|
|
2176
|
-
} else if (isMulti(defaultType) || isSingle(defaultType)) {
|
|
2296
|
+
} else if (isMulti(defaultType) || isSingle(defaultType) || isTreeSelect(defaultType)) {
|
|
2177
2297
|
return isRuleEmpty(rule) ? t$1("neetoFilters.rules.isEmpty") : "";
|
|
2178
2298
|
}
|
|
2179
2299
|
return "";
|