@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.
@@ -1,6 +1,8 @@
1
- import { ICommonProps } from '../../../../types';
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 Omit<IFilterWrapperProps<Values, Key>, 'filtersPaneRef' | 'tweakStyles' | 'onChange'>, ICommonProps<IFilterValueViewStyles> {
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>): JSX.Element;
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: unknown) => boolean;
1
+ export declare const isContentNotEmpty: <T>(value: T) => value is NonNullable<T>;
@@ -22,7 +22,6 @@ export interface IDatePeriod {
22
22
  }
23
23
  export interface IPeriod extends IDatePeriod {
24
24
  periodType: string;
25
- label?: string;
26
25
  }
27
26
  export type IPeriodGetter = () => IDatePeriod;
28
27
  export type IFilterDateSingleValue = Date;
@@ -7984,7 +7984,7 @@ const FilterWithPeriod = ({
7984
7984
  if (onClose !== void 0) {
7985
7985
  onClose();
7986
7986
  }
7987
- onChange({ ...p, label: getPeriodTranslate(periodType) });
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({ theme: tweakStyles });
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
- return format(
8422
- v,
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 (typeof v === "string" || typeof v === "number" || typeof v === "boolean") {
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 ?? defaultConvertFunction$1;
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 multiSelectValue = value;
8444
- const getView = filter2.getValueView ?? defaultConvertFunction$1;
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
- if (filter2.type === "interval") {
8452
- const intervalValue = value;
8453
- const intervalValueFrom = intervalValue[0];
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, label } = value;
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: displayValue(label) });
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
- if (!hasTo) {
8474
- range.push(translates.from.toLowerCase());
8475
- }
8476
- range.push(displayValue(from));
8477
- }
8478
- if (hasTo) {
8479
- if (hasFrom) {
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
- if (isMultiple) {
8489
- const convertValue = filter2.getSelectedValue ?? displayValue;
8490
- return /* @__PURE__ */ jsx(Fragment, { children: Array.isArray(value) && value.length > 0 && /* @__PURE__ */ jsxs(Fragment, { children: [
8491
- /* @__PURE__ */ jsx("span", { className: classes.text, children: convertValue(value[0]) }),
8492
- /* @__PURE__ */ jsx("span", { className: classes.count, children: value.length > 1 && ` (+${value.length - 1})` })
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 (rangeValueFrom !== void 0) {
8501
- range.push(`${translates.from.toLowerCase()} ${String(rangeValueFrom)}`);
8483
+ if (isNotEmpty(valueFrom)) {
8484
+ range.push(translates.from.toLowerCase(), displayValue(valueFrom));
8502
8485
  }
8503
- if (rangeValueTo !== void 0) {
8504
- range.push(`${translates.to.toLowerCase()} ${String(rangeValueTo)}`);
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 && isNotEmpty(value) && /* @__PURE__ */ jsx("div", { className: classes.value, children: /* @__PURE__ */ jsx(
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
  ) }),