@3mo/data-grid 0.20.2 → 0.21.0-preview.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":"AAAA,OAAO,EAAuB,SAAS,EAA+B,KAAK,cAAc,EAAqC,KAAK,kBAAkB,EAAwD,MAAM,WAAW,CAAA;AAC9N,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;AAC5C,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAA;AAGhE,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAA;AAC1E,OAAO,EAAE,qCAAqC,EAAE,2BAA2B,EAAE,KAAK,qBAAqB,EAAE,MAAM,kCAAkC,CAAA;AACjJ,OAAO,EAAE,yBAAyB,EAAE,KAAK,4BAA4B,EAAE,KAAK,eAAe,EAAE,MAAM,gCAAgC,CAAA;AACnI,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAA;AAC1E,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,KAAK,cAAc,EAAE,KAAK,YAAY,EAA4C,KAAK,WAAW,EAA0B,6BAA6B,EAA2B,MAAM,YAAY,CAAA;AAC5P,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAO5C,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,MAAM,CAAA;AAEhD,oBAAY,mBAAmB;IAC9B,KAAK,UAAU;IACf,IAAI,SAAS;IACb,MAAM,WAAW;CACjB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2DG;AACH,qBACa,QAAQ,CAAC,KAAK,EAAE,eAAe,SAAS,OAAO,GAAG,SAAS,GAAG,SAAS,CAAE,SAAQ,SAAS;IACtG,MAAM,CAAC,QAAQ,CAAC,SAAS,uBAAqD;IAC9E,MAAM,CAAC,QAAQ,CAAC,oBAAoB,uBAAiE;IACrG,MAAM,CAAC,QAAQ,CAAC,QAAQ,uBAAiF;IACzG,MAAM,CAAC,QAAQ,CAAC,wBAAwB,wBAA8D;IACtG,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,oBAAoB,2CAAoC;IAEzE,QAAQ,CAAC,UAAU,EAAG,eAAe,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAA;IACnD,QAAQ,CAAC,eAAe,EAAG,eAAe,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAA;IACxD,QAAQ,CAAC,UAAU,EAAG,eAAe,CAAC,MAAM,CAAC,CAAA;IAC7C,QAAQ,CAAC,gBAAgB,EAAG,eAAe,CAAC,kBAAkB,GAAG,SAAS,CAAC,CAAA;IAC3E,QAAQ,CAAC,aAAa,EAAG,eAAe,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;IACtE,QAAQ,CAAC,aAAa,EAAG,eAAe,CAAC,oBAAoB,CAAC,CAAA;IAC9D,QAAQ,CAAC,cAAc,EAAG,eAAe,CAAA;IACzC,QAAQ,CAAC,aAAa,EAAG,eAAe,CAAC,KAAK,CAAC,4BAA4B,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;IACpF,QAAQ,CAAC,cAAc,EAAG,eAAe,CAAC,WAAW,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC,CAAA;IAC9E,QAAQ,CAAC,eAAe,EAAG,eAAe,CAAC,WAAW,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC,CAAA;IAC/E,QAAQ,CAAC,QAAQ,EAAG,eAAe,CAAC,WAAW,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC,CAAA;IACxE,QAAQ,CAAC,cAAc,EAAG,eAAe,CAAC,WAAW,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC,CAAA;IAC9E,QAAQ,CAAC,cAAc,EAAG,eAAe,CAAC,WAAW,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC,CAAA;IAC9E,QAAQ,CAAC,QAAQ,EAAG,eAAe,CAAC,YAAY,CAAC,GAAG,EAAE,KAAK,EAAE,eAAe,CAAC,CAAC,CAAA;IAE5D,IAAI,UAAqB;IACzB,OAAO,mCAAqC;IAE3B,YAAY,UAAQ;IACpB,4BAA4B,UAAQ;IACpD,IAAI,SAAI;IACmJ,UAAU,CAAC,EAAE,kBAAkB,CAAA;IAE1L,OAAO,CAAC,EAAE,eAAe,CAAC,KAAK,CAAC,CAAA;IAE/B,aAAa,CAAC,EAAE,qBAAqB,CAAA;IACtC,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,OAAO,CAAA;IAClB,YAAY,UAAqB;IACzD,aAAa,UAAQ;IACtC,6BAA6B,wCAA8C;IAE3D,qBAAqB,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,kBAAkB,CAAA;IAC1D,eAAe,UAAQ;IACxC,uBAAuB,CAAC,EAAE,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,CAAA;IAC3B,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,OAAO,CAAA;IACvC,cAAc,UAAQ;IAEvB,yBAAyB,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,KAAK,kBAAkB,CAAA;IACrE,mCAAmC,UAAQ;IAE3C,WAAW,sBAA4B;IAExD,YAAY,EAAE,oBAAoB,GAAG,SAAS,CAAA;IAC7B,eAAe,UAAQ;IACvB,wBAAwB,UAA0C;IAElE,kBAAkB,UAAQ;IACX,SAAS,CAAC,gBAAgB,UAAQ;IAEjD,UAAU,UAAQ;IAQ5C,YAAY,SAAsC;IAQlD,SAAS,SAA2B;IAET,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAuB;IACvD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAU;IAC1B,QAAQ,CAAC,IAAI,EAAG,KAAK,CAAC,WAAW,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC,CAAA;IAC5D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAuB;IAC3C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAA0B;IAEvF,OAAO,CAAC,IAAI,EAAE,MAAM;IAKpB,aAAa,CAAC,UAAU,CAAC,EAAE,kBAAkB;IAK7C,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE,iBAAiB,wCAAqC;IAMlF,IAAI,YAAY,YAEf;IAED,SAAS,CAAC,GAAG,UAAU,EAAE,UAAU,CAAC,OAAO,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC;IAI9E,WAAW,CAAC,GAAG,UAAU,EAAE,UAAU,CAAC,OAAO,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC;IAIlF,MAAM,CAAC,GAAG,UAAU,EAAE,UAAU,CAAC,OAAO,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC;IAIxE,YAAY,CAAC,GAAG,UAAU,EAAE,UAAU,CAAC,OAAO,IAAI,CAAC,mBAAmB,CAAC,YAAY,CAAC;IAIpF,IAAI,UAAU,YAEb;IAED,IAAI,iBAAiB,YAEpB;IAED,cAAc,CAAC,GAAG,UAAU,EAAE,UAAU,CAAC,OAAO,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC;IAI/E,eAAe,CAAC,GAAG,UAAU,EAAE,UAAU,CAAC,OAAO,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC;IAIjF,gBAAgB,CAAC,GAAG,UAAU,EAAE,UAAU,CAAC,OAAO,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC;IAInF,UAAU,CAAC,GAAG,UAAU,EAAE,UAAU,CAAC,OAAO,yBAAyB,CAAC,SAAS,CAAC,GAAG,CAAC;IAIpF,IAAI,CAAC,GAAG,UAAU,EAAE,UAAU,CAAC,OAAO,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC;IAIjE,MAAM,CAAC,GAAG,UAAU,EAAE,UAAU,CAAC,OAAO,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC;IAIrE,WAAW,CAAC,GAAG,UAAU,EAAE,UAAU,CAAC,OAAO,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC;IAI5E,UAAU,CAAC,GAAG,UAAU,EAAE,UAAU,CAAC,OAAO,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC;IAI9E,cAAc,CAAC,GAAG,UAAU,EAAE,UAAU,CAAC,OAAO,IAAI,CAAC,iBAAiB,CAAC,cAAc,CAAC;IAKtF,SAAS,CAAC,kBAAkB,CAAC,CAAC,EAAE,WAAW;IAO3C,IAAI,gBAAgB,qCAEnB;IAED,uBAAuB,CAAC,gBAAgB,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC;IAIvF,IAAI,cAAc,qCAEjB;IAED,MAAM,CAAC,IAAI,EAAE,KAAK;IAIlB,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,cAAc,CAAC,KAAK,EAAE,OAAO,CAAC;IAK3D,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,cAAc,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,SAAS;IAU5H,sBAAsB,CAAC,GAAG,CAAC,EAAE,oBAAoB;IAKjD,IAAI,cAAc,YAEjB;IAED,IAAI,eAAe,cAElB;IAED,IAAI,UAAU,YAEb;IAED,IAAI,cAAc,cAEjB;IAED,IAAI,UAAU,YAEb;IAED,IAAI,OAAO,YAIV;IAED,IAAI,OAAO,YAIV;IAED,IAAI,aAAa,YAEhB;IAED,IAAI,uBAAuB,YAE1B;IAED,IAAI,QAAQ,WAgBX;IAED,IAAI,SAAS,YAIZ;IAED,IAAI,UAAU,IAAI,MAAM,GAAG,SAAS,CAEnC;IAED,IAAI,OAAO,uBAEV;IAED,IAAI,WAAW,YAEd;IAED,SAAS,CAAC,QAAQ,CAAC,cAAc,iBAK/B;IAEF,SAAS,CAAC,QAAQ,CAAC,6BAA6B,gCAA0C;IAC1F,SAAS,CAAC,QAAQ,CAAC,6BAA6B,uBAAuD;IACvG,SAAS,CAAC,QAAQ,CAAC,eAAe,kBAA4B;IAE9D,QAAQ,CAAC,iBAAiB,mCAAsC;IAChE,QAAQ,CAAC,mBAAmB,qCAAwC;IACpE,QAAQ,CAAC,iBAAiB,mCAAsC;IAChE,QAAQ,CAAC,qBAAqB,uCAA0C;IACxE,QAAQ,CAAC,iBAAiB,mCAAsC;IAChE,QAAQ,CAAC,aAAa,+BAAyC;IAE/D,QAAQ,CAAC,uBAAuB,CAAC,EAAE,oBAAoB,CAAA;cAEpC,OAAO,CAAC,GAAG,UAAU,EAAE,UAAU,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IAe1E,OAAO,CAAC,+BAA+B;cAMpB,YAAY,CAAC,KAAK,EAAE,cAAc;IAMrD,WAAoB,MAAM,kCA0HzB;IAED,cAAuB,QAAQ,uBAM9B;IAED,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAEvC;IAED,OAAO,KAAK,oBAAoB,GAc/B;IAED,OAAO,KAAK,mBAAmB,GAO9B;IAED,OAAO,KAAK,iBAAiB,GAU5B;IAED,SAAS,KAAK,uBAAuB,uBAEpC;IAED,SAAS,KAAK,sBAAsB,uBAEnC;IAED,SAAS,KAAK,eAAe,uBAE5B;IAED,SAAS,KAAK,aAAa,6CAE1B;IAED,IAAI,qBAAqB,YAExB;IAED,SAAS,KAAK,WAAW,uBAOxB;IAED,SAAS,KAAK,eAAe,uBAE5B;IAED,SAAS,KAAK,iBAAiB,uBAM9B;IAED,SAAS,KAAK,gBAAgB,uBAgB7B;IAED,SAAS,KAAK,cAAc,uBAI3B;IAED,OAAO,KAAK,YAAY,GAMvB;IAED;;;;;OAKG;IACH,OAAO,KAAK,2BAA2B,GA8CtC;IAED,cAAc,CAAC,UAAU,EAAE,UAAU,CAAC,KAAK,CAAC,EAAE,KAAK,SAAI;IASvD,SAAS,KAAK,cAAc,uBAa3B;IAED,IAAI,YAAY,IAAI,kBAAkB,CAIrC;IAED,SAAS,KAAK,eAAe,uBAU5B;IAED,SAAS,KAAK,sBAAsB,uBAEnC;IAED,SAAS,KAAK,4BAA4B,uBAEzC;IAED,SAAS,KAAK,kBAAkB,uBAE/B;IAED,SAAS,KAAK,sBAAsB,uBAgBnC;IAED,OAAO,CAAC,oBAAoB,CAAI;IAEhC,OAAO,CAAC,YAAY;IAkBpB,SAAS,CAAC,iBAAiB,CAAC,KAAK,EAAE,YAAY;IAI/C,SAAS,CAAE,gBAAgB,CAAC,MAAM,UAAY,GAAG,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,SAAS,CAAC;IA+B9F,IAAI,WAAW,IAAI,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAO1C;IAED,IAAI,iBAAiB,wBAUpB;IAED,SAAS,KAAK,QAAQ,WAErB;IAED,SAAS,KAAK,QAAQ,WAErB;IAEM,UAAU;CAIjB;AAED,OAAO,CAAC,MAAM,CAAC;IACd,UAAU,qBAAqB;QAC9B,cAAc,EAAE,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC,CAAA;KAC5C;CACD"}
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);
@@ -1 +1 @@
1
- {"version":3,"file":"DataGridColumn.d.ts","sourceRoot":"","sources":["../DataGridColumn.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,KAAK,kBAAkB,EAAE,MAAM,WAAW,CAAA;AAChE,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,EAAE,QAAQ,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAA;AACnE,OAAO,KAAK,KAAK,GAAG,MAAM,SAAS,CAAA;AAEnC,MAAM,MAAM,uBAAuB,GAAG,OAAO,GAAG,QAAQ,GAAG,KAAK,CAAA;AAEhE,MAAM,MAAM,oBAAoB,GAAG,OAAO,GAAG,MAAM,GAAG,KAAK,CAAA;AAE3D,MAAM,MAAM,uBAAuB,GAAG,kBAAkB,GAAG,GAAG,CAAC,SAAS,GAAG,YAAY,GAAG,MAAM,EAAE,kBAAkB,CAAC,CAAA;AAErH,qBAAa,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAClD,QAAQ,EAAG,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;IAC/B,YAAY,EAAG,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,CAAA;IAEhC,OAAO,EAAG,MAAM,CAAA;IAChB,WAAW,CAAC,EAAE,MAAM,CAAA;IAEpB,KAAK,EAAE,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,MAAM,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAgB;IAEnE,SAAS,EAAE,uBAAuB,CAAU;IAE5C,MAAM,UAAQ;IACd,IAAI;IAKJ,MAAM,CAAC,EAAE,oBAAoB,CAAA;IAC7B,YAAY,CAAC,MAAM,EAAE,oBAAoB;IAKzC,QAAQ,UAAO;IAEf,OAAO,CAAC,iBAAiB,CAAC,CAAmB;IAC7C,IAAI,gBAAgB,snDAAyD;IAC7E,IAAI,gBAAgB,CAAC,KAAK,mnDAAA,EAAoC;IAE9D,UAAU,CAAC,QAAQ,CAAC,EAAE,uBAAuB,GAAG,IAAI;IAkBpD,oBAAoB,CAAC,IAAI,uBAAuB;IAEhD,kBAAkB,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,GAAG,kBAAkB;IAEnE,QAAQ,EAAE,OAAO,GAAG,SAAS,CAAC,KAAK,CAAC,CAAQ;IAC5C,sBAAsB,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,GAAG,kBAAkB;IAEvE,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,cAAc,CAAC,CAAC,GAAG,EAAE,MAAM,GAAG,kBAAkB;gBAEpC,MAAM,EAAE,OAAO,CAAC,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAI1D,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,cAAc,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,OAAO;IAMpD,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC;IAIzD,OAAO,CAAC,cAAc,CAAC,CAAQ;IAC/B,IAAI,aAAa,WAAsC;IACvD,IAAI,aAAa,CAAC,KAAK,QAAA,EAGtB;IAED,OAAO,CAAC,aAAa,CAAQ;IAC7B,IAAI,YAAY,YAAgC;IAChD,IAAI,YAAY,CAAC,KAAK,SAAA,EAGrB;IAED,IAAI,iBAAiB,6FAIpB;IAED,IAAI,WAAW,mCAkBd;IAED,IAAI,uBAAuB,WA2B1B;IAED,kBAAkB,CAAC,IAAI,SAAS,CAAC,MAAM,CAAC;IACxC,gBAAgB,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC;CAChE"}
1
+ {"version":3,"file":"DataGridColumn.d.ts","sourceRoot":"","sources":["../DataGridColumn.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,KAAK,kBAAkB,EAAE,MAAM,WAAW,CAAA;AAChE,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,EAAE,QAAQ,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAA;AACnE,OAAO,KAAK,KAAK,GAAG,MAAM,SAAS,CAAA;AAEnC,MAAM,MAAM,uBAAuB,GAAG,OAAO,GAAG,QAAQ,GAAG,KAAK,CAAA;AAEhE,MAAM,MAAM,oBAAoB,GAAG,OAAO,GAAG,MAAM,GAAG,KAAK,CAAA;AAE3D,MAAM,MAAM,uBAAuB,GAAG,kBAAkB,GAAG,GAAG,CAAC,SAAS,GAAG,YAAY,GAAG,MAAM,EAAE,kBAAkB,CAAC,CAAA;AAErH,qBAAa,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAClD,QAAQ,EAAG,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;IAC/B,YAAY,EAAG,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,CAAA;IAEhC,OAAO,EAAG,MAAM,CAAA;IAChB,WAAW,CAAC,EAAE,MAAM,CAAA;IAEpB,KAAK,EAAE,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,MAAM,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAgB;IAEnE,SAAS,EAAE,uBAAuB,CAAU;IAE5C,MAAM,UAAQ;IACd,IAAI;IAKJ,MAAM,CAAC,EAAE,oBAAoB,CAAA;IAC7B,YAAY,CAAC,MAAM,EAAE,oBAAoB;IAKzC,QAAQ,UAAO;IAEf,OAAO,CAAC,iBAAiB,CAAC,CAAmB;IAC7C,IAAI,gBAAgB,snDAAyD;IAC7E,IAAI,gBAAgB,CAAC,KAAK,mnDAAA,EAAoC;IAE9D,UAAU,CAAC,QAAQ,CAAC,EAAE,uBAAuB,GAAG,IAAI;IAkBpD,oBAAoB,CAAC,IAAI,uBAAuB;IAEhD,kBAAkB,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,GAAG,kBAAkB;IAEnE,QAAQ,EAAE,OAAO,GAAG,SAAS,CAAC,KAAK,CAAC,CAAQ;IAC5C,sBAAsB,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,GAAG,kBAAkB;IAEvE,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,cAAc,CAAC,CAAC,GAAG,EAAE,MAAM,GAAG,kBAAkB;gBAEpC,MAAM,EAAE,OAAO,CAAC,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAI1D,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,cAAc,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,OAAO;IAMpD,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC;IAIzD,OAAO,CAAC,cAAc,CAAC,CAAQ;IAC/B,IAAI,aAAa,WAAsC;IACvD,IAAI,aAAa,CAAC,KAAK,QAAA,EAGtB;IAED,OAAO,CAAC,aAAa,CAAQ;IAC7B,IAAI,YAAY,YAAgC;IAChD,IAAI,YAAY,CAAC,KAAK,SAAA,EAGrB;IAED,IAAI,iBAAiB,6FAIpB;IAED,IAAI,WAAW,mCAkBd;IAED,IAAI,uBAAuB,WAE1B;IAED,kBAAkB,CAAC,IAAI,SAAS,CAAC,MAAM,CAAC;IACxC,gBAAgB,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC;CAChE"}
@@ -68,34 +68,13 @@ 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() {
78
- const dataGrid = this.dataGrid;
79
- if (!dataGrid || !this.sticky) {
80
- return '';
81
- }
82
- const columnIndex = dataGrid.visibleColumns.indexOf(this);
83
- const calculate = (type) => dataGrid.visibleColumns
84
- .filter((c, i) => c.sticky === type && (type === 'start' ? i < columnIndex : i > columnIndex))
85
- .map(c => c.widthInPixels)
86
- .filter(x => x !== undefined)
87
- .reduce((a, b) => a + b, 0);
88
- const start = `${dataGrid.columnsController.selectionColumnWidthInPixels + dataGrid.columnsController.detailsColumnWidthInPixels + calculate('start')}px`;
89
- const end = `${calculate('end') + dataGrid.columnsController.actionsColumnWidthInPixels}px`;
90
- switch (this.sticky) {
91
- case 'start':
92
- return `${start} auto`;
93
- case 'end':
94
- return `auto ${end}`;
95
- case 'both':
96
- return `${start} ${end}`;
97
- default:
98
- return '';
99
- }
78
+ return this.dataGrid?.columnsController.getStickyColumnInsetInline(this) ?? '';
100
79
  }
101
80
  }
@@ -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
  }
