@bigbinary/neeto-filters-frontend 3.3.0-beta.2 → 3.3.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/dist/index.cjs.js +138 -39
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.js +139 -40
- package/dist/index.js.map +1 -1
- package/package.json +7 -5
package/dist/index.cjs.js
CHANGED
|
@@ -16,11 +16,12 @@ var reactI18next = require('react-i18next');
|
|
|
16
16
|
var reactRouterDom_min = require('react-router-dom/cjs/react-router-dom.min');
|
|
17
17
|
var utils = require('@bigbinary/neeto-commons-frontend/utils');
|
|
18
18
|
var yup = require('yup');
|
|
19
|
-
var useHotkeys = require('@bigbinary/neeto-hotkeys');
|
|
20
19
|
var reactRouterDom = require('react-router-dom');
|
|
20
|
+
var useHotkeys = require('@bigbinary/neeto-hotkeys');
|
|
21
21
|
var axios = require('axios');
|
|
22
22
|
var Search = require('@bigbinary/neeto-molecules/Search');
|
|
23
23
|
var MenuBar = require('@bigbinary/neeto-molecules/MenuBar');
|
|
24
|
+
var dnd = require('@hello-pangea/dnd');
|
|
24
25
|
var MoreDropdown = require('@bigbinary/neeto-molecules/MoreDropdown');
|
|
25
26
|
|
|
26
27
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
@@ -568,7 +569,7 @@ var buildFiltersFromSearchParams = function buildFiltersFromSearchParams(columns
|
|
|
568
569
|
}, column);
|
|
569
570
|
} else if (isTime(defaultType) && isCustomTimeRange(value)) {
|
|
570
571
|
return ramda.mergeLeft({
|
|
571
|
-
value: value
|
|
572
|
+
value: value
|
|
572
573
|
}, column);
|
|
573
574
|
} else if (isSingleDate(defaultType)) {
|
|
574
575
|
var _value$split3 = value.split("+rule-"),
|
|
@@ -974,6 +975,9 @@ var getColumnsWithStandardizedType = function getColumnsWithStandardizedType(col
|
|
|
974
975
|
});
|
|
975
976
|
});
|
|
976
977
|
};
|
|
978
|
+
var isNilOrEmpty = function isNilOrEmpty(param) {
|
|
979
|
+
return ramda.isNil(param) || ramda.isEmpty(param);
|
|
980
|
+
};
|
|
977
981
|
var isKeywordFilterPresent = function isKeywordFilterPresent(keyworFilter) {
|
|
978
982
|
return ramda.not(ramda.isEmpty(keyworFilter.node));
|
|
979
983
|
};
|
|
@@ -1069,6 +1073,31 @@ var buildDateValues = function buildDateValues(dates, selectedRule) {
|
|
|
1069
1073
|
var buildHelpIconProps = function buildHelpIconProps(helpIconProps) {
|
|
1070
1074
|
return ramda.mergeDeepRight(DEFAULT_HELP_ICON_PROPS, helpIconProps);
|
|
1071
1075
|
};
|
|
1076
|
+
var hasInvalidTimes = function hasInvalidTimes(times) {
|
|
1077
|
+
if (Array.isArray(times)) {
|
|
1078
|
+
return times.some(function (time) {
|
|
1079
|
+
return time.isValid();
|
|
1080
|
+
}) === false;
|
|
1081
|
+
}
|
|
1082
|
+
return !times.isValid();
|
|
1083
|
+
};
|
|
1084
|
+
var areCustomTimeRangeValuesNotValid = function areCustomTimeRangeValuesNotValid(times) {
|
|
1085
|
+
return !times.every(function (time) {
|
|
1086
|
+
return time.isValid();
|
|
1087
|
+
});
|
|
1088
|
+
};
|
|
1089
|
+
|
|
1090
|
+
// eslint-disable-next-line @bigbinary/neeto/use-standard-date-time-formats
|
|
1091
|
+
var formatSingleTime = function formatSingleTime(time) {
|
|
1092
|
+
return dayjs(time).format("HH:mm:ss");
|
|
1093
|
+
};
|
|
1094
|
+
var formatTime = function formatTime(value, timePickerType) {
|
|
1095
|
+
if (isNilOrEmpty(value)) return null;
|
|
1096
|
+
if (timePickerType === "range") {
|
|
1097
|
+
return value.map(formatSingleTime);
|
|
1098
|
+
}
|
|
1099
|
+
return formatSingleTime(value);
|
|
1100
|
+
};
|
|
1072
1101
|
|
|
1073
1102
|
var Boolean = function Boolean(_ref) {
|
|
1074
1103
|
var column = _ref.column,
|
|
@@ -1415,6 +1444,15 @@ var SingleTime = function SingleTime(_ref) {
|
|
|
1415
1444
|
handleApplyFilter(updatedFilter);
|
|
1416
1445
|
};
|
|
1417
1446
|
var handleChange = function handleChange(times) {
|
|
1447
|
+
if (hasInvalidTimes(times)) {
|
|
1448
|
+
handleApplyFilter({
|
|
1449
|
+
_delete: true
|
|
1450
|
+
});
|
|
1451
|
+
return;
|
|
1452
|
+
}
|
|
1453
|
+
if (timePickerType === "range" && areCustomTimeRangeValuesNotValid(times)) {
|
|
1454
|
+
return;
|
|
1455
|
+
}
|
|
1418
1456
|
var value = timePickerType === "range" ? ramda.pluck("$d", times).map(function (time) {
|
|
1419
1457
|
return time.toISOString();
|
|
1420
1458
|
}) : times["$d"].toISOString();
|
|
@@ -1427,6 +1465,7 @@ var SingleTime = function SingleTime(_ref) {
|
|
|
1427
1465
|
});
|
|
1428
1466
|
handleApplyFilter(updatedFilter);
|
|
1429
1467
|
};
|
|
1468
|
+
var formattedTime = formatTime(value, timePickerType);
|
|
1430
1469
|
return /*#__PURE__*/React__default["default"].createElement("div", {
|
|
1431
1470
|
className: "neeto-filters-pane-filter__item-wrapper"
|
|
1432
1471
|
}, /*#__PURE__*/React__default["default"].createElement(neetoui.Select, _extends({
|
|
@@ -1441,15 +1480,12 @@ var SingleTime = function SingleTime(_ref) {
|
|
|
1441
1480
|
}
|
|
1442
1481
|
}, {
|
|
1443
1482
|
onChange: handleRuleChange
|
|
1444
|
-
})), /*#__PURE__*/React__default["default"].createElement(neetoui.
|
|
1483
|
+
})), /*#__PURE__*/React__default["default"].createElement(neetoui.TimePickerInput, _extends({
|
|
1445
1484
|
autoFocus: autoFocus,
|
|
1446
|
-
value: value,
|
|
1447
|
-
use12Hours: true,
|
|
1448
1485
|
className: "w-full",
|
|
1449
1486
|
"data-cy": "neeto-filters-".concat(neetoCist.hyphenate(key), "-filter"),
|
|
1450
|
-
format: "h:mm A",
|
|
1451
|
-
getPopupContainer: ramda.prop("parentNode"),
|
|
1452
1487
|
type: timePickerType,
|
|
1488
|
+
value: formattedTime,
|
|
1453
1489
|
onChange: handleChange
|
|
1454
1490
|
}, otherProps)));
|
|
1455
1491
|
};
|
|
@@ -1592,6 +1628,15 @@ var Time = function Time(_ref) {
|
|
|
1592
1628
|
handleApplyFilter(updatedFilter);
|
|
1593
1629
|
};
|
|
1594
1630
|
var handleTimeRangeChange = function handleTimeRangeChange(times) {
|
|
1631
|
+
if (hasInvalidTimes(times)) {
|
|
1632
|
+
handleApplyFilter({
|
|
1633
|
+
_delete: true
|
|
1634
|
+
});
|
|
1635
|
+
return;
|
|
1636
|
+
}
|
|
1637
|
+
if (isCustomTimeRangeShown && areCustomTimeRangeValuesNotValid(times)) {
|
|
1638
|
+
return;
|
|
1639
|
+
}
|
|
1595
1640
|
var updatedFilter = buildUpdatedFilter({
|
|
1596
1641
|
column: column,
|
|
1597
1642
|
defaultType: defaultType,
|
|
@@ -1622,13 +1667,11 @@ var Time = function Time(_ref) {
|
|
|
1622
1667
|
}
|
|
1623
1668
|
}, {
|
|
1624
1669
|
onChange: handleChange
|
|
1625
|
-
})), isCustomTimeRangeShown && /*#__PURE__*/React__default["default"].createElement(neetoui.
|
|
1626
|
-
|
|
1670
|
+
})), isCustomTimeRangeShown && /*#__PURE__*/React__default["default"].createElement(neetoui.TimePickerInput, _extends({
|
|
1671
|
+
className: "w-full",
|
|
1627
1672
|
"data-cy": "neeto-filters-".concat(neetoCist.hyphenate(key), "-date-range"),
|
|
1628
|
-
format: "h:mm A",
|
|
1629
|
-
getPopupContainer: ramda.prop("parentNode"),
|
|
1630
1673
|
type: "range",
|
|
1631
|
-
value: filter.value,
|
|
1674
|
+
value: formatTime(filter.value, "range"),
|
|
1632
1675
|
onChange: handleTimeRangeChange
|
|
1633
1676
|
}, otherProps)));
|
|
1634
1677
|
};
|
|
@@ -2203,7 +2246,7 @@ var FilterBar = function FilterBar(_ref) {
|
|
|
2203
2246
|
handleApplyFilters = _ref.handleApplyFilters;
|
|
2204
2247
|
var _useTranslation = reactI18next.useTranslation(),
|
|
2205
2248
|
t = _useTranslation.t;
|
|
2206
|
-
var history =
|
|
2249
|
+
var history = reactRouterDom.useHistory();
|
|
2207
2250
|
var searchParams = reactUtils.useQueryParams({
|
|
2208
2251
|
toCamelCase: false
|
|
2209
2252
|
});
|
|
@@ -2261,6 +2304,7 @@ var FilterBar = function FilterBar(_ref) {
|
|
|
2261
2304
|
}), /*#__PURE__*/React__default["default"].createElement("div", {
|
|
2262
2305
|
className: "flex items-center gap-x-2"
|
|
2263
2306
|
}, neetoCist.isPresent(entity) && !hasOnlyKeywordFilter(filters) && /*#__PURE__*/React__default["default"].createElement(neetoui.Button, {
|
|
2307
|
+
"data-cy": "save-segment-button",
|
|
2264
2308
|
label: t("neetoFilters.segments.saveAsNewSegment"),
|
|
2265
2309
|
style: "secondary",
|
|
2266
2310
|
onClick: function onClick() {
|
|
@@ -2986,6 +3030,15 @@ var Delete = function Delete(_ref) {
|
|
|
2986
3030
|
});
|
|
2987
3031
|
};
|
|
2988
3032
|
|
|
3033
|
+
var reorderList = function reorderList(list, startIndex, endIndex) {
|
|
3034
|
+
var result = Array.from(list);
|
|
3035
|
+
var _result$splice = result.splice(startIndex, 1),
|
|
3036
|
+
_result$splice2 = _slicedToArray(_result$splice, 1),
|
|
3037
|
+
removed = _result$splice2[0];
|
|
3038
|
+
result.splice(endIndex, 0, removed);
|
|
3039
|
+
return result;
|
|
3040
|
+
};
|
|
3041
|
+
|
|
2989
3042
|
var useSegments = function useSegments(_ref) {
|
|
2990
3043
|
var entity = _ref.entity,
|
|
2991
3044
|
columns = _ref.columns,
|
|
@@ -2994,22 +3047,39 @@ var useSegments = function useSegments(_ref) {
|
|
|
2994
3047
|
var _useTranslation = reactI18next.useTranslation(),
|
|
2995
3048
|
t = _useTranslation.t;
|
|
2996
3049
|
var history = reactRouterDom.useHistory();
|
|
3050
|
+
var _useState = React.useState([]),
|
|
3051
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
3052
|
+
segments = _useState2[0],
|
|
3053
|
+
setSegments = _useState2[1];
|
|
2997
3054
|
var _useFetchSegments = useFetchSegments({
|
|
2998
3055
|
entity: entity
|
|
2999
3056
|
}),
|
|
3000
|
-
|
|
3001
|
-
segments = _useFetchSegments$dat === void 0 ? [] : _useFetchSegments$dat,
|
|
3057
|
+
fetchedSegments = _useFetchSegments.data,
|
|
3002
3058
|
isLoading = _useFetchSegments.isLoading;
|
|
3003
3059
|
var _useUpdateSegment = useUpdateSegment(),
|
|
3004
3060
|
updateSegment = _useUpdateSegment.mutate,
|
|
3005
3061
|
isUpdating = _useUpdateSegment.isLoading;
|
|
3006
|
-
var
|
|
3062
|
+
var _useState3 = React.useState({
|
|
3007
3063
|
action: "",
|
|
3008
3064
|
segment: undefined
|
|
3009
3065
|
}),
|
|
3010
|
-
|
|
3011
|
-
confirmAction =
|
|
3012
|
-
setConfirmAction =
|
|
3066
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
3067
|
+
confirmAction = _useState4[0],
|
|
3068
|
+
setConfirmAction = _useState4[1];
|
|
3069
|
+
var handleSegmentsReorder = function handleSegmentsReorder(_ref2) {
|
|
3070
|
+
var source = _ref2.source,
|
|
3071
|
+
destination = _ref2.destination;
|
|
3072
|
+
if (!destination || source.index === destination.index) return;
|
|
3073
|
+
var reorderedSegments = reorderList(segments, source.index, destination.index);
|
|
3074
|
+
updateSegment({
|
|
3075
|
+
id: segments[source.index].id,
|
|
3076
|
+
payload: {
|
|
3077
|
+
position: destination.index + 1
|
|
3078
|
+
},
|
|
3079
|
+
showToastr: false
|
|
3080
|
+
});
|
|
3081
|
+
setSegments(reorderedSegments);
|
|
3082
|
+
};
|
|
3013
3083
|
var clearAppliedFilters = function clearAppliedFilters() {
|
|
3014
3084
|
var _filters$, _filters$2;
|
|
3015
3085
|
var filters = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : appliedFilters;
|
|
@@ -3024,10 +3094,10 @@ var useSegments = function useSegments(_ref) {
|
|
|
3024
3094
|
})
|
|
3025
3095
|
});
|
|
3026
3096
|
};
|
|
3027
|
-
var handleSelectSegment = function handleSelectSegment(
|
|
3097
|
+
var handleSelectSegment = function handleSelectSegment(_ref3) {
|
|
3028
3098
|
var _filters$3;
|
|
3029
|
-
var id =
|
|
3030
|
-
filters =
|
|
3099
|
+
var id = _ref3.id,
|
|
3100
|
+
filters = _ref3.filters;
|
|
3031
3101
|
history.push({
|
|
3032
3102
|
search: buildUrlFromSegment({
|
|
3033
3103
|
columns: columns,
|
|
@@ -3036,6 +3106,9 @@ var useSegments = function useSegments(_ref) {
|
|
|
3036
3106
|
})
|
|
3037
3107
|
});
|
|
3038
3108
|
};
|
|
3109
|
+
React.useEffect(function () {
|
|
3110
|
+
setSegments(fetchedSegments);
|
|
3111
|
+
}, [fetchedSegments]);
|
|
3039
3112
|
if (isLoading) {
|
|
3040
3113
|
return /*#__PURE__*/React__default["default"].createElement(neetoui.Spinner, null);
|
|
3041
3114
|
}
|
|
@@ -3044,9 +3117,9 @@ var useSegments = function useSegments(_ref) {
|
|
|
3044
3117
|
style: "body2"
|
|
3045
3118
|
}, t("neetoFilters.segments.noSegmentsFound"));
|
|
3046
3119
|
}
|
|
3047
|
-
var handleUpdate = function handleUpdate(
|
|
3048
|
-
var name =
|
|
3049
|
-
var setFieldError =
|
|
3120
|
+
var handleUpdate = function handleUpdate(_ref4, _ref5) {
|
|
3121
|
+
var name = _ref4.name;
|
|
3122
|
+
var setFieldError = _ref5.setFieldError;
|
|
3050
3123
|
var filtersPayload = buildSegmentsPayload(filters, childrenKeys);
|
|
3051
3124
|
updateSegment({
|
|
3052
3125
|
id: confirmAction.segment.id,
|
|
@@ -3073,6 +3146,7 @@ var useSegments = function useSegments(_ref) {
|
|
|
3073
3146
|
segments: segments,
|
|
3074
3147
|
clearAppliedFilters: clearAppliedFilters,
|
|
3075
3148
|
handleSelectSegment: handleSelectSegment,
|
|
3149
|
+
handleSegmentsReorder: handleSegmentsReorder,
|
|
3076
3150
|
setConfirmAction: setConfirmAction,
|
|
3077
3151
|
isUpdating: isUpdating,
|
|
3078
3152
|
handleUpdate: handleUpdate,
|
|
@@ -3121,6 +3195,7 @@ var Segment = function Segment(_ref) {
|
|
|
3121
3195
|
}];
|
|
3122
3196
|
return /*#__PURE__*/React__default["default"].createElement("div", {
|
|
3123
3197
|
onClick: onClick,
|
|
3198
|
+
"data-cy": "neeto-filters-segment-block-".concat(neetoCist.hyphenate(label)),
|
|
3124
3199
|
className: classnames__default["default"]("neeto-ui-border-gray-400 neeto-ui-bg-white hover:neeto-ui-bg-gray-200 neeto-ui-rounded-lg mb-2 flex h-10 cursor-pointer items-center gap-2 border p-3 transition-all duration-300 ease-in-out", {
|
|
3125
3200
|
"neeto-filters-segment--active": isActive
|
|
3126
3201
|
})
|
|
@@ -3166,6 +3241,7 @@ var MenuBlocks = function MenuBlocks(_ref) {
|
|
|
3166
3241
|
segments = _useSegments$segments === void 0 ? [] : _useSegments$segments,
|
|
3167
3242
|
clearAppliedFilters = _useSegments.clearAppliedFilters,
|
|
3168
3243
|
handleSelectSegment = _useSegments.handleSelectSegment,
|
|
3244
|
+
handleSegmentsReorder = _useSegments.handleSegmentsReorder,
|
|
3169
3245
|
onClose = _useSegments.onClose,
|
|
3170
3246
|
setConfirmAction = _useSegments.setConfirmAction,
|
|
3171
3247
|
selectedSegment = _useSegments.selectedSegment,
|
|
@@ -3189,20 +3265,43 @@ var MenuBlocks = function MenuBlocks(_ref) {
|
|
|
3189
3265
|
isActive: ramda.isEmpty(appliedFilters),
|
|
3190
3266
|
label: defaultSegmentName,
|
|
3191
3267
|
onClick: clearAppliedFilters
|
|
3192
|
-
}),
|
|
3193
|
-
|
|
3194
|
-
|
|
3195
|
-
|
|
3196
|
-
|
|
3197
|
-
|
|
3198
|
-
|
|
3199
|
-
|
|
3200
|
-
|
|
3201
|
-
|
|
3202
|
-
|
|
3203
|
-
|
|
3204
|
-
|
|
3205
|
-
|
|
3268
|
+
}), /*#__PURE__*/React__default["default"].createElement(dnd.DragDropContext, {
|
|
3269
|
+
onDragEnd: handleSegmentsReorder
|
|
3270
|
+
}, /*#__PURE__*/React__default["default"].createElement(dnd.Droppable, {
|
|
3271
|
+
droppableId: "neeto-filters-segments-".concat(entity)
|
|
3272
|
+
}, function (_ref2) {
|
|
3273
|
+
var innerRef = _ref2.innerRef,
|
|
3274
|
+
droppableProps = _ref2.droppableProps,
|
|
3275
|
+
placeholder = _ref2.placeholder;
|
|
3276
|
+
return /*#__PURE__*/React__default["default"].createElement("div", _extends({
|
|
3277
|
+
ref: innerRef
|
|
3278
|
+
}, droppableProps), segments.slice(0, showAll ? segments.length : ITEMS_MAX_COUNT).map(function (segment, index) {
|
|
3279
|
+
return /*#__PURE__*/React__default["default"].createElement(dnd.Draggable, {
|
|
3280
|
+
index: index,
|
|
3281
|
+
draggableId: segment.id.toString(),
|
|
3282
|
+
isDragDisabled: isUpdating,
|
|
3283
|
+
key: segment.id.toString()
|
|
3284
|
+
}, function (_ref3) {
|
|
3285
|
+
var innerRef = _ref3.innerRef,
|
|
3286
|
+
draggableProps = _ref3.draggableProps,
|
|
3287
|
+
dragHandleProps = _ref3.dragHandleProps;
|
|
3288
|
+
return /*#__PURE__*/React__default["default"].createElement("div", _extends({
|
|
3289
|
+
ref: innerRef
|
|
3290
|
+
}, draggableProps, dragHandleProps), /*#__PURE__*/React__default["default"].createElement(Segment, {
|
|
3291
|
+
segments: segments,
|
|
3292
|
+
setConfirmAction: setConfirmAction,
|
|
3293
|
+
shouldShowDropdown: true,
|
|
3294
|
+
id: segment.id,
|
|
3295
|
+
isActive: segment.id === segmentId,
|
|
3296
|
+
key: segment.id,
|
|
3297
|
+
label: segment.name,
|
|
3298
|
+
onClick: function onClick() {
|
|
3299
|
+
return handleSelectSegment(segment);
|
|
3300
|
+
}
|
|
3301
|
+
}));
|
|
3302
|
+
});
|
|
3303
|
+
}), placeholder);
|
|
3304
|
+
})), /*#__PURE__*/React__default["default"].createElement(SegmentForm, {
|
|
3206
3305
|
childrenKeys: childrenKeys,
|
|
3207
3306
|
columns: columns,
|
|
3208
3307
|
customFilters: customFilters,
|