@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.
@@ -1,5 +1,5 @@
1
1
  import type { DataGrid } from './DataGrid.js';
2
2
  export declare class CsvGenerator {
3
- static generate<TData>(dataGrid: DataGrid<TData>): void;
3
+ static generate<TData>(dataGrid: DataGrid<TData, any>): void;
4
4
  }
5
5
  //# sourceMappingURL=CsvGenerator.d.ts.map
@@ -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;CAWhD"}
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"}
@@ -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
- selectAll(): void;
164
- deselectAll(): void;
165
- select(data: Array<TData>): void;
166
- isSelectable(data: TData): boolean;
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
- protected getRowTemplate(data: TData, index: number): import("lit-html").TemplateResult;
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 {
@@ -1 +1 @@
1
- {"version":3,"file":"DataGrid.d.ts","sourceRoot":"","sources":["../DataGrid.ts"],"names":[],"mappings":"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"}
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.select(this.previouslySelectedData);
195
+ this.selectionController.selectPreviouslySelectedData();
194
196
  break;
195
197
  }
196
198
  this.dataChange.dispatch(data);
197
199
  }
198
- selectAll() {
199
- if (this.selectionMode === DataGridSelectionMode.Multiple) {
200
- this.select([...this.data]);
201
- }
200
+ get hasSelection() {
201
+ return this.selectionController.hasSelection;
202
202
  }
203
- deselectAll() {
204
- this.select([]);
203
+ selectAll(...parameters) {
204
+ return this.selectionController.selectAll(...parameters);
205
205
  }
206
- select(data) {
207
- if (this.hasSelection) {
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
- isSelectable(data) {
214
- var _a, _b;
215
- return (_b = (_a = this.isDataSelectable) === null || _a === void 0 ? void 0 : _a.call(this, data)) !== null && _b !== void 0 ? _b : true;
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
- const hasAutomatedSubDataGrid = !this.subDataGridDataSelector || this.subDataGridDataSelector && Array.isArray(getValueByKeyPath(data, this.subDataGridDataSelector));
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.data.length;
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({ updated: subDataGridSelectorChanged })
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;AAGlH,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,kCA4FzB;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,uBAK5B;IAED,OAAO,CAAC,YAAY;IAsCpB,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"}
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"}
@@ -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
- var _a, _b, _c;
199
- return !this.hasDetails
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) {