@true-engineering/true-react-common-ui-kit 4.0.0-alpha68 → 4.0.0-alpha69
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/components/FiltersPane/components/FilterValueView/FilterValueView.d.ts +5 -3
- package/dist/components/FiltersPane/components/FilterWrapper/helpers.d.ts +1 -1
- package/dist/components/FiltersPane/types.d.ts +0 -1
- package/dist/true-react-common-ui-kit.js +52 -70
- package/dist/true-react-common-ui-kit.js.map +1 -1
- package/dist/true-react-common-ui-kit.umd.cjs +1 -1
- package/dist/true-react-common-ui-kit.umd.cjs.map +1 -1
- package/package.json +1 -1
- package/src/components/FiltersPane/FiltersPane.stories.tsx +2 -1
- package/src/components/FiltersPane/components/FilterValueView/FilterValueView.tsx +61 -92
- package/src/components/FiltersPane/components/FilterWithPeriod/FilterWithPeriod.tsx +1 -1
- package/src/components/FiltersPane/components/FilterWrapper/FilterWrapper.tsx +2 -7
- package/src/components/FiltersPane/components/FilterWrapper/helpers.ts +1 -1
- package/src/components/FiltersPane/types.ts +0 -1
|
@@ -1,6 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
import { ITweakStylesProps } from '../../../../types';
|
|
2
3
|
import { IFilterWrapperProps } from '../FilterWrapper';
|
|
3
4
|
import { IFilterValueViewStyles } from './FilterValueView.styles';
|
|
4
|
-
export interface IFilterValueView<Values extends Record<string, unknown>, Key extends keyof Values> extends
|
|
5
|
+
export interface IFilterValueView<Values extends Record<string, unknown>, Key extends keyof Values> extends Pick<IFilterWrapperProps<Values, Key>, 'value' | 'filter' | 'localeKey' | 'locale'>, ITweakStylesProps<IFilterValueViewStyles> {
|
|
6
|
+
value: Values[Key];
|
|
5
7
|
}
|
|
6
|
-
export declare function FilterValueView<Values extends Record<string, unknown>, Key extends keyof Values>({ value, filter, locale, localeKey, tweakStyles, }: IFilterValueView<Values, Key>):
|
|
8
|
+
export declare function FilterValueView<Values extends Record<string, unknown>, Key extends keyof Values>({ value, filter, locale, localeKey, tweakStyles, }: IFilterValueView<Values, Key>): ReactNode;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const isContentNotEmpty: (value:
|
|
1
|
+
export declare const isContentNotEmpty: <T>(value: T) => value is NonNullable<T>;
|
|
@@ -7984,7 +7984,7 @@ const FilterWithPeriod = ({
|
|
|
7984
7984
|
if (onClose !== void 0) {
|
|
7985
7985
|
onClose();
|
|
7986
7986
|
}
|
|
7987
|
-
onChange(
|
|
7987
|
+
onChange(p);
|
|
7988
7988
|
}
|
|
7989
7989
|
setIsPeriodPickerShown(false);
|
|
7990
7990
|
};
|
|
@@ -8398,37 +8398,29 @@ function FilterValueView({
|
|
|
8398
8398
|
localeKey,
|
|
8399
8399
|
tweakStyles
|
|
8400
8400
|
}) {
|
|
8401
|
-
const classes = useStyles$p({
|
|
8401
|
+
const classes = useStyles$p({ tweakStyles });
|
|
8402
8402
|
const translatesLocaleKey = filter2.localeKey ?? localeKey;
|
|
8403
8403
|
const translates = useMemo(
|
|
8404
8404
|
() => getLocale$1(translatesLocaleKey, locale, filter2.locale),
|
|
8405
8405
|
[translatesLocaleKey, locale, filter2.locale]
|
|
8406
8406
|
);
|
|
8407
|
-
if (isEmpty(value)) {
|
|
8408
|
-
return /* @__PURE__ */ jsx(Fragment, {});
|
|
8409
|
-
}
|
|
8410
8407
|
if (isNotEmpty(filter2.getSelectedValueView)) {
|
|
8411
8408
|
return /* @__PURE__ */ jsx("span", { className: classes.text, children: filter2.getSelectedValueView(value) });
|
|
8412
8409
|
}
|
|
8413
|
-
const isMultiple = filter2.type === "custom" && filter2.valueViewType === "multiple";
|
|
8414
|
-
const isRange = filter2.type === "custom" && filter2.valueViewType === "range";
|
|
8415
|
-
const isDateRange = filter2.type === "dateRange" || filter2.type === "dateRangeWithoutPeriod";
|
|
8416
8410
|
const displayValue = (v) => {
|
|
8417
8411
|
if (!isNotEmpty(v)) {
|
|
8418
8412
|
return "";
|
|
8419
8413
|
}
|
|
8420
8414
|
if (v instanceof Date) {
|
|
8421
|
-
|
|
8422
|
-
|
|
8423
|
-
filter2.dateFormat || DEFAULT_DATE_FORMAT$1
|
|
8424
|
-
);
|
|
8425
|
-
}
|
|
8426
|
-
if (typeof v === "object" && "value" in v && isNotEmpty(v.value)) {
|
|
8427
|
-
return String(v.value);
|
|
8415
|
+
const { dateFormat = DEFAULT_DATE_FORMAT$1 } = filter2;
|
|
8416
|
+
return format(v, dateFormat);
|
|
8428
8417
|
}
|
|
8429
|
-
if (
|
|
8418
|
+
if (!isObject(v)) {
|
|
8430
8419
|
return String(v);
|
|
8431
8420
|
}
|
|
8421
|
+
if ("value" in v && isNotEmpty(v.value)) {
|
|
8422
|
+
return String(v.value);
|
|
8423
|
+
}
|
|
8432
8424
|
console.warn(
|
|
8433
8425
|
`%c Ошибка конфигурации фильтра ${filter2.name}. Невозможно отобразить значение фильтра. Задайте filterValueViewComponent или filterValueViewType.`,
|
|
8434
8426
|
"background: orange; color: black"
|
|
@@ -8436,72 +8428,63 @@ function FilterValueView({
|
|
|
8436
8428
|
return "";
|
|
8437
8429
|
};
|
|
8438
8430
|
if (filter2.type === "select") {
|
|
8439
|
-
const getView = filter2.getValueView ??
|
|
8431
|
+
const getView = filter2.getValueView ?? displayValue;
|
|
8440
8432
|
return /* @__PURE__ */ jsx("span", { className: classes.text, children: getView(value) });
|
|
8441
8433
|
}
|
|
8434
|
+
const getArrayView = (values, getView = displayValue) => {
|
|
8435
|
+
if (!Array.isArray(values) || !isArrayNotEmpty(values)) {
|
|
8436
|
+
return null;
|
|
8437
|
+
}
|
|
8438
|
+
const [first, ...rest] = values;
|
|
8439
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
8440
|
+
/* @__PURE__ */ jsx("span", { className: classes.text, children: getView(first) }),
|
|
8441
|
+
isArrayNotEmpty(rest) && /* @__PURE__ */ jsxs("span", { className: classes.count, children: [
|
|
8442
|
+
" (+",
|
|
8443
|
+
rest.length,
|
|
8444
|
+
")"
|
|
8445
|
+
] })
|
|
8446
|
+
] });
|
|
8447
|
+
};
|
|
8442
8448
|
if (filter2.type === "multiSelect") {
|
|
8443
|
-
const
|
|
8444
|
-
|
|
8445
|
-
const { include } = multiSelectValue;
|
|
8446
|
-
return /* @__PURE__ */ jsx(Fragment, { children: Array.isArray(include) && include.length > 0 && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
8447
|
-
/* @__PURE__ */ jsx("span", { className: classes.text, children: getView(include[0]) }),
|
|
8448
|
-
/* @__PURE__ */ jsx("span", { className: classes.count, children: include.length > 1 && ` (+${include.length - 1})` })
|
|
8449
|
-
] }) });
|
|
8449
|
+
const { include } = value;
|
|
8450
|
+
return getArrayView(include, filter2.getValueView);
|
|
8450
8451
|
}
|
|
8451
|
-
|
|
8452
|
-
|
|
8453
|
-
|
|
8454
|
-
const intervalValueTo = intervalValue[1];
|
|
8455
|
-
const intervals = [];
|
|
8456
|
-
if (intervalValueFrom !== void 0) {
|
|
8457
|
-
intervals.push(`${translates.from.toLowerCase()} ${String(intervalValueFrom)}`);
|
|
8458
|
-
}
|
|
8459
|
-
if (intervalValueTo !== void 0) {
|
|
8460
|
-
intervals.push(`${translates.to.toLowerCase()} ${String(intervalValueTo)}`);
|
|
8461
|
-
}
|
|
8462
|
-
return /* @__PURE__ */ jsx("span", { className: classes.text, children: intervals.join(" ") });
|
|
8452
|
+
const isMultiple = filter2.type === "custom" && filter2.valueViewType === "multiple";
|
|
8453
|
+
if (isMultiple) {
|
|
8454
|
+
return getArrayView(value, filter2.getSelectedValue);
|
|
8463
8455
|
}
|
|
8456
|
+
const isDateRange = filter2.type === "dateRange" || filter2.type === "dateRangeWithoutPeriod";
|
|
8464
8457
|
if (isDateRange) {
|
|
8465
|
-
const { from, to, periodType
|
|
8466
|
-
const hasFrom = from !== void 0 && from !== null;
|
|
8467
|
-
const hasTo = to !== void 0 && to !== null;
|
|
8458
|
+
const { from, to, periodType = "CUSTOM" } = value;
|
|
8468
8459
|
if (periodType !== "CUSTOM") {
|
|
8469
|
-
return /* @__PURE__ */ jsx("span", { className: classes.text, children:
|
|
8460
|
+
return /* @__PURE__ */ jsx("span", { className: classes.text, children: translates.periods[periodType] ?? periodType });
|
|
8470
8461
|
}
|
|
8462
|
+
const hasFrom = isNotEmpty(from);
|
|
8463
|
+
const hasTo = isNotEmpty(to);
|
|
8471
8464
|
const range = [];
|
|
8472
|
-
if (hasFrom) {
|
|
8473
|
-
|
|
8474
|
-
|
|
8475
|
-
|
|
8476
|
-
|
|
8477
|
-
|
|
8478
|
-
|
|
8479
|
-
|
|
8480
|
-
range.push("—");
|
|
8481
|
-
} else {
|
|
8482
|
-
range.push(translates.to.toLowerCase());
|
|
8483
|
-
}
|
|
8484
|
-
range.push(displayValue(to));
|
|
8465
|
+
if (hasFrom && hasTo) {
|
|
8466
|
+
range.push(displayValue(from), "—", displayValue(to));
|
|
8467
|
+
} else if (hasFrom) {
|
|
8468
|
+
range.push(translates.from.toLowerCase(), displayValue(from));
|
|
8469
|
+
} else if (hasTo) {
|
|
8470
|
+
range.push(translates.to.toLowerCase(), displayValue(to));
|
|
8471
|
+
} else {
|
|
8472
|
+
return null;
|
|
8485
8473
|
}
|
|
8486
8474
|
return /* @__PURE__ */ jsx("span", { className: classes.text, children: range.join(" ") });
|
|
8487
8475
|
}
|
|
8488
|
-
|
|
8489
|
-
|
|
8490
|
-
|
|
8491
|
-
|
|
8492
|
-
|
|
8493
|
-
]
|
|
8494
|
-
}
|
|
8495
|
-
if (isRange && Array.isArray(value)) {
|
|
8496
|
-
const rangeValue = value;
|
|
8497
|
-
const rangeValueFrom = rangeValue[0];
|
|
8498
|
-
const rangeValueTo = rangeValue[1];
|
|
8476
|
+
const isRange = filter2.type === "custom" && filter2.valueViewType === "range";
|
|
8477
|
+
if (isRange || filter2.type === "interval") {
|
|
8478
|
+
if (!Array.isArray(value)) {
|
|
8479
|
+
return null;
|
|
8480
|
+
}
|
|
8481
|
+
const [valueFrom, valueTo] = value;
|
|
8499
8482
|
const range = [];
|
|
8500
|
-
if (
|
|
8501
|
-
range.push(
|
|
8483
|
+
if (isNotEmpty(valueFrom)) {
|
|
8484
|
+
range.push(translates.from.toLowerCase(), displayValue(valueFrom));
|
|
8502
8485
|
}
|
|
8503
|
-
if (
|
|
8504
|
-
range.push(
|
|
8486
|
+
if (isNotEmpty(valueTo)) {
|
|
8487
|
+
range.push(translates.to.toLowerCase(), displayValue(valueTo));
|
|
8505
8488
|
}
|
|
8506
8489
|
return /* @__PURE__ */ jsx("span", { className: classes.text, children: range.join(" ") });
|
|
8507
8490
|
}
|
|
@@ -8666,14 +8649,13 @@ function FilterWrapper({
|
|
|
8666
8649
|
className: clsx(classes.item, { [classes.booleanItem]: isBoolean }),
|
|
8667
8650
|
children: [
|
|
8668
8651
|
/* @__PURE__ */ jsx("div", { className: classes.name, children: filter2.name }),
|
|
8669
|
-
!isBoolean &&
|
|
8652
|
+
!isBoolean && hasValue && /* @__PURE__ */ jsx("div", { className: classes.value, children: /* @__PURE__ */ jsx(
|
|
8670
8653
|
FilterValueView,
|
|
8671
8654
|
{
|
|
8672
8655
|
value,
|
|
8673
8656
|
filter: filter2,
|
|
8674
8657
|
locale,
|
|
8675
8658
|
localeKey,
|
|
8676
|
-
testId: getTestId(testId, "value"),
|
|
8677
8659
|
tweakStyles: tweakFilterValueViewStyles
|
|
8678
8660
|
}
|
|
8679
8661
|
) }),
|