@3mo/data-grid 0.4.23 → 0.5.0
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/CsvGenerator.d.ts +1 -1
- package/dist/CsvGenerator.d.ts.map +1 -1
- package/dist/DataGrid.d.ts +11 -11
- package/dist/DataGrid.d.ts.map +1 -1
- package/dist/DataGrid.js +49 -65
- package/dist/DataGridSelectionController.d.ts +21 -0
- package/dist/DataGridSelectionController.d.ts.map +1 -0
- package/dist/DataGridSelectionController.js +87 -0
- package/dist/rows/DataGridRow.d.ts.map +1 -1
- package/dist/rows/DataGridRow.js +19 -46
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
package/dist/CsvGenerator.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CsvGenerator.d.ts","sourceRoot":"","sources":["../CsvGenerator.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAE7C,qBAAa,YAAY;IACxB,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,CAAC,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"CsvGenerator.d.ts","sourceRoot":"","sources":["../CsvGenerator.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAE7C,qBAAa,YAAY;IACxB,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC;CAWrD"}
|
package/dist/DataGrid.d.ts
CHANGED
|
@@ -5,6 +5,7 @@ import { SlotController } from '@3mo/slot-controller';
|
|
|
5
5
|
import { ThemeController } from '@3mo/theme';
|
|
6
6
|
import { MediaQueryController } from '@3mo/media-query-observer';
|
|
7
7
|
import { DataGridSidePanelTab, type ColumnDefinition, type DataGridCell, type DataGridHeader, type DataGridRow } from './index.js';
|
|
8
|
+
import { DataGridSelectionController } from './DataGridSelectionController.js';
|
|
8
9
|
export type DataGridPagination = 'auto' | number;
|
|
9
10
|
export declare enum DataGridSelectionMode {
|
|
10
11
|
None = "none",
|
|
@@ -151,21 +152,19 @@ export declare class DataGrid<TData, TDetailsElement extends Element | undefined
|
|
|
151
152
|
private readonly footer?;
|
|
152
153
|
private readonly sidePanel?;
|
|
153
154
|
private readonly columnsSlot?;
|
|
154
|
-
lastActiveSelection?: {
|
|
155
|
-
data: TData;
|
|
156
|
-
selected: boolean;
|
|
157
|
-
};
|
|
158
155
|
setPage(page: number): void;
|
|
159
156
|
handlePageChange(page: number): void;
|
|
160
157
|
setPagination(pagination?: DataGridPagination): void;
|
|
161
158
|
handlePaginationChange(pagination?: DataGridPagination): void;
|
|
162
159
|
setData(data: Array<TData>, selectionBehavior?: DataGridSelectionBehaviorOnDataChange): void;
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
160
|
+
get hasSelection(): boolean;
|
|
161
|
+
selectAll(...parameters: Parameters<typeof this.selectionController.selectAll>): void;
|
|
162
|
+
deselectAll(...parameters: Parameters<typeof this.selectionController.deselectAll>): void;
|
|
163
|
+
select(...parameters: Parameters<typeof this.selectionController.select>): void;
|
|
164
|
+
isSelectable(...parameters: Parameters<typeof this.selectionController.isSelectable>): boolean;
|
|
167
165
|
get detailedData(): TData[];
|
|
168
166
|
get hasDetails(): boolean;
|
|
167
|
+
getSubData(data: TData): Array<TData> | undefined;
|
|
169
168
|
hasDetail(data: TData): boolean;
|
|
170
169
|
get allRowDetailsOpen(): boolean;
|
|
171
170
|
openRowDetails(): void;
|
|
@@ -180,7 +179,6 @@ export declare class DataGrid<TData, TDetailsElement extends Element | undefined
|
|
|
180
179
|
handleEdit(data: TData, dataSelector: KeyPathOf<TData>, value: KeyPathValueOf<TData, KeyPathOf<TData>> | undefined): void;
|
|
181
180
|
navigateToSidePanelTab(tab?: DataGridSidePanelTab): void;
|
|
182
181
|
exportExcelFile(): void;
|
|
183
|
-
get hasSelection(): boolean;
|
|
184
182
|
get hasContextMenu(): boolean;
|
|
185
183
|
get toolbarElements(): Element[];
|
|
186
184
|
get filterElements(): Element[];
|
|
@@ -199,6 +197,7 @@ export declare class DataGrid<TData, TDetailsElement extends Element | undefined
|
|
|
199
197
|
protected readonly instanceofAttributeController: InstanceofAttributeController;
|
|
200
198
|
protected readonly smallScreenObserverController: MediaQueryController;
|
|
201
199
|
readonly themeController: ThemeController;
|
|
200
|
+
readonly selectionController: DataGridSelectionController<TData>;
|
|
202
201
|
protected updated(...parameters: Parameters<Component['updated']>): void;
|
|
203
202
|
protected firstUpdated(props: PropertyValues): void;
|
|
204
203
|
static get styles(): import("@a11d/lit").CSSResult;
|
|
@@ -216,7 +215,7 @@ export declare class DataGrid<TData, TDetailsElement extends Element | undefined
|
|
|
216
215
|
protected get dataGridTemplate(): HTMLTemplateResult;
|
|
217
216
|
protected get headerTemplate(): HTMLTemplateResult;
|
|
218
217
|
private get rowsTemplate();
|
|
219
|
-
|
|
218
|
+
getRowTemplate(data: TData, index: number): import("lit-html").TemplateResult;
|
|
220
219
|
private handleRowDetailsOpenChange;
|
|
221
220
|
protected get footerTemplate(): HTMLTemplateResult;
|
|
222
221
|
get sumsData(): TData[];
|
|
@@ -238,12 +237,13 @@ export declare class DataGrid<TData, TDetailsElement extends Element | undefined
|
|
|
238
237
|
private readonly handleScroll;
|
|
239
238
|
getSorting(): DataGridSortingDefinition<TData>[];
|
|
240
239
|
getSortingDefinition(column: ColumnDefinition<TData>): DataGridRankedSortDefinition<TData> | undefined;
|
|
240
|
+
private getFlattenedData;
|
|
241
|
+
get flattenedData(): TData[];
|
|
241
242
|
protected get sortedData(): TData[];
|
|
242
243
|
get renderData(): TData[];
|
|
243
244
|
private get elementExtractedColumns();
|
|
244
245
|
private get autoGeneratedColumns();
|
|
245
246
|
get visibleColumns(): ColumnDefinition<TData>[];
|
|
246
|
-
get previouslySelectedData(): TData[];
|
|
247
247
|
}
|
|
248
248
|
declare global {
|
|
249
249
|
interface HTMLElementTagNameMap {
|
package/dist/DataGrid.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataGrid.d.ts","sourceRoot":"","sources":["../DataGrid.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,SAAS,EAAqC,cAAc,EAA+C,kBAAkB,EAAS,MAAM,WAAW,CAAA;AAErL,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,EAAE,6BAA6B,EAAE,MAAM,sCAAsC,CAAA;AACpF,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAErD,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAE5C,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAA;AAIhE,OAAO,EAAgC,oBAAoB,EAAE,KAAK,gBAAgB,EAAE,KAAK,YAAY,EAAuB,KAAK,cAAc,EAAE,KAAK,WAAW,EAA0B,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"DataGrid.d.ts","sourceRoot":"","sources":["../DataGrid.ts"],"names":[],"mappings":"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"}
|
package/dist/DataGrid.js
CHANGED
|
@@ -13,6 +13,7 @@ import { observeResize } from '@3mo/resize-observer';
|
|
|
13
13
|
import { Localizer } from '@3mo/localization';
|
|
14
14
|
import { ContextMenu } from '@3mo/context-menu';
|
|
15
15
|
import { CsvGenerator, DataGridColumn, DataGridSidePanelTab } from './index.js';
|
|
16
|
+
import { DataGridSelectionController } from './DataGridSelectionController.js';
|
|
16
17
|
Localizer.register('en', {
|
|
17
18
|
'${count:pluralityNumber} entries selected': [
|
|
18
19
|
'1 entry selected',
|
|
@@ -150,6 +151,7 @@ let DataGrid = DataGrid_1 = class DataGrid extends Component {
|
|
|
150
151
|
this.instanceofAttributeController = new InstanceofAttributeController(this);
|
|
151
152
|
this.smallScreenObserverController = new MediaQueryController(this, '(max-width: 768px)');
|
|
152
153
|
this.themeController = new ThemeController(this);
|
|
154
|
+
this.selectionController = new DataGridSelectionController(this);
|
|
153
155
|
// eslint-disable-next-line @typescript-eslint/member-ordering
|
|
154
156
|
this.lastScrollElementTop = 0;
|
|
155
157
|
this.handleScroll = (e) => {
|
|
@@ -190,40 +192,43 @@ let DataGrid = DataGrid_1 = class DataGrid extends Component {
|
|
|
190
192
|
this.deselectAll();
|
|
191
193
|
break;
|
|
192
194
|
case DataGridSelectionBehaviorOnDataChange.Maintain:
|
|
193
|
-
this.
|
|
195
|
+
this.selectionController.selectPreviouslySelectedData();
|
|
194
196
|
break;
|
|
195
197
|
}
|
|
196
198
|
this.dataChange.dispatch(data);
|
|
197
199
|
}
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
this.select([...this.data]);
|
|
201
|
-
}
|
|
200
|
+
get hasSelection() {
|
|
201
|
+
return this.selectionController.hasSelection;
|
|
202
202
|
}
|
|
203
|
-
|
|
204
|
-
this.
|
|
203
|
+
selectAll(...parameters) {
|
|
204
|
+
return this.selectionController.selectAll(...parameters);
|
|
205
205
|
}
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
const selectableData = data.filter(d => this.isSelectable(d));
|
|
209
|
-
this.selectedData = selectableData;
|
|
210
|
-
this.selectionChange.dispatch(selectableData);
|
|
211
|
-
}
|
|
206
|
+
deselectAll(...parameters) {
|
|
207
|
+
return this.selectionController.deselectAll(...parameters);
|
|
212
208
|
}
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
209
|
+
select(...parameters) {
|
|
210
|
+
return this.selectionController.select(...parameters);
|
|
211
|
+
}
|
|
212
|
+
isSelectable(...parameters) {
|
|
213
|
+
return this.selectionController.isSelectable(...parameters);
|
|
216
214
|
}
|
|
217
215
|
get detailedData() {
|
|
218
216
|
return this.data.filter(data => this.hasDetail(data));
|
|
219
217
|
}
|
|
220
218
|
get hasDetails() {
|
|
221
|
-
return !!this.getRowDetailsTemplate && this.detailedData.length > 0
|
|
219
|
+
return !!this.getRowDetailsTemplate && this.detailedData.length > 0
|
|
220
|
+
|| this.data.some(d => !!this.getSubData(d));
|
|
221
|
+
}
|
|
222
|
+
getSubData(data) {
|
|
223
|
+
if (!this.subDataGridDataSelector) {
|
|
224
|
+
return undefined;
|
|
225
|
+
}
|
|
226
|
+
const subValue = getValueByKeyPath(data, this.subDataGridDataSelector);
|
|
227
|
+
return Array.isArray(subValue) && subValue.length > 0 ? subValue : undefined;
|
|
222
228
|
}
|
|
223
229
|
hasDetail(data) {
|
|
224
|
-
var _a, _b;
|
|
225
|
-
|
|
226
|
-
return hasAutomatedSubDataGrid && ((_b = (_a = this.hasDataDetail) === null || _a === void 0 ? void 0 : _a.call(this, data)) !== null && _b !== void 0 ? _b : true);
|
|
230
|
+
var _a, _b, _c;
|
|
231
|
+
return !!this.getSubData(data) || ((_b = (_a = this.hasDataDetail) === null || _a === void 0 ? void 0 : _a.call(this, data)) !== null && _b !== void 0 ? _b : [undefined, html.nothing].includes((_c = this.getRowDetailsTemplate) === null || _c === void 0 ? void 0 : _c.call(this, data)) === false);
|
|
227
232
|
}
|
|
228
233
|
get allRowDetailsOpen() {
|
|
229
234
|
return this.openDetailedData.length === this.detailedData.length;
|
|
@@ -291,9 +296,6 @@ let DataGrid = DataGrid_1 = class DataGrid extends Component {
|
|
|
291
296
|
throw error;
|
|
292
297
|
}
|
|
293
298
|
}
|
|
294
|
-
get hasSelection() {
|
|
295
|
-
return this.selectionMode !== DataGridSelectionMode.None;
|
|
296
|
-
}
|
|
297
299
|
get hasContextMenu() {
|
|
298
300
|
return this.getRowContextMenuTemplate !== undefined;
|
|
299
301
|
}
|
|
@@ -347,7 +349,7 @@ let DataGrid = DataGrid_1 = class DataGrid extends Component {
|
|
|
347
349
|
return value;
|
|
348
350
|
}
|
|
349
351
|
get dataLength() {
|
|
350
|
-
return this.
|
|
352
|
+
return this.flattenedData.length;
|
|
351
353
|
}
|
|
352
354
|
get maxPage() {
|
|
353
355
|
return Math.ceil(this.dataLength / this.pageSize);
|
|
@@ -787,6 +789,28 @@ let DataGrid = DataGrid_1 = class DataGrid extends Component {
|
|
|
787
789
|
const definition = sorting.find(s => s.selector === (column.sortDataSelector || column.dataSelector));
|
|
788
790
|
return !definition ? undefined : Object.assign(Object.assign({}, definition), { rank: sorting.indexOf(definition) + 1 });
|
|
789
791
|
}
|
|
792
|
+
*getFlattenedData() {
|
|
793
|
+
if (!this.subDataGridDataSelector) {
|
|
794
|
+
yield* this.data;
|
|
795
|
+
return;
|
|
796
|
+
}
|
|
797
|
+
const flatten = (data) => {
|
|
798
|
+
const subData = getValueByKeyPath(data, this.subDataGridDataSelector);
|
|
799
|
+
return [
|
|
800
|
+
data,
|
|
801
|
+
...!Array.isArray(subData)
|
|
802
|
+
? []
|
|
803
|
+
: subData.flatMap(flatten)
|
|
804
|
+
];
|
|
805
|
+
};
|
|
806
|
+
for (const data of this.data) {
|
|
807
|
+
yield* flatten(data);
|
|
808
|
+
}
|
|
809
|
+
return;
|
|
810
|
+
}
|
|
811
|
+
get flattenedData() {
|
|
812
|
+
return [...this.getFlattenedData()];
|
|
813
|
+
}
|
|
790
814
|
get sortedData() {
|
|
791
815
|
const sorting = this.getSorting();
|
|
792
816
|
const sortedData = [...this.data];
|
|
@@ -865,17 +889,6 @@ let DataGrid = DataGrid_1 = class DataGrid extends Component {
|
|
|
865
889
|
get visibleColumns() {
|
|
866
890
|
return this.columns.filter(c => c.hidden === false);
|
|
867
891
|
}
|
|
868
|
-
get previouslySelectedData() {
|
|
869
|
-
const hasId = this.selectedData.every(d => Object.keys(d).includes('id'));
|
|
870
|
-
if (hasId) {
|
|
871
|
-
const selectedIds = this.selectedData.map((d) => d.id);
|
|
872
|
-
return this.data.filter((d) => selectedIds.includes(d.id));
|
|
873
|
-
}
|
|
874
|
-
else {
|
|
875
|
-
const selectedDataJson = this.selectedData.map(d => JSON.stringify(d));
|
|
876
|
-
return this.data.filter(d => selectedDataJson.includes(JSON.stringify(d)));
|
|
877
|
-
}
|
|
878
|
-
}
|
|
879
892
|
};
|
|
880
893
|
DataGrid.rowHeight = new LocalStorage('DataGrid.RowHeight', 35);
|
|
881
894
|
DataGrid.cellRelativeFontSize = new LocalStorage('DataGrid.CellRelativeFontSize', 0.8);
|
|
@@ -973,7 +986,7 @@ __decorate([
|
|
|
973
986
|
property({ type: Boolean })
|
|
974
987
|
], DataGrid.prototype, "multipleDetails", void 0);
|
|
975
988
|
__decorate([
|
|
976
|
-
property(
|
|
989
|
+
property()
|
|
977
990
|
], DataGrid.prototype, "subDataGridDataSelector", void 0);
|
|
978
991
|
__decorate([
|
|
979
992
|
property({ type: Object })
|
|
@@ -1054,32 +1067,3 @@ DataGrid = DataGrid_1 = __decorate([
|
|
|
1054
1067
|
component('mo-data-grid')
|
|
1055
1068
|
], DataGrid);
|
|
1056
1069
|
export { DataGrid };
|
|
1057
|
-
function subDataGridSelectorChanged() {
|
|
1058
|
-
const selector = this.subDataGridDataSelector;
|
|
1059
|
-
if (selector === undefined || !!this.getRowDetailsTemplate) {
|
|
1060
|
-
return;
|
|
1061
|
-
}
|
|
1062
|
-
this.getRowDetailsTemplate = (data) => html `
|
|
1063
|
-
<mo-data-grid ${style({ padding: '0px' })}
|
|
1064
|
-
.data=${getValueByKeyPath(data, selector)}
|
|
1065
|
-
headerHidden
|
|
1066
|
-
sidePanelHidden
|
|
1067
|
-
.columns=${this.columns}
|
|
1068
|
-
.subDataGridDataSelector=${this.subDataGridDataSelector}
|
|
1069
|
-
.hasDataDetail=${this.hasDataDetail}
|
|
1070
|
-
.selectionMode=${this.selectionMode}
|
|
1071
|
-
.isDataSelectable=${this.isDataSelectable}
|
|
1072
|
-
?selectOnClick=${this.selectOnClick}
|
|
1073
|
-
?selectionCheckboxesHidden=${this.selectionCheckboxesHidden}
|
|
1074
|
-
?primaryContextMenuItemOnDoubleClick=${this.primaryContextMenuItemOnDoubleClick}
|
|
1075
|
-
?multipleDetails=${this.multipleDetails}
|
|
1076
|
-
?detailsOnClick=${this.detailsOnClick}
|
|
1077
|
-
.getRowContextMenuTemplate=${this.getRowContextMenuTemplate}
|
|
1078
|
-
editability=${this.editability}
|
|
1079
|
-
@rowClick=${(e) => this.rowClick.dispatch(e.detail)}
|
|
1080
|
-
@rowDoubleClick=${(e) => this.rowDoubleClick.dispatch(e.detail)}
|
|
1081
|
-
@rowMiddleClick=${(e) => this.rowMiddleClick.dispatch(e.detail)}
|
|
1082
|
-
@cellEdit=${(e) => this.cellEdit.dispatch(e.detail)}
|
|
1083
|
-
></mo-data-grid>
|
|
1084
|
-
`;
|
|
1085
|
-
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { Controller } from '@a11d/lit';
|
|
2
|
+
import { DataGrid } from './index.js';
|
|
3
|
+
export declare class DataGridSelectionController<TData> extends Controller {
|
|
4
|
+
private readonly dataGrid;
|
|
5
|
+
private lastActiveSelection?;
|
|
6
|
+
constructor(dataGrid: DataGrid<TData, any>);
|
|
7
|
+
get hasSelection(): boolean;
|
|
8
|
+
private get mode();
|
|
9
|
+
private get data();
|
|
10
|
+
private get selectableData();
|
|
11
|
+
private get selectedData();
|
|
12
|
+
private set selectedData(value);
|
|
13
|
+
private get previouslySelectedData();
|
|
14
|
+
isSelectable(data: TData): boolean;
|
|
15
|
+
selectAll(): void;
|
|
16
|
+
deselectAll(): void;
|
|
17
|
+
select(data: Array<TData>): void;
|
|
18
|
+
selectPreviouslySelectedData(): void;
|
|
19
|
+
setSelection(data: TData, selected: boolean): void;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=DataGridSelectionController.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DataGridSelectionController.d.ts","sourceRoot":"","sources":["../DataGridSelectionController.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AACtC,OAAO,EAAE,QAAQ,EAAyB,MAAM,YAAY,CAAA;AAE5D,qBAAa,2BAA2B,CAAC,KAAK,CAAE,SAAQ,UAAU;IAMrD,OAAO,CAAC,QAAQ,CAAC,QAAQ;IALrC,OAAO,CAAC,mBAAmB,CAAC,CAG3B;gBAE4B,QAAQ,EAAE,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC;IAI3D,IAAI,YAAY,YAEf;IAED,OAAO,KAAK,IAAI,GAAyC;IAEzD,OAAO,KAAK,IAAI,GAAyC;IACzD,OAAO,KAAK,cAAc,GAAyD;IAEnF,OAAO,KAAK,YAAY,GAAwC;IAChE,OAAO,KAAK,YAAY,QAA4C;IAEpE,OAAO,KAAK,sBAAsB,GASjC;IAED,YAAY,CAAC,IAAI,EAAE,KAAK;IAIxB,SAAS;IAMT,WAAW;IAIX,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC;IAQzB,4BAA4B;IAI5B,YAAY,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO;CAqC3C"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { KeyboardController } from '@3mo/keyboard-controller';
|
|
2
|
+
import { Controller } from '@a11d/lit';
|
|
3
|
+
import { DataGridSelectionMode } from './index.js';
|
|
4
|
+
export class DataGridSelectionController extends Controller {
|
|
5
|
+
constructor(dataGrid) {
|
|
6
|
+
super(dataGrid);
|
|
7
|
+
this.dataGrid = dataGrid;
|
|
8
|
+
}
|
|
9
|
+
get hasSelection() {
|
|
10
|
+
return this.mode !== DataGridSelectionMode.None;
|
|
11
|
+
}
|
|
12
|
+
get mode() { return this.dataGrid.selectionMode; }
|
|
13
|
+
get data() { return this.dataGrid.flattenedData; }
|
|
14
|
+
get selectableData() { return this.data.filter(d => this.isSelectable(d)); }
|
|
15
|
+
get selectedData() { return this.dataGrid.selectedData; }
|
|
16
|
+
set selectedData(data) { this.dataGrid.selectedData = data; }
|
|
17
|
+
get previouslySelectedData() {
|
|
18
|
+
const hasId = this.selectedData.every(d => Object.keys(d).includes('id'));
|
|
19
|
+
if (hasId) {
|
|
20
|
+
const selectedIds = this.selectedData.map((d) => d.id);
|
|
21
|
+
return this.data.filter((d) => selectedIds.includes(d.id));
|
|
22
|
+
}
|
|
23
|
+
else {
|
|
24
|
+
const selectedDataJson = this.selectedData.map(d => JSON.stringify(d));
|
|
25
|
+
return this.data.filter(d => selectedDataJson.includes(JSON.stringify(d)));
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
isSelectable(data) {
|
|
29
|
+
var _a, _b, _c;
|
|
30
|
+
return (_c = (_b = (_a = this.dataGrid).isDataSelectable) === null || _b === void 0 ? void 0 : _b.call(_a, data)) !== null && _c !== void 0 ? _c : true;
|
|
31
|
+
}
|
|
32
|
+
selectAll() {
|
|
33
|
+
if (this.mode === DataGridSelectionMode.Multiple) {
|
|
34
|
+
this.select([...this.data]);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
deselectAll() {
|
|
38
|
+
this.select([]);
|
|
39
|
+
}
|
|
40
|
+
select(data) {
|
|
41
|
+
if (this.hasSelection) {
|
|
42
|
+
const selectableData = data.filter(d => this.isSelectable(d));
|
|
43
|
+
this.selectedData = selectableData;
|
|
44
|
+
this.dataGrid.selectionChange.dispatch(selectableData);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
selectPreviouslySelectedData() {
|
|
48
|
+
this.select(this.previouslySelectedData);
|
|
49
|
+
}
|
|
50
|
+
setSelection(data, selected) {
|
|
51
|
+
if (!this.hasSelection || !this.isSelectable(data)) {
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
const lastActiveSelection = this.lastActiveSelection;
|
|
55
|
+
let dataToSelect = this.selectedData;
|
|
56
|
+
const selectableData = this.selectableData;
|
|
57
|
+
if (this.mode === DataGridSelectionMode.Multiple && KeyboardController.shift && lastActiveSelection) {
|
|
58
|
+
const lastActiveSelection = this.lastActiveSelection;
|
|
59
|
+
const indexes = [
|
|
60
|
+
selectableData.findIndex(data => lastActiveSelection.data === data),
|
|
61
|
+
selectableData.findIndex(d => d === data)
|
|
62
|
+
].sort((a, b) => a - b);
|
|
63
|
+
const range = selectableData.slice(indexes[0], indexes[1] + 1);
|
|
64
|
+
dataToSelect = lastActiveSelection.selected
|
|
65
|
+
? [...dataToSelect, ...range]
|
|
66
|
+
: dataToSelect.filter(d => range.includes(d) === false);
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
if (selected) {
|
|
70
|
+
if (this.mode === DataGridSelectionMode.Multiple) {
|
|
71
|
+
dataToSelect = this.dataGrid.selectionCheckboxesHidden
|
|
72
|
+
? [data]
|
|
73
|
+
: [...dataToSelect, data];
|
|
74
|
+
}
|
|
75
|
+
else if (this.mode === DataGridSelectionMode.Single) {
|
|
76
|
+
dataToSelect = [data];
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
dataToSelect = dataToSelect.filter(d => d !== data);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
this.lastActiveSelection = { data, selected };
|
|
84
|
+
const deduplicatedDataToSelect = [...new Set(dataToSelect)];
|
|
85
|
+
this.select(deduplicatedDataToSelect);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataGridRow.d.ts","sourceRoot":"","sources":["../../rows/DataGridRow.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,SAAS,EAAyB,kBAAkB,EAAqB,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"DataGridRow.d.ts","sourceRoot":"","sources":["../../rows/DataGridRow.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,SAAS,EAAyB,kBAAkB,EAAqB,MAAM,WAAW,CAAA;AAElH,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AACzD,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAyD,MAAM,aAAa,CAAA;AAE3G;;;;;;;;GAQG;AACH,8BAAsB,WAAW,CAAC,KAAK,EAAE,eAAe,SAAS,OAAO,GAAG,SAAS,GAAG,SAAS,CAAE,SAAQ,SAAS;IACzG,QAAQ,CAAC,iBAAiB,EAAG,eAAe,CAAC,OAAO,CAAC,CAAA;IAE/B,QAAQ,CAAC,KAAK,EAAG,KAAK,CAAC,YAAY,CAAC,GAAG,EAAE,KAAK,EAAE,eAAe,CAAC,CAAC,CAAA;IAEpE,QAAQ,EAAG,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAC,CAAA;IAC3C,IAAI,EAAG,KAAK,CAAA;IACI,QAAQ,UAAQ;IAazD,WAAW,UAAQ;IAEsB,SAAS,CAAC,eAAe,UAAQ;IAE7E,IAAI,cAAc,gCAEjB;cAEkB,WAAW;IAIrB,OAAO,CAAC,GAAG,UAAU,EAAE,UAAU,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IAQhE,SAAS,KAAK,UAAU,YAEvB;IAED,WAAoB,MAAM,kCAwFzB;IAED,cAAuB,QAAQ,uBAY9B;IAED,SAAS,CAAC,QAAQ,KAAK,WAAW,IAAI,kBAAkB,CAAA;IAExD,SAAS,KAAK,uBAAuB,uBAepC;IAED,SAAS,KAAK,iBAAiB,uBAc9B;IAED,SAAS,CAAC,eAAe,CAAC,MAAM,EAAE,gBAAgB,CAAC,KAAK,EAAE,cAAc,CAAC,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;IAUlG,SAAS,KAAK,6BAA6B,uBAS1C;IAED,SAAS,KAAK,eAAe,uBAmB5B;IAED,OAAO,CAAC,YAAY;IAKpB,SAAS,CAAC,kBAAkB;cAYZ,wBAAwB;cAKxB,wBAAwB;YAK1B,yCAAyC;IAQjD,eAAe,CAAC,UAAU,CAAC,EAAE,UAAU;IAwB7C,OAAO,KAAK,eAAe,GAI1B;IAED,OAAO,KAAK,mBAAmB,GAE9B;IAEK,gBAAgB;IAKtB,SAAS,CAAC,aAAa;IAIvB,SAAS,CAAC,cAAc,CAAC,KAAK,EAAE,OAAO;CAIvC;AAED,OAAO,CAAC,MAAM,CAAC;IACd,UAAU,qBAAqB;QAC9B,kBAAkB,EAAE,WAAW,CAAC,OAAO,CAAC,CAAA;KACxC;CACD"}
|
package/dist/rows/DataGridRow.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { __decorate } from "tslib";
|
|
2
2
|
import { css, property, Component, html, queryAll, style, LitElement, event } from '@a11d/lit';
|
|
3
3
|
import { ContextMenu } from '@3mo/context-menu';
|
|
4
|
-
import { KeyboardController } from '@3mo/keyboard-controller';
|
|
5
4
|
import { DataGridPrimaryContextMenuItem, DataGridSelectionMode } from '../index.js';
|
|
6
5
|
/**
|
|
7
6
|
* @attr dataGrid
|
|
@@ -45,7 +44,7 @@ export class DataGridRow extends Component {
|
|
|
45
44
|
width: 100%;
|
|
46
45
|
}
|
|
47
46
|
|
|
48
|
-
:host(:hover) {
|
|
47
|
+
:host(:hover) #contentContainer {
|
|
49
48
|
color: inherit;
|
|
50
49
|
background: var(--mo-color-accent-transparent) !important;
|
|
51
50
|
}
|
|
@@ -69,10 +68,6 @@ export class DataGridRow extends Component {
|
|
|
69
68
|
transition: 250ms;
|
|
70
69
|
}
|
|
71
70
|
|
|
72
|
-
:host([detailsOpen]) #contentContainer {
|
|
73
|
-
background: var(--mo-data-grid-row-background-on-opened-detail-element, var(--mo-color-accent-transparent));
|
|
74
|
-
}
|
|
75
|
-
|
|
76
71
|
:host([selected]) #contentContainer, :host([contextMenuOpen]) #contentContainer {
|
|
77
72
|
background: var(--mo-data-grid-selection-background) !important;
|
|
78
73
|
}
|
|
@@ -195,47 +190,25 @@ export class DataGridRow extends Component {
|
|
|
195
190
|
`;
|
|
196
191
|
}
|
|
197
192
|
get detailsTemplate() {
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
? html.nothing
|
|
201
|
-
: (_c = (_b = (_a = this.dataGrid).getRowDetailsTemplate) === null || _b === void 0 ? void 0 : _b.call(_a, this.data)) !== null && _c !== void 0 ? _c : html.nothing;
|
|
202
|
-
}
|
|
203
|
-
setSelection(value) {
|
|
204
|
-
if (this.dataGrid.hasSelection && this.dataGrid.isSelectable(this.data)) {
|
|
205
|
-
this.selected = value;
|
|
206
|
-
const lastActiveSelection = this.dataGrid.lastActiveSelection;
|
|
207
|
-
let dataToSelect = this.dataGrid.selectedData;
|
|
208
|
-
if (this.dataGrid.selectionMode === DataGridSelectionMode.Multiple && KeyboardController.shift && lastActiveSelection) {
|
|
209
|
-
const indexes = [
|
|
210
|
-
this.dataGrid.data.findIndex(data => data === lastActiveSelection.data),
|
|
211
|
-
this.dataGrid.data.findIndex(data => data === this.data),
|
|
212
|
-
].sort((a, b) => a - b);
|
|
213
|
-
const range = this.dataGrid.data.slice(indexes[0], indexes[1] + 1);
|
|
214
|
-
dataToSelect = lastActiveSelection.selected
|
|
215
|
-
? [...dataToSelect, ...range]
|
|
216
|
-
: dataToSelect.filter(d => range.includes(d) === false);
|
|
217
|
-
}
|
|
218
|
-
else {
|
|
219
|
-
if (value) {
|
|
220
|
-
if (this.dataGrid.selectionMode === DataGridSelectionMode.Multiple) {
|
|
221
|
-
if (this.dataGrid.selectionCheckboxesHidden) {
|
|
222
|
-
dataToSelect = [this.data];
|
|
223
|
-
}
|
|
224
|
-
else {
|
|
225
|
-
dataToSelect = [...dataToSelect, this.data];
|
|
226
|
-
}
|
|
227
|
-
}
|
|
228
|
-
else if (this.dataGrid.selectionMode === DataGridSelectionMode.Single) {
|
|
229
|
-
dataToSelect = [this.data];
|
|
230
|
-
}
|
|
231
|
-
}
|
|
232
|
-
else {
|
|
233
|
-
dataToSelect = dataToSelect.filter(data => data !== this.data);
|
|
234
|
-
}
|
|
235
|
-
}
|
|
236
|
-
this.dataGrid.lastActiveSelection = { data: this.data, selected: value };
|
|
237
|
-
this.dataGrid.select(dataToSelect.filter((value, index, self) => self.indexOf(value) === index));
|
|
193
|
+
if (!this.hasDetails) {
|
|
194
|
+
return html.nothing;
|
|
238
195
|
}
|
|
196
|
+
if (this.dataGrid.getRowDetailsTemplate) {
|
|
197
|
+
return this.dataGrid.getRowDetailsTemplate(this.data);
|
|
198
|
+
}
|
|
199
|
+
const subData = this.dataGrid.getSubData(this.data);
|
|
200
|
+
if (subData) {
|
|
201
|
+
return html `
|
|
202
|
+
<mo-flex style='width: 100%; padding: 0px'>
|
|
203
|
+
${subData.map(data => this.dataGrid.getRowTemplate(data, 0))}
|
|
204
|
+
</mo-flex>
|
|
205
|
+
`;
|
|
206
|
+
}
|
|
207
|
+
return html.nothing;
|
|
208
|
+
}
|
|
209
|
+
setSelection(selected) {
|
|
210
|
+
this.selected = selected;
|
|
211
|
+
this.dataGrid.selectionController.setSelection(this.data, selected);
|
|
239
212
|
}
|
|
240
213
|
handleContentClick() {
|
|
241
214
|
if (this.dataGrid.selectOnClick || this.dataGrid.selectionCheckboxesHidden) {
|