@revolist/revogrid 4.12.2 → 4.12.3
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/cjs/{app-globals-66b5e3d1.js → app-globals-f72a6199.js} +2 -2
- package/dist/cjs/{app-globals-66b5e3d1.js.map → app-globals-f72a6199.js.map} +1 -1
- package/dist/cjs/{column.drag.plugin-2c24c512.js → column.drag.plugin-c4e46169.js} +181 -187
- package/dist/cjs/column.drag.plugin-c4e46169.js.map +1 -0
- package/dist/cjs/{column.service-cb3d757e.js → column.service-4339fa5d.js} +73 -57
- package/dist/cjs/column.service-4339fa5d.js.map +1 -0
- package/dist/cjs/{dimension.helpers-4527475f.js → dimension.helpers-5b822a09.js} +3 -2
- package/dist/cjs/dimension.helpers-5b822a09.js.map +1 -0
- package/dist/cjs/{edit.utils-787a9e1d.js → edit.utils-32d4c9e4.js} +2 -2
- package/dist/cjs/{edit.utils-787a9e1d.js.map → edit.utils-32d4c9e4.js.map} +1 -1
- package/dist/cjs/{filter.button-48acc2db.js → filter.button-2708e602.js} +2 -2
- package/dist/cjs/{filter.button-48acc2db.js.map → filter.button-2708e602.js.map} +1 -1
- package/dist/cjs/{header-cell-renderer-9d81a1fe.js → header-cell-renderer-aa96a9bd.js} +3 -3
- package/dist/cjs/{header-cell-renderer-9d81a1fe.js.map → header-cell-renderer-aa96a9bd.js.map} +1 -1
- package/dist/cjs/{index-bdea2cb6.js → index-8006d065.js} +8 -1
- package/dist/cjs/index-8006d065.js.map +1 -0
- package/dist/cjs/index.cjs.js +15 -10
- package/dist/cjs/index.cjs.js.map +1 -1
- package/dist/cjs/{key.utils-fcd0dda2.js → key.utils-05f14738.js} +2 -2
- package/dist/cjs/{key.utils-fcd0dda2.js.map → key.utils-05f14738.js.map} +1 -1
- package/dist/cjs/loader.cjs.js +2 -2
- package/dist/cjs/revo-grid.cjs.entry.js +7 -7
- package/dist/cjs/revo-grid.cjs.js +2 -2
- package/dist/cjs/revogr-attribution_7.cjs.entry.js +7 -7
- package/dist/cjs/revogr-clipboard_3.cjs.entry.js +5 -5
- package/dist/cjs/revogr-data_4.cjs.entry.js +15 -51
- package/dist/cjs/revogr-data_4.cjs.entry.js.map +1 -1
- package/dist/cjs/revogr-filter-panel.cjs.entry.js +2 -2
- package/dist/cjs/sorting.sign-b22d3d68.js +72 -0
- package/dist/cjs/sorting.sign-b22d3d68.js.map +1 -0
- package/dist/cjs/{text-editor-9f64bd5e.js → text-editor-82f53111.js} +3 -3
- package/dist/cjs/{text-editor-9f64bd5e.js.map → text-editor-82f53111.js.map} +1 -1
- package/dist/cjs/{throttle-6a2a8510.js → throttle-08957661.js} +2 -2
- package/dist/cjs/{throttle-6a2a8510.js.map → throttle-08957661.js.map} +1 -1
- package/dist/cjs/{viewport.store-0c68c932.js → viewport.store-4dbfeaa3.js} +2 -2
- package/dist/cjs/{viewport.store-0c68c932.js.map → viewport.store-4dbfeaa3.js.map} +1 -1
- package/dist/collection/components/data/cell-renderer.js +1 -1
- package/dist/collection/components/data/cell-renderer.js.map +1 -1
- package/dist/collection/components/data/revogr-data.js +2 -1
- package/dist/collection/components/data/revogr-data.js.map +1 -1
- package/dist/collection/plugins/filter/filter.plugin.js +1 -5
- package/dist/collection/plugins/filter/filter.plugin.js.map +1 -1
- package/dist/collection/plugins/groupingRow/grouping.row.plugin.js +57 -57
- package/dist/collection/plugins/groupingRow/grouping.row.plugin.js.map +1 -1
- package/dist/collection/plugins/groupingRow/grouping.row.renderer.js +16 -6
- package/dist/collection/plugins/groupingRow/grouping.row.renderer.js.map +1 -1
- package/dist/collection/plugins/groupingRow/grouping.row.types.js.map +1 -1
- package/dist/collection/plugins/groupingRow/grouping.service.js +70 -54
- package/dist/collection/plugins/groupingRow/grouping.service.js.map +1 -1
- package/dist/collection/plugins/index.js +0 -1
- package/dist/collection/plugins/index.js.map +1 -1
- package/dist/collection/serve/data.js +5 -0
- package/dist/collection/store/dataSource/trimmed.plugin.js +1 -0
- package/dist/collection/store/dataSource/trimmed.plugin.js.map +1 -1
- package/dist/collection/types/interfaces.js.map +1 -1
- package/dist/esm/{app-globals-60fd3b54.js → app-globals-6b929fd8.js} +2 -2
- package/dist/esm/{app-globals-60fd3b54.js.map → app-globals-6b929fd8.js.map} +1 -1
- package/dist/esm/{column.drag.plugin-6a84d7b0.js → column.drag.plugin-94964d01.js} +180 -188
- package/dist/esm/column.drag.plugin-94964d01.js.map +1 -0
- package/dist/esm/{column.service-ff8f75de.js → column.service-c0d404a6.js} +74 -58
- package/dist/esm/column.service-c0d404a6.js.map +1 -0
- package/dist/esm/{dimension.helpers-a4dd4f76.js → dimension.helpers-5567e424.js} +3 -2
- package/dist/esm/dimension.helpers-5567e424.js.map +1 -0
- package/dist/esm/{edit.utils-dd8b5cd7.js → edit.utils-b59306be.js} +2 -2
- package/dist/esm/{edit.utils-dd8b5cd7.js.map → edit.utils-b59306be.js.map} +1 -1
- package/dist/esm/{filter.button-d9b783c1.js → filter.button-84396156.js} +2 -2
- package/dist/esm/{filter.button-d9b783c1.js.map → filter.button-84396156.js.map} +1 -1
- package/dist/esm/{header-cell-renderer-4508273a.js → header-cell-renderer-0f5bd4a9.js} +3 -3
- package/dist/esm/{header-cell-renderer-4508273a.js.map → header-cell-renderer-0f5bd4a9.js.map} +1 -1
- package/dist/esm/{index-b5695870.js → index-f6fae858.js} +8 -2
- package/dist/esm/index-f6fae858.js.map +1 -0
- package/dist/esm/index.js +11 -11
- package/dist/esm/{key.utils-38b263fb.js → key.utils-3632161b.js} +2 -2
- package/dist/esm/{key.utils-38b263fb.js.map → key.utils-3632161b.js.map} +1 -1
- package/dist/esm/loader.js +3 -3
- package/dist/esm/revo-grid.entry.js +7 -7
- package/dist/esm/revo-grid.js +3 -3
- package/dist/esm/revogr-attribution_7.entry.js +7 -7
- package/dist/esm/revogr-clipboard_3.entry.js +5 -5
- package/dist/esm/revogr-data_4.entry.js +13 -49
- package/dist/esm/revogr-data_4.entry.js.map +1 -1
- package/dist/esm/revogr-filter-panel.entry.js +2 -2
- package/dist/esm/sorting.sign-a92ff239.js +65 -0
- package/dist/esm/sorting.sign-a92ff239.js.map +1 -0
- package/dist/esm/{text-editor-7fbbcea7.js → text-editor-e47e56c3.js} +3 -3
- package/dist/esm/{text-editor-7fbbcea7.js.map → text-editor-e47e56c3.js.map} +1 -1
- package/dist/esm/{throttle-61be638a.js → throttle-05489451.js} +2 -2
- package/dist/esm/{throttle-61be638a.js.map → throttle-05489451.js.map} +1 -1
- package/dist/esm/{viewport.store-e66c1a9b.js → viewport.store-c18a25a6.js} +2 -2
- package/dist/esm/{viewport.store-e66c1a9b.js.map → viewport.store-c18a25a6.js.map} +1 -1
- package/dist/revo-grid/app-globals-6b929fd8.js +5 -0
- package/dist/revo-grid/{column.drag.plugin-6a84d7b0.js → column.drag.plugin-94964d01.js} +2 -2
- package/dist/revo-grid/column.drag.plugin-94964d01.js.map +1 -0
- package/dist/revo-grid/column.service-c0d404a6.js +5 -0
- package/dist/revo-grid/column.service-c0d404a6.js.map +1 -0
- package/dist/revo-grid/{dimension.helpers-a4dd4f76.js → dimension.helpers-5567e424.js} +2 -2
- package/dist/revo-grid/{dimension.helpers-a4dd4f76.js.map → dimension.helpers-5567e424.js.map} +1 -1
- package/dist/revo-grid/edit.utils-b59306be.js +5 -0
- package/dist/revo-grid/{filter.button-d9b783c1.js → filter.button-84396156.js} +2 -2
- package/dist/revo-grid/{header-cell-renderer-4508273a.js → header-cell-renderer-0f5bd4a9.js} +2 -2
- package/dist/revo-grid/index-f6fae858.js +6 -0
- package/dist/revo-grid/index-f6fae858.js.map +1 -0
- package/dist/revo-grid/index.esm.js +1 -1
- package/dist/revo-grid/index.esm.js.map +1 -1
- package/dist/revo-grid/key.utils-3632161b.js +5 -0
- package/dist/revo-grid/revo-grid.entry.js +1 -1
- package/dist/revo-grid/revo-grid.esm.js +1 -1
- package/dist/revo-grid/revogr-attribution_7.entry.js +1 -1
- package/dist/revo-grid/revogr-clipboard_3.entry.js +1 -1
- package/dist/revo-grid/revogr-data_4.entry.js +1 -1
- package/dist/revo-grid/revogr-data_4.entry.js.map +1 -1
- package/dist/revo-grid/revogr-filter-panel.entry.js +1 -1
- package/dist/revo-grid/sorting.sign-a92ff239.js +5 -0
- package/dist/revo-grid/sorting.sign-a92ff239.js.map +1 -0
- package/dist/revo-grid/text-editor-e47e56c3.js +5 -0
- package/dist/revo-grid/{throttle-61be638a.js → throttle-05489451.js} +2 -2
- package/dist/revo-grid/{viewport.store-e66c1a9b.js → viewport.store-c18a25a6.js} +2 -2
- package/dist/types/plugins/filter/filter.plugin.d.ts +2 -1
- package/dist/types/plugins/groupingRow/grouping.row.plugin.d.ts +7 -4
- package/dist/types/plugins/groupingRow/grouping.row.renderer.d.ts +6 -3
- package/dist/types/plugins/groupingRow/grouping.row.types.d.ts +6 -3
- package/dist/types/plugins/groupingRow/grouping.service.d.ts +0 -1
- package/dist/types/plugins/index.d.ts +0 -1
- package/dist/types/store/dataSource/trimmed.plugin.d.ts +3 -1
- package/dist/types/types/interfaces.d.ts +19 -0
- package/hydrate/index.js +186 -157
- package/hydrate/index.mjs +186 -157
- package/package.json +1 -1
- package/standalone/column.service.js +70 -54
- package/standalone/column.service.js.map +1 -1
- package/standalone/data.store.js +1 -0
- package/standalone/data.store.js.map +1 -1
- package/standalone/index.js +2 -1
- package/standalone/index.js.map +1 -1
- package/standalone/revo-grid.js +174 -182
- package/standalone/revo-grid.js.map +1 -1
- package/standalone/revogr-data2.js +18 -8
- package/standalone/revogr-data2.js.map +1 -1
- package/dist/cjs/column.drag.plugin-2c24c512.js.map +0 -1
- package/dist/cjs/column.service-cb3d757e.js.map +0 -1
- package/dist/cjs/dimension.helpers-4527475f.js.map +0 -1
- package/dist/cjs/index-bdea2cb6.js.map +0 -1
- package/dist/cjs/sorting.sign-83d75503.js +0 -15
- package/dist/cjs/sorting.sign-83d75503.js.map +0 -1
- package/dist/esm/column.drag.plugin-6a84d7b0.js.map +0 -1
- package/dist/esm/column.service-ff8f75de.js.map +0 -1
- package/dist/esm/dimension.helpers-a4dd4f76.js.map +0 -1
- package/dist/esm/index-b5695870.js.map +0 -1
- package/dist/esm/sorting.sign-e096163a.js +0 -13
- package/dist/esm/sorting.sign-e096163a.js.map +0 -1
- package/dist/revo-grid/app-globals-60fd3b54.js +0 -5
- package/dist/revo-grid/column.drag.plugin-6a84d7b0.js.map +0 -1
- package/dist/revo-grid/column.service-ff8f75de.js +0 -5
- package/dist/revo-grid/column.service-ff8f75de.js.map +0 -1
- package/dist/revo-grid/edit.utils-dd8b5cd7.js +0 -5
- package/dist/revo-grid/index-b5695870.js +0 -6
- package/dist/revo-grid/index-b5695870.js.map +0 -1
- package/dist/revo-grid/key.utils-38b263fb.js +0 -5
- package/dist/revo-grid/sorting.sign-e096163a.js +0 -5
- package/dist/revo-grid/sorting.sign-e096163a.js.map +0 -1
- package/dist/revo-grid/text-editor-7fbbcea7.js +0 -5
- /package/dist/revo-grid/{app-globals-60fd3b54.js.map → app-globals-6b929fd8.js.map} +0 -0
- /package/dist/revo-grid/{edit.utils-dd8b5cd7.js.map → edit.utils-b59306be.js.map} +0 -0
- /package/dist/revo-grid/{filter.button-d9b783c1.js.map → filter.button-84396156.js.map} +0 -0
- /package/dist/revo-grid/{header-cell-renderer-4508273a.js.map → header-cell-renderer-0f5bd4a9.js.map} +0 -0
- /package/dist/revo-grid/{key.utils-38b263fb.js.map → key.utils-3632161b.js.map} +0 -0
- /package/dist/revo-grid/{text-editor-7fbbcea7.js.map → text-editor-e47e56c3.js.map} +0 -0
- /package/dist/revo-grid/{throttle-61be638a.js.map → throttle-05489451.js.map} +0 -0
- /package/dist/revo-grid/{viewport.store-e66c1a9b.js.map → viewport.store-c18a25a6.js.map} +0 -0
|
@@ -2,6 +2,7 @@ import { type VNode } from '../../stencil-public-runtime';
|
|
|
2
2
|
import type { ColumnProp, ColumnRegular, DataType, PluginProviders } from "../../types/index";
|
|
3
3
|
import { BasePlugin } from '../base.plugin';
|
|
4
4
|
import type { ColumnFilterConfig, FilterCollectionItem, LogicFunction, MultiFilterItem, ShowData } from './filter.types';
|
|
5
|
+
import { TrimmedEntity } from "../../store/index";
|
|
5
6
|
export * from './filter.types';
|
|
6
7
|
export * from './filter.indexed';
|
|
7
8
|
export * from './filter.button';
|
|
@@ -67,6 +68,6 @@ export declare class FilterPlugin extends BasePlugin {
|
|
|
67
68
|
/**
|
|
68
69
|
* Get trimmed rows based on filter
|
|
69
70
|
*/
|
|
70
|
-
getRowFilter(rows: DataType[], filterItems: MultiFilterItem, columnByProp: Record<string, ColumnRegular>):
|
|
71
|
+
getRowFilter(rows: DataType[], filterItems: MultiFilterItem, columnByProp: Record<string, ColumnRegular>): TrimmedEntity;
|
|
71
72
|
private shouldTrimRow;
|
|
72
73
|
}
|
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
import { type DSourceState } from "../../store/index";
|
|
2
|
-
import { BasePlugin } from '../base.plugin';
|
|
3
|
-
import type { GroupingOptions, OnExpandEvent } from './grouping.row.types';
|
|
4
2
|
import type { DataType, DimensionRows, PluginProviders } from "../../types/index";
|
|
3
|
+
import { BasePlugin } from '../base.plugin';
|
|
5
4
|
import type { Observable } from '../../utils';
|
|
5
|
+
import type { GroupingOptions, OnExpandEvent } from './grouping.row.types';
|
|
6
|
+
export * from './grouping.row.expand.service';
|
|
7
|
+
export * from './grouping.row.types';
|
|
8
|
+
export * from './grouping.service';
|
|
9
|
+
export * from './grouping.row.renderer';
|
|
6
10
|
declare global {
|
|
7
11
|
interface HTMLRevoGridElementEventMap {
|
|
8
12
|
groupexpandclick: OnExpandEvent;
|
|
@@ -21,7 +25,6 @@ export declare class GroupingRowPlugin extends BasePlugin {
|
|
|
21
25
|
private onDrag;
|
|
22
26
|
private beforeTrimmedApply;
|
|
23
27
|
private isSortingRunning;
|
|
24
|
-
private subscribe;
|
|
25
28
|
/**
|
|
26
29
|
* Starts global source update with group clearing and applying new one
|
|
27
30
|
* Initiated when need to reapply grouping
|
|
@@ -34,7 +37,7 @@ export declare class GroupingRowPlugin extends BasePlugin {
|
|
|
34
37
|
*/
|
|
35
38
|
private onDataSet;
|
|
36
39
|
/**
|
|
37
|
-
*
|
|
40
|
+
* External call to apply grouping. Called by revogrid when prop changed.
|
|
38
41
|
*/
|
|
39
42
|
setGrouping(options: GroupingOptions): void;
|
|
40
43
|
clearGrouping(): void;
|
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
import { RowProps } from '../../components/data/row-renderer';
|
|
2
2
|
import { GroupLabelTemplateFunc } from './grouping.row.types';
|
|
3
|
-
import { DataType, PositionItem } from "../../types/index";
|
|
3
|
+
import { DataType, PositionItem, Providers } from "../../types/index";
|
|
4
4
|
interface GroupRowPros extends RowProps {
|
|
5
5
|
model: DataType;
|
|
6
6
|
hasExpand: boolean;
|
|
7
|
+
providers: Providers;
|
|
7
8
|
groupingCustomRenderer?: GroupLabelTemplateFunc | null;
|
|
8
9
|
}
|
|
9
|
-
type
|
|
10
|
-
declare
|
|
10
|
+
export type RowGroupingProps = GroupRowPros & PositionItem;
|
|
11
|
+
export declare function expandEvent(e: MouseEvent, model: DataType, virtualIndex: number): void;
|
|
12
|
+
export declare const GroupingRowRenderer: (props: RowGroupingProps) => any;
|
|
13
|
+
export declare const expandSvgIconVNode: (expanded?: boolean) => any;
|
|
11
14
|
export default GroupingRowRenderer;
|
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
import type { VNode } from '../../stencil-public-runtime';
|
|
2
|
-
import type { HyperFunc, ColumnProp, DimensionRows, DataType } from "../../types/index";
|
|
3
|
-
|
|
2
|
+
import type { HyperFunc, ColumnProp, DimensionRows, DataType, Providers } from "../../types/index";
|
|
3
|
+
interface GroupTemplateProp {
|
|
4
4
|
name: string;
|
|
5
5
|
itemIndex: number;
|
|
6
6
|
expanded: boolean;
|
|
7
7
|
depth: number;
|
|
8
|
+
providers: Providers;
|
|
8
9
|
model?: DataType;
|
|
9
|
-
}
|
|
10
|
+
}
|
|
11
|
+
export type GroupLabelTemplateFunc = (createElement: HyperFunc<VNode>, props: GroupTemplateProp) => any;
|
|
10
12
|
export type GroupingOptions = {
|
|
11
13
|
/**
|
|
12
14
|
* Column props to which grouping will be applied
|
|
@@ -59,3 +61,4 @@ export type ExpandedOptions = {
|
|
|
59
61
|
*/
|
|
60
62
|
groupLabelTemplate?: GroupLabelTemplateFunc;
|
|
61
63
|
};
|
|
64
|
+
export {};
|
|
@@ -14,7 +14,6 @@ export declare function gatherGrouping(array: DataType[], columnProps: ColumnPro
|
|
|
14
14
|
depth: number;
|
|
15
15
|
trimmed: Record<number, boolean>;
|
|
16
16
|
oldNewIndexMap: Record<number, number>;
|
|
17
|
-
childrenByGroup: Record<string, number[]>;
|
|
18
17
|
};
|
|
19
18
|
export declare function getGroupingName(rgRow?: DataType): any;
|
|
20
19
|
type GroupingItem = {
|
|
@@ -7,7 +7,6 @@ export * from './filter/filter.plugin';
|
|
|
7
7
|
export * from './groupingColumn/columnGroupsRenderer';
|
|
8
8
|
export * from './groupingColumn/headerGroupRenderer';
|
|
9
9
|
export * from './groupingRow/grouping.row.plugin';
|
|
10
|
-
export * from './groupingRow/grouping.service';
|
|
11
10
|
export * from './moveColumn/column.drag.plugin';
|
|
12
11
|
export * from './sorting/sorting.plugin';
|
|
13
12
|
export * from './sorting/sorting.sign';
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { Observable, PluginSubscribe } from '../../utils';
|
|
2
2
|
import { DSourceState, GDataType } from './data.store';
|
|
3
|
-
export type TrimmedEntity =
|
|
3
|
+
export type TrimmedEntity = {
|
|
4
|
+
[physicalIndexInSource: number]: boolean;
|
|
5
|
+
};
|
|
4
6
|
export type Trimmed = Record<string, TrimmedEntity>;
|
|
5
7
|
/**
|
|
6
8
|
* Hide items from main collection
|
|
@@ -491,12 +491,31 @@ export interface VirtualPositionItem extends PositionItem {
|
|
|
491
491
|
size: number;
|
|
492
492
|
}
|
|
493
493
|
export type DataSourceState<T extends DataType | ColumnRegular, ST extends DimensionRows | DimensionCols> = {
|
|
494
|
+
/**
|
|
495
|
+
* List of indices for visible items in the grid
|
|
496
|
+
*/
|
|
494
497
|
items: number[];
|
|
498
|
+
/**
|
|
499
|
+
* List of indices for visible items in the grid, even if they are trimmed
|
|
500
|
+
* Update this collection if you want to change items order
|
|
501
|
+
*/
|
|
495
502
|
proxyItems: number[];
|
|
503
|
+
/**
|
|
504
|
+
* Actual data array
|
|
505
|
+
*/
|
|
496
506
|
source: T[];
|
|
507
|
+
/**
|
|
508
|
+
* Grouping information
|
|
509
|
+
*/
|
|
497
510
|
groupingDepth: number;
|
|
498
511
|
groups: Record<any, any>;
|
|
512
|
+
/**
|
|
513
|
+
* Dimension type, can be rows or columns depending on context
|
|
514
|
+
*/
|
|
499
515
|
type: ST;
|
|
516
|
+
/**
|
|
517
|
+
* Info for trimming or filtering the data, to hide entities from visible data source
|
|
518
|
+
*/
|
|
500
519
|
trimmed: Record<any, any>;
|
|
501
520
|
};
|
|
502
521
|
export interface PositionItem {
|
package/hydrate/index.js
CHANGED
|
@@ -2589,6 +2589,12 @@ var registerHost = (elm, cmpMeta) => {
|
|
|
2589
2589
|
elm["s-rc"] = [];
|
|
2590
2590
|
return hostRefs.set(elm, hostRef);
|
|
2591
2591
|
};
|
|
2592
|
+
var Build = {
|
|
2593
|
+
isDev: false,
|
|
2594
|
+
isBrowser: false,
|
|
2595
|
+
isServer: true,
|
|
2596
|
+
isTesting: false
|
|
2597
|
+
};
|
|
2592
2598
|
var styles = /* @__PURE__ */ new Map();
|
|
2593
2599
|
|
|
2594
2600
|
|
|
@@ -6640,6 +6646,7 @@ const trimmedPlugin$1 = (store) => ({
|
|
|
6640
6646
|
// full sorted items list
|
|
6641
6647
|
const proxy = store.get('proxyItems');
|
|
6642
6648
|
const trimmed = gatherTrimmedItems(newVal);
|
|
6649
|
+
// filter our physical indexes which are not trimmed
|
|
6643
6650
|
const newItems = proxy.filter(v => !trimmed[v]);
|
|
6644
6651
|
// set trimmed items in store
|
|
6645
6652
|
store.set('items', newItems);
|
|
@@ -8791,13 +8798,70 @@ function getSource(source, items, withoutGrouping = false) {
|
|
|
8791
8798
|
function getExpanded(model = {}) {
|
|
8792
8799
|
return model[GROUP_EXPANDED];
|
|
8793
8800
|
}
|
|
8801
|
+
function flattenGroupMaps({ groupedValues, parentIds, isExpanded, itemIndex, expandedAll, prevExpanded, columnProps, }) {
|
|
8802
|
+
const depth = parentIds.length;
|
|
8803
|
+
const sourceWithGroups = [];
|
|
8804
|
+
// collapse all groups in the beginning
|
|
8805
|
+
let trimmed = {};
|
|
8806
|
+
// index mapping
|
|
8807
|
+
let oldNewIndexMap = {};
|
|
8808
|
+
groupedValues.forEach((innerGroupedValues, groupId) => {
|
|
8809
|
+
const levelIds = [...parentIds, groupId];
|
|
8810
|
+
const mergedIds = levelIds.join(',');
|
|
8811
|
+
const isGroupExpanded = isExpanded && (!!expandedAll || !!prevExpanded[mergedIds]);
|
|
8812
|
+
sourceWithGroups.push({
|
|
8813
|
+
[PSEUDO_GROUP_ITEM]: groupId,
|
|
8814
|
+
[GROUP_DEPTH]: depth,
|
|
8815
|
+
[PSEUDO_GROUP_ITEM_ID]: JSON.stringify(levelIds),
|
|
8816
|
+
[PSEUDO_GROUP_ITEM_VALUE]: mergedIds,
|
|
8817
|
+
[GROUP_EXPANDED]: isGroupExpanded,
|
|
8818
|
+
[GROUP_COLUMN_PROP]: columnProps[depth],
|
|
8819
|
+
[columnProps[depth]]: groupId,
|
|
8820
|
+
});
|
|
8821
|
+
itemIndex += 1;
|
|
8822
|
+
if (!isGroupExpanded && depth) {
|
|
8823
|
+
trimmed[itemIndex] = true;
|
|
8824
|
+
}
|
|
8825
|
+
if (Array.isArray(innerGroupedValues)) {
|
|
8826
|
+
innerGroupedValues.forEach(value => {
|
|
8827
|
+
itemIndex += 1;
|
|
8828
|
+
if (!isGroupExpanded) {
|
|
8829
|
+
trimmed[itemIndex] = true;
|
|
8830
|
+
}
|
|
8831
|
+
oldNewIndexMap[value[GROUP_ORIGINAL_INDEX]] = itemIndex;
|
|
8832
|
+
});
|
|
8833
|
+
sourceWithGroups.push(...innerGroupedValues);
|
|
8834
|
+
}
|
|
8835
|
+
else {
|
|
8836
|
+
const children = flattenGroupMaps({
|
|
8837
|
+
groupedValues: innerGroupedValues,
|
|
8838
|
+
parentIds: levelIds,
|
|
8839
|
+
isExpanded: isGroupExpanded,
|
|
8840
|
+
itemIndex,
|
|
8841
|
+
expandedAll,
|
|
8842
|
+
prevExpanded,
|
|
8843
|
+
columnProps,
|
|
8844
|
+
});
|
|
8845
|
+
sourceWithGroups.push(...children.source);
|
|
8846
|
+
trimmed = Object.assign(Object.assign({}, children.trimmed), trimmed);
|
|
8847
|
+
oldNewIndexMap = Object.assign(Object.assign({}, children.oldNewIndexMap), oldNewIndexMap);
|
|
8848
|
+
itemIndex = children.itemIndex;
|
|
8849
|
+
}
|
|
8850
|
+
});
|
|
8851
|
+
return {
|
|
8852
|
+
source: sourceWithGroups,
|
|
8853
|
+
oldNewIndexMap,
|
|
8854
|
+
trimmed,
|
|
8855
|
+
itemIndex,
|
|
8856
|
+
};
|
|
8857
|
+
}
|
|
8794
8858
|
/**
|
|
8795
8859
|
* Gather data for grouping
|
|
8796
8860
|
* @param array - flat data array
|
|
8797
8861
|
* @param columnProps - ids of groups
|
|
8798
8862
|
* @param expanded - potentially expanded items if present
|
|
8799
8863
|
*/
|
|
8800
|
-
function gatherGrouping(array, columnProps, { prevExpanded, expandedAll, getGroupValue = getGroupValueDefault, }) {
|
|
8864
|
+
function gatherGrouping(array, columnProps, { prevExpanded = {}, expandedAll = false, getGroupValue = getGroupValueDefault, }) {
|
|
8801
8865
|
const groupedItems = new Map();
|
|
8802
8866
|
array.forEach((item, originalIndex) => {
|
|
8803
8867
|
const groupLevelValues = columnProps.map(groupId => getGroupValue(item, groupId));
|
|
@@ -8810,72 +8874,31 @@ function gatherGrouping(array, columnProps, { prevExpanded, expandedAll, getGrou
|
|
|
8810
8874
|
currentGroupLevel = currentGroupLevel.get(value);
|
|
8811
8875
|
});
|
|
8812
8876
|
if (!currentGroupLevel.has(lastLevelValue)) {
|
|
8813
|
-
|
|
8877
|
+
const groupItems = [];
|
|
8878
|
+
currentGroupLevel.set(lastLevelValue, groupItems);
|
|
8814
8879
|
}
|
|
8815
8880
|
const lastLevelItems = currentGroupLevel.get(lastLevelValue);
|
|
8816
8881
|
lastLevelItems.push(Object.assign(Object.assign({}, item), { [GROUP_ORIGINAL_INDEX]: originalIndex }));
|
|
8817
8882
|
});
|
|
8818
|
-
let itemIndex = -1;
|
|
8819
8883
|
const groupingDepth = columnProps.length;
|
|
8820
|
-
|
|
8821
|
-
|
|
8822
|
-
|
|
8823
|
-
|
|
8824
|
-
|
|
8825
|
-
|
|
8826
|
-
|
|
8827
|
-
|
|
8828
|
-
|
|
8829
|
-
groupedValues.forEach((innerGroupedValues, groupId) => {
|
|
8830
|
-
const levelIds = [...parentIds, groupId];
|
|
8831
|
-
const mergedIds = levelIds.join(',');
|
|
8832
|
-
const isGroupExpanded = isExpanded && (!!expandedAll || !!(prevExpanded === null || prevExpanded === void 0 ? void 0 : prevExpanded[mergedIds]));
|
|
8833
|
-
sourceWithGroups.push({
|
|
8834
|
-
[PSEUDO_GROUP_ITEM]: groupId,
|
|
8835
|
-
[GROUP_DEPTH]: depth,
|
|
8836
|
-
[PSEUDO_GROUP_ITEM_ID]: JSON.stringify(levelIds),
|
|
8837
|
-
[PSEUDO_GROUP_ITEM_VALUE]: mergedIds,
|
|
8838
|
-
[GROUP_EXPANDED]: isGroupExpanded,
|
|
8839
|
-
[GROUP_COLUMN_PROP]: columnProps[depth],
|
|
8840
|
-
[columnProps[depth]]: groupId,
|
|
8841
|
-
});
|
|
8842
|
-
itemIndex += 1;
|
|
8843
|
-
if (!isGroupExpanded && depth) {
|
|
8844
|
-
trimmed[itemIndex] = true;
|
|
8845
|
-
}
|
|
8846
|
-
if (Array.isArray(innerGroupedValues)) {
|
|
8847
|
-
innerGroupedValues.forEach(value => {
|
|
8848
|
-
itemIndex += 1;
|
|
8849
|
-
if (!isGroupExpanded) {
|
|
8850
|
-
trimmed[itemIndex] = true;
|
|
8851
|
-
}
|
|
8852
|
-
oldNewIndexMap[value[GROUP_ORIGINAL_INDEX]] = itemIndex;
|
|
8853
|
-
const pseudoGroupTestIds = levelIds.map((_value, index) => levelIds.slice(0, index + 1).join(','));
|
|
8854
|
-
pseudoGroupTestIds.forEach(pseudoGroupTestId => {
|
|
8855
|
-
if (!pseudoGroupTest[pseudoGroupTestId]) {
|
|
8856
|
-
pseudoGroupTest[pseudoGroupTestId] = [];
|
|
8857
|
-
}
|
|
8858
|
-
pseudoGroupTest[pseudoGroupTestId].push(itemIndex);
|
|
8859
|
-
});
|
|
8860
|
-
});
|
|
8861
|
-
sourceWithGroups.push(...innerGroupedValues);
|
|
8862
|
-
}
|
|
8863
|
-
else {
|
|
8864
|
-
flattenGroupMaps(innerGroupedValues, levelIds, isGroupExpanded);
|
|
8865
|
-
}
|
|
8866
|
-
});
|
|
8867
|
-
}
|
|
8868
|
-
flattenGroupMaps(groupedItems, [], true);
|
|
8884
|
+
const { source: sourceWithGroups, trimmed, oldNewIndexMap } = flattenGroupMaps({
|
|
8885
|
+
groupedValues: groupedItems,
|
|
8886
|
+
parentIds: [],
|
|
8887
|
+
isExpanded: true,
|
|
8888
|
+
itemIndex: -1,
|
|
8889
|
+
expandedAll,
|
|
8890
|
+
prevExpanded,
|
|
8891
|
+
columnProps
|
|
8892
|
+
});
|
|
8869
8893
|
return {
|
|
8870
8894
|
sourceWithGroups, // updates source mirror
|
|
8871
8895
|
depth: groupingDepth, // largest depth for grouping
|
|
8872
8896
|
trimmed, // used for expand/collapse grouping values
|
|
8873
8897
|
oldNewIndexMap, // used for mapping old values to new
|
|
8874
|
-
childrenByGroup: pseudoGroupTest, // used to get child items in group
|
|
8875
8898
|
};
|
|
8876
8899
|
}
|
|
8877
8900
|
function getGroupingName(rgRow) {
|
|
8878
|
-
return rgRow
|
|
8901
|
+
return rgRow === null || rgRow === void 0 ? void 0 : rgRow[PSEUDO_GROUP_ITEM];
|
|
8879
8902
|
}
|
|
8880
8903
|
function isGrouping(rgRow) {
|
|
8881
8904
|
return typeof (rgRow === null || rgRow === void 0 ? void 0 : rgRow[PSEUDO_GROUP_ITEM]) !== 'undefined';
|
|
@@ -11740,11 +11763,7 @@ class FilterPlugin extends BasePlugin {
|
|
|
11740
11763
|
if (defaultPrevented) {
|
|
11741
11764
|
return;
|
|
11742
11765
|
}
|
|
11743
|
-
|
|
11744
|
-
const isAddedEvent = await this.revogrid.addTrimmed(detail.itemsToFilter, FILTER_TRIMMED_TYPE);
|
|
11745
|
-
if (isAddedEvent.defaultPrevented) {
|
|
11746
|
-
return;
|
|
11747
|
-
}
|
|
11766
|
+
this.providers.data.setTrimmed({ [FILTER_TRIMMED_TYPE]: detail.itemsToFilter });
|
|
11748
11767
|
// applies the hasFilter to the columns to show filter icon
|
|
11749
11768
|
this.providers.column.updateColumns(columnsToUpdate);
|
|
11750
11769
|
this.emit('afterfilterapply', {
|
|
@@ -12756,6 +12775,56 @@ function processDoubleConversionTrimmed(initiallyTrimed, firstLevelMap, secondLe
|
|
|
12756
12775
|
return trimemedOptionsToUpgrade;
|
|
12757
12776
|
}
|
|
12758
12777
|
|
|
12778
|
+
const PADDING_DEPTH = 10;
|
|
12779
|
+
const RowRenderer = ({ rowClass, index, size, start, depth }, cells) => {
|
|
12780
|
+
const props = Object.assign({ [DATA_ROW]: index });
|
|
12781
|
+
return (hAsync("div", Object.assign({}, props, { class: `rgRow ${rowClass || ''}`, style: {
|
|
12782
|
+
height: `${size}px`,
|
|
12783
|
+
transform: `translateY(${start}px)`,
|
|
12784
|
+
paddingLeft: depth ? `${PADDING_DEPTH * depth}px` : undefined,
|
|
12785
|
+
} }), cells));
|
|
12786
|
+
};
|
|
12787
|
+
|
|
12788
|
+
function expandEvent(e, model, virtualIndex) {
|
|
12789
|
+
var _a;
|
|
12790
|
+
const event = new CustomEvent('groupexpandclick', {
|
|
12791
|
+
detail: {
|
|
12792
|
+
model,
|
|
12793
|
+
virtualIndex,
|
|
12794
|
+
},
|
|
12795
|
+
cancelable: true,
|
|
12796
|
+
bubbles: true,
|
|
12797
|
+
});
|
|
12798
|
+
(_a = e.target) === null || _a === void 0 ? void 0 : _a.dispatchEvent(event);
|
|
12799
|
+
}
|
|
12800
|
+
const GroupingRowRenderer = (props) => {
|
|
12801
|
+
const { model, itemIndex, hasExpand, groupingCustomRenderer, providers } = props;
|
|
12802
|
+
const name = model[PSEUDO_GROUP_ITEM];
|
|
12803
|
+
const expanded = model[GROUP_EXPANDED];
|
|
12804
|
+
const depth = parseInt(model[GROUP_DEPTH], 10) || 0;
|
|
12805
|
+
if (!hasExpand) {
|
|
12806
|
+
return hAsync(RowRenderer, Object.assign({}, props, { rowClass: "groupingRow", depth: depth }));
|
|
12807
|
+
}
|
|
12808
|
+
if (groupingCustomRenderer) {
|
|
12809
|
+
return (hAsync(RowRenderer, Object.assign({}, props, { rowClass: "groupingRow", depth: depth }),
|
|
12810
|
+
hAsync("div", { onClick: e => expandEvent(e, model, itemIndex) }, groupingCustomRenderer(hAsync, {
|
|
12811
|
+
name,
|
|
12812
|
+
model,
|
|
12813
|
+
itemIndex,
|
|
12814
|
+
expanded,
|
|
12815
|
+
depth,
|
|
12816
|
+
providers,
|
|
12817
|
+
}))));
|
|
12818
|
+
}
|
|
12819
|
+
return (hAsync(RowRenderer, Object.assign({}, props, { rowClass: "groupingRow", depth: depth }),
|
|
12820
|
+
hAsync("button", { class: { [GROUP_EXPAND_BTN]: true }, onClick: e => expandEvent(e, model, itemIndex) }, expandSvgIconVNode(expanded)),
|
|
12821
|
+
name));
|
|
12822
|
+
};
|
|
12823
|
+
const expandSvgIconVNode = (expanded = false) => {
|
|
12824
|
+
return (hAsync("svg", { "aria-hidden": "true", style: { transform: `rotate(${!expanded ? -90 : 0}deg)` }, focusable: "false", viewBox: "0 0 448 512" },
|
|
12825
|
+
hAsync("path", { fill: "currentColor", d: "M207.029 381.476L12.686 187.132c-9.373-9.373-9.373-24.569 0-33.941l22.667-22.667c9.357-9.357 24.522-9.375 33.901-.04L224 284.505l154.745-154.021c9.379-9.335 24.544-9.317 33.901.04l22.667 22.667c9.373 9.373 9.373 24.569 0 33.941L240.971 381.476c-9.373 9.372-24.569 9.372-33.942 0z" })));
|
|
12826
|
+
};
|
|
12827
|
+
|
|
12759
12828
|
class GroupingRowPlugin extends BasePlugin {
|
|
12760
12829
|
getStore(type = GROUPING_ROW_TYPE) {
|
|
12761
12830
|
return this.providers.data.stores[type].store;
|
|
@@ -12839,53 +12908,6 @@ class GroupingRowPlugin extends BasePlugin {
|
|
|
12839
12908
|
const sortingPlugin = this.providers.plugins.getByClass(SortingPlugin);
|
|
12840
12909
|
return !!(sortingPlugin === null || sortingPlugin === void 0 ? void 0 : sortingPlugin.sortingPromise);
|
|
12841
12910
|
}
|
|
12842
|
-
// subscribe to grid events to process them accordingly
|
|
12843
|
-
subscribe() {
|
|
12844
|
-
/** if grouping present and new data source arrived */
|
|
12845
|
-
this.addEventListener('beforesourceset', ({ detail }) => {
|
|
12846
|
-
var _a, _b, _c;
|
|
12847
|
-
if (!(((_b = (_a = this.options) === null || _a === void 0 ? void 0 : _a.props) === null || _b === void 0 ? void 0 : _b.length) && ((_c = detail === null || detail === void 0 ? void 0 : detail.source) === null || _c === void 0 ? void 0 : _c.length))) {
|
|
12848
|
-
return;
|
|
12849
|
-
}
|
|
12850
|
-
// if sorting is running don't apply grouping, wait for sorting, then it'll apply in @aftersortingapply
|
|
12851
|
-
if (this.isSortingRunning()) {
|
|
12852
|
-
return;
|
|
12853
|
-
}
|
|
12854
|
-
this.onDataSet(detail);
|
|
12855
|
-
});
|
|
12856
|
-
this.addEventListener('beforecolumnsset', ({ detail }) => {
|
|
12857
|
-
this.setColumns(detail);
|
|
12858
|
-
});
|
|
12859
|
-
/**
|
|
12860
|
-
* filter applied need to clear grouping and apply again
|
|
12861
|
-
* based on new results can be new grouping
|
|
12862
|
-
*/
|
|
12863
|
-
this.addEventListener('beforetrimmed', ({ detail: { trimmed, trimmedType } }) => this.beforeTrimmedApply(trimmed, trimmedType));
|
|
12864
|
-
/**
|
|
12865
|
-
* sorting applied need to clear grouping and apply again
|
|
12866
|
-
* based on new results whole grouping order will changed
|
|
12867
|
-
*/
|
|
12868
|
-
this.addEventListener('aftersortingapply', () => {
|
|
12869
|
-
var _a, _b;
|
|
12870
|
-
if (!((_b = (_a = this.options) === null || _a === void 0 ? void 0 : _a.props) === null || _b === void 0 ? void 0 : _b.length)) {
|
|
12871
|
-
return;
|
|
12872
|
-
}
|
|
12873
|
-
this.doSourceUpdate(Object.assign({}, this.options));
|
|
12874
|
-
});
|
|
12875
|
-
/**
|
|
12876
|
-
* Apply logic for focus inside of grouping
|
|
12877
|
-
* We can't focus on grouping rows, navigation only inside of groups for now
|
|
12878
|
-
*/
|
|
12879
|
-
this.addEventListener('beforecellfocus', e => this.onFocus(e));
|
|
12880
|
-
/**
|
|
12881
|
-
* Prevent rgRow drag outside the group
|
|
12882
|
-
*/
|
|
12883
|
-
this.addEventListener('roworderchanged', e => this.onDrag(e));
|
|
12884
|
-
/**
|
|
12885
|
-
* When grouping expand icon was clicked
|
|
12886
|
-
*/
|
|
12887
|
-
this.addEventListener('groupexpandclick', e => this.onExpand(e.detail));
|
|
12888
|
-
}
|
|
12889
12911
|
/**
|
|
12890
12912
|
* Starts global source update with group clearing and applying new one
|
|
12891
12913
|
* Initiated when need to reapply grouping
|
|
@@ -12902,11 +12924,11 @@ class GroupingRowPlugin extends BasePlugin {
|
|
|
12902
12924
|
* Group again
|
|
12903
12925
|
* @param oldNewIndexMap - provides us mapping with new indexes vs old indexes
|
|
12904
12926
|
*/
|
|
12905
|
-
const { sourceWithGroups, depth, trimmed, oldNewIndexMap,
|
|
12927
|
+
const { sourceWithGroups, depth, trimmed, oldNewIndexMap, } = gatherGrouping(source, ((_a = this.options) === null || _a === void 0 ? void 0 : _a.props) || [], expanded);
|
|
12906
12928
|
const customRenderer = options === null || options === void 0 ? void 0 : options.groupLabelTemplate;
|
|
12907
12929
|
// setup source
|
|
12908
12930
|
this.providers.data.setData(sourceWithGroups, GROUPING_ROW_TYPE, this.revogrid.disableVirtualY, { depth, customRenderer }, true);
|
|
12909
|
-
this.updateTrimmed(trimmed,
|
|
12931
|
+
this.updateTrimmed(trimmed, oldNewIndexes !== null && oldNewIndexes !== void 0 ? oldNewIndexes : {}, oldNewIndexMap);
|
|
12910
12932
|
}
|
|
12911
12933
|
/**
|
|
12912
12934
|
* Apply grouping on data set
|
|
@@ -12922,13 +12944,13 @@ class GroupingRowPlugin extends BasePlugin {
|
|
|
12922
12944
|
}
|
|
12923
12945
|
const source = data.source.filter(s => !isGrouping(s));
|
|
12924
12946
|
const options = Object.assign(Object.assign({}, (this.revogrid.grouping || {})), { prevExpanded: preservedExpanded });
|
|
12925
|
-
const { sourceWithGroups, depth, trimmed, oldNewIndexMap,
|
|
12947
|
+
const { sourceWithGroups, depth, trimmed, oldNewIndexMap, } = gatherGrouping(source, ((_b = this.options) === null || _b === void 0 ? void 0 : _b.props) || [], options);
|
|
12926
12948
|
data.source = sourceWithGroups;
|
|
12927
12949
|
this.providers.data.setGrouping({ depth });
|
|
12928
|
-
this.updateTrimmed(trimmed,
|
|
12950
|
+
this.updateTrimmed(trimmed, oldNewIndexMap);
|
|
12929
12951
|
}
|
|
12930
12952
|
/**
|
|
12931
|
-
*
|
|
12953
|
+
* External call to apply grouping. Called by revogrid when prop changed.
|
|
12932
12954
|
*/
|
|
12933
12955
|
setGrouping(options) {
|
|
12934
12956
|
var _a, _b;
|
|
@@ -12940,12 +12962,12 @@ class GroupingRowPlugin extends BasePlugin {
|
|
|
12940
12962
|
this.clearGrouping();
|
|
12941
12963
|
return;
|
|
12942
12964
|
}
|
|
12943
|
-
// props exist and source
|
|
12965
|
+
// props exist and source initd
|
|
12944
12966
|
const { source } = getSource(this.getStore().get('source'), this.getStore().get('proxyItems'));
|
|
12945
12967
|
if (source.length) {
|
|
12946
12968
|
this.doSourceUpdate(Object.assign({}, options));
|
|
12947
12969
|
}
|
|
12948
|
-
// props exist and columns
|
|
12970
|
+
// props exist and columns initd
|
|
12949
12971
|
for (let t of columnTypes) {
|
|
12950
12972
|
if (this.setColumnGrouping(this.providers.column.getColumns(t))) {
|
|
12951
12973
|
this.providers.column.refreshByType(t);
|
|
@@ -12953,7 +12975,50 @@ class GroupingRowPlugin extends BasePlugin {
|
|
|
12953
12975
|
}
|
|
12954
12976
|
}
|
|
12955
12977
|
// if has any grouping subscribe to events again
|
|
12956
|
-
|
|
12978
|
+
/** if grouping present and new data source arrived */
|
|
12979
|
+
this.addEventListener('beforesourceset', ({ detail }) => {
|
|
12980
|
+
var _a, _b, _c;
|
|
12981
|
+
if (!(((_b = (_a = this.options) === null || _a === void 0 ? void 0 : _a.props) === null || _b === void 0 ? void 0 : _b.length) && ((_c = detail === null || detail === void 0 ? void 0 : detail.source) === null || _c === void 0 ? void 0 : _c.length))) {
|
|
12982
|
+
return;
|
|
12983
|
+
}
|
|
12984
|
+
// if sorting is running don't apply grouping, wait for sorting, then it'll apply in @aftersortingapply
|
|
12985
|
+
if (this.isSortingRunning()) {
|
|
12986
|
+
return;
|
|
12987
|
+
}
|
|
12988
|
+
this.onDataSet(detail);
|
|
12989
|
+
});
|
|
12990
|
+
this.addEventListener('beforecolumnsset', ({ detail }) => {
|
|
12991
|
+
this.setColumns(detail);
|
|
12992
|
+
});
|
|
12993
|
+
/**
|
|
12994
|
+
* filter applied need to clear grouping and apply again
|
|
12995
|
+
* based on new results can be new grouping
|
|
12996
|
+
*/
|
|
12997
|
+
this.addEventListener('beforetrimmed', ({ detail: { trimmed, trimmedType } }) => this.beforeTrimmedApply(trimmed, trimmedType));
|
|
12998
|
+
/**
|
|
12999
|
+
* sorting applied need to clear grouping and apply again
|
|
13000
|
+
* based on new results whole grouping order will changed
|
|
13001
|
+
*/
|
|
13002
|
+
this.addEventListener('aftersortingapply', () => {
|
|
13003
|
+
var _a, _b;
|
|
13004
|
+
if (!((_b = (_a = this.options) === null || _a === void 0 ? void 0 : _a.props) === null || _b === void 0 ? void 0 : _b.length)) {
|
|
13005
|
+
return;
|
|
13006
|
+
}
|
|
13007
|
+
this.doSourceUpdate(Object.assign({}, this.options));
|
|
13008
|
+
});
|
|
13009
|
+
/**
|
|
13010
|
+
* Apply logic for focus inside of grouping
|
|
13011
|
+
* We can't focus on grouping rows, navigation only inside of groups for now
|
|
13012
|
+
*/
|
|
13013
|
+
this.addEventListener('beforecellfocus', e => this.onFocus(e));
|
|
13014
|
+
/**
|
|
13015
|
+
* Prevent rgRow drag outside the group
|
|
13016
|
+
*/
|
|
13017
|
+
this.addEventListener('roworderchanged', e => this.onDrag(e));
|
|
13018
|
+
/**
|
|
13019
|
+
* When grouping expand icon was clicked
|
|
13020
|
+
*/
|
|
13021
|
+
this.addEventListener('groupexpandclick', e => this.onExpand(e.detail));
|
|
12957
13022
|
}
|
|
12958
13023
|
// clear grouping
|
|
12959
13024
|
clearGrouping() {
|
|
@@ -12977,7 +13042,7 @@ class GroupingRowPlugin extends BasePlugin {
|
|
|
12977
13042
|
this.providers.data.setData(source, GROUPING_ROW_TYPE, this.revogrid.disableVirtualY, undefined, true);
|
|
12978
13043
|
this.updateTrimmed(undefined, undefined, oldNewIndexes);
|
|
12979
13044
|
}
|
|
12980
|
-
updateTrimmed(trimmedGroup = {},
|
|
13045
|
+
updateTrimmed(trimmedGroup = {}, firstLevelMap = {}, secondLevelMap) {
|
|
12981
13046
|
// map previously trimmed data
|
|
12982
13047
|
const trimemedOptionsToUpgrade = processDoubleConversionTrimmed(this.getStore().get('trimmed'), firstLevelMap, secondLevelMap);
|
|
12983
13048
|
for (let type in trimemedOptionsToUpgrade) {
|
|
@@ -15261,47 +15326,6 @@ class RevoGridExtra {
|
|
|
15261
15326
|
}; }
|
|
15262
15327
|
}
|
|
15263
15328
|
|
|
15264
|
-
const PADDING_DEPTH = 10;
|
|
15265
|
-
const RowRenderer = ({ rowClass, index, size, start, depth }, cells) => {
|
|
15266
|
-
const props = Object.assign({ [DATA_ROW]: index });
|
|
15267
|
-
return (hAsync("div", Object.assign({}, props, { class: `rgRow ${rowClass || ''}`, style: {
|
|
15268
|
-
height: `${size}px`,
|
|
15269
|
-
transform: `translateY(${start}px)`,
|
|
15270
|
-
paddingLeft: depth ? `${PADDING_DEPTH * depth}px` : undefined,
|
|
15271
|
-
} }), cells));
|
|
15272
|
-
};
|
|
15273
|
-
|
|
15274
|
-
function expandEvent(e, model, virtualIndex) {
|
|
15275
|
-
var _a;
|
|
15276
|
-
const event = new CustomEvent('groupexpandclick', {
|
|
15277
|
-
detail: {
|
|
15278
|
-
model,
|
|
15279
|
-
virtualIndex,
|
|
15280
|
-
},
|
|
15281
|
-
cancelable: true,
|
|
15282
|
-
bubbles: true,
|
|
15283
|
-
});
|
|
15284
|
-
(_a = e.target) === null || _a === void 0 ? void 0 : _a.dispatchEvent(event);
|
|
15285
|
-
}
|
|
15286
|
-
const GroupingRowRenderer = (props) => {
|
|
15287
|
-
const { model, itemIndex, hasExpand, groupingCustomRenderer } = props;
|
|
15288
|
-
const name = model[PSEUDO_GROUP_ITEM];
|
|
15289
|
-
const expanded = model[GROUP_EXPANDED];
|
|
15290
|
-
const depth = parseInt(model[GROUP_DEPTH], 10) || 0;
|
|
15291
|
-
if (!hasExpand) {
|
|
15292
|
-
return hAsync(RowRenderer, Object.assign({}, props, { rowClass: "groupingRow", depth: depth }));
|
|
15293
|
-
}
|
|
15294
|
-
if (groupingCustomRenderer) {
|
|
15295
|
-
return (hAsync(RowRenderer, Object.assign({}, props, { rowClass: "groupingRow", depth: depth }),
|
|
15296
|
-
hAsync("div", { onClick: e => expandEvent(e, model, itemIndex) }, groupingCustomRenderer(hAsync, { name, model, itemIndex, expanded, depth }))));
|
|
15297
|
-
}
|
|
15298
|
-
return (hAsync(RowRenderer, Object.assign({}, props, { rowClass: "groupingRow", depth: depth }),
|
|
15299
|
-
hAsync("button", { class: { [GROUP_EXPAND_BTN]: true }, onClick: e => expandEvent(e, model, itemIndex) },
|
|
15300
|
-
hAsync("svg", { "aria-hidden": "true", style: { transform: `rotate(${!expanded ? -90 : 0}deg)` }, focusable: "false", viewBox: "0 0 448 512" },
|
|
15301
|
-
hAsync("path", { fill: "currentColor", d: "M207.029 381.476L12.686 187.132c-9.373-9.373-9.373-24.569 0-33.941l22.667-22.667c9.357-9.357 24.522-9.375 33.901-.04L224 284.505l154.745-154.021c9.379-9.335 24.544-9.317 33.901.04l22.667 22.667c9.373 9.373 9.373 24.569 0 33.941L240.971 381.476c-9.373 9.372-24.569 9.372-33.942 0z" }))),
|
|
15302
|
-
name));
|
|
15303
|
-
};
|
|
15304
|
-
|
|
15305
15329
|
/**
|
|
15306
15330
|
* Class is responsible for highlighting rows in a table.
|
|
15307
15331
|
*/
|
|
@@ -15376,6 +15400,10 @@ function renderCell(v) {
|
|
|
15376
15400
|
// #region Regular cell
|
|
15377
15401
|
else {
|
|
15378
15402
|
if (!v.schemaModel.column) {
|
|
15403
|
+
// something is wrong with data
|
|
15404
|
+
if (Build === null || Build === void 0 ? void 0 : Build.isDev) {
|
|
15405
|
+
console.error('Investigate column problem.', v.schemaModel);
|
|
15406
|
+
}
|
|
15379
15407
|
return '';
|
|
15380
15408
|
}
|
|
15381
15409
|
// Row drag
|
|
@@ -15509,7 +15537,8 @@ class RevogrData {
|
|
|
15509
15537
|
const dataItem = getSourceItem(this.dataStore, rgRow.itemIndex);
|
|
15510
15538
|
// #region Grouping
|
|
15511
15539
|
if (isGrouping(dataItem)) {
|
|
15512
|
-
|
|
15540
|
+
const gmodel = Object.assign(Object.assign({}, rgRow), { index: rgRow.itemIndex, model: dataItem, groupingCustomRenderer: groupingCustomRenderer, hasExpand: this.columnService.hasGrouping, providers: this.providers });
|
|
15541
|
+
rowsEls.push(hAsync(GroupingRowRenderer, Object.assign({}, gmodel)));
|
|
15513
15542
|
continue;
|
|
15514
15543
|
}
|
|
15515
15544
|
// #endregion
|