@3mo/data-grid 0.20.3 → 0.21.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.
@@ -8,7 +8,7 @@ import { DataGridColumnsController } from './DataGridColumnsController.js';
8
8
  import { DataGridSelectionBehaviorOnDataChange, DataGridSelectionController, type DataGridSelectability } from './DataGridSelectionController.js';
9
9
  import { DataGridSortingController, type DataGridRankedSortDefinition, type DataGridSorting } from './DataGridSortingController.js';
10
10
  import { DataGridDetailsController } from './DataGridDetailsController.js';
11
- import { DataGridCsvController, DataGridSidePanelTab, type DataGridColumn, type DataGridCell, type DataGridRow, DataGridContextMenuController } from './index.js';
11
+ import { DataGridCsvController, DataGridSidePanelTab, type DataGridColumn, type DataGridCell, type DataGridRow, DataGridContextMenuController, DataGridReorderabilityController, type DataGridReorderChange } from './index.js';
12
12
  import { DataRecord } from './DataRecord.js';
13
13
  export type DataGridPagination = 'auto' | number;
14
14
  export declare enum DataGridEditability {
@@ -31,6 +31,7 @@ export declare enum DataGridEditability {
31
31
  * @attr selectedData - The selected data.
32
32
  * @attr selectOnClick - Whether the row should be selected on click.
33
33
  * @attr selectionBehaviorOnDataChange - The behavior of the selection when the data changes.
34
+ * @attr reorderability - Whether the rows can be reordered. Can only be enabled if sorting is not active, selectability is not 'multiple', and no details are present.
34
35
  * @attr multipleDetails - Whether multiple details can be opened at the same time.
35
36
  * @attr subDataGridDataSelector - The key path of the sub data grid data.
36
37
  * @attr hasDataDetail - Whether the data has a detail.
@@ -69,6 +70,7 @@ export declare enum DataGridEditability {
69
70
  * @fires sidePanelOpen
70
71
  * @fires sidePanelClose
71
72
  * @fires sortingChange
73
+ * @fires reorder
72
74
  * @fires rowDetailsOpen
73
75
  * @fires rowDetailsClose
74
76
  * @fires rowClick
@@ -90,6 +92,7 @@ export declare class DataGrid<TData, TDetailsElement extends Element | undefined
90
92
  readonly sidePanelOpen: EventDispatcher<DataGridSidePanelTab>;
91
93
  readonly sidePanelClose: EventDispatcher;
92
94
  readonly sortingChange: EventDispatcher<Array<DataGridRankedSortDefinition<TData>>>;
95
+ readonly reorder: EventDispatcher<Array<DataGridReorderChange<TData>>>;
93
96
  readonly rowDetailsOpen: EventDispatcher<DataGridRow<TData, TDetailsElement>>;
94
97
  readonly rowDetailsClose: EventDispatcher<DataGridRow<TData, TDetailsElement>>;
95
98
  readonly rowClick: EventDispatcher<DataGridRow<TData, TDetailsElement>>;
@@ -108,6 +111,7 @@ export declare class DataGrid<TData, TDetailsElement extends Element | undefined
108
111
  selectedData: TData[];
109
112
  selectOnClick: boolean;
110
113
  selectionBehaviorOnDataChange: DataGridSelectionBehaviorOnDataChange;
114
+ reorderability?: boolean;
111
115
  getRowDetailsTemplate?: (data: TData) => HTMLTemplateResult;
112
116
  multipleDetails: boolean;
113
117
  subDataGridDataSelector?: KeyPath.Of<TData>;
@@ -180,6 +184,7 @@ export declare class DataGrid<TData, TDetailsElement extends Element | undefined
180
184
  readonly contextMenuController: DataGridContextMenuController<TData>;
181
185
  readonly detailsController: DataGridDetailsController<TData>;
182
186
  readonly csvController: DataGridCsvController<TData>;
187
+ readonly reorderabilityController: DataGridReorderabilityController<TData>;
183
188
  readonly rowIntersectionObserver?: IntersectionObserver;
184
189
  protected updated(...parameters: Parameters<Component['updated']>): void;
185
190
  private navigateToLastValidPageIfNeeded;
@@ -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
@@ -12,7 +12,7 @@ import { DataGridColumnsController } from './DataGridColumnsController.js';
12
12
  import { DataGridSelectionBehaviorOnDataChange, DataGridSelectionController } from './DataGridSelectionController.js';
13
13
  import { DataGridSortingController } from './DataGridSortingController.js';
14
14
  import { DataGridDetailsController } from './DataGridDetailsController.js';
15
- import { DataGridCsvController, DataGridSidePanelTab, DataGridContextMenuController, DataGridColumnComponent } from './index.js';
15
+ import { DataGridCsvController, DataGridSidePanelTab, DataGridContextMenuController, DataGridColumnComponent, DataGridReorderabilityController } from './index.js';
16
16
  import { DataRecord } from './DataRecord.js';
17
17
  Localizer.dictionaries.add('de', {
18
18
  'No results': 'Kein Ergebnis',
@@ -39,6 +39,7 @@ export var DataGridEditability;
39
39
  * @attr selectedData - The selected data.
40
40
  * @attr selectOnClick - Whether the row should be selected on click.
41
41
  * @attr selectionBehaviorOnDataChange - The behavior of the selection when the data changes.
42
+ * @attr reorderability - Whether the rows can be reordered. Can only be enabled if sorting is not active, selectability is not 'multiple', and no details are present.
42
43
  * @attr multipleDetails - Whether multiple details can be opened at the same time.
43
44
  * @attr subDataGridDataSelector - The key path of the sub data grid data.
44
45
  * @attr hasDataDetail - Whether the data has a detail.
@@ -77,6 +78,7 @@ export var DataGridEditability;
77
78
  * @fires sidePanelOpen
78
79
  * @fires sidePanelClose
79
80
  * @fires sortingChange
81
+ * @fires reorder
80
82
  * @fires rowDetailsOpen
81
83
  * @fires rowDetailsClose
82
84
  * @fires rowClick
@@ -121,6 +123,7 @@ let DataGrid = class DataGrid extends Component {
121
123
  this.contextMenuController = new DataGridContextMenuController(this);
122
124
  this.detailsController = new DataGridDetailsController(this);
123
125
  this.csvController = new DataGridCsvController(this);
126
+ this.reorderabilityController = new DataGridReorderabilityController(this);
124
127
  this.splitterResizerTemplate = html `
125
128
  <mo-splitter-resizer-line style='--mo-splitter-resizer-line-thickness: 1px; --mo-splitter-resizer-line-idle-background: var(--mo-color-transparent-gray-3); --mo-splitter-resizer-line-horizontal-transform: scaleX(5);'></mo-splitter-resizer-line>
126
129
  `;
@@ -313,6 +316,7 @@ let DataGrid = class DataGrid extends Component {
313
316
  static get styles() {
314
317
  return css `
315
318
  :host {
319
+ --mo-data-grid-column-reorder-width: 20px;
316
320
  --mo-data-grid-column-details-width: 20px;
317
321
  --mo-data-grid-column-selection-width: 40px;
318
322
  --mo-data-grid-column-actions-width: 28px;
@@ -591,6 +595,7 @@ let DataGrid = class DataGrid extends Component {
591
595
  getRowTemplate(dataRecord, index = 0) {
592
596
  return staticHtml `
593
597
  <${this.rowElementTag} part='row'
598
+ ${this.reorderabilityController.item({ index: dataRecord.index, disabled: !this.reorderabilityController.enabled })}
594
599
  .dataRecord=${dataRecord}
595
600
  ?data-has-alternating-background=${this.hasAlternatingBackground && index % 2 === 1}
596
601
  ></${this.rowElementTag}>
@@ -744,6 +749,9 @@ __decorate([
744
749
  __decorate([
745
750
  event()
746
751
  ], DataGrid.prototype, "sortingChange", void 0);
752
+ __decorate([
753
+ event()
754
+ ], DataGrid.prototype, "reorder", void 0);
747
755
  __decorate([
748
756
  event()
749
757
  ], DataGrid.prototype, "rowDetailsOpen", void 0);
@@ -798,6 +806,9 @@ __decorate([
798
806
  __decorate([
799
807
  property()
800
808
  ], DataGrid.prototype, "selectionBehaviorOnDataChange", void 0);
809
+ __decorate([
810
+ property({ type: Boolean })
811
+ ], DataGrid.prototype, "reorderability", void 0);
801
812
  __decorate([
802
813
  property({ type: Object })
803
814
  ], DataGrid.prototype, "getRowDetailsTemplate", void 0);
@@ -68,10 +68,10 @@ export class DataGridColumn {
68
68
  .filter(n => isNaN(n) === false)
69
69
  .reduce(((a, b) => a + b), 0)
70
70
  || 0;
71
- return html `
72
- <mo-data-grid-footer-sum heading=${this.sumHeading || ''} ${style({ color: this.dataGrid.selectedData.length > 0 ? 'var(--mo-color-accent)' : 'currentColor' })}>
73
- ${this.getSumTemplate(sum)}
74
- </mo-data-grid-footer-sum>
71
+ return html `
72
+ <mo-data-grid-footer-sum heading=${this.sumHeading || ''} ${style({ color: this.dataGrid.selectedData.length > 0 ? 'var(--mo-color-accent)' : 'currentColor' })}>
73
+ ${this.getSumTemplate(sum)}
74
+ </mo-data-grid-footer-sum>
75
75
  `;
76
76
  }
77
77
  get stickyColumnInsetInline() {
@@ -1 +1 @@
1
- {"version":3,"file":"DataGridColumnHeader.d.ts","sourceRoot":"","sources":["../DataGridColumnHeader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,SAAS,EAA+C,KAAK,kBAAkB,EAAE,MAAM,WAAW,CAAA;AAGjH,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AACvD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAczD,qBACa,oBAAqB,SAAQ,SAAS;IACtB,MAAM,EAAG,cAAc,CAAC,OAAO,CAAC,CAAA;IAChB,QAAQ,UAAQ;IAE5D,WAAoB,MAAM,kCAoHzB;IAED,QAAQ,CAAC,gBAAgB,2BAEvB;IAEF,IAAa,QAAQ,uBA4BpB;IAED,OAAO,KAAK,eAAe,GAO1B;IAED,OAAO,KAAK,eAAe,GAU1B;IAED,OAAO,KAAK,YAAY,GAiBvB;IAED,OAAO,CAAC,uBAAuB;IAiB/B,OAAO,CAAC,0BAA0B;IAmBlC,OAAO,CAAC,oBAAoB;IAS5B,OAAO,KAAK,iBAAiB,GAa5B;CACD;AAED,OAAO,CAAC,MAAM,CAAC;IACd,UAAU,qBAAqB;QAC9B,4BAA4B,EAAE,oBAAoB,CAAA;KAClD;CACD"}
1
+ {"version":3,"file":"DataGridColumnHeader.d.ts","sourceRoot":"","sources":["../DataGridColumnHeader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,SAAS,EAA0D,KAAK,kBAAkB,EAAE,MAAM,WAAW,CAAA;AAG5H,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AACvD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAezD,qBACa,oBAAqB,SAAQ,SAAS;IACtB,MAAM,EAAG,cAAc,CAAC,OAAO,CAAC,CAAA;IAChB,QAAQ,UAAQ;IAE5D,WAAoB,MAAM,kCAgIzB;IAED,QAAQ,CAAC,gBAAgB,2BAEvB;IAEF,IAAa,QAAQ,uBA4BpB;IAED,OAAO,KAAK,eAAe,GAO1B;IAED,OAAO,KAAK,eAAe,GAU1B;IAED,OAAO,KAAK,YAAY,GAiBvB;IAED,OAAO,CAAC,uBAAuB;IAiB/B,OAAO,CAAC,0BAA0B;IAmBlC,OAAO,CAAC,oBAAoB;IAS5B,OAAO,KAAK,iBAAiB,GAa5B;CACD;AAED,OAAO,CAAC,MAAM,CAAC;IACd,UAAU,qBAAqB;QAC9B,4BAA4B,EAAE,oBAAoB,CAAA;KAClD;CACD"}
@@ -1,9 +1,10 @@
1
1
  import { __decorate } from "tslib";
2
- import { bind, Component, component, css, html, join, property, style } from '@a11d/lit';
2
+ import { bind, Component, component, css, html, join, property, style, unsafeCSS } from '@a11d/lit';
3
3
  import { tooltip } from '@3mo/tooltip';
4
4
  import { Localizer } from '@3mo/localization';
5
5
  import { ResizeController } from '@3mo/resize-observer';
6
6
  import { DataGridSortingStrategy } from './DataGridSortingController.js';
7
+ import { ReorderabilityState } from './DataGridReorderabilityController.js';
7
8
  Localizer.dictionaries.add('de', {
8
9
  'Sorting': 'Sortierung',
9
10
  'Sort descending': 'Absteigend sortieren',
@@ -32,6 +33,18 @@ let DataGridColumnHeader = class DataGridColumnHeader extends Component {
32
33
  anchor-name: --mo-data-grid-column-header;
33
34
  }
34
35
 
36
+ :host([data-reorderability=${unsafeCSS(ReorderabilityState.Dragging)}]) {
37
+ opacity: 0.5;
38
+ }
39
+
40
+ :host([data-reorderability=${unsafeCSS(ReorderabilityState.DropBefore)}]) {
41
+ border-inline-start: 3px solid var(--mo-color-accent);
42
+ }
43
+
44
+ :host([data-reorderability=${unsafeCSS(ReorderabilityState.DropAfter)}]) {
45
+ border-inline-end: 3px solid var(--mo-color-accent);
46
+ }
47
+
35
48
  :host(:hover) {
36
49
  background: color-mix(in srgb, var(--mo-color-surface), var(--mo-color-gray) 8%);
37
50
  }
@@ -14,6 +14,7 @@ export declare class DataGridColumnsController<TData> extends Controller {
14
14
  get extractedColumns(): DataGridColumn<TData, unknown>[];
15
15
  private provideCssColumnsProperties;
16
16
  private get columns();
17
+ private get orderColumnWidth();
17
18
  private get detailsColumnWidth();
18
19
  private get selectionColumnWidth();
19
20
  private get dataColumnsWidths();
@@ -22,6 +23,6 @@ export declare class DataGridColumnsController<TData> extends Controller {
22
23
  private get elementExtractedColumns();
23
24
  private get autoGeneratedColumns();
24
25
  setColumnWidth(column: keyof typeof this.columnWidths, widthInPixels: number): void;
25
- getStickyColumnInsetInline(column: DataGridColumn<TData>): string;
26
+ getStickyColumnInsetInline(column: DataGridColumn<TData> | keyof typeof this.columnWidths): string;
26
27
  }
27
28
  //# sourceMappingURL=DataGridColumnsController.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"DataGridColumnsController.d.ts","sourceRoot":"","sources":["../DataGridColumnsController.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AACtC,OAAO,EAA2B,KAAK,QAAQ,EAAE,KAAK,cAAc,EAAE,MAAM,YAAY,CAAA;AAExF,qBAAa,yBAAyB,CAAC,KAAK,CAAE,SAAQ,UAAU;aAKjC,IAAI,EAAE,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC;IAJxD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA2C;IACxE,OAAO,CAAC,iBAAiB,CAAqC;IAC9D,OAAO,CAAC,WAAW,CAAQ;gBAEG,IAAI,EAAE,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC;IAI/C,UAAU;IAIV,WAAW;IAQpB,IAAI,cAAc,qCAEjB;IAED,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;IAMhD,cAAc;IAOd,IAAI,gBAAgB,qCAEnB;IAID,OAAO,CAAC,2BAA2B;IAOnC,OAAO,KAAK,OAAO,GAQlB;IAED,OAAO,KAAK,kBAAkB,GAE7B;IAED,OAAO,KAAK,oBAAoB,GAE/B;IAED,OAAO,KAAK,iBAAiB,GAI5B;IAED,OAAO,KAAK,kBAAkB,GAE7B;IAED,OAAO,KAAK,eAAe,GAa1B;IAED,OAAO,KAAK,uBAAuB,GAElC;IAED,OAAO,KAAK,oBAAoB,GA4B/B;IAED,cAAc,CAAC,MAAM,EAAE,MAAM,OAAO,IAAI,CAAC,YAAY,EAAE,aAAa,EAAE,MAAM;IAI5E,0BAA0B,CAAC,MAAM,EAAE,cAAc,CAAC,KAAK,CAAC;CA2BxD"}
1
+ {"version":3,"file":"DataGridColumnsController.d.ts","sourceRoot":"","sources":["../DataGridColumnsController.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AACtC,OAAO,EAA2B,KAAK,QAAQ,EAAE,KAAK,cAAc,EAAE,MAAM,YAAY,CAAA;AAExF,qBAAa,yBAAyB,CAAC,KAAK,CAAE,SAAQ,UAAU;aAKjC,IAAI,EAAE,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC;IAJxD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA0D;IACvF,OAAO,CAAC,iBAAiB,CAAqC;IAC9D,OAAO,CAAC,WAAW,CAAQ;gBAEG,IAAI,EAAE,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC;IAI/C,UAAU;IAIV,WAAW;IAQpB,IAAI,cAAc,qCAEjB;IAED,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;IAMhD,cAAc;IAOd,IAAI,gBAAgB,qCAEnB;IAID,OAAO,CAAC,2BAA2B;IAOnC,OAAO,KAAK,OAAO,GASlB;IAED,OAAO,KAAK,gBAAgB,GAE3B;IAED,OAAO,KAAK,kBAAkB,GAE7B;IAED,OAAO,KAAK,oBAAoB,GAE/B;IAED,OAAO,KAAK,iBAAiB,GAI5B;IAED,OAAO,KAAK,kBAAkB,GAE7B;IAED,OAAO,KAAK,eAAe,GAa1B;IAED,OAAO,KAAK,uBAAuB,GAElC;IAED,OAAO,KAAK,oBAAoB,GA4B/B;IAED,cAAc,CAAC,MAAM,EAAE,MAAM,OAAO,IAAI,CAAC,YAAY,EAAE,aAAa,EAAE,MAAM;IAI5E,0BAA0B,CAAC,MAAM,EAAE,cAAc,CAAC,KAAK,CAAC,GAAG,MAAM,OAAO,IAAI,CAAC,YAAY;CAwCzF"}
@@ -4,7 +4,7 @@ export class DataGridColumnsController extends Controller {
4
4
  constructor(host) {
5
5
  super(host);
6
6
  this.host = host;
7
- this.columnWidths = { details: 0, selection: 0, actions: 0 };
7
+ this.columnWidths = { reordering: 0, details: 0, selection: 0, actions: 0 };
8
8
  this._extractedColumns = new Array();
9
9
  this.initialized = false;
10
10
  }
@@ -45,6 +45,7 @@ export class DataGridColumnsController extends Controller {
45
45
  }
46
46
  get columns() {
47
47
  return [
48
+ { name: 'order', width: this.orderColumnWidth },
48
49
  { name: 'details', width: this.detailsColumnWidth },
49
50
  { name: 'selection', width: this.selectionColumnWidth },
50
51
  ...this.dataColumnsWidths.map(width => ({ name: 'data', width })),
@@ -52,6 +53,9 @@ export class DataGridColumnsController extends Controller {
52
53
  { name: 'actions', width: this.actionsColumnWidth }
53
54
  ].filter(c => c.width !== undefined);
54
55
  }
56
+ get orderColumnWidth() {
57
+ return !this.host.reorderabilityController.enabled ? undefined : window.getComputedStyle(this.host).getPropertyValue('--mo-data-grid-column-reorder-width');
58
+ }
55
59
  get detailsColumnWidth() {
56
60
  return !this.host.hasDetails ? undefined : window.getComputedStyle(this.host).getPropertyValue('--mo-data-grid-column-details-width');
57
61
  }
@@ -115,6 +119,18 @@ export class DataGridColumnsController extends Controller {
115
119
  this.columnWidths[column] = widthInPixels;
116
120
  }
117
121
  getStickyColumnInsetInline(column) {
122
+ if (typeof column !== 'object') {
123
+ switch (column) {
124
+ case 'reordering':
125
+ return '0px';
126
+ case 'details':
127
+ return `${this.columnWidths.reordering}px`;
128
+ case 'selection':
129
+ return `${this.columnWidths.reordering + this.columnWidths.details}px`;
130
+ case 'actions':
131
+ return 'auto';
132
+ }
133
+ }
118
134
  if (!column.sticky) {
119
135
  return '';
120
136
  }
@@ -124,8 +140,8 @@ export class DataGridColumnsController extends Controller {
124
140
  .map(c => c.widthInPixels)
125
141
  .filter(x => x !== undefined)
126
142
  .reduce((a, b) => a + b, 0);
127
- const { selection, details, actions } = this.columnWidths;
128
- const start = `${selection + details + calculate('start')}px`;
143
+ const { reordering, selection, details, actions } = this.columnWidths;
144
+ const start = `${reordering + selection + details + calculate('start')}px`;
129
145
  const end = `${calculate('end') + actions}px`;
130
146
  switch (column.sticky) {
131
147
  case 'start':
@@ -1,17 +1,19 @@
1
1
  import { Component } from '@a11d/lit';
2
- import { type DataGrid } from './index.js';
2
+ import { type DataGrid, ReorderabilityController } from './index.js';
3
3
  export declare class DataGridHeader<TData> extends Component {
4
4
  readonly pageChange: EventDispatcher<number>;
5
5
  readonly modeSelectionChange: EventDispatcher<string>;
6
6
  dataGrid: DataGrid<TData, any>;
7
7
  overlayOpen: boolean;
8
8
  private readonly columnHeaders;
9
+ readonly reorderabilityController: ReorderabilityController;
9
10
  protected connected(): void;
10
11
  protected disconnected(): void;
11
12
  private readonly handleDataGridDataChange;
12
13
  protected updated(...parameters: Parameters<Component['updated']>): void;
13
14
  static get styles(): import("@a11d/lit").CSSResult;
14
15
  protected get template(): import("lit-html").HTMLTemplateResult;
16
+ private get reorderabilityTemplate();
15
17
  private get detailsExpanderTemplate();
16
18
  private get selectionTemplate();
17
19
  private get selection();
@@ -1 +1 @@
1
- {"version":3,"file":"DataGridHeader.d.ts","sourceRoot":"","sources":["../DataGridHeader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,SAAS,EAAqD,MAAM,WAAW,CAAA;AAGnG,OAAO,EAAyB,KAAK,QAAQ,EAAmD,MAAM,YAAY,CAAA;AAiBlH,qBACa,cAAc,CAAC,KAAK,CAAE,SAAQ,SAAS;IAC1C,QAAQ,CAAC,UAAU,EAAG,eAAe,CAAC,MAAM,CAAC,CAAA;IAC7C,QAAQ,CAAC,mBAAmB,EAAG,eAAe,CAAC,MAAM,CAAC,CAAA;IAEnC,QAAQ,EAAG,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;IACf,WAAW,UAAQ;IAEvB,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA8B;cAEjF,SAAS;cAIT,YAAY;IAI/B,OAAO,CAAC,QAAQ,CAAC,wBAAwB,CAExC;cAEkB,OAAO,CAAC,GAAG,UAAU,EAAE,UAAU,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IAK1E,WAAoB,MAAM,kCAyDzB;IAED,cAAuB,QAAQ,0CAQ9B;IAED,OAAO,KAAK,uBAAuB,GAclC;IAED,OAAO,KAAK,iBAAiB,GAW5B;IAED,OAAO,KAAK,SAAS,GASpB;IAED,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAQrC;IAED,OAAO,KAAK,eAAe,GAM1B;IAED,OAAO,KAAK,cAAc,GAEzB;IAED,OAAO,KAAK,eAAe,GA2B1B;IAED,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,gBAAgB;CAIxB;AAED,OAAO,CAAC,MAAM,CAAC;IACd,UAAU,qBAAqB;QAC9B,qBAAqB,EAAE,cAAc,CAAC,OAAO,CAAC,CAAA;KAC9C;CACD"}
1
+ {"version":3,"file":"DataGridHeader.d.ts","sourceRoot":"","sources":["../DataGridHeader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,SAAS,EAA6D,MAAM,WAAW,CAAA;AAG3G,OAAO,EAAyB,KAAK,QAAQ,EAAmD,wBAAwB,EAAE,MAAM,YAAY,CAAA;AAiB5I,qBACa,cAAc,CAAC,KAAK,CAAE,SAAQ,SAAS;IAC1C,QAAQ,CAAC,UAAU,EAAG,eAAe,CAAC,MAAM,CAAC,CAAA;IAC7C,QAAQ,CAAC,mBAAmB,EAAG,eAAe,CAAC,MAAM,CAAC,CAAA;IAEnC,QAAQ,EAAG,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;IACf,WAAW,UAAQ;IAEvB,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA8B;IAEpG,QAAQ,CAAC,wBAAwB,2BAU/B;cAEiB,SAAS;cAIT,YAAY;IAI/B,OAAO,CAAC,QAAQ,CAAC,wBAAwB,CAExC;cAEkB,OAAO,CAAC,GAAG,UAAU,EAAE,UAAU,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IAK1E,WAAoB,MAAM,kCAiDzB;IAED,cAAuB,QAAQ,0CAS9B;IAED,OAAO,KAAK,sBAAsB,GAOjC;IAED,OAAO,KAAK,uBAAuB,GAclC;IAED,OAAO,KAAK,iBAAiB,GAW5B;IAED,OAAO,KAAK,SAAS,GASpB;IAED,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAQrC;IAED,OAAO,KAAK,eAAe,GAM1B;IAED,OAAO,KAAK,cAAc,GAEzB;IAED,OAAO,KAAK,eAAe,GA2B1B;IAED,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,gBAAgB;CAIxB;AAED,OAAO,CAAC,MAAM,CAAC;IACd,UAAU,qBAAqB;QAC9B,qBAAqB,EAAE,cAAc,CAAC,OAAO,CAAC,CAAA;KAC9C;CACD"}
@@ -1,8 +1,8 @@
1
1
  import { __decorate } from "tslib";
2
- import { component, Component, css, html, property, event, style, live, queryAll } from '@a11d/lit';
2
+ import { component, Component, css, html, property, event, style, live, queryAll, repeat } from '@a11d/lit';
3
3
  import { observeResize } from '@3mo/resize-observer';
4
4
  import { Localizer } from '@3mo/localization';
5
- import { DataGridSelectability, DataGridSidePanelTab } from './index.js';
5
+ import { DataGridSelectability, DataGridSidePanelTab, ReorderabilityController } from './index.js';
6
6
  Localizer.dictionaries.add('en', {
7
7
  'Actions for ${count:pluralityNumber} selected entries': [
8
8
  'Actions for the selected entry',
@@ -19,6 +19,17 @@ let DataGridHeader = class DataGridHeader extends Component {
19
19
  constructor() {
20
20
  super(...arguments);
21
21
  this.overlayOpen = false;
22
+ this.reorderabilityController = new ReorderabilityController(this, {
23
+ handleReorder: (source, destination) => {
24
+ const sourceColumn = this.dataGrid.visibleColumns[source];
25
+ const destinationColumn = this.dataGrid.visibleColumns[destination];
26
+ const sourceIndex = this.dataGrid.columns.indexOf(sourceColumn);
27
+ const destinationIndex = this.dataGrid.columns.indexOf(destinationColumn);
28
+ this.dataGrid.columns.splice(sourceIndex, 1);
29
+ this.dataGrid.columns.splice(destinationIndex, 0, sourceColumn);
30
+ this.dataGrid.setColumns(this.dataGrid.columns);
31
+ }
32
+ });
22
33
  this.handleDataGridDataChange = () => {
23
34
  this.requestUpdate();
24
35
  };
@@ -60,20 +71,12 @@ let DataGridHeader = class DataGridHeader extends Component {
60
71
  height: var(--mo-data-grid-header-height);
61
72
  }
62
73
 
63
- .details, .selection, .actions, .context-menu {
74
+ .reorder, .details, .selection, .actions, .context-menu {
64
75
  position: sticky;
65
76
  background: var(--mo-data-grid-sticky-part-color);
66
77
  z-index: 5;
67
78
  }
68
79
 
69
- .details {
70
- inset-inline-start: 0px;
71
- }
72
-
73
- .selection {
74
- inset-inline-start: 0px;
75
- }
76
-
77
80
  .actions, .context-menu {
78
81
  inset-inline-end: 0px;
79
82
  }
@@ -103,6 +106,7 @@ let DataGridHeader = class DataGridHeader extends Component {
103
106
  }
104
107
  get template() {
105
108
  return html `
109
+ ${this.reorderabilityTemplate}
106
110
  ${this.detailsExpanderTemplate}
107
111
  ${this.selectionTemplate}
108
112
  ${this.contentTemplate}
@@ -110,10 +114,18 @@ let DataGridHeader = class DataGridHeader extends Component {
110
114
  ${this.actionsTemplate}
111
115
  `;
112
116
  }
117
+ get reorderabilityTemplate() {
118
+ return !this.dataGrid.reorderabilityController.enabled ? html.nothing : html `
119
+ <mo-flex class='reorder'
120
+ ${style({ insetInlineStart: this.dataGrid.columnsController.getStickyColumnInsetInline('reordering') })}
121
+ ${this.getResizeObserver('reordering')}
122
+ ></mo-flex>
123
+ `;
124
+ }
113
125
  get detailsExpanderTemplate() {
114
126
  return this.dataGrid.hasDetails === false ? html.nothing : html `
115
127
  <mo-flex class='details' justifyContent='center' alignItems='center'
116
- ${style({ insetInlineStart: '0px' })}
128
+ ${style({ insetInlineStart: this.dataGrid.columnsController.getStickyColumnInsetInline('details') })}
117
129
  ${this.getResizeObserver('details')}
118
130
  >
119
131
  ${!this.dataGrid.hasDetails || !this.dataGrid.multipleDetails ? html.nothing : html `
@@ -128,7 +140,7 @@ let DataGridHeader = class DataGridHeader extends Component {
128
140
  get selectionTemplate() {
129
141
  return !this.dataGrid.hasSelection ? html.nothing : html `
130
142
  <mo-flex class='selection' justifyContent='center' alignItems='center'
131
- ${style({ insetInlineStart: this.dataGrid.hasDetails ? '20px' : '0px' })}
143
+ ${style({ insetInlineStart: this.dataGrid.columnsController.getStickyColumnInsetInline('selection') })}
132
144
  ${this.getResizeObserver('selection')}
133
145
  >
134
146
  ${this.dataGrid.selectability !== DataGridSelectability.Multiple ? html.nothing : html `
@@ -149,8 +161,8 @@ let DataGridHeader = class DataGridHeader extends Component {
149
161
  }
150
162
  get contentTemplate() {
151
163
  return html `
152
- ${this.dataGrid.visibleColumns.map(column => html `
153
- <mo-data-grid-column-header .column=${column}></mo-data-grid-column-header>
164
+ ${repeat(this.dataGrid.visibleColumns, c => c.dataSelector, (column, index) => html `
165
+ <mo-data-grid-column-header ${this.reorderabilityController.item({ index, disabled: !!column.sticky })} .column=${column}></mo-data-grid-column-header>
154
166
  `)}
155
167
  `;
156
168
  }
@@ -0,0 +1,63 @@
1
+ import { Controller, type ElementPart, type PartInfo, type ReactiveElement } from '@a11d/lit';
2
+ import type { DataGrid } from './DataGrid.js';
3
+ import type { DataRecord } from './DataRecord.js';
4
+ export declare enum ReorderabilityState {
5
+ Idle = "idle",
6
+ Dragging = "dragging",
7
+ DropBefore = "drop-before",
8
+ DropAfter = "drop-after"
9
+ }
10
+ type ReorderabilityControllerItemDirectiveOptions = {
11
+ readonly index: number;
12
+ readonly disabled?: boolean;
13
+ };
14
+ export declare class ReorderabilityController extends Controller {
15
+ readonly host: ReactiveElement;
16
+ readonly options: {
17
+ handleReorder?: (source: number, destination: number) => void;
18
+ };
19
+ constructor(host: ReactiveElement, options: {
20
+ handleReorder?: (source: number, destination: number) => void;
21
+ });
22
+ private readonly items;
23
+ private draggingItem?;
24
+ get item(): (options: ReorderabilityControllerItemDirectiveOptions) => import("lit-html/directive.js").DirectiveResult<{
25
+ new (partInfo: PartInfo): {
26
+ host?: HTMLElement;
27
+ container?: HTMLElement;
28
+ part?: ElementPart;
29
+ options?: ReorderabilityControllerItemDirectiveOptions;
30
+ render(options: ReorderabilityControllerItemDirectiveOptions): symbol;
31
+ update(part: ElementPart, [options]: [ReorderabilityControllerItemDirectiveOptions]): symbol;
32
+ get state(): ReorderabilityState;
33
+ disconnected(): void;
34
+ reconnected(): void;
35
+ addEventListeners(): void;
36
+ removeEventListeners(): void;
37
+ isConnected: boolean;
38
+ _$initialize(part: import("lit-html").Part, parent: import("lit-html").Disconnectable, attributeIndex: number | undefined): void;
39
+ setValue(value: unknown): void;
40
+ get _$isConnected(): boolean;
41
+ };
42
+ }>;
43
+ handleEvent(e: DragEvent): void;
44
+ private handleDragStart;
45
+ private handleDropOver;
46
+ private handleDrop;
47
+ private handleDragEnd;
48
+ protected handleReorder(source: number, destination: number): void;
49
+ }
50
+ export type DataGridReorderChange<T> = {
51
+ readonly type: 'move' | 'shift';
52
+ readonly record: DataRecord<T>;
53
+ readonly oldIndex: number;
54
+ };
55
+ export declare class DataGridReorderabilityController<T> extends ReorderabilityController {
56
+ readonly host: DataGrid<T, any>;
57
+ constructor(host: DataGrid<T, any>);
58
+ get enabled(): boolean | undefined;
59
+ reorder(source: number, destination: number): void;
60
+ protected handleReorder(source: number, destination: number): void;
61
+ }
62
+ export {};
63
+ //# sourceMappingURL=DataGridReorderabilityController.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DataGridReorderabilityController.d.ts","sourceRoot":"","sources":["../DataGridReorderabilityController.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,UAAU,EAAiC,KAAK,WAAW,EAAE,KAAK,QAAQ,EAAE,KAAK,eAAe,EAAE,MAAM,WAAW,CAAA;AAC5I,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAC7C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAQjD,oBAAY,mBAAmB;IAC9B,IAAI,SAAS;IACb,QAAQ,aAAa;IACrB,UAAU,gBAAgB;IAC1B,SAAS,eAAe;CACxB;AAED,KAAK,4CAA4C,GAAG;IACnD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAC3B,CAAA;AAED,qBAAa,wBAAyB,SAAQ,UAAU;aACzB,IAAI,EAAE,eAAe;IAAE,QAAQ,CAAC,OAAO,EAAE;QACtE,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,KAAK,IAAI,CAAA;KAC7D;gBAF6B,IAAI,EAAE,eAAe,EAAW,OAAO,EAAE;QACtE,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,KAAK,IAAI,CAAA;KAC7D;IAED,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAuE;IAC7F,OAAO,CAAC,YAAY,CAAC,CAAyC;IAE9D,IAAI,IAAI;uBAQgB,QAAQ;mBALvB,WAAW;wBACN,WAAW;mBAChB,WAAW;sBACR,4CAA4C;4BAU7B,4CAA4C;yBAK/C,WAAW,aAAa,CAAC,4CAA4C,CAAC;;;;;;;;;;;OAsD7F;IAED,WAAW,CAAC,CAAC,EAAE,SAAS;IAgBxB,OAAO,CAAC,eAAe;IAUvB,OAAO,CAAC,cAAc;IAStB,OAAO,CAAC,UAAU;IAalB,OAAO,CAAC,aAAa;IAMrB,SAAS,CAAC,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM;CAG3D;AAED,MAAM,MAAM,qBAAqB,CAAC,CAAC,IAAI;IACtC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAA;IAC/B,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,CAAA;IAC9B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;CACzB,CAAA;AAED,qBAAa,gCAAgC,CAAC,CAAC,CAAE,SAAQ,wBAAwB;aAClD,IAAI,EAAE,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;gBAAtB,IAAI,EAAE,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;IAIpD,IAAI,OAAO,wBAKV;IAED,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM;cAIxB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM;CA2BpE"}