@danikokonn/yarik-frontend-lib 2.0.2-test3 → 2.0.3-3.legacy.test.1
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/ActionDialog/ActionDialog.d.ts +0 -19
- package/dist/components/ActionDialog/ActionDialog.d.ts.map +1 -1
- package/dist/components/ActionDialog/ActionDialog.js +0 -19
- package/dist/components/ActionDialog/ActionDialogProps.d.ts +0 -15
- package/dist/components/ActionDialog/ActionDialogProps.d.ts.map +1 -1
- package/dist/components/ColumnSearchInput/ColumnSearchInput.d.ts +0 -12
- package/dist/components/ColumnSearchInput/ColumnSearchInput.d.ts.map +1 -1
- package/dist/components/ColumnSearchInput/ColumnSearchInput.js +0 -12
- package/dist/components/ColumnSearchInput/ColumnSearchInputProps.d.ts +0 -9
- package/dist/components/ColumnSearchInput/ColumnSearchInputProps.d.ts.map +1 -1
- package/dist/components/DateTimeRangePicker/DateTimeRangePicker.d.ts +1 -1
- package/dist/components/DateTimeRangePicker/DateTimeRangePicker.d.ts.map +1 -1
- package/dist/components/DateTimeRangePicker/DateTimeRangePicker.js +3 -3
- package/dist/components/DateTimeRangePicker/DateTimeRangePickerProps.d.ts +0 -1
- package/dist/components/DateTimeRangePicker/DateTimeRangePickerProps.d.ts.map +1 -1
- package/dist/components/DatetimeRangeInput/DatetimeRangeInput.d.ts +2 -20
- package/dist/components/DatetimeRangeInput/DatetimeRangeInput.d.ts.map +1 -1
- package/dist/components/DatetimeRangeInput/DatetimeRangeInput.js +0 -19
- package/dist/components/DatetimeRangeInput/DatetimeRangeInputProps.d.ts +0 -30
- package/dist/components/DatetimeRangeInput/DatetimeRangeInputProps.d.ts.map +1 -1
- package/dist/components/RichFilterTextField/RichFilterTextField.d.ts +1 -1
- package/dist/components/RichFilterTextField/RichFilterTextField.d.ts.map +1 -1
- package/dist/components/RichFilterTextField/RichFilterTextField.js +44 -26
- package/dist/components/RichFilterTextField/RichFilterTextFieldProps.d.ts +0 -4
- package/dist/components/RichFilterTextField/RichFilterTextFieldProps.d.ts.map +1 -1
- package/dist/components/SmartTable/RuleRow.d.ts.map +1 -1
- package/dist/components/SmartTable/RuleRow.js +6 -1
- package/dist/components/SmartTable/SmartTable.d.ts +1 -1
- package/dist/components/SmartTable/SmartTable.d.ts.map +1 -1
- package/dist/components/SmartTable/SmartTable.js +31 -97
- package/dist/components/SmartTable/SmartTableProps.d.ts +0 -2
- package/dist/components/SmartTable/SmartTableProps.d.ts.map +1 -1
- package/dist/components/SortBtn/SortBtn.d.ts.map +1 -1
- package/dist/components/SortBtn/SortBtn.js +1 -2
- package/dist/components/SubtaskItem/SubtaskItem.d.ts.map +1 -1
- package/dist/components/SubtaskItem/SubtaskItem.js +53 -9
- package/dist/components/SubtaskItem/SubtaskItemProps.d.ts +1 -1
- package/dist/components/SubtaskItem/SubtaskItemProps.d.ts.map +1 -1
- package/dist/providers/AirflowProvider.d.ts.map +1 -1
- package/dist/providers/AirflowProvider.js +0 -1
- package/dist/utils.d.ts +1 -1
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +0 -1
- package/package.json +1 -2
- package/dist/components/RichFilterTextField/FilterHistoryMenu.d.ts +0 -8
- package/dist/components/RichFilterTextField/FilterHistoryMenu.d.ts.map +0 -1
- package/dist/components/RichFilterTextField/FilterHistoryMenu.js +0 -43
- package/dist/components/SmartTable/RowContent.d.ts +0 -14
- package/dist/components/SmartTable/RowContent.d.ts.map +0 -1
- package/dist/components/SmartTable/RowContent.js +0 -29
- package/dist/components/SmartTable/TableHeader.d.ts +0 -5
- package/dist/components/SmartTable/TableHeader.d.ts.map +0 -1
- package/dist/components/SmartTable/TableHeader.js +0 -13
|
@@ -1,23 +1,4 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import ActionDialogProps from "./ActionDialogProps";
|
|
3
|
-
/**
|
|
4
|
-
* Диалоговое окно с подтверждением действия.
|
|
5
|
-
*
|
|
6
|
-
* Отображает заголовок, основной текст (или массив строк), опциональную форму/элемент ввода,
|
|
7
|
-
* а также кнопки отмены и подтверждения. Кнопка подтверждения может быть отключена и снабжена подсказкой.
|
|
8
|
-
*
|
|
9
|
-
* @param open Открыт ли диалог
|
|
10
|
-
* @param fullWidth Растягивать ли диалог на всю ширину
|
|
11
|
-
* @param maxWidth Максимальная ширина диалога
|
|
12
|
-
* @param title Заголовок диалога
|
|
13
|
-
* @param contentText Основной текст (строка или массив строк)
|
|
14
|
-
* @param contentInputForm Необязательная форма/элемент ввода
|
|
15
|
-
* @param cancelText Текст кнопки отмены
|
|
16
|
-
* @param confirmText Текст кнопки подтверждения
|
|
17
|
-
* @param confirmAllowed Разрешено ли подтверждение
|
|
18
|
-
* @param confirmTooltipTitle Подсказка для кнопки подтверждения при отключении
|
|
19
|
-
* @param onClose Обработчик закрытия диалога
|
|
20
|
-
* @param onConfirm Обработчик подтверждения
|
|
21
|
-
*/
|
|
22
3
|
export default function ActionDialog({ open, fullWidth, maxWidth, title, contentText, contentInputForm, cancelText, confirmText, confirmAllowed, confirmTooltipTitle, onClose, onConfirm, }: ActionDialogProps): React.JSX.Element;
|
|
23
4
|
//# sourceMappingURL=ActionDialog.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ActionDialog.d.ts","sourceRoot":"","sources":["../../../src/components/ActionDialog/ActionDialog.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAY1B,OAAO,iBAAiB,MAAM,qBAAqB,CAAC;AAEpD
|
|
1
|
+
{"version":3,"file":"ActionDialog.d.ts","sourceRoot":"","sources":["../../../src/components/ActionDialog/ActionDialog.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAY1B,OAAO,iBAAiB,MAAM,qBAAqB,CAAC;AAEpD,MAAM,CAAC,OAAO,UAAU,YAAY,CAAC,EACnC,IAAI,EACJ,SAAS,EACT,QAAQ,EACR,KAAK,EACL,WAAW,EACX,gBAAgB,EAChB,UAAU,EACV,WAAW,EACX,cAAc,EACd,mBAAmB,EACnB,OAAO,EACP,SAAS,GACV,EAAE,iBAAiB,qBAiDnB"}
|
|
@@ -8,25 +8,6 @@ import DialogContentText from "@mui/material/DialogContentText";
|
|
|
8
8
|
import DialogTitle from "@mui/material/DialogTitle";
|
|
9
9
|
import IconButton from "@mui/material/IconButton";
|
|
10
10
|
import Tooltip from "@mui/material/Tooltip";
|
|
11
|
-
/**
|
|
12
|
-
* Диалоговое окно с подтверждением действия.
|
|
13
|
-
*
|
|
14
|
-
* Отображает заголовок, основной текст (или массив строк), опциональную форму/элемент ввода,
|
|
15
|
-
* а также кнопки отмены и подтверждения. Кнопка подтверждения может быть отключена и снабжена подсказкой.
|
|
16
|
-
*
|
|
17
|
-
* @param open Открыт ли диалог
|
|
18
|
-
* @param fullWidth Растягивать ли диалог на всю ширину
|
|
19
|
-
* @param maxWidth Максимальная ширина диалога
|
|
20
|
-
* @param title Заголовок диалога
|
|
21
|
-
* @param contentText Основной текст (строка или массив строк)
|
|
22
|
-
* @param contentInputForm Необязательная форма/элемент ввода
|
|
23
|
-
* @param cancelText Текст кнопки отмены
|
|
24
|
-
* @param confirmText Текст кнопки подтверждения
|
|
25
|
-
* @param confirmAllowed Разрешено ли подтверждение
|
|
26
|
-
* @param confirmTooltipTitle Подсказка для кнопки подтверждения при отключении
|
|
27
|
-
* @param onClose Обработчик закрытия диалога
|
|
28
|
-
* @param onConfirm Обработчик подтверждения
|
|
29
|
-
*/
|
|
30
11
|
export default function ActionDialog({ open, fullWidth, maxWidth, title, contentText, contentInputForm, cancelText, confirmText, confirmAllowed, confirmTooltipTitle, onClose, onConfirm, }) {
|
|
31
12
|
return (React.createElement(Dialog, { open: open, onClose: onClose, maxWidth: maxWidth, fullWidth: fullWidth },
|
|
32
13
|
React.createElement(DialogTitle, null, title),
|
|
@@ -1,32 +1,17 @@
|
|
|
1
1
|
import { ReactNode } from "react";
|
|
2
2
|
import { Breakpoint } from "@mui/material";
|
|
3
|
-
/**
|
|
4
|
-
* Пропсы для компонента ActionDialog.
|
|
5
|
-
*/
|
|
6
3
|
export default interface ActionDialogProps {
|
|
7
|
-
/** Открыт ли диалог */
|
|
8
4
|
open: boolean;
|
|
9
|
-
/** Растягивать ли диалог на всю ширину */
|
|
10
5
|
fullWidth?: boolean;
|
|
11
|
-
/** Максимальная ширина диалога (MUI Breakpoint) */
|
|
12
6
|
maxWidth?: Breakpoint;
|
|
13
|
-
/** Заголовок диалога */
|
|
14
7
|
title: string;
|
|
15
|
-
/** Основной текст диалога (строка или массив строк) */
|
|
16
8
|
contentText: string | string[];
|
|
17
|
-
/** Необязательная форма или элемент ввода для отображения в диалоге */
|
|
18
9
|
contentInputForm?: ReactNode;
|
|
19
|
-
/** Текст для кнопки отмены */
|
|
20
10
|
cancelText: string;
|
|
21
|
-
/** Текст для кнопки подтверждения */
|
|
22
11
|
confirmText: string;
|
|
23
|
-
/** Разрешено ли подтверждение (включает/отключает кнопку подтверждения) */
|
|
24
12
|
confirmAllowed: boolean;
|
|
25
|
-
/** Необязательная подсказка для кнопки подтверждения при отключении */
|
|
26
13
|
confirmTooltipTitle?: string;
|
|
27
|
-
/** Обработчик подтверждения */
|
|
28
14
|
onConfirm(): void;
|
|
29
|
-
/** Обработчик закрытия диалога */
|
|
30
15
|
onClose(): void;
|
|
31
16
|
}
|
|
32
17
|
//# sourceMappingURL=ActionDialogProps.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ActionDialogProps.d.ts","sourceRoot":"","sources":["../../../src/components/ActionDialog/ActionDialogProps.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE3C
|
|
1
|
+
{"version":3,"file":"ActionDialogProps.d.ts","sourceRoot":"","sources":["../../../src/components/ActionDialog/ActionDialogProps.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE3C,MAAM,CAAC,OAAO,WAAW,iBAAiB;IACxC,IAAI,EAAE,OAAO,CAAC;IACd,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,UAAU,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC/B,gBAAgB,CAAC,EAAE,SAAS,CAAC;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,OAAO,CAAC;IACxB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,SAAS,IAAI,IAAI,CAAC;IAClB,OAAO,IAAI,IAAI,CAAC;CACjB"}
|
|
@@ -1,16 +1,4 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import ColumnSearchInputProps from "./ColumnSearchInputProps";
|
|
3
|
-
/**
|
|
4
|
-
* Компонент поля поиска для таблицы или списка.
|
|
5
|
-
*
|
|
6
|
-
* Позволяет пользователю вводить строку поиска для определённого поля с отображением иконки поиска.
|
|
7
|
-
*
|
|
8
|
-
* @param {Object} props - Свойства компонента
|
|
9
|
-
* @param {string} props.field - Имя поля, по которому осуществляется поиск
|
|
10
|
-
* @param {string|function} [props.searchStr] - Начальное значение строки поиска или функция, возвращающая строку
|
|
11
|
-
* @param {function} props.onInputSearch - Колбэк, вызываемый при изменении строки поиска. Получает массив объектов с полем и строкой поиска
|
|
12
|
-
*
|
|
13
|
-
* @returns {JSX.Element} Элемент поля поиска
|
|
14
|
-
*/
|
|
15
3
|
export default function ColumnSearchInput({ field, searchStr, onInputSearch, }: ColumnSearchInputProps): React.JSX.Element;
|
|
16
4
|
//# sourceMappingURL=ColumnSearchInput.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ColumnSearchInput.d.ts","sourceRoot":"","sources":["../../../src/components/ColumnSearchInput/ColumnSearchInput.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAgC,MAAM,OAAO,CAAC;AAMrD,OAAO,sBAAsB,MAAM,0BAA0B,CAAC;AAE9D
|
|
1
|
+
{"version":3,"file":"ColumnSearchInput.d.ts","sourceRoot":"","sources":["../../../src/components/ColumnSearchInput/ColumnSearchInput.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAgC,MAAM,OAAO,CAAC;AAMrD,OAAO,sBAAsB,MAAM,0BAA0B,CAAC;AAE9D,MAAM,CAAC,OAAO,UAAU,iBAAiB,CAAC,EACxC,KAAK,EACL,SAAS,EACT,aAAa,GACd,EAAE,sBAAsB,qBA4BxB"}
|
|
@@ -2,18 +2,6 @@ import React, { useState } from "react";
|
|
|
2
2
|
import InputAdornment from "@mui/material/InputAdornment";
|
|
3
3
|
import TextField from "@mui/material/TextField";
|
|
4
4
|
import SearchIcon from "@mui/icons-material/Search";
|
|
5
|
-
/**
|
|
6
|
-
* Компонент поля поиска для таблицы или списка.
|
|
7
|
-
*
|
|
8
|
-
* Позволяет пользователю вводить строку поиска для определённого поля с отображением иконки поиска.
|
|
9
|
-
*
|
|
10
|
-
* @param {Object} props - Свойства компонента
|
|
11
|
-
* @param {string} props.field - Имя поля, по которому осуществляется поиск
|
|
12
|
-
* @param {string|function} [props.searchStr] - Начальное значение строки поиска или функция, возвращающая строку
|
|
13
|
-
* @param {function} props.onInputSearch - Колбэк, вызываемый при изменении строки поиска. Получает массив объектов с полем и строкой поиска
|
|
14
|
-
*
|
|
15
|
-
* @returns {JSX.Element} Элемент поля поиска
|
|
16
|
-
*/
|
|
17
5
|
export default function ColumnSearchInput({ field, searchStr, onInputSearch, }) {
|
|
18
6
|
const [search, setSearch] = useState(searchStr || "");
|
|
19
7
|
function handleChange(event) {
|
|
@@ -1,15 +1,6 @@
|
|
|
1
1
|
export default interface ColumnSearchInputProps {
|
|
2
|
-
/**
|
|
3
|
-
* Имя поля, по которому будет производиться поиск.
|
|
4
|
-
*/
|
|
5
2
|
field: string;
|
|
6
|
-
/**
|
|
7
|
-
* Начальная строка поиска или функция, возвращающая строку поиска (опционально).
|
|
8
|
-
*/
|
|
9
3
|
searchStr?: string | (() => string);
|
|
10
|
-
/**
|
|
11
|
-
* Колбэк, вызываемый при изменении строки поиска. Получает массив объектов с полем и строкой поиска.
|
|
12
|
-
*/
|
|
13
4
|
onInputSearch(options: {
|
|
14
5
|
field: string;
|
|
15
6
|
search: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ColumnSearchInputProps.d.ts","sourceRoot":"","sources":["../../../src/components/ColumnSearchInput/ColumnSearchInputProps.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,WAAW,sBAAsB;IAC7C
|
|
1
|
+
{"version":3,"file":"ColumnSearchInputProps.d.ts","sourceRoot":"","sources":["../../../src/components/ColumnSearchInput/ColumnSearchInputProps.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,WAAW,sBAAsB;IAC7C,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,MAAM,CAAC,CAAC;IACpC,aAAa,CAAC,OAAO,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,EAAE,GAAG,IAAI,CAAC;CACnE"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import DateTimeRangePickerProps from "./DateTimeRangePickerProps";
|
|
3
3
|
import "moment/locale/ru";
|
|
4
|
-
export default function DateTimeRangePicker({ disableFuture, disabled, fromDatetime, toDateTime, required,
|
|
4
|
+
export default function DateTimeRangePicker({ disableFuture, disabled, fromDatetime, toDateTime, required, onStartDateSet, onEndDateSet, }: DateTimeRangePickerProps): React.JSX.Element;
|
|
5
5
|
//# sourceMappingURL=DateTimeRangePicker.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DateTimeRangePicker.d.ts","sourceRoot":"","sources":["../../../src/components/DateTimeRangePicker/DateTimeRangePicker.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAC;AACxC,OAAO,wBAAwB,MAAM,4BAA4B,CAAC;AAElE,OAAO,kBAAkB,CAAC;AAU1B,MAAM,CAAC,OAAO,UAAU,mBAAmB,CAAC,EAC1C,aAAa,EACb,QAAQ,EACR,YAAY,EACZ,UAAU,EACV,QAAQ,EACR,
|
|
1
|
+
{"version":3,"file":"DateTimeRangePicker.d.ts","sourceRoot":"","sources":["../../../src/components/DateTimeRangePicker/DateTimeRangePicker.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAC;AACxC,OAAO,wBAAwB,MAAM,4BAA4B,CAAC;AAElE,OAAO,kBAAkB,CAAC;AAU1B,MAAM,CAAC,OAAO,UAAU,mBAAmB,CAAC,EAC1C,aAAa,EACb,QAAQ,EACR,YAAY,EACZ,UAAU,EACV,QAAQ,EACR,cAAc,EACd,YAAY,GACb,EAAE,wBAAwB,qBAmF1B"}
|
|
@@ -5,7 +5,7 @@ import Stack from "@mui/material/Stack";
|
|
|
5
5
|
import { DesktopDateTimePicker, LocalizationProvider, } from "@mui/x-date-pickers";
|
|
6
6
|
import { AdapterMoment } from "@mui/x-date-pickers/AdapterMoment";
|
|
7
7
|
import { useDebounce } from "../../utils";
|
|
8
|
-
export default function DateTimeRangePicker({ disableFuture, disabled, fromDatetime, toDateTime, required,
|
|
8
|
+
export default function DateTimeRangePicker({ disableFuture, disabled, fromDatetime, toDateTime, required, onStartDateSet, onEndDateSet, }) {
|
|
9
9
|
const [fromDatetimePickerOpen, setFromDatetimePickerOpen] = useState(false);
|
|
10
10
|
const [toDatetimePickerOpen, setToDatetimePickerOpen] = useState(false);
|
|
11
11
|
const fromDttm = fromDatetime.length > 0 ? moment(fromDatetime) : null;
|
|
@@ -23,7 +23,7 @@ export default function DateTimeRangePicker({ disableFuture, disabled, fromDatet
|
|
|
23
23
|
variant: "standard",
|
|
24
24
|
required: required,
|
|
25
25
|
helperText: required && fromDttm == null && "Введите дату начала интервала",
|
|
26
|
-
error:
|
|
26
|
+
error: required ? fromDttm == null : false,
|
|
27
27
|
},
|
|
28
28
|
inputAdornment: {
|
|
29
29
|
position: "start",
|
|
@@ -41,7 +41,7 @@ export default function DateTimeRangePicker({ disableFuture, disabled, fromDatet
|
|
|
41
41
|
variant: "standard",
|
|
42
42
|
required: required,
|
|
43
43
|
helperText: required && toDttm == null && "Введите дату конца интервала",
|
|
44
|
-
error:
|
|
44
|
+
error: required ? toDttm == null : false,
|
|
45
45
|
},
|
|
46
46
|
inputAdornment: {
|
|
47
47
|
onClick: () => setToDatetimePickerOpen(true),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DateTimeRangePickerProps.d.ts","sourceRoot":"","sources":["../../../src/components/DateTimeRangePicker/DateTimeRangePickerProps.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,WAAW,wBAAwB;IAC/C,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,
|
|
1
|
+
{"version":3,"file":"DateTimeRangePickerProps.d.ts","sourceRoot":"","sources":["../../../src/components/DateTimeRangePicker/DateTimeRangePickerProps.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,WAAW,wBAAwB;IAC/C,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACxC,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACrC"}
|
|
@@ -1,23 +1,5 @@
|
|
|
1
|
+
import React from "react";
|
|
1
2
|
import "moment/locale/ru";
|
|
2
3
|
import DatetimeRangeInputProps from "./DatetimeRangeInputProps";
|
|
3
|
-
|
|
4
|
-
* Компонент выбора диапазона дат и времени.
|
|
5
|
-
*
|
|
6
|
-
* Позволяет пользователю выбрать начальную и конечную дату/время с помощью всплывающего календаря.
|
|
7
|
-
* Поддерживает очистку выбранного диапазона и отображение выбранных дат в текстовом поле.
|
|
8
|
-
*
|
|
9
|
-
* @param {Object} props - Свойства компонента
|
|
10
|
-
* @param {string} [props.from] - Начальная дата диапазона
|
|
11
|
-
* @param {string} [props.to] - Конечная дата диапазона
|
|
12
|
-
* @param {SxProps} [props.sx] - Стили оформления
|
|
13
|
-
* @param {boolean} [props.required] - Обязательное ли поле
|
|
14
|
-
* @param {boolean} [props.disabled] - Отключение компонента
|
|
15
|
-
* @param {('outlined'|'standard'|'filled')} [props.variant] - Вариант оформления поля
|
|
16
|
-
* @param {string} [props.placeholder] - Текст-подсказка
|
|
17
|
-
* @param {('small'|'medium')} [props.size] - Размер поля
|
|
18
|
-
* @param {(start: string, end: string) => void} props.onDateRangeSet - Колбэк при выборе диапазона дат
|
|
19
|
-
*
|
|
20
|
-
* @returns {JSX.Element} Элемент выбора диапазона дат и времени
|
|
21
|
-
*/
|
|
22
|
-
export default function DatetimeRangeInput({ onDateRangeSet, from, to, variant, sx, placeholder, size, disabled, required, }: DatetimeRangeInputProps): JSX.Element;
|
|
4
|
+
export default function DatetimeRangeInput({ onDateRangeSet, from, to, variant, sx, placeholder, size, disabled, required, }: DatetimeRangeInputProps): React.JSX.Element;
|
|
23
5
|
//# sourceMappingURL=DatetimeRangeInput.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DatetimeRangeInput.d.ts","sourceRoot":"","sources":["../../../src/components/DatetimeRangeInput/DatetimeRangeInput.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"DatetimeRangeInput.d.ts","sourceRoot":"","sources":["../../../src/components/DatetimeRangeInput/DatetimeRangeInput.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA2C,MAAM,OAAO,CAAC;AAGhE,OAAO,kBAAkB,CAAC;AAQ1B,OAAO,uBAAuB,MAAM,2BAA2B,CAAC;AAMhE,MAAM,CAAC,OAAO,UAAU,kBAAkB,CAAC,EACzC,cAAc,EACd,IAAI,EACJ,EAAE,EACF,OAAO,EACP,EAAE,EACF,WAAW,EACX,IAAI,EACJ,QAAQ,EACR,QAAQ,GACT,EAAE,uBAAuB,qBAiHzB"}
|
|
@@ -9,25 +9,6 @@ import ClearIcon from "@mui/icons-material/Clear";
|
|
|
9
9
|
const DateTimeRangePicker = lazy(() => import("../DateTimeRangePicker/DateTimeRangePicker"));
|
|
10
10
|
import { prettyDatetime } from "../../utils";
|
|
11
11
|
import { Skeleton, Stack } from "@mui/material";
|
|
12
|
-
/**
|
|
13
|
-
* Компонент выбора диапазона дат и времени.
|
|
14
|
-
*
|
|
15
|
-
* Позволяет пользователю выбрать начальную и конечную дату/время с помощью всплывающего календаря.
|
|
16
|
-
* Поддерживает очистку выбранного диапазона и отображение выбранных дат в текстовом поле.
|
|
17
|
-
*
|
|
18
|
-
* @param {Object} props - Свойства компонента
|
|
19
|
-
* @param {string} [props.from] - Начальная дата диапазона
|
|
20
|
-
* @param {string} [props.to] - Конечная дата диапазона
|
|
21
|
-
* @param {SxProps} [props.sx] - Стили оформления
|
|
22
|
-
* @param {boolean} [props.required] - Обязательное ли поле
|
|
23
|
-
* @param {boolean} [props.disabled] - Отключение компонента
|
|
24
|
-
* @param {('outlined'|'standard'|'filled')} [props.variant] - Вариант оформления поля
|
|
25
|
-
* @param {string} [props.placeholder] - Текст-подсказка
|
|
26
|
-
* @param {('small'|'medium')} [props.size] - Размер поля
|
|
27
|
-
* @param {(start: string, end: string) => void} props.onDateRangeSet - Колбэк при выборе диапазона дат
|
|
28
|
-
*
|
|
29
|
-
* @returns {JSX.Element} Элемент выбора диапазона дат и времени
|
|
30
|
-
*/
|
|
31
12
|
export default function DatetimeRangeInput({ onDateRangeSet, from, to, variant, sx, placeholder, size, disabled, required, }) {
|
|
32
13
|
const [datetimeRangePickerOpen, setDatetimeRangePickerOpen] = useState(false);
|
|
33
14
|
const [fromDatetime, setFromDatetime] = useState(from || "");
|
|
@@ -1,43 +1,13 @@
|
|
|
1
1
|
import { SxProps } from "@mui/material";
|
|
2
|
-
/**
|
|
3
|
-
* Интерфейс для пропсов компонента выбора диапазона дат.
|
|
4
|
-
*/
|
|
5
2
|
export default interface DatetimeRangeInputProps {
|
|
6
|
-
/**
|
|
7
|
-
* Начальная дата диапазона (опционально).
|
|
8
|
-
*/
|
|
9
3
|
from?: string;
|
|
10
|
-
/**
|
|
11
|
-
* Конечная дата диапазона (опционально).
|
|
12
|
-
*/
|
|
13
4
|
to?: string;
|
|
14
|
-
/**
|
|
15
|
-
* Стили оформления компонента (опционально).
|
|
16
|
-
*/
|
|
17
5
|
sx?: SxProps;
|
|
18
|
-
/**
|
|
19
|
-
* Обязательное ли заполнение поля (опционально).
|
|
20
|
-
*/
|
|
21
6
|
required?: boolean;
|
|
22
|
-
/**
|
|
23
|
-
* Отключение компонента (опционально).
|
|
24
|
-
*/
|
|
25
7
|
disabled?: boolean;
|
|
26
|
-
/**
|
|
27
|
-
* Вариант оформления поля: outlined, standard или filled (опционально).
|
|
28
|
-
*/
|
|
29
8
|
variant?: "outlined" | "standard" | "filled";
|
|
30
|
-
/**
|
|
31
|
-
* Текст-подсказка (placeholder) (опционально).
|
|
32
|
-
*/
|
|
33
9
|
placeholder?: string;
|
|
34
|
-
/**
|
|
35
|
-
* Размер поля: small или medium (опционально).
|
|
36
|
-
*/
|
|
37
10
|
size?: "small" | "medium";
|
|
38
|
-
/**
|
|
39
|
-
* Колбэк, вызываемый при выборе диапазона дат. Принимает начальную и конечную дату.
|
|
40
|
-
*/
|
|
41
11
|
onDateRangeSet(start: string, end: string): void;
|
|
42
12
|
}
|
|
43
13
|
//# sourceMappingURL=DatetimeRangeInputProps.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DatetimeRangeInputProps.d.ts","sourceRoot":"","sources":["../../../src/components/DatetimeRangeInput/DatetimeRangeInputProps.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAExC
|
|
1
|
+
{"version":3,"file":"DatetimeRangeInputProps.d.ts","sourceRoot":"","sources":["../../../src/components/DatetimeRangeInput/DatetimeRangeInputProps.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAExC,MAAM,CAAC,OAAO,WAAW,uBAAuB;IAC9C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,EAAE,CAAC,EAAE,OAAO,CAAC;IACb,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,UAAU,GAAG,UAAU,GAAG,QAAQ,CAAC;IAC7C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC;IAC1B,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;CAClD"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import RichFilterTextFieldProps from "./RichFilterTextFieldProps";
|
|
3
|
-
declare const RichFilterTextField: ({ filterExpr, filterExprHist, fields, operators,
|
|
3
|
+
declare const RichFilterTextField: ({ filterExpr, filterExprHist, fields, operators, onChange, }: RichFilterTextFieldProps) => React.JSX.Element;
|
|
4
4
|
export default RichFilterTextField;
|
|
5
5
|
//# sourceMappingURL=RichFilterTextField.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RichFilterTextField.d.ts","sourceRoot":"","sources":["../../../src/components/RichFilterTextField/RichFilterTextField.tsx"],"names":[],"mappings":"AAAA,OAAO,KAMN,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"RichFilterTextField.d.ts","sourceRoot":"","sources":["../../../src/components/RichFilterTextField/RichFilterTextField.tsx"],"names":[],"mappings":"AAAA,OAAO,KAMN,MAAM,OAAO,CAAC;AAoBf,OAAO,wBAAwB,MAAM,4BAA4B,CAAC;AAIlE,QAAA,MAAM,mBAAmB,GAAI,8DAM1B,wBAAwB,sBA+P1B,CAAC;AAEF,eAAe,mBAAmB,CAAC"}
|
|
@@ -1,21 +1,27 @@
|
|
|
1
1
|
import React, { useEffect, useRef, useState, } from "react";
|
|
2
|
+
import Stack from "@mui/material/Stack";
|
|
2
3
|
import IconButton from "@mui/material/IconButton";
|
|
3
4
|
import InputAdornment from "@mui/material/InputAdornment";
|
|
4
5
|
import TextField from "@mui/material/TextField";
|
|
5
6
|
import ClearIcon from "@mui/icons-material/Clear";
|
|
6
|
-
import
|
|
7
|
+
import FilterListIcon from "@mui/icons-material/FilterList";
|
|
8
|
+
import HistoryIcon from "@mui/icons-material/History";
|
|
9
|
+
import ContentCopy from "@mui/icons-material/ContentCopy";
|
|
10
|
+
import Divider from "@mui/material/Divider";
|
|
11
|
+
import ListItemIcon from "@mui/material/ListItemIcon";
|
|
12
|
+
import ListItemText from "@mui/material/ListItemText";
|
|
13
|
+
import Menu from "@mui/material/Menu";
|
|
14
|
+
import MenuItem from "@mui/material/MenuItem";
|
|
15
|
+
import Typography from "@mui/material/Typography";
|
|
7
16
|
import HintOptionsMenu from "./HintOptionsMenu";
|
|
8
17
|
import { getHints, insertInStrPos } from "./utils";
|
|
9
18
|
import { useSnackbarContext } from "../../providers";
|
|
10
19
|
import { useDebounce } from "../../utils";
|
|
11
|
-
|
|
12
|
-
import { Stack } from "@mui/material";
|
|
13
|
-
const RichFilterTextField = ({ filterExpr, filterExprHist, fields, operators, additionalComponents, instant: _instant, onChange, onSelectFromHistory, }) => {
|
|
20
|
+
const RichFilterTextField = ({ filterExpr, filterExprHist, fields, operators, onChange, }) => {
|
|
14
21
|
const { enqueueSnackbar } = useSnackbarContext();
|
|
15
22
|
const [search, setSearch] = useState(filterExpr);
|
|
16
|
-
const instant = _instant ?? true;
|
|
17
|
-
useEffect(() => setSearch(filterExpr), [filterExpr]);
|
|
18
23
|
const [searchHist, setSearchHist] = useState(filterExprHist);
|
|
24
|
+
const [searchHistMenuAnchor, setSearchHistMenuAnchor] = useState(null);
|
|
19
25
|
const [inputAnchor, setInputAnchor] = useState(null);
|
|
20
26
|
const [cursorPos, setCursorPos] = useState(null);
|
|
21
27
|
const [currentHintOptions, setCurrentHintOptions] = useState(() => new Map());
|
|
@@ -39,7 +45,7 @@ const RichFilterTextField = ({ filterExpr, filterExprHist, fields, operators, ad
|
|
|
39
45
|
}
|
|
40
46
|
updateHints();
|
|
41
47
|
}, [cursorPos]);
|
|
42
|
-
const handleChange = (value
|
|
48
|
+
const handleChange = (value) => {
|
|
43
49
|
setSearch(value);
|
|
44
50
|
onChange(value, (v) => setSearchHist(v));
|
|
45
51
|
};
|
|
@@ -80,9 +86,6 @@ const RichFilterTextField = ({ filterExpr, filterExprHist, fields, operators, ad
|
|
|
80
86
|
const focusedHint = currentHintOptions.entries().toArray()[focusIdx][0];
|
|
81
87
|
insertHint(focusedHint);
|
|
82
88
|
}
|
|
83
|
-
else {
|
|
84
|
-
onChange(search, (v) => setSearchHist(v));
|
|
85
|
-
}
|
|
86
89
|
break;
|
|
87
90
|
}
|
|
88
91
|
case "Escape":
|
|
@@ -146,32 +149,47 @@ const RichFilterTextField = ({ filterExpr, filterExprHist, fields, operators, ad
|
|
|
146
149
|
}
|
|
147
150
|
};
|
|
148
151
|
return (React.createElement(React.Fragment, null,
|
|
149
|
-
React.createElement(TextField, { ref: textFieldRef, inputRef: inputRef, fullWidth: true, size: "small", value: search, title: search, multiline: true, maxRows: 1, onChange: (e) =>
|
|
150
|
-
if (e.target !== e.currentTarget)
|
|
151
|
-
return;
|
|
152
|
-
setCursorPos(inputRef.current?.selectionStart ?? null);
|
|
153
|
-
}, onKeyUp: handleKeyUp, onKeyDown: handleKeyDown, slotProps: {
|
|
152
|
+
React.createElement(TextField, { ref: textFieldRef, inputRef: inputRef, fullWidth: true, size: "small", value: search, title: search, multiline: true, maxRows: 1, onChange: (e) => handleChange(e.target.value), onClick: () => setCursorPos(inputRef.current?.selectionStart ?? null), onKeyUp: handleKeyUp, onKeyDown: handleKeyDown, slotProps: {
|
|
154
153
|
input: {
|
|
155
|
-
startAdornment: (React.createElement(InputAdornment, { position: "start" },
|
|
156
|
-
React.createElement(Stack, { direction: "row", sx: { alignItems: "center" } },
|
|
157
|
-
!instant && (React.createElement(IconButton, { onClick: (e) => {
|
|
158
|
-
onChange(search, (v) => setSearchHist(v));
|
|
159
|
-
e.stopPropagation();
|
|
160
|
-
}, title: "\u041F\u043E\u0438\u0441\u043A" },
|
|
161
|
-
React.createElement(SearchRoundedIcon, null))),
|
|
162
|
-
React.createElement(FilterHistoryMenu, { searchHist: searchHist, onChange: onSelectFromHistory || handleChange, onCopy: () => enqueueSnackbar("Предустановка фильтра скопирована в буфер обмена", "default") }),
|
|
163
|
-
additionalComponents))),
|
|
164
154
|
endAdornment: (React.createElement(InputAdornment, { position: "end" },
|
|
165
155
|
React.createElement(IconButton, { title: "\u041E\u0447\u0438\u0441\u0442\u0438\u0442\u044C \u0444\u0438\u043B\u044C\u0442\u0440\u044B", disabled: !search, onClick: (e) => {
|
|
166
|
-
|
|
156
|
+
setSearch("");
|
|
157
|
+
onChange("", (v) => setSearchHist(v));
|
|
167
158
|
e.stopPropagation();
|
|
168
159
|
} },
|
|
169
160
|
React.createElement(ClearIcon, null)))),
|
|
161
|
+
startAdornment: (React.createElement(InputAdornment, { position: "start" },
|
|
162
|
+
React.createElement(IconButton, { color: "secondary", title: "\u041E\u0442\u043A\u0440\u044B\u0442\u044C \u0438\u0441\u0442\u043E\u0440\u0438\u044E \u0444\u0438\u043B\u044C\u0442\u0440\u043E\u0432", disabled: searchHist.length === 0, onClick: (e) => {
|
|
163
|
+
setSearchHistMenuAnchor(e.currentTarget);
|
|
164
|
+
e.stopPropagation();
|
|
165
|
+
} },
|
|
166
|
+
React.createElement(FilterListIcon, null)))),
|
|
170
167
|
},
|
|
171
168
|
} }),
|
|
172
169
|
React.createElement(HintOptionsMenu, { inputAnchor: inputAnchor, inputRef: inputRef, textFieldRef: textFieldRef, options: currentHintOptions, focusIdx: focusIdx, onSelectHint: insertHint, onClose: () => {
|
|
173
170
|
setInputAnchor(null);
|
|
174
171
|
setCursorPos(null);
|
|
175
|
-
} })
|
|
172
|
+
} }),
|
|
173
|
+
React.createElement(Menu, { anchorEl: searchHistMenuAnchor, open: Boolean(searchHistMenuAnchor), onClose: () => setSearchHistMenuAnchor(null), onClick: () => setSearchHistMenuAnchor(null) },
|
|
174
|
+
React.createElement(Stack, { direction: "row", spacing: 1, sx: {
|
|
175
|
+
px: 2,
|
|
176
|
+
py: 1,
|
|
177
|
+
alignItems: "center",
|
|
178
|
+
} },
|
|
179
|
+
React.createElement(HistoryIcon, null),
|
|
180
|
+
React.createElement(Typography, { variant: "h5" }, "\u0418\u0441\u0442\u043E\u0440\u0438\u044F \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044C\u0441\u043A\u0438\u0445 \u0444\u0438\u043B\u044C\u0442\u0440\u043E\u0432")),
|
|
181
|
+
React.createElement(Divider, null),
|
|
182
|
+
searchHist.map((el, idx) => (React.createElement(MenuItem, { key: idx + 1, onClick: () => handleChange(el), title: el },
|
|
183
|
+
React.createElement(ListItemText, { sx: { overflow: "hidden" } },
|
|
184
|
+
idx + 1,
|
|
185
|
+
". ",
|
|
186
|
+
el),
|
|
187
|
+
React.createElement(ListItemIcon, null,
|
|
188
|
+
React.createElement(IconButton, { onClick: (e) => {
|
|
189
|
+
navigator.clipboard.writeText(el);
|
|
190
|
+
e.stopPropagation();
|
|
191
|
+
enqueueSnackbar("Предустановка фильтра скопирована в буфер обмена", "default");
|
|
192
|
+
} },
|
|
193
|
+
React.createElement(ContentCopy, { fontSize: "small" })))))))));
|
|
176
194
|
};
|
|
177
195
|
export default RichFilterTextField;
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import React from "react";
|
|
2
1
|
export interface FilterField {
|
|
3
2
|
/**
|
|
4
3
|
* Название поля. Используется при подстановке. Должно оканчиваться двоеточием
|
|
@@ -63,9 +62,6 @@ export default interface RichFilterTextFieldProps {
|
|
|
63
62
|
* Список операторов фильтрации
|
|
64
63
|
*/
|
|
65
64
|
operators: FilterOperator[];
|
|
66
|
-
instant?: boolean;
|
|
67
|
-
additionalComponents?: React.JSX.Element[];
|
|
68
65
|
onChange(value: string, onSuccess?: (v: unknown) => void): void;
|
|
69
|
-
onSelectFromHistory?(value: string, idx: number): void;
|
|
70
66
|
}
|
|
71
67
|
//# sourceMappingURL=RichFilterTextFieldProps.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RichFilterTextFieldProps.d.ts","sourceRoot":"","sources":["../../../src/components/RichFilterTextField/RichFilterTextFieldProps.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"RichFilterTextFieldProps.d.ts","sourceRoot":"","sources":["../../../src/components/RichFilterTextField/RichFilterTextFieldProps.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,WAAW;IAC1B;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,UAAU,GAAG,MAAM,GAAG,MAAM,GAAG,QAAQ,CAAC;IAC9C;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB;;OAEG;IACH,MAAM,CAAC,EAAE,WAAW,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,cAAc;IAC7B;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;IACX;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,WAAW;IAC1B;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,CAAC,OAAO,WAAW,wBAAwB;IAC/C;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB;;OAEG;IACH,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB;;OAEG;IACH,SAAS,EAAE,cAAc,EAAE,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,IAAI,GAAG,IAAI,CAAC;CACjE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RuleRow.d.ts","sourceRoot":"","sources":["../../../src/components/SmartTable/RuleRow.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGzC,OAAiB,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAE/C,UAAU,QAAQ,CAAC,CAAC;IAClB,GAAG,EAAE,CAAC,CAAC;IACP,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;IACrB,EAAE,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,cAAc,CAAC,CAAC,EACd,QAAQ,EACR,KAAK,EACL,QAAQ,GACT,EAAE;QACD,QAAQ,CAAC,EAAE,SAAS,CAAC;QACrB,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,aAAa,CAAC;KACzB,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC;IACtB,aAAa,CAAC,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;IAC3C,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;IACxC,gBAAgB,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,SAAS,CAAC;IACrC,qBAAqB,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;CACxC;AAgDD,MAAM,CAAC,OAAO,UAAU,OAAO,CAAC,CAAC,EAAE,EACjC,GAAG,EACH,OAAO,EACP,EAAE,EACF,WAAW,EACX,WAAW,EACX,aAAa,EACb,gBAAgB,EAChB,cAAc,EACd,qBAAqB,GACtB,EAAE,QAAQ,CAAC,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"RuleRow.d.ts","sourceRoot":"","sources":["../../../src/components/SmartTable/RuleRow.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGzC,OAAiB,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAE/C,UAAU,QAAQ,CAAC,CAAC;IAClB,GAAG,EAAE,CAAC,CAAC;IACP,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;IACrB,EAAE,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,cAAc,CAAC,CAAC,EACd,QAAQ,EACR,KAAK,EACL,QAAQ,GACT,EAAE;QACD,QAAQ,CAAC,EAAE,SAAS,CAAC;QACrB,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,aAAa,CAAC;KACzB,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC;IACtB,aAAa,CAAC,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;IAC3C,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;IACxC,gBAAgB,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,SAAS,CAAC;IACrC,qBAAqB,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;CACxC;AAgDD,MAAM,CAAC,OAAO,UAAU,OAAO,CAAC,CAAC,EAAE,EACjC,GAAG,EACH,OAAO,EACP,EAAE,EACF,WAAW,EACX,WAAW,EACX,aAAa,EACb,gBAAgB,EAChB,cAAc,EACd,qBAAqB,GACtB,EAAE,QAAQ,CAAC,CAAC,CAAC,qBA8Cb"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import TableCell from "@mui/material/TableCell";
|
|
3
|
+
import TableRow from "@mui/material/TableRow";
|
|
3
4
|
const hiddenTextStyle = {
|
|
4
5
|
whiteSpace: "nowrap",
|
|
5
6
|
overflow: "hidden",
|
|
@@ -31,5 +32,9 @@ export default function RuleRow({ row, columns, sx, selectedRow, onSelectRow, on
|
|
|
31
32
|
} }, controlComponent(row)))));
|
|
32
33
|
return ContentWrapper ? (React.createElement(ContentWrapper, { dagId: Object(row).id, rowProps: {
|
|
33
34
|
selected: Object(row).id === selectedRow,
|
|
34
|
-
} }, content)) : (
|
|
35
|
+
} }, content)) : (React.createElement(TableRow, { hover: true, sx: {
|
|
36
|
+
height: "3rem",
|
|
37
|
+
overflowY: "hidden",
|
|
38
|
+
...sx,
|
|
39
|
+
}, selected: Object(row).id === selectedRow }, content));
|
|
35
40
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import SmartTableProps from "./SmartTableProps";
|
|
3
|
-
export default function SmartTable<T>({ rows, columns, pageN, numPages, perPage, loading, minWidth, width, rowStyles, selectable, selectedRow, sx, disablePerPageSelector, globalSearch, columnAutoWidth,
|
|
3
|
+
export default function SmartTable<T>({ rows, columns, pageN, numPages, perPage, loading, minWidth, width, rowStyles, selectable, selectedRow, sx, disablePerPageSelector, globalSearch, columnAutoWidth, globalSearchComponent, ContentWrapper, onRowDoubleClick, onSelectRow, controlComponent: ControlComponent, onToggleSort, onInputSearch, onPageSelect, onChangePerPage, controlComponentColSx, }: SmartTableProps<T>): React.JSX.Element;
|
|
4
4
|
//# sourceMappingURL=SmartTable.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SmartTable.d.ts","sourceRoot":"","sources":["../../../src/components/SmartTable/SmartTable.tsx"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"SmartTable.d.ts","sourceRoot":"","sources":["../../../src/components/SmartTable/SmartTable.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmC,MAAM,OAAO,CAAC;AAiBxD,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAMhD,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,CAAC,EAAE,EACpC,IAAI,EACJ,OAAO,EACP,KAAK,EACL,QAAQ,EACR,OAAO,EACP,OAAO,EACP,QAAQ,EACR,KAAK,EACL,SAAS,EACT,UAAU,EACV,WAAW,EACX,EAAE,EACF,sBAAsB,EACtB,YAAY,EACZ,eAAe,EACf,qBAAqB,EACrB,cAAc,EACd,gBAAgB,EAChB,WAAW,EACX,gBAAgB,EAAE,gBAAgB,EAClC,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,eAAe,EACf,qBAAqB,GACtB,EAAE,eAAe,CAAC,CAAC,CAAC,qBAgQpB"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React, {
|
|
1
|
+
import React, { lazy, Suspense } from "react";
|
|
2
2
|
import FormControl from "@mui/material/FormControl";
|
|
3
3
|
import InputLabel from "@mui/material/InputLabel";
|
|
4
4
|
import MenuItem from "@mui/material/MenuItem";
|
|
@@ -9,58 +9,14 @@ import Table from "@mui/material/Table";
|
|
|
9
9
|
import TableBody from "@mui/material/TableBody";
|
|
10
10
|
import TableCell from "@mui/material/TableCell";
|
|
11
11
|
import TableFooter from "@mui/material/TableFooter";
|
|
12
|
+
import TableHead from "@mui/material/TableHead";
|
|
12
13
|
import TableRow from "@mui/material/TableRow";
|
|
13
14
|
import TableContainer from "@mui/material/TableContainer";
|
|
14
|
-
import { useTheme, Stack, CircularProgress
|
|
15
|
+
import { useTheme, Stack, CircularProgress } from "@mui/material";
|
|
15
16
|
import SortBtn from "../SortBtn/SortBtn";
|
|
16
17
|
import ColumnSearchInput from "../ColumnSearchInput/ColumnSearchInput";
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
import RowContent from "./RowContent";
|
|
20
|
-
// eslint-disable-next-line react/display-name
|
|
21
|
-
const Scroller = React.forwardRef((props, ref) => (React.createElement(TableContainer, { component: Paper, ...props, ref: ref, sx: {
|
|
22
|
-
minWidth: Object(props).context.minWidth || "100%",
|
|
23
|
-
flexGrow: 1,
|
|
24
|
-
overflowX: "auto",
|
|
25
|
-
} },
|
|
26
|
-
Object(props).children,
|
|
27
|
-
Object(props).context.placeholder)));
|
|
28
|
-
const TableHead =
|
|
29
|
-
// eslint-disable-next-line react/display-name
|
|
30
|
-
React.forwardRef((props, ref) => (React.createElement(TableHeader, { ...props, ref: ref })));
|
|
31
|
-
const TableBodyWrapper =
|
|
32
|
-
// eslint-disable-next-line react/display-name
|
|
33
|
-
React.forwardRef((props, ref) => (React.createElement(TableBody, { ...props, ref: ref })));
|
|
34
|
-
const Row = (props) => {
|
|
35
|
-
const ContentWrapper = Object(props).context.ContentWrapper;
|
|
36
|
-
const selectedRow = Object(props).context.selectedRow;
|
|
37
|
-
const rowStyles = Object(props).context.rowStyles;
|
|
38
|
-
const selectable = Object(props).context.selectable;
|
|
39
|
-
return ContentWrapper ? (React.createElement(ContentWrapper, { dagId: Object(props).item.id, rowProps: {
|
|
40
|
-
selected: Object(props).item.id === selectedRow,
|
|
41
|
-
...props,
|
|
42
|
-
}, ...props })) : (React.createElement(TableRow, { hover: true, sx: {
|
|
43
|
-
height: "3rem",
|
|
44
|
-
overflowY: "hidden",
|
|
45
|
-
...rowStyles,
|
|
46
|
-
cursor: selectable ? "pointer" : "default",
|
|
47
|
-
}, selected: Object(props).item.id === selectedRow, ...props }));
|
|
48
|
-
};
|
|
49
|
-
const TableWrapper = (props) => (React.createElement(Table, { ...props, stickyHeader: true, sx: {
|
|
50
|
-
...Object(props).context.tableStyle,
|
|
51
|
-
minWidth: Object(props).context.minWidth || "100%",
|
|
52
|
-
} }));
|
|
53
|
-
const ItemContent = (_index, row, context) => (React.createElement(RowContent, { key: Object(row).id, row: row, columns: Object(context).columns, controlComponent: Object(context).ControlComponent, onDoubleClick: Object(context).onRowDoubleClick, onSelectRow: Object(context).selectable ? Object(context).handleSelectRow : () => { } }));
|
|
54
|
-
const ScrollSeekPlaceholder = (props) => (
|
|
55
|
-
// eslint-disable-next-line react/prop-types
|
|
56
|
-
React.createElement(TableRow, { sx: { height: Object(props).height } }, Object(props).context.columns.map((col, i) => (React.createElement(TableCell, { sx: {
|
|
57
|
-
paddingTop: "0.25rem",
|
|
58
|
-
paddingBottom: "0.25rem",
|
|
59
|
-
py: 0,
|
|
60
|
-
...col.colSx,
|
|
61
|
-
}, key: i },
|
|
62
|
-
React.createElement(Skeleton, { variant: "rectangular", width: "100%" }))))));
|
|
63
|
-
export default function SmartTable({ rows, columns, pageN, numPages, perPage, loading, minWidth, width, rowStyles, selectable, selectedRow, sx, disablePerPageSelector, globalSearch, columnAutoWidth, error, globalSearchComponent, ContentWrapper, onRowDoubleClick, onSelectRow, controlComponent: ControlComponent, onToggleSort, onInputSearch, onPageSelect, onChangePerPage, controlComponentColSx, perPageOptions, }) {
|
|
18
|
+
const RuleRow = lazy(() => import("./RuleRow"));
|
|
19
|
+
export default function SmartTable({ rows, columns, pageN, numPages, perPage, loading, minWidth, width, rowStyles, selectable, selectedRow, sx, disablePerPageSelector, globalSearch, columnAutoWidth, globalSearchComponent, ContentWrapper, onRowDoubleClick, onSelectRow, controlComponent: ControlComponent, onToggleSort, onInputSearch, onPageSelect, onChangePerPage, controlComponentColSx, }) {
|
|
64
20
|
const theme = useTheme();
|
|
65
21
|
const tableStyle = {
|
|
66
22
|
width: columnAutoWidth ? "auto" : "100%",
|
|
@@ -86,45 +42,13 @@ export default function SmartTable({ rows, columns, pageN, numPages, perPage, lo
|
|
|
86
42
|
const headerSearchRow = (React.createElement(TableRow, { key: 1 }, globalSearch && globalSearchComponent ? (React.createElement(TableCell, { scope: "col", colSpan: columns.length + 1 }, globalSearchComponent())) : (React.createElement(React.Fragment, null,
|
|
87
43
|
hasSearchableColumns ? searchCols() : React.createElement(React.Fragment, null),
|
|
88
44
|
ControlComponent && (React.createElement(TableCell, { sx: { ...controlComponentColSx }, scope: "col" }))))));
|
|
89
|
-
const
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
45
|
+
const tableHeader = (rows) => (React.createElement(TableHead, { sx: {
|
|
46
|
+
top: "0",
|
|
47
|
+
zIndex: 600,
|
|
48
|
+
position: "sticky",
|
|
49
|
+
backgroundColor: theme.palette.background.default,
|
|
50
|
+
} }, rows));
|
|
95
51
|
const headerRows = [headerTitleRow, headerSearchRow];
|
|
96
|
-
let placeholder = React.createElement(React.Fragment, null);
|
|
97
|
-
if (error && rows.length === 0) {
|
|
98
|
-
placeholder = (React.createElement(Typography, { variant: "h6", color: "textSecondary", sx: centerStyle }, "\u041D\u0435 \u0443\u0434\u0430\u043B\u043E\u0441\u044C \u043F\u043E\u043B\u0443\u0447\u0438\u0442\u044C \u0434\u0430\u043D\u043D\u044B\u0435"));
|
|
99
|
-
}
|
|
100
|
-
else if (loading) {
|
|
101
|
-
placeholder = React.createElement(CircularProgress, { sx: centerStyle });
|
|
102
|
-
}
|
|
103
|
-
else if (rows.length === 0) {
|
|
104
|
-
placeholder = (React.createElement(Typography, { variant: "h6", color: "textSecondary", sx: centerStyle }, "\u041D\u0438\u0447\u0435\u0433\u043E \u043D\u0435 \u043D\u0430\u0439\u0434\u0435\u043D\u043E"));
|
|
105
|
-
}
|
|
106
|
-
const fixedHeaderContent = () => (React.createElement(Fragment, null, hasGlobalSearch ? headerRows[0] : headerRows));
|
|
107
|
-
const tableContext = {
|
|
108
|
-
columns: columns,
|
|
109
|
-
minWidth: minWidth,
|
|
110
|
-
rowStyles: rowStyles,
|
|
111
|
-
selectable: selectable,
|
|
112
|
-
tableStyle: tableStyle,
|
|
113
|
-
placeholder: placeholder,
|
|
114
|
-
selectedRow: selectedRow,
|
|
115
|
-
ContentWrapper: ContentWrapper,
|
|
116
|
-
ControlComponent: ControlComponent,
|
|
117
|
-
onRowDoubleClick: onRowDoubleClick,
|
|
118
|
-
handleSelectRow: handleSelectRow,
|
|
119
|
-
};
|
|
120
|
-
const VirtuosoTableComponents = {
|
|
121
|
-
Scroller: Scroller,
|
|
122
|
-
Table: TableWrapper,
|
|
123
|
-
TableRow: Row,
|
|
124
|
-
TableHead: TableHead,
|
|
125
|
-
TableBody: TableBodyWrapper,
|
|
126
|
-
ScrollSeekPlaceholder: ScrollSeekPlaceholder,
|
|
127
|
-
};
|
|
128
52
|
return (React.createElement(Paper, { sx: {
|
|
129
53
|
height: "74vh",
|
|
130
54
|
position: "relative",
|
|
@@ -139,15 +63,18 @@ export default function SmartTable({ rows, columns, pageN, numPages, perPage, lo
|
|
|
139
63
|
overflowX: "auto",
|
|
140
64
|
width: "100%",
|
|
141
65
|
} },
|
|
142
|
-
hasGlobalSearch && (React.createElement(Table, { size: "small", className: "rulesTable", stickyHeader: true, sx: { ...tableStyle, minWidth: minWidth || "100%", height: "auto" } },
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
66
|
+
hasGlobalSearch && (React.createElement(Table, { size: "small", className: "rulesTable", stickyHeader: true, sx: { ...tableStyle, minWidth: minWidth || "100%", height: "auto" } }, tableHeader(headerRows[1]))),
|
|
67
|
+
React.createElement(TableContainer, { sx: { minWidth: minWidth || "100%", flexGrow: 1, overflowX: "unset" } },
|
|
68
|
+
React.createElement(Suspense, { fallback: React.createElement(CircularProgress, { sx: { position: "absolute", left: "50%", top: "50%" } }) },
|
|
69
|
+
React.createElement(Table, { sx: { ...tableStyle, minWidth: minWidth || "100%" }, stickyHeader: true },
|
|
70
|
+
tableHeader(hasGlobalSearch ? headerRows[0] : headerRows),
|
|
71
|
+
React.createElement(TableBody, null, rows.map((row, idx) => {
|
|
72
|
+
return (React.createElement(RuleRow, { ContentWrapper: ContentWrapper, key: idx, row: row, columns: columns, controlComponent: ControlComponent, onDoubleClick: onRowDoubleClick, sx: {
|
|
73
|
+
...rowStyles,
|
|
74
|
+
cursor: selectable ? "pointer" : "default",
|
|
75
|
+
}, selectedRow: selectedRow, onSelectRow: selectable ? handleSelectRow : () => { } }));
|
|
76
|
+
})))),
|
|
77
|
+
loading ? (React.createElement(CircularProgress, { sx: { position: "absolute", left: "50%", top: "50%" } })) : (React.createElement(React.Fragment, null)))),
|
|
151
78
|
React.createElement(Table, { sx: { ...tableStyle, height: "auto", minWidth: minWidth || "100%" } },
|
|
152
79
|
React.createElement(TableFooter, { sx: {
|
|
153
80
|
bottom: "0%",
|
|
@@ -171,5 +98,12 @@ export default function SmartTable({ rows, columns, pageN, numPages, perPage, lo
|
|
|
171
98
|
disablePerPageSelector ? (React.createElement(React.Fragment, null)) : (React.createElement(FormControl, { size: "small" },
|
|
172
99
|
React.createElement(InputLabel, { id: "perPageInputLabel" }, "\u0421\u0442\u0440\u043E\u043A"),
|
|
173
100
|
React.createElement(Select, { label: "\u0421\u0442\u0440\u043E\u043A", labelId: "perPageInputLabel", value: String(perPage), autoWidth: true, onChange: (e) => onChangePerPage &&
|
|
174
|
-
onChangePerPage(Number(e.target.value)), sx: { minWidth: "2rem" } },
|
|
101
|
+
onChangePerPage(Number(e.target.value)), sx: { minWidth: "2rem" } },
|
|
102
|
+
React.createElement(MenuItem, { value: 5 }, "5"),
|
|
103
|
+
React.createElement(MenuItem, { value: 10 }, "10"),
|
|
104
|
+
React.createElement(MenuItem, { value: 15 }, "15"),
|
|
105
|
+
React.createElement(MenuItem, { value: 20 }, "20"),
|
|
106
|
+
React.createElement(MenuItem, { value: 25 }, "25"),
|
|
107
|
+
React.createElement(MenuItem, { value: 50 }, "50"),
|
|
108
|
+
React.createElement(MenuItem, { value: 100 }, "100")))))))))));
|
|
175
109
|
}
|
|
@@ -34,7 +34,5 @@ export default interface SmartTableProps<T> {
|
|
|
34
34
|
onPageSelect(pageN: number): void;
|
|
35
35
|
onChangePerPage?(perPage: number): void;
|
|
36
36
|
controlComponentColSx?: SxProps<Theme>;
|
|
37
|
-
error?: boolean;
|
|
38
|
-
perPageOptions?: number[];
|
|
39
37
|
}
|
|
40
38
|
//# sourceMappingURL=SmartTableProps.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SmartTableProps.d.ts","sourceRoot":"","sources":["../../../src/components/SmartTable/SmartTableProps.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAE9D,MAAM,CAAC,OAAO,WAAW,eAAe,CAAC,CAAC;IACxC,IAAI,EAAE,CAAC,EAAE,CAAC;IACV,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,SAAS,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IAC3B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,EAAE,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IACpB,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,qBAAqB,CAAC,IAAI,SAAS,CAAC;IACpC,cAAc,CAAC,CAAC,EACd,QAAQ,EACR,KAAK,EACL,QAAQ,GACT,EAAE;QACD,QAAQ,CAAC,EAAE,SAAS,CAAC;QACrB,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,aAAa,CAAC;KACzB,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC;IACtB,WAAW,CAAC,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,gBAAgB,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,SAAS,CAAC;IACrC,gBAAgB,CAAC,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;IAC9C,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IAClE,aAAa,CAAC,OAAO,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,EAAE,GAAG,IAAI,CAAC;IAClE,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,eAAe,CAAC,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACxC,qBAAqB,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"SmartTableProps.d.ts","sourceRoot":"","sources":["../../../src/components/SmartTable/SmartTableProps.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAE9D,MAAM,CAAC,OAAO,WAAW,eAAe,CAAC,CAAC;IACxC,IAAI,EAAE,CAAC,EAAE,CAAC;IACV,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,SAAS,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IAC3B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,EAAE,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IACpB,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,qBAAqB,CAAC,IAAI,SAAS,CAAC;IACpC,cAAc,CAAC,CAAC,EACd,QAAQ,EACR,KAAK,EACL,QAAQ,GACT,EAAE;QACD,QAAQ,CAAC,EAAE,SAAS,CAAC;QACrB,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,aAAa,CAAC;KACzB,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC;IACtB,WAAW,CAAC,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,gBAAgB,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,SAAS,CAAC;IACrC,gBAAgB,CAAC,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;IAC9C,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IAClE,aAAa,CAAC,OAAO,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,EAAE,GAAG,IAAI,CAAC;IAClE,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,eAAe,CAAC,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACxC,qBAAqB,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;CACxC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SortBtn.d.ts","sourceRoot":"","sources":["../../../src/components/SortBtn/SortBtn.tsx"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"SortBtn.d.ts","sourceRoot":"","sources":["../../../src/components/SortBtn/SortBtn.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAC;AACxC,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAG1C,MAAM,CAAC,OAAO,UAAU,OAAO,CAAC,EAC9B,QAAQ,EACR,KAAK,EACL,KAAK,EAAE,MAAM,EACb,YAAY,GACb,EAAE,YAAY,qBA4Bd"}
|
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import React, {
|
|
1
|
+
import React, { useState } from "react";
|
|
2
2
|
import { TableSortLabel } from "@mui/material";
|
|
3
3
|
export default function SortBtn({ children, field, order: _order, onToggleSort, }) {
|
|
4
4
|
const [order, setOrder] = useState(_order || "none");
|
|
5
|
-
useEffect(() => setOrder(_order), [_order]);
|
|
6
5
|
function handleToggleSort() {
|
|
7
6
|
let newOrder;
|
|
8
7
|
switch (order) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SubtaskItem.d.ts","sourceRoot":"","sources":["../../../src/components/SubtaskItem/SubtaskItem.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"SubtaskItem.d.ts","sourceRoot":"","sources":["../../../src/components/SubtaskItem/SubtaskItem.tsx"],"names":[],"mappings":"AACA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAexC,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;AAElD,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,EAClC,YAAY,EACZ,IAAI,EACJ,QAAQ,EACR,UAAU,EACV,uBAAuB,GACxB,EAAE,gBAAgB,qBAoJlB"}
|
|
@@ -1,17 +1,20 @@
|
|
|
1
|
-
import React from "react";
|
|
2
1
|
import moment from "moment";
|
|
2
|
+
import React, { useState } from "react";
|
|
3
|
+
import AccessTimeSharpIcon from "@mui/icons-material/AccessTimeSharp";
|
|
4
|
+
import BlockSharpIcon from "@mui/icons-material/BlockSharp";
|
|
5
|
+
import CheckCircleOutlineRoundedIcon from "@mui/icons-material/CheckCircleOutlineRounded";
|
|
6
|
+
import DoneIcon from "@mui/icons-material/Done";
|
|
7
|
+
import ErrorOutlineSharpIcon from "@mui/icons-material/ErrorOutlineSharp";
|
|
8
|
+
import ExpandMore from "@mui/icons-material/ExpandMore";
|
|
9
|
+
import { Chip, useTheme } from "@mui/material";
|
|
3
10
|
import Accordion from "@mui/material/Accordion";
|
|
4
11
|
import AccordionDetails from "@mui/material/AccordionDetails";
|
|
5
12
|
import AccordionSummary from "@mui/material/AccordionSummary";
|
|
6
13
|
import CircularProgress from "@mui/material/CircularProgress";
|
|
7
|
-
import CheckCircleOutlineRoundedIcon from "@mui/icons-material/CheckCircleOutlineRounded";
|
|
8
|
-
import ErrorOutlineSharpIcon from "@mui/icons-material/ErrorOutlineSharp";
|
|
9
|
-
import AccessTimeSharpIcon from "@mui/icons-material/AccessTimeSharp";
|
|
10
|
-
import BlockSharpIcon from "@mui/icons-material/BlockSharp";
|
|
11
|
-
import ExpandMore from "@mui/icons-material/ExpandMore";
|
|
12
|
-
import { useTheme } from "@mui/material";
|
|
13
14
|
import { taskStateText } from "../../utils";
|
|
14
15
|
export default function SubtaskItem({ taskInstance, logs, expanded, onShowLogs, expandedLogContainerRef, }) {
|
|
16
|
+
const [copyVisible, setCopyVisible] = useState(false);
|
|
17
|
+
const [copyText, setCopyText] = useState("Копировать");
|
|
15
18
|
const theme = useTheme();
|
|
16
19
|
const subtaskState = (state) => {
|
|
17
20
|
switch (state) {
|
|
@@ -42,7 +45,20 @@ export default function SubtaskItem({ taskInstance, logs, expanded, onShowLogs,
|
|
|
42
45
|
precision: 1,
|
|
43
46
|
template: "h [ч], m [мин], s [сек]",
|
|
44
47
|
});
|
|
45
|
-
return (React.createElement(Accordion, { disableGutters: true, expanded: expanded, onChange: () => onShowLogs(taskInstance.taskId, taskInstance.tryNumber), disabled: !["running", "success", "failed"].includes(taskInstance.state || "")
|
|
48
|
+
return (React.createElement(Accordion, { disableGutters: true, expanded: expanded, onChange: () => onShowLogs(taskInstance.taskId, taskInstance.tryNumber), disabled: !["running", "success", "failed"].includes(taskInstance.state || ""), sx: {
|
|
49
|
+
position: "relative",
|
|
50
|
+
}, slotProps: {
|
|
51
|
+
transition: {
|
|
52
|
+
onEntered: () => {
|
|
53
|
+
setCopyVisible(true);
|
|
54
|
+
setCopyText("Копировать");
|
|
55
|
+
},
|
|
56
|
+
onExit: () => {
|
|
57
|
+
setCopyVisible(false);
|
|
58
|
+
setCopyText("Копировать");
|
|
59
|
+
},
|
|
60
|
+
},
|
|
61
|
+
} },
|
|
46
62
|
React.createElement(AccordionSummary, { expandIcon: React.createElement(ExpandMore, null) },
|
|
47
63
|
React.createElement("div", { style: { display: "flex", alignItems: "center", gap: "0.5rem" } },
|
|
48
64
|
subtaskState(taskInstance.state),
|
|
@@ -56,7 +72,35 @@ export default function SubtaskItem({ taskInstance, logs, expanded, onShowLogs,
|
|
|
56
72
|
" за " +
|
|
57
73
|
formatTaskDuration
|
|
58
74
|
: ""))),
|
|
59
|
-
React.createElement(
|
|
75
|
+
copyVisible && (React.createElement(Chip, { label: copyText, size: "small", variant: "outlined", icon: copyText === "Скопировано" ? (React.createElement(DoneIcon, { color: "success" })) : undefined, onClick: () => {
|
|
76
|
+
navigator.clipboard.writeText(logs);
|
|
77
|
+
setCopyText("Скопировано");
|
|
78
|
+
}, sx: {
|
|
79
|
+
position: "absolute",
|
|
80
|
+
bottom: "8%",
|
|
81
|
+
right: "3%",
|
|
82
|
+
opacity: "0.5",
|
|
83
|
+
} })),
|
|
84
|
+
React.createElement(AccordionDetails, { ref: expandedLogContainerRef, contentEditable: true, onKeyDown: (e) => {
|
|
85
|
+
if (e.ctrlKey && e.key.toLowerCase() === "a") {
|
|
86
|
+
e.preventDefault();
|
|
87
|
+
if (e.currentTarget) {
|
|
88
|
+
const range = document.createRange();
|
|
89
|
+
range.selectNodeContents(e.currentTarget);
|
|
90
|
+
const selection = window.getSelection();
|
|
91
|
+
if (selection != null) {
|
|
92
|
+
selection.removeAllRanges();
|
|
93
|
+
selection.addRange(range);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
if (e.key.toLowerCase() === "backspace") {
|
|
98
|
+
e.preventDefault();
|
|
99
|
+
}
|
|
100
|
+
}, suppressContentEditableWarning: true, onBeforeInput: (e) => e.preventDefault(), onPaste: (e) => e.preventDefault(), onDrop: (e) => e.preventDefault(), sx: {
|
|
101
|
+
maxHeight: "32vh",
|
|
102
|
+
overflow: "auto",
|
|
103
|
+
} },
|
|
60
104
|
React.createElement("article", { style: {
|
|
61
105
|
padding: "1.5rem",
|
|
62
106
|
backgroundColor: theme.palette.background.paper,
|
|
@@ -4,7 +4,7 @@ export default interface SubtaskItemProps {
|
|
|
4
4
|
taskInstance: TaskInstance;
|
|
5
5
|
logs: string;
|
|
6
6
|
expanded: boolean;
|
|
7
|
-
expandedLogContainerRef?: RefObject<HTMLDivElement>;
|
|
7
|
+
expandedLogContainerRef?: RefObject<HTMLDivElement | null>;
|
|
8
8
|
onShowLogs(taskId: string, tryNum: number): void;
|
|
9
9
|
}
|
|
10
10
|
//# sourceMappingURL=SubtaskItemProps.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SubtaskItemProps.d.ts","sourceRoot":"","sources":["../../../src/components/SubtaskItem/SubtaskItemProps.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,MAAM,CAAC,OAAO,WAAW,gBAAgB;IACvC,YAAY,EAAE,YAAY,CAAC;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,OAAO,CAAC;IAClB,uBAAuB,CAAC,EAAE,SAAS,CAAC,cAAc,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"SubtaskItemProps.d.ts","sourceRoot":"","sources":["../../../src/components/SubtaskItem/SubtaskItemProps.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,MAAM,CAAC,OAAO,WAAW,gBAAgB;IACvC,YAAY,EAAE,YAAY,CAAC;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,OAAO,CAAC;IAClB,uBAAuB,CAAC,EAAE,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;IAC3D,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CAClD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AirflowProvider.d.ts","sourceRoot":"","sources":["../../src/providers/AirflowProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAMN,MAAM,OAAO,CAAC;AAgBf,UAAU,oBAAoB;IAC5B,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;CACf;AAED,eAAO,MAAM,eAAe,GAAI,8BAG7B,oBAAoB,
|
|
1
|
+
{"version":3,"file":"AirflowProvider.d.ts","sourceRoot":"","sources":["../../src/providers/AirflowProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAMN,MAAM,OAAO,CAAC;AAgBf,UAAU,oBAAoB;IAC5B,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;CACf;AAED,eAAO,MAAM,eAAe,GAAI,8BAG7B,oBAAoB,sBAsFtB,CAAC;AAEF,eAAO,MAAM,iBAAiB;sBA3GV,OAAO;WAClB,MAAM;yBACQ,MAAM,GAAG,IAAI;wBACd,IAAI;CA0GzB,CAAC;AAEF,eAAe,eAAe,CAAC"}
|
package/dist/utils.d.ts
CHANGED
|
@@ -12,7 +12,7 @@ export declare const getSlugTableName: (name: string) => string;
|
|
|
12
12
|
export declare const getShiftedColor: (colorHex: string, shift: number) => string;
|
|
13
13
|
export declare const getSQLLabHref: (supersetURL: string, tableName: string, schema: string, dbName: string, autorun?: boolean, queryLimit?: number) => string;
|
|
14
14
|
export declare const getDashboardHref: (supersetURL: string, tableName: string) => string;
|
|
15
|
-
export declare function useDebounce
|
|
15
|
+
export declare function useDebounce(callback: CallableFunction, delay: number): (...args: unknown[]) => void;
|
|
16
16
|
export declare const getResponsiveAnchorOrigin: (anchorEl: HTMLElement, elementHeight: number) => PopoverOrigin;
|
|
17
17
|
export declare const getResponsiveTransformOrigin: (anchorEl: HTMLElement, elementHeight: number) => PopoverOrigin;
|
|
18
18
|
export declare const gettextTS: (msgid: string) => string;
|
package/dist/utils.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAEA,OAAO,wBAAwB,CAAC;AAChC,OAAO,kBAAkB,CAAC;AAC1B,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAG9C,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAE9C,wBAAgB,YAAY,WAI3B;AAED,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,QAI5C;AAED,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,UAM9C;AAED,eAAO,MAAM,aAAa,GACxB,WAAW,QAAQ,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,2EAc5D,CAAC;AAEF,eAAO,MAAM,UAAU,GAAI,MAAM,MAAM,
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAEA,OAAO,wBAAwB,CAAC;AAChC,OAAO,kBAAkB,CAAC;AAC1B,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAG9C,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAE9C,wBAAgB,YAAY,WAI3B;AAED,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,QAI5C;AAED,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,UAM9C;AAED,eAAO,MAAM,aAAa,GACxB,WAAW,QAAQ,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,2EAc5D,CAAC;AAEF,eAAO,MAAM,UAAU,GAAI,MAAM,MAAM,WAUtC,CAAC;AAEF,eAAO,MAAM,cAAc,GAAI,UAAU,MAAM,WAK9C,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,MAAM,MAAM,WAyC5C,CAAC;AAEF,eAAO,MAAM,eAAe,GAAI,UAAU,MAAM,EAAE,OAAO,MAAM,WAkB9D,CAAC;AACF,eAAO,MAAM,aAAa,GACxB,aAAa,MAAM,EACnB,WAAW,MAAM,EACjB,QAAQ,MAAM,EACd,QAAQ,MAAM,EACd,UAAU,OAAO,EACjB,aAAa,MAAM,WAWpB,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,aAAa,MAAM,EAAE,WAAW,MAAM,WACR,CAAC;AAEhE,wBAAgB,WAAW,CAAC,QAAQ,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,aAIvD,OAAO,EAAE,UAUtB;AAED,eAAO,MAAM,yBAAyB,GACpC,UAAU,WAAW,EACrB,eAAe,MAAM,KAOhB,aACN,CAAC;AAEF,eAAO,MAAM,4BAA4B,GACvC,UAAU,WAAW,EACrB,eAAe,MAAM,KAOhB,aACN,CAAC;AAEF,eAAO,MAAM,SAAS,GAAI,OAAO,MAAM,KAAG,MAMzC,CAAC;AAEF,eAAO,MAAM,UAAU,GACrB,UAAU,MAAM,EAChB,QAAQ,MAAM,EACd,OAAO,MAAM,KACZ,MAMF,CAAC;AACF,eAAO,MAAM,UAAU,GAAI,SAAS,MAAM,EAAE,OAAO,MAAM,KAAG,MAM3D,CAAC;AACF,eAAO,MAAM,WAAW,GACtB,SAAS,MAAM,EACf,UAAU,MAAM,EAChB,QAAQ,MAAM,EACd,OAAO,MAAM,KACZ,MAMF,CAAC;AACF,eAAO,MAAM,aAAa,GAAI,OAAO,MAAM,KAAG,MAM7C,CAAC;AACF,eAAO,MAAM,aAAa,GACxB,KAAK,MAAM,EAEX,KAAK,GAAG,EACR,QAAQ,OAAO,KACd,MAKF,CAAC;AACF,eAAO,MAAM,WAAW,GAAI,YAAY,MAAM,KAAG,MAKhD,CAAC;AACF,eAAO,MAAM,WAAW,GAAI,OAAO,MAAM,KAAG,MAK3C,CAAC"}
|
package/dist/utils.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@danikokonn/yarik-frontend-lib",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.33.legacy.test.1",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"description": "",
|
|
6
6
|
"author": "",
|
|
@@ -41,7 +41,6 @@
|
|
|
41
41
|
"react": "^18.3.1",
|
|
42
42
|
"react-dom": "^18.3.1",
|
|
43
43
|
"react-imask": "^7.6.1",
|
|
44
|
-
"react-virtuoso": "^4.13.0",
|
|
45
44
|
"style-loader": "^4.0.0",
|
|
46
45
|
"transliteration": "^2.3.5"
|
|
47
46
|
},
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import React from "react";
|
|
2
|
-
declare const FilterHistoryMenu: ({ searchHist, onChange, onCopy, }: {
|
|
3
|
-
searchHist: string[];
|
|
4
|
-
onChange(text: string, idx: number): void;
|
|
5
|
-
onCopy(): void;
|
|
6
|
-
}) => React.JSX.Element;
|
|
7
|
-
export default FilterHistoryMenu;
|
|
8
|
-
//# sourceMappingURL=FilterHistoryMenu.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"FilterHistoryMenu.d.ts","sourceRoot":"","sources":["../../../src/components/RichFilterTextField/FilterHistoryMenu.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAcxC,QAAA,MAAM,iBAAiB,GAAI,mCAIxB;IACD,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1C,MAAM,IAAI,IAAI,CAAC;CAChB,sBA2DA,CAAC;AAEF,eAAe,iBAAiB,CAAC"}
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
import React, { useState } from "react";
|
|
2
|
-
import Stack from "@mui/material/Stack";
|
|
3
|
-
import IconButton from "@mui/material/IconButton";
|
|
4
|
-
import FilterListIcon from "@mui/icons-material/FilterList";
|
|
5
|
-
import HistoryIcon from "@mui/icons-material/History";
|
|
6
|
-
import ContentCopy from "@mui/icons-material/ContentCopy";
|
|
7
|
-
import Divider from "@mui/material/Divider";
|
|
8
|
-
import ListItemIcon from "@mui/material/ListItemIcon";
|
|
9
|
-
import ListItemText from "@mui/material/ListItemText";
|
|
10
|
-
import Menu from "@mui/material/Menu";
|
|
11
|
-
import MenuItem from "@mui/material/MenuItem";
|
|
12
|
-
import Typography from "@mui/material/Typography";
|
|
13
|
-
const FilterHistoryMenu = ({ searchHist, onChange, onCopy, }) => {
|
|
14
|
-
const [searchHistMenuAnchor, setSearchHistMenuAnchor] = useState(null);
|
|
15
|
-
return (React.createElement(React.Fragment, null,
|
|
16
|
-
React.createElement(IconButton, { color: "secondary", title: "\u041E\u0442\u043A\u0440\u044B\u0442\u044C \u0438\u0441\u0442\u043E\u0440\u0438\u044E \u0444\u0438\u043B\u044C\u0442\u0440\u043E\u0432", disabled: searchHist.length === 0, onClick: (e) => {
|
|
17
|
-
setSearchHistMenuAnchor(e.currentTarget);
|
|
18
|
-
e.stopPropagation();
|
|
19
|
-
} },
|
|
20
|
-
React.createElement(FilterListIcon, null)),
|
|
21
|
-
React.createElement(Menu, { anchorEl: searchHistMenuAnchor, open: Boolean(searchHistMenuAnchor), onClose: () => setSearchHistMenuAnchor(null), onClick: () => setSearchHistMenuAnchor(null) },
|
|
22
|
-
React.createElement(Stack, { direction: "row", spacing: 1, sx: {
|
|
23
|
-
px: 2,
|
|
24
|
-
py: 1,
|
|
25
|
-
alignItems: "center",
|
|
26
|
-
} },
|
|
27
|
-
React.createElement(HistoryIcon, null),
|
|
28
|
-
React.createElement(Typography, { variant: "h5" }, "\u0418\u0441\u0442\u043E\u0440\u0438\u044F \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044C\u0441\u043A\u0438\u0445 \u0444\u0438\u043B\u044C\u0442\u0440\u043E\u0432")),
|
|
29
|
-
React.createElement(Divider, null),
|
|
30
|
-
searchHist.map((el, idx) => (React.createElement(MenuItem, { key: idx + 1, onClick: () => onChange(el, idx), title: el },
|
|
31
|
-
React.createElement(ListItemText, { sx: { overflow: "hidden" } },
|
|
32
|
-
idx + 1,
|
|
33
|
-
". ",
|
|
34
|
-
el),
|
|
35
|
-
React.createElement(ListItemIcon, null,
|
|
36
|
-
React.createElement(IconButton, { onClick: (e) => {
|
|
37
|
-
navigator.clipboard.writeText(el);
|
|
38
|
-
e.stopPropagation();
|
|
39
|
-
onCopy();
|
|
40
|
-
} },
|
|
41
|
-
React.createElement(ContentCopy, { fontSize: "small" })))))))));
|
|
42
|
-
};
|
|
43
|
-
export default FilterHistoryMenu;
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import React, { ReactNode } from "react";
|
|
2
|
-
import { Column } from "../../types";
|
|
3
|
-
import { SxProps, Theme } from "@mui/material";
|
|
4
|
-
interface RowContentProps<T> {
|
|
5
|
-
row: T;
|
|
6
|
-
columns: Column<T>[];
|
|
7
|
-
onDoubleClick?(rowId: string | null): void;
|
|
8
|
-
onSelectRow(rowId: string | null): void;
|
|
9
|
-
controlComponent?(row: T): ReactNode;
|
|
10
|
-
controlComponentColSx?: SxProps<Theme>;
|
|
11
|
-
}
|
|
12
|
-
export default function RowContent<T>({ row, columns, onSelectRow, onDoubleClick, controlComponent, controlComponentColSx, }: RowContentProps<T>): React.JSX.Element;
|
|
13
|
-
export {};
|
|
14
|
-
//# sourceMappingURL=RowContent.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"RowContent.d.ts","sourceRoot":"","sources":["../../../src/components/SmartTable/RowContent.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGzC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAE/C,UAAU,eAAe,CAAC,CAAC;IACzB,GAAG,EAAE,CAAC,CAAC;IACP,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;IACrB,aAAa,CAAC,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;IAC3C,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;IACxC,gBAAgB,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,SAAS,CAAC;IACrC,qBAAqB,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;CACxC;AAUD,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,CAAC,EAAE,EACpC,GAAG,EACH,OAAO,EACP,WAAW,EACX,aAAa,EACb,gBAAgB,EAChB,qBAAqB,GACtB,EAAE,eAAe,CAAC,CAAC,CAAC,qBAoCpB"}
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import React from "react";
|
|
2
|
-
import TableCell from "@mui/material/TableCell";
|
|
3
|
-
const hiddenTextStyle = {
|
|
4
|
-
whiteSpace: "nowrap",
|
|
5
|
-
overflow: "hidden",
|
|
6
|
-
textOverflow: "ellipsis",
|
|
7
|
-
paddingTop: "0.25rem",
|
|
8
|
-
paddingBottom: "0.25rem",
|
|
9
|
-
};
|
|
10
|
-
export default function RowContent({ row, columns, onSelectRow, onDoubleClick, controlComponent, controlComponentColSx, }) {
|
|
11
|
-
return (React.createElement(React.Fragment, null,
|
|
12
|
-
columns.map((col, idx) => (React.createElement(TableCell, { sx: {
|
|
13
|
-
...hiddenTextStyle,
|
|
14
|
-
...col.colSx,
|
|
15
|
-
}, key: idx, onClick: (_) => {
|
|
16
|
-
const selection = window.getSelection();
|
|
17
|
-
if (selection && selection.toString().length > 0)
|
|
18
|
-
return;
|
|
19
|
-
onSelectRow(Object(row).id);
|
|
20
|
-
}, onDoubleClick: (_) => (onDoubleClick || (() => { }))(Object(row).id) }, col.cellContentComponent
|
|
21
|
-
? col.cellContentComponent(row)
|
|
22
|
-
: Object(row)[col.name] || "N/A"))),
|
|
23
|
-
controlComponent && (React.createElement(TableCell, { sx: {
|
|
24
|
-
textAlign: "center",
|
|
25
|
-
cursor: "default",
|
|
26
|
-
p: 0,
|
|
27
|
-
...controlComponentColSx,
|
|
28
|
-
} }, controlComponent(row)))));
|
|
29
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"TableHeader.d.ts","sourceRoot":"","sources":["../../../src/components/SmartTable/TableHeader.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAkB,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAGpE,QAAA,MAAM,WAAW,GAAI,mBAAmB,cAAc,sBAerD,CAAC;AAEF,eAAe,WAAW,CAAC"}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import React from "react";
|
|
2
|
-
import TableHead from "@mui/material/TableHead";
|
|
3
|
-
import { useTheme } from "@mui/material";
|
|
4
|
-
const TableHeader = ({ ref, ...props }) => {
|
|
5
|
-
const theme = useTheme();
|
|
6
|
-
return (React.createElement(TableHead, { sx: {
|
|
7
|
-
top: "0",
|
|
8
|
-
zIndex: 600,
|
|
9
|
-
position: "sticky",
|
|
10
|
-
backgroundColor: theme.palette.background.default,
|
|
11
|
-
}, ...props, ref: ref }));
|
|
12
|
-
};
|
|
13
|
-
export default TableHeader;
|