@@ -2,9 +2,7 @@ import { Controller } from '@a11d/lit';
2
2
  import { type DataGrid, type DataGridColumn } from './index.js';
3
3
  export declare class DataGridColumnsController<TData> extends Controller {
4
4
  readonly host: DataGrid<TData, any>;
5
- readonly detailsColumnWidthInPixels = 0;
6
- readonly selectionColumnWidthInPixels = 0;
7
- readonly actionsColumnWidthInPixels = 0;
5
+ private readonly columnWidths;
8
6
  private _extractedColumns;
9
7
  private initialized;
10
8
  constructor(host: DataGrid<TData, any>);
@@ -16,6 +14,7 @@ export declare class DataGridColumnsController<TData> extends Controller {
16
14
  get extractedColumns(): DataGridColumn<TData, unknown>[];
17
15
  private provideCssColumnsProperties;
18
16
  private get columns();
17
+ private get orderColumnWidth();
19
18
  private get detailsColumnWidth();
20
19
  private get selectionColumnWidth();
21
20
  private get dataColumnsWidths();
@@ -23,5 +22,7 @@ export declare class DataGridColumnsController<TData> extends Controller {
23
22
  private get columnsElements();
24
23
  private get elementExtractedColumns();
25
24
  private get autoGeneratedColumns();
25
+ setColumnWidth(column: keyof typeof this.columnWidths, widthInPixels: number): void;
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;aAQjC,IAAI,EAAE,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC;IAPxD,QAAQ,CAAC,0BAA0B,KAAI;IACvC,QAAQ,CAAC,4BAA4B,KAAI;IACzC,QAAQ,CAAC,0BAA0B,KAAI;IAEvC,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;CACD"}
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,9 +4,7 @@ export class DataGridColumnsController extends Controller {
4
4
  constructor(host) {
5
5
  super(host);
6
6
  this.host = host;
7
- this.detailsColumnWidthInPixels = 0;
8
- this.selectionColumnWidthInPixels = 0;
9
- this.actionsColumnWidthInPixels = 0;
7
+ this.columnWidths = { reordering: 0, details: 0, selection: 0, actions: 0 };
10
8
  this._extractedColumns = new Array();
11
9
  this.initialized = false;
12
10
  }
@@ -47,6 +45,7 @@ export class DataGridColumnsController extends Controller {
47
45
  }
48
46
  get columns() {
49
47
  return [
48
+ { name: 'order', width: this.orderColumnWidth },
50
49
  { name: 'details', width: this.detailsColumnWidth },
51
50
  { name: 'selection', width: this.selectionColumnWidth },
52
51
  ...this.dataColumnsWidths.map(width => ({ name: 'data', width })),
@@ -54,6 +53,9 @@ export class DataGridColumnsController extends Controller {
54
53
  { name: 'actions', width: this.actionsColumnWidth }
55
54
  ].filter(c => c.width !== undefined);
56
55
  }
56
+ get orderColumnWidth() {
57
+ return !this.host.reorderabilityController.enabled ? undefined : window.getComputedStyle(this.host).getPropertyValue('--mo-data-grid-column-reorder-width');
58
+ }
57
59
  get detailsColumnWidth() {
58
60
  return !this.host.hasDetails ? undefined : window.getComputedStyle(this.host).getPropertyValue('--mo-data-grid-column-details-width');
59
61
  }
@@ -113,4 +115,43 @@ export class DataGridColumnsController extends Controller {
113
115
  return column;
114
116
  });
115
117
  }
118
+ setColumnWidth(column, widthInPixels) {
119
+ this.columnWidths[column] = widthInPixels;
120
+ }
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
+ }
134
+ if (!column.sticky) {
135
+ return '';
136
+ }
137
+ const columnIndex = this.visibleColumns.indexOf(column);
138
+ const calculate = (type) => this.visibleColumns
139
+ .filter((c, i) => c.sticky === type && (type === 'start' ? i < columnIndex : i > columnIndex))
140
+ .map(c => c.widthInPixels)
141
+ .filter(x => x !== undefined)
142
+ .reduce((a, b) => a + b, 0);
143
+ const { reordering, selection, details, actions } = this.columnWidths;
144
+ const start = `${reordering + selection + details + calculate('start')}px`;
145
+ const end = `${calculate('end') + actions}px`;
146
+ switch (column.sticky) {
147
+ case 'start':
148
+ return `${start} auto`;
149
+ case 'end':
150
+ return `auto ${end}`;
151
+ case 'both':
152
+ return `${start} ${end}`;
153
+ default:
154
+ return '';
155
+ }
156
+ }
116
157
  }
@@ -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;IAKzB,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,11 +114,19 @@ 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' })}
117
- ${this.getResizeObserver('detailsColumnWidthInPixels')}
128
+ ${style({ insetInlineStart: this.dataGrid.columnsController.getStickyColumnInsetInline('details') })}
129
+ ${this.getResizeObserver('details')}
118
130
  >
119
131
  ${!this.dataGrid.hasDetails || !this.dataGrid.multipleDetails ? html.nothing : html `
120
132
  <mo-icon-button dense
@@ -128,8 +140,8 @@ 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' })}
132
- ${this.getResizeObserver('selectionColumnWidthInPixels')}
143
+ ${style({ insetInlineStart: this.dataGrid.columnsController.getStickyColumnInsetInline('selection') })}
144
+ ${this.getResizeObserver('selection')}
133
145
  >
134
146
  ${this.dataGrid.selectability !== DataGridSelectability.Multiple ? html.nothing : html `
135
147
  <mo-checkbox .selected=${live(this.selection)} @change=${this.handleSelectionChange}></mo-checkbox>
@@ -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
  }
@@ -161,7 +173,7 @@ let DataGridHeader = class DataGridHeader extends Component {
161
173
  if (this.dataGrid.hasContextMenu) {
162
174
  const multipleSelected = this.dataGrid.selectedData.length > 1;
163
175
  return html `
164
- <mo-flex ?data-multiple-selected=${multipleSelected} class='context-menu' alignItems='end' justifyContent='center' ${this.getResizeObserver('actionsColumnWidthInPixels')}>
176
+ <mo-flex ?data-multiple-selected=${multipleSelected} class='context-menu' alignItems='end' justifyContent='center' ${this.getResizeObserver('actions')}>
165
177
  <mo-popover-container>
166
178
  <mo-icon-button ?data-multiple-selected=${multipleSelected} dense icon='more_vert' title=${t('Actions for ${count:pluralityNumber} selected entries', { count: this.dataGrid.selectedData.length })}></mo-icon-button>
167
179
 
@@ -174,7 +186,7 @@ let DataGridHeader = class DataGridHeader extends Component {
174
186
  }
175
187
  if (!this.dataGrid.hasToolbar && !this.dataGrid.sidePanelHidden) {
176
188
  return html `
177
- <mo-flex class='actions' alignItems='end' justifyContent='center' ${this.getResizeObserver('actionsColumnWidthInPixels')}>
189
+ <mo-flex class='actions' alignItems='end' justifyContent='center' ${this.getResizeObserver('actions')}>
178
190
  <mo-icon-button dense icon='settings'
179
191
  @click=${() => this.dataGrid.navigateToSidePanelTab(this.dataGrid.sidePanelTab ? undefined : DataGridSidePanelTab.Settings)}
180
192
  ></mo-icon-button>
@@ -183,9 +195,8 @@ let DataGridHeader = class DataGridHeader extends Component {
183
195
  }
184
196
  return html.nothing;
185
197
  }
186
- getResizeObserver(property) {
187
- // @ts-expect-error Readonly property set here
188
- return observeResize(([entry]) => this.dataGrid.columnsController[property] = entry?.contentRect.width ?? 0);
198
+ getResizeObserver(column) {
199
+ return observeResize(([entry]) => this.dataGrid.columnsController.setColumnWidth(column, entry?.contentRect.width ?? 0));
189
200
  }
190
201
  toggleAllDetails() {
191
202
  this.dataGrid.toggleRowDetails();
@@ -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>;
57
+ constructor(host: DataGrid<T>);
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,CAAC;gBAAjB,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;IAI/C,IAAI,OAAO,wBAKV;IAED,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM;cAIxB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM;CA4BpE"}