@evergis/react 4.0.144 → 4.0.146
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/Dashboard/components/ResizeHandle/constants.d.ts +15 -0
- package/dist/components/Dashboard/components/ResizeHandle/index.d.ts +3 -0
- package/dist/components/Dashboard/components/ResizeHandle/styled.d.ts +17 -0
- package/dist/components/Dashboard/components/ResizeHandle/types.d.ts +2 -0
- package/dist/components/Dashboard/components/index.d.ts +1 -0
- package/dist/components/Dashboard/elements/ElementTable/components/TableColumnResizer.d.ts +10 -0
- package/dist/components/Dashboard/elements/ElementTable/hooks/useColumnResize.d.ts +15 -16
- package/dist/components/Dashboard/elements/ElementTable/hooks/useTableView.d.ts +3 -5
- package/dist/components/Dashboard/elements/ElementTable/styled.d.ts +0 -7
- package/dist/components/Dashboard/elements/ElementTable/types.d.ts +7 -4
- package/dist/components/Dashboard/elements/ElementTable/utils/columnStyle.d.ts +11 -3
- package/dist/components/Dashboard/grid/constants.d.ts +0 -14
- package/dist/components/Dashboard/grid/hooks/useGridHeightResize.d.ts +2 -2
- package/dist/components/Dashboard/grid/hooks/useGridResize.d.ts +6 -10
- package/dist/components/Dashboard/hooks/index.d.ts +1 -0
- package/dist/components/Dashboard/hooks/useResizeDrag.d.ts +29 -0
- package/dist/index.js +291 -222
- package/dist/index.js.map +1 -1
- package/dist/react.esm.js +290 -222
- package/dist/react.esm.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Заход зоны захвата на содержимое с каждой стороны границы, px.
|
|
3
|
+
*
|
|
4
|
+
* Без него попасть курсором ровно в границу невозможно: у таблицы её толщина — один пиксель,
|
|
5
|
+
* а у сетки зазора может не быть вовсе. Ручка абсолютная и в раскладке не участвует, поэтому
|
|
6
|
+
* расширение ничего не сдвигает.
|
|
7
|
+
*/
|
|
8
|
+
export declare const HANDLE_BLEED_PX = 3;
|
|
9
|
+
/**
|
|
10
|
+
* Маркер ручки: нажатие на ней тянет границу, а не ячейку сетки.
|
|
11
|
+
*
|
|
12
|
+
* Ставит его сам компонент. Ручка колонки таблицы, оказавшейся внутри ячейки сетки, обязана
|
|
13
|
+
* помечаться так же — иначе нажатие на ней начинало бы перетаскивание всей ячейки.
|
|
14
|
+
*/
|
|
15
|
+
export declare const RESIZE_HANDLE_ATTR = "data-grid-handle";
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { ResizeAxis } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* Ручка перетаскивания границы. Общая для сетки дашборда и колонок таблицы: жест один и тот же,
|
|
4
|
+
* и выглядеть он обязан одинаково.
|
|
5
|
+
*
|
|
6
|
+
* Абсолютная и целиком лежит в зазоре, поэтому включение режима редактирования не сдвигает
|
|
7
|
+
* раскладку ни на пиксель. Сам ползунок (`::after`) появляется только при наведении и во время
|
|
8
|
+
* перетаскивания — в покое раскладка выглядит как обычно.
|
|
9
|
+
*
|
|
10
|
+
* Ширину зазора берёт из переменной: у сетки её объявляет тело сетки, у таблицы зазора нет вовсе,
|
|
11
|
+
* и зона захвата сжимается до одного захода на содержимое с каждой стороны.
|
|
12
|
+
*/
|
|
13
|
+
export declare const ResizeHandle: import('styled-components').StyledComponent<"div", any, {
|
|
14
|
+
"data-grid-handle": boolean;
|
|
15
|
+
} & {
|
|
16
|
+
$axis: ResizeAxis;
|
|
17
|
+
}, "data-grid-handle">;
|
|
@@ -17,6 +17,7 @@ export * from './HiddenTitleItems';
|
|
|
17
17
|
export * from './Loading';
|
|
18
18
|
export * from './LogTerminal';
|
|
19
19
|
export * from './Pagination';
|
|
20
|
+
export * from './ResizeHandle';
|
|
20
21
|
export * from './Pagination/styled';
|
|
21
22
|
export * from './StackBar';
|
|
22
23
|
export * from './SvgImage';
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { FC } from 'react';
|
|
2
|
+
import { TableColumnResizerProps } from '../types';
|
|
3
|
+
/**
|
|
4
|
+
* Ручка ширины колонки на правой границе ячейки.
|
|
5
|
+
*
|
|
6
|
+
* Тот же компонент и тот же жест, что двигают границы ячеек сетки дашборда: пользователю это одно
|
|
7
|
+
* и то же действие, и выглядеть оно обязано одинаково. Поэтому и стоит она у КАЖДОЙ ячейки
|
|
8
|
+
* колонки, как в сетке, — тянуть границу можно на любой строке, а не только в шапке.
|
|
9
|
+
*/
|
|
10
|
+
export declare const TableColumnResizer: FC<TableColumnResizerProps>;
|
|
@@ -1,20 +1,19 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
1
|
+
import { ResizeDrag } from '../../../hooks/useResizeDrag';
|
|
2
|
+
interface UseColumnResizeParams {
|
|
3
|
+
/** Позиция колонки: по ней собрано имя переменной, которой колонка задаёт свою ширину. */
|
|
4
|
+
index: number;
|
|
5
|
+
onCommit: (width: number) => void;
|
|
6
|
+
}
|
|
3
7
|
/**
|
|
4
|
-
*
|
|
8
|
+
* Перетаскивание правой границы колонки.
|
|
5
9
|
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
10
|
+
* Жест — общий {@link useResizeDrag}, тот же, что двигает границы ячеек сетки дашборда. Здесь
|
|
11
|
+
* остаётся только табличное: во время жеста ширина рисуется переменной на самой таблице, а в
|
|
12
|
+
* состояние уходит один раз, на отпускание мыши. Так шаг жеста меняет одно свойство одного узла,
|
|
13
|
+
* а не перерисовывает таблицу целиком.
|
|
8
14
|
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
* Стартовую ширину берём с самой ячейки, а не из конфига: у колонки без `width` её выбрала
|
|
13
|
-
* раскладка таблицы, и тянуть надо ровно от того, что видно.
|
|
15
|
+
* Стартовая ширина берётся с той ячейки, за границу которой потянули: у колонки без `width` её
|
|
16
|
+
* выбрала раскладка таблицы, и тянуть надо от того, что видно.
|
|
14
17
|
*/
|
|
15
|
-
export declare const useColumnResize: (
|
|
16
|
-
|
|
17
|
-
onResizeStart: (attributeName: string, event: PointerEvent<HTMLElement>) => void;
|
|
18
|
-
onResizeMove: (event: PointerEvent<HTMLElement>) => void;
|
|
19
|
-
onResizeEnd: (event: PointerEvent<HTMLElement>) => void;
|
|
20
|
-
};
|
|
18
|
+
export declare const useColumnResize: ({ index, onCommit }: UseColumnResizeParams) => ResizeDrag;
|
|
19
|
+
export {};
|
|
@@ -13,8 +13,8 @@ import { TableSort } from '../types';
|
|
|
13
13
|
* `width`/`height` — размер собственного бокса таблицы: он ограничивает её саму и прокручивает
|
|
14
14
|
* то, что не влезло. Место, отведённое контейнеру, задаётся его же опциями и живёт отдельно.
|
|
15
15
|
*
|
|
16
|
-
* Ширины колонок — тоже вид: конфиг задаёт стартовую, растянутая мышью живёт в
|
|
17
|
-
*
|
|
16
|
+
* Ширины колонок — тоже вид: конфиг задаёт стартовую, растянутая мышью живёт здесь и в конфиг
|
|
17
|
+
* не возвращается.
|
|
18
18
|
*/
|
|
19
19
|
export declare const useTableView: (elementConfig?: ElementTableConfig) => {
|
|
20
20
|
context: import('../../../containers/StructuredDataContainer/types').StructuredDataContextValue;
|
|
@@ -26,7 +26,5 @@ export declare const useTableView: (elementConfig?: ElementTableConfig) => {
|
|
|
26
26
|
contentWidth: boolean;
|
|
27
27
|
columnWidths: Record<string, number>;
|
|
28
28
|
onSortToggle: (attributeName: string) => void;
|
|
29
|
-
|
|
30
|
-
onResizeMove: (event: import('react').PointerEvent<HTMLElement>) => void;
|
|
31
|
-
onResizeEnd: (event: import('react').PointerEvent<HTMLElement>) => void;
|
|
29
|
+
onColumnResize: (attributeName: string, nextWidth: number) => void;
|
|
32
30
|
};
|
|
@@ -39,13 +39,6 @@ export declare const TableHeadCell: import('styled-components').StyledComponent<
|
|
|
39
39
|
* у колонки с заданной шириной длинный псевдоним иначе выдавил бы значок за край ячейки.
|
|
40
40
|
*/
|
|
41
41
|
export declare const TableHeadContent: import('styled-components').StyledComponent<"span", any, {}, never>;
|
|
42
|
-
/**
|
|
43
|
-
* Захват правой границы колонки. Лежит поверх края ячейки и ловит указатель сам, поэтому
|
|
44
|
-
* перетаскивание не доходит до заголовка и не переключает сортировку.
|
|
45
|
-
*
|
|
46
|
-
* Ширина в пикселах, а не в rem: это зона попадания курсора, и от размера шрифта она не зависит.
|
|
47
|
-
*/
|
|
48
|
-
export declare const TableResizeHandle: import('styled-components').StyledComponent<"span", any, {}, never>;
|
|
49
42
|
/**
|
|
50
43
|
* Место под значок сортировки. Занято всегда, пока сортировка включена, а сам значок только
|
|
51
44
|
* прячется: появляясь и исчезая, он менял бы ширину колонки — и таблицу дёргало бы на каждый
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { PointerEvent } from 'react';
|
|
2
1
|
import { FeatureAttributeValue } from '../../../../types';
|
|
3
2
|
import { DraftRow, StructuredDataAttribute } from '../../containers/StructuredDataContainer/types';
|
|
4
3
|
export type SortDirection = "asc" | "desc";
|
|
@@ -19,6 +18,12 @@ export interface TableCellProps {
|
|
|
19
18
|
canEdit: boolean;
|
|
20
19
|
onChange: (key: string, attributeName: string, value: FeatureAttributeValue) => void;
|
|
21
20
|
}
|
|
21
|
+
export interface TableColumnResizerProps {
|
|
22
|
+
/** Позиция колонки: по ней собрано имя переменной, которой колонка задаёт свою ширину. */
|
|
23
|
+
index: number;
|
|
24
|
+
attributeName: string;
|
|
25
|
+
onResize: (attributeName: string, width: number) => void;
|
|
26
|
+
}
|
|
22
27
|
export interface TableHeadRowProps {
|
|
23
28
|
columns: StructuredDataAttribute[];
|
|
24
29
|
sort: TableSort | null;
|
|
@@ -28,7 +33,5 @@ export interface TableHeadRowProps {
|
|
|
28
33
|
/** У таблицы есть колонка действий — шапке нужна пустая ячейка над ней. */
|
|
29
34
|
withActionsColumn: boolean;
|
|
30
35
|
onSortToggle: (attributeName: string) => void;
|
|
31
|
-
|
|
32
|
-
onResizeMove: (event: PointerEvent<HTMLElement>) => void;
|
|
33
|
-
onResizeEnd: (event: PointerEvent<HTMLElement>) => void;
|
|
36
|
+
onColumnResize: (attributeName: string, width: number) => void;
|
|
34
37
|
}
|
|
@@ -1,11 +1,19 @@
|
|
|
1
1
|
import { CSSProperties } from 'react';
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
3
|
+
* Имя переменной ширины колонки.
|
|
4
|
+
*
|
|
5
|
+
* Через неё идёт и предпросмотр перетаскивания, и итоговая ширина: пока переменная не задана,
|
|
6
|
+
* работает запасное значение из стиля ячейки, а жест на время перетаскивания объявляет её на
|
|
7
|
+
* самой таблице — одним свойством на один узел, как сетка меняет свой шаблон треков.
|
|
8
|
+
*/
|
|
9
|
+
export declare const getColumnWidthVariable: (index: number) => string;
|
|
10
|
+
/**
|
|
11
|
+
* Инлайн-размер ячейки колонки с заданной или изменяемой шириной.
|
|
4
12
|
*
|
|
5
13
|
* Раскладка таблицы автоматическая (ширину колонок выбирает содержимое), и одной `width` ей мало —
|
|
6
14
|
* она для неё лишь пожелание. Жёстко колонку держат все три предела сразу, поэтому и ставим их
|
|
7
15
|
* втроём, на каждую ячейку колонки.
|
|
8
16
|
*
|
|
9
|
-
*
|
|
17
|
+
* Ни ширины, ни разрешения тянуть — стиля нет: колонка остаётся на попечении раскладки, как и была.
|
|
10
18
|
*/
|
|
11
|
-
export declare const getColumnStyle: (width?: number) => CSSProperties | undefined;
|
|
19
|
+
export declare const getColumnStyle: (index: number, width?: number, resizable?: boolean) => CSSProperties | undefined;
|
|
@@ -34,14 +34,6 @@ export declare const GRID_AUTO_FILL_DEFAULTS: CSSObject;
|
|
|
34
34
|
* раскладки, поэтому задаётся явно через `options.gap`, а не навязывается всем сеткам.
|
|
35
35
|
*/
|
|
36
36
|
export declare const DEFAULT_GRID_GAP = 0;
|
|
37
|
-
/**
|
|
38
|
-
* Насколько ручка ресайза заходит на содержимое с каждой стороны, px.
|
|
39
|
-
*
|
|
40
|
-
* По умолчанию зазора нет вовсе, так что попасть курсором ровно в границу невозможно — зона
|
|
41
|
-
* захвата всегда шире зазора на эту величину с каждой стороны. Ручка абсолютная и в раскладке
|
|
42
|
-
* не участвует, поэтому расширение ничего не сдвигает.
|
|
43
|
-
*/
|
|
44
|
-
export declare const HANDLE_BLEED_PX = 3;
|
|
45
37
|
/**
|
|
46
38
|
* Сдвиг курсора, после которого нажатие на ячейке считается перетаскиванием, px.
|
|
47
39
|
*
|
|
@@ -51,12 +43,6 @@ export declare const HANDLE_BLEED_PX = 3;
|
|
|
51
43
|
export declare const DRAG_THRESHOLD_PX = 4;
|
|
52
44
|
/** Маркер ячейки в DOM: по нему ищется цель перетаскивания под курсором. */
|
|
53
45
|
export declare const GRID_CELL_ATTR = "data-grid-cell";
|
|
54
|
-
/** Маркер ручки ресайза: нажатие на ней тянет границу, а не ячейку. */
|
|
55
|
-
export declare const GRID_HANDLE_ATTR = "data-grid-handle";
|
|
56
|
-
/** Тот же маркер пропсами: имя атрибута вычисляемое, а в JSX такое подставляется только спредом. */
|
|
57
|
-
export declare const GRID_HANDLE_PROPS: {
|
|
58
|
-
"data-grid-handle": boolean;
|
|
59
|
-
};
|
|
60
46
|
/**
|
|
61
47
|
* Нажатия, которые перетаскиванием ячейки не считаются.
|
|
62
48
|
*
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ResizeDrag } from '../../hooks/useResizeDrag';
|
|
2
2
|
interface UseGridHeightResizeParams {
|
|
3
3
|
/** Доли всех строк сетки — их сумма сохраняется при пересчёте. */
|
|
4
4
|
sizes: number[];
|
|
@@ -23,5 +23,5 @@ interface UseGridHeightResizeParams {
|
|
|
23
23
|
* ради чего режим включают: под курсором сетка садилась бы на заданные пиксели, а после отпускания
|
|
24
24
|
* снова раздувалась содержимым.
|
|
25
25
|
*/
|
|
26
|
-
export declare const useGridHeightResize: ({ sizes, autoHeight, getGrid, onCommit, }: UseGridHeightResizeParams) =>
|
|
26
|
+
export declare const useGridHeightResize: ({ sizes, autoHeight, getGrid, onCommit, }: UseGridHeightResizeParams) => ResizeDrag;
|
|
27
27
|
export {};
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { ResizeDrag } from '../../hooks/useResizeDrag';
|
|
1
2
|
import { GridAxis } from '../types';
|
|
2
3
|
interface UseGridResizeParams {
|
|
3
4
|
axis: GridAxis;
|
|
@@ -8,20 +9,15 @@ interface UseGridResizeParams {
|
|
|
8
9
|
getGrid: () => HTMLElement | null;
|
|
9
10
|
onCommit: (index: number, sizes: [number, number]) => void;
|
|
10
11
|
}
|
|
11
|
-
export interface GridResize {
|
|
12
|
-
/** Callback-ref для ручки: `useDragAndDropEffect` принимает элемент, а не ref. */
|
|
13
|
-
setHandle: (element: HTMLElement | null) => void;
|
|
14
|
-
dragging: boolean;
|
|
15
|
-
}
|
|
16
12
|
/**
|
|
17
13
|
* Перетаскивание границы между двумя соседними треками.
|
|
18
14
|
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
* на отпускание мыши.
|
|
15
|
+
* Сам жест — общий {@link useResizeDrag}: он же двигает и границы колонок таблицы, поэтому
|
|
16
|
+
* ощущаются они одинаково. Здесь остаётся только грид-специфичное: во время жеста раскладка
|
|
17
|
+
* меняется ИНЛАЙН-стилем на самом гриде, а в конфиг доли уходят один раз, на отпускание мыши.
|
|
22
18
|
*
|
|
23
|
-
* Пиксельный снимок треков берётся однократно на
|
|
19
|
+
* Пиксельный снимок треков берётся однократно на нажатии — если пересчитывать его на каждом
|
|
24
20
|
* шаге уже после применения новых долей, округление `fr → px → fr` даёт дрейф границы.
|
|
25
21
|
*/
|
|
26
|
-
export declare const useGridResize: ({ axis, index, sizes, getGrid, onCommit }: UseGridResizeParams) =>
|
|
22
|
+
export declare const useGridResize: ({ axis, index, sizes, getGrid, onCommit }: UseGridResizeParams) => ResizeDrag;
|
|
27
23
|
export {};
|
|
@@ -28,6 +28,7 @@ export * from './useGlobalContext';
|
|
|
28
28
|
export * from './useHeaderRender';
|
|
29
29
|
export * from './useHideIfEmptyDataSource';
|
|
30
30
|
export * from './useProjectDashboardInit';
|
|
31
|
+
export * from './useResizeDrag';
|
|
31
32
|
export * from './useRelatedDataSourceAttributes';
|
|
32
33
|
export * from './useRenderElement';
|
|
33
34
|
export * from './useResizeBox';
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
interface UseResizeDragParams<TState> {
|
|
2
|
+
/**
|
|
3
|
+
* Снимок на нажатии: всё, от чего считается жест. Возвращает `null` — жест не начинается
|
|
4
|
+
* (например, тянуть нечего).
|
|
5
|
+
*
|
|
6
|
+
* Снимок берётся один раз именно здесь: пересчёт на каждом шаге уже по применённым размерам
|
|
7
|
+
* копит округление и уводит границу от курсора.
|
|
8
|
+
*/
|
|
9
|
+
onStart: (event: MouseEvent) => TState | null;
|
|
10
|
+
/** Шаг жеста. Рисует предпросмотр прямо в DOM — состояние на каждое движение не трогаем. */
|
|
11
|
+
onMove: (state: TState, event: MouseEvent) => void;
|
|
12
|
+
/** Конец жеста: снять предпросмотр и записать результат один раз. */
|
|
13
|
+
onEnd: (state: TState, event: MouseEvent) => void;
|
|
14
|
+
}
|
|
15
|
+
export interface ResizeDrag {
|
|
16
|
+
/** Callback-ref для ручки: `useDragAndDropEffect` принимает элемент, а не ref. */
|
|
17
|
+
setHandle: (element: HTMLElement | null) => void;
|
|
18
|
+
dragging: boolean;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Перетаскивание границы: подписка на ручку, снимок на старте, предпросмотр на движении,
|
|
22
|
+
* запись результата на отпускании.
|
|
23
|
+
*
|
|
24
|
+
* Общий для сетки дашборда и колонок таблицы. Различаются они только тем, что именно меряют и
|
|
25
|
+
* куда пишут; сам жест обязан ощущаться одинаково — включая то, что мышь ведут по документу, а
|
|
26
|
+
* не по самой ручке, и отпускание за пределами окна тоже завершает жест.
|
|
27
|
+
*/
|
|
28
|
+
export declare const useResizeDrag: <TState>({ onStart, onMove, onEnd }: UseResizeDragParams<TState>) => ResizeDrag;
|
|
29
|
+
export {};
|