@3mo/data-grid 0.1.4 → 0.2.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.
@@ -4,7 +4,7 @@ import { InstanceofAttributeController } from '@3mo/instanceof-attribute-control
4
4
  import { SlotController } from '@3mo/slot-controller';
5
5
  import { ThemeController } from '@3mo/theme';
6
6
  import { MediaQueryController } from '@3mo/media-query-observer';
7
- import { ColumnDefinition, DataGridCell, DataGridRow, DataGridSidePanelTab } from './index.js';
7
+ import { ColumnDefinition, DataGridCell, DataGridHeader, DataGridRow, DataGridSidePanelTab } from './index.js';
8
8
  export type DataGridPagination = 'auto' | number;
9
9
  export declare const enum DataGridSelectionMode {
10
10
  None = "none",
@@ -22,7 +22,7 @@ export declare const enum DataGridSelectionBehaviorOnDataChange {
22
22
  }
23
23
  export declare const enum DataGridEditability {
24
24
  Never = "never",
25
- OnRowClick = "on-row-click",
25
+ Cell = "cell",
26
26
  Always = "always"
27
27
  }
28
28
  export type DataGridSorting<TData> = {
@@ -43,6 +43,7 @@ export type DataGridSorting<TData> = {
43
43
  * @attr isDataSelectable - Whether data of a given row is selectable.
44
44
  * @attr selectedData - The selected data.
45
45
  * @attr selectOnClick - Whether the row should be selected on click.
46
+ * @attr selectionCheckboxesHidden - Whether the selection checkboxes should be hidden. This activates selection on row click ignoring the `selectOnClick` attribute.
46
47
  * @attr selectionBehaviorOnDataChange - The behavior of the selection when the data changes.
47
48
  * @attr multipleDetails - Whether multiple details can be opened at the same time.
48
49
  * @attr subDataGridDataSelector - The key path of the sub data grid data.
@@ -75,10 +76,7 @@ export type DataGridSorting<TData> = {
75
76
  * @fires sidePanelClose {CustomEvent}
76
77
  * @fires sortingChange {CustomEvent<DataGridSorting<TData>>}
77
78
  * @fires rowClick {CustomEvent<DataGridRow<TData, TDetailsElement>>}
78
- * @fires rowConnected {CustomEvent<DataGridRow<TData, TDetailsElement>>}
79
- * @fires rowDisconnected {CustomEvent<DataGridRow<TData, TDetailsElement>>}
80
79
  * @fires rowDoubleClick {CustomEvent<DataGridRow<TData, TDetailsElement>>}
81
- * @fires rowEdit {CustomEvent<DataGridRow<TData, TDetailsElement>>}
82
80
  * @fires cellEdit {CustomEvent<DataGridCell<any, TData, TDetailsElement>>}
83
81
  */
84
82
  export declare class DataGrid<TData, TDetailsElement extends Element | undefined = undefined> extends Component {
@@ -94,11 +92,8 @@ export declare class DataGrid<TData, TDetailsElement extends Element | undefined
94
92
  readonly sidePanelOpen: EventDispatcher<DataGridSidePanelTab>;
95
93
  readonly sidePanelClose: EventDispatcher;
96
94
  readonly sortingChange: EventDispatcher<DataGridSorting<TData> | undefined>;
97
- readonly rowConnected: EventDispatcher<DataGridRow<TData, TDetailsElement>>;
98
- readonly rowDisconnected: EventDispatcher<DataGridRow<TData, TDetailsElement>>;
99
95
  readonly rowClick: EventDispatcher<DataGridRow<TData, TDetailsElement>>;
100
96
  readonly rowDoubleClick: EventDispatcher<DataGridRow<TData, TDetailsElement>>;
101
- readonly rowEdit: EventDispatcher<DataGridRow<TData, TDetailsElement>>;
102
97
  readonly cellEdit: EventDispatcher<DataGridCell<any, TData, TDetailsElement>>;
103
98
  data: TData[];
104
99
  columns: ColumnDefinition<TData>[];
@@ -111,6 +106,7 @@ export declare class DataGrid<TData, TDetailsElement extends Element | undefined
111
106
  isDataSelectable?: (data: TData) => boolean;
112
107
  selectedData: TData[];
113
108
  selectOnClick: boolean;
109
+ selectionCheckboxesHidden: boolean;
114
110
  selectionBehaviorOnDataChange: DataGridSelectionBehaviorOnDataChange;
115
111
  getRowDetailsTemplate?: (data: TData) => HTMLTemplateResult;
116
112
  multipleDetails: boolean;
@@ -128,7 +124,7 @@ export declare class DataGrid<TData, TDetailsElement extends Element | undefined
128
124
  preventFabCollapse: boolean;
129
125
  protected fabSlotCollapsed: boolean;
130
126
  readonly rows: Array<DataGridRow<TData, TDetailsElement>>;
131
- private readonly header?;
127
+ readonly header?: DataGridHeader<TData>;
132
128
  private readonly rowsContainer?;
133
129
  private readonly footer?;
134
130
  private readonly sidePanel?;
@@ -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
@@ -44,6 +44,7 @@ Localizer.register("de" /* LanguageCode.German */, {
44
44
  * @attr isDataSelectable - Whether data of a given row is selectable.
45
45
  * @attr selectedData - The selected data.
46
46
  * @attr selectOnClick - Whether the row should be selected on click.
47
+ * @attr selectionCheckboxesHidden - Whether the selection checkboxes should be hidden. This activates selection on row click ignoring the `selectOnClick` attribute.
47
48
  * @attr selectionBehaviorOnDataChange - The behavior of the selection when the data changes.
48
49
  * @attr multipleDetails - Whether multiple details can be opened at the same time.
49
50
  * @attr subDataGridDataSelector - The key path of the sub data grid data.
@@ -76,10 +77,7 @@ Localizer.register("de" /* LanguageCode.German */, {
76
77
  * @fires sidePanelClose {CustomEvent}
77
78
  * @fires sortingChange {CustomEvent<DataGridSorting<TData>>}
78
79
  * @fires rowClick {CustomEvent<DataGridRow<TData, TDetailsElement>>}
79
- * @fires rowConnected {CustomEvent<DataGridRow<TData, TDetailsElement>>}
80
- * @fires rowDisconnected {CustomEvent<DataGridRow<TData, TDetailsElement>>}
81
80
  * @fires rowDoubleClick {CustomEvent<DataGridRow<TData, TDetailsElement>>}
82
- * @fires rowEdit {CustomEvent<DataGridRow<TData, TDetailsElement>>}
83
81
  * @fires cellEdit {CustomEvent<DataGridCell<any, TData, TDetailsElement>>}
84
82
  */
85
83
  let DataGrid = DataGrid_1 = class DataGrid extends Component {
@@ -93,6 +91,7 @@ let DataGrid = DataGrid_1 = class DataGrid extends Component {
93
91
  this.selectionMode = "none" /* DataGridSelectionMode.None */;
94
92
  this.selectedData = new Array();
95
93
  this.selectOnClick = false;
94
+ this.selectionCheckboxesHidden = false;
96
95
  this.selectionBehaviorOnDataChange = "reset" /* DataGridSelectionBehaviorOnDataChange.Reset */;
97
96
  this.multipleDetails = false;
98
97
  this.detailsOnClick = false;
@@ -276,12 +275,14 @@ let DataGrid = DataGrid_1 = class DataGrid extends Component {
276
275
  return this.filterElements.length > 0;
277
276
  }
278
277
  get hasSums() {
279
- const hasSums = !!this.columns.find(c => c.sumHeading) || !!this.querySelector('* [slot="sum"]') || !!this.renderRoot.querySelector('slot[name="sum"] > *');
278
+ var _a;
279
+ const hasSums = !!this.columns.find(c => c.sumHeading) || !!this.querySelector('* [slot="sum"]') || !!((_a = this.renderRoot) === null || _a === void 0 ? void 0 : _a.querySelector('slot[name="sum"] > *'));
280
280
  this.toggleAttribute('hasSums', hasSums);
281
281
  return hasSums;
282
282
  }
283
283
  get hasFabs() {
284
- const hasFabs = !!this.querySelector('* [slot=fab]') || !!this.renderRoot.querySelector('#flexFab *:not(slot[name=fab])');
284
+ var _a;
285
+ const hasFabs = !!this.querySelector('* [slot=fab]') || !!((_a = this.renderRoot) === null || _a === void 0 ? void 0 : _a.querySelector('#flexFab *:not(slot[name=fab])'));
285
286
  this.toggleAttribute('hasFabs', hasFabs);
286
287
  return hasFabs;
287
288
  }
@@ -328,7 +329,6 @@ let DataGrid = DataGrid_1 = class DataGrid extends Component {
328
329
  firstUpdated(props) {
329
330
  super.firstUpdated(props);
330
331
  this.extractColumnsIfNotSetExplicitly();
331
- this.rowEdit.subscribe(() => this.requestUpdate());
332
332
  this.cellEdit.subscribe(() => this.requestUpdate());
333
333
  this.setPage(1);
334
334
  }
@@ -727,7 +727,7 @@ let DataGrid = DataGrid_1 = class DataGrid extends Component {
727
727
  return !this.hasDetails ? undefined : window.getComputedStyle(this).getPropertyValue('--mo-data-grid-column-details-width');
728
728
  }
729
729
  get selectionColumnWidth() {
730
- return !this.hasSelection ? undefined : window.getComputedStyle(this).getPropertyValue('--mo-data-grid-column-selection-width');
730
+ return !this.hasSelection || this.selectionCheckboxesHidden ? undefined : window.getComputedStyle(this).getPropertyValue('--mo-data-grid-column-selection-width');
731
731
  }
732
732
  get dataColumnsWidths() {
733
733
  return this.visibleColumns
@@ -801,15 +801,11 @@ let DataGrid = DataGrid_1 = class DataGrid extends Component {
801
801
  .filter(key => !key.startsWith('_'))
802
802
  .map(key => {
803
803
  const columnElement = document.createElement(getDefaultColumnElement(getValueByKeyPath(sampleData, key)));
804
+ columnElement.heading = key.replace(/([A-Z])/g, ' $1').charAt(0).toUpperCase() + key.replace(/([A-Z])/g, ' $1').slice(1);
805
+ columnElement.dataGrid = key;
806
+ const definition = columnElement.definition;
804
807
  columnElement.remove();
805
- return {
806
- heading: key.replace(/([A-Z])/g, ' $1').charAt(0).toUpperCase() + key.replace(/([A-Z])/g, ' $1').slice(1),
807
- dataSelector: key,
808
- width: '1fr',
809
- hidden: false,
810
- getContentTemplate: columnElement.getContentTemplate.bind(columnElement),
811
- getEditContentTemplate: columnElement.getEditContentTemplate.bind(columnElement),
812
- };
808
+ return definition;
813
809
  });
814
810
  }
815
811
  get visibleColumns() {
@@ -855,21 +851,12 @@ __decorate([
855
851
  __decorate([
856
852
  event()
857
853
  ], DataGrid.prototype, "sortingChange", void 0);
858
- __decorate([
859
- event()
860
- ], DataGrid.prototype, "rowConnected", void 0);
861
- __decorate([
862
- event()
863
- ], DataGrid.prototype, "rowDisconnected", void 0);
864
854
  __decorate([
865
855
  event()
866
856
  ], DataGrid.prototype, "rowClick", void 0);
867
857
  __decorate([
868
858
  event()
869
859
  ], DataGrid.prototype, "rowDoubleClick", void 0);
870
- __decorate([
871
- event()
872
- ], DataGrid.prototype, "rowEdit", void 0);
873
860
  __decorate([
874
861
  event()
875
862
  ], DataGrid.prototype, "cellEdit", void 0);
@@ -906,6 +893,9 @@ __decorate([
906
893
  __decorate([
907
894
  property({ type: Boolean })
908
895
  ], DataGrid.prototype, "selectOnClick", void 0);
896
+ __decorate([
897
+ property({ type: Boolean })
898
+ ], DataGrid.prototype, "selectionCheckboxesHidden", void 0);
909
899
  __decorate([
910
900
  property()
911
901
  ], DataGrid.prototype, "selectionBehaviorOnDataChange", void 0);
@@ -992,16 +982,14 @@ function subDataGridSelectorChanged() {
992
982
  .selectionMode=${this.selectionMode}
993
983
  .isDataSelectable=${this.isDataSelectable}
994
984
  ?selectOnClick=${this.selectOnClick}
985
+ ?selectionCheckboxesHidden=${this.selectionCheckboxesHidden}
995
986
  ?primaryContextMenuItemOnDoubleClick=${this.primaryContextMenuItemOnDoubleClick}
996
987
  ?multipleDetails=${this.multipleDetails}
997
988
  ?detailsOnClick=${this.detailsOnClick}
998
989
  .getRowContextMenuTemplate=${this.getRowContextMenuTemplate}
999
990
  editability=${this.editability}
1000
- @rowConnected=${(e) => this.rowConnected.dispatch(e.detail)}
1001
- @rowDisconnected=${(e) => this.rowDisconnected.dispatch(e.detail)}
1002
991
  @rowClick=${(e) => this.rowClick.dispatch(e.detail)}
1003
992
  @rowDoubleClick=${(e) => this.rowDoubleClick.dispatch(e.detail)}
1004
- @rowEdit=${(e) => this.rowEdit.dispatch(e.detail)}
1005
993
  @cellEdit=${(e) => this.cellEdit.dispatch(e.detail)}
1006
994
  ></mo-data-grid>
1007
995
  `;
@@ -1,4 +1,4 @@
1
- import { Component } from '@a11d/lit';
1
+ import { Component, HTMLTemplateResult } from '@a11d/lit';
2
2
  import { ColumnDefinition, DataGridRow } from './index.js';
3
3
  /**
4
4
  * @element mo-data-grid-cell
@@ -6,18 +6,28 @@ import { ColumnDefinition, DataGridRow } from './index.js';
6
6
  * @attr value
7
7
  * @attr column
8
8
  * @attr row
9
- * @attr editing
10
9
  */
11
10
  export declare class DataGridCell<TValue extends KeyPathValueOf<TData>, TData = any, TDetailsElement extends Element | undefined = undefined> extends Component {
12
11
  value: TValue;
13
12
  column: ColumnDefinition<TData, TValue>;
14
13
  row: DataGridRow<TData, TDetailsElement>;
15
- editing: boolean;
14
+ private editing;
15
+ get dataGrid(): import("./DataGrid.js").DataGrid<TData, TDetailsElement>;
16
16
  get data(): TData;
17
17
  get dataSelector(): KeyPathOf<TData>;
18
+ private get cellIndex();
19
+ private get rowIndex();
20
+ private get isEditable();
21
+ get isEditing(): boolean;
22
+ protected handlePointerDown(event: PointerEvent): void;
23
+ protected handleDoubleClick(event: MouseEvent): void;
24
+ protected handleKeyDown(event: KeyboardEvent): Promise<void>;
25
+ private focusCell;
18
26
  static get styles(): import("@a11d/lit").CSSResult;
19
27
  private get tooltip();
20
- protected get template(): import("lit-html").HTMLTemplateResult;
28
+ protected get template(): HTMLTemplateResult;
29
+ private get contentTemplate();
30
+ private get editContentTemplate();
21
31
  }
22
32
  declare global {
23
33
  interface HTMLElementTagNameMap {
@@ -1 +1 @@
1
- {"version":3,"file":"DataGridCell.d.ts","sourceRoot":"","sources":["../DataGridCell.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,SAAS,EAAuB,MAAM,WAAW,CAAA;AAErE,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAO1D;;;;;;;GAOG;AACH,qBACa,YAAY,CAAC,MAAM,SAAS,cAAc,CAAC,KAAK,CAAC,EAAE,KAAK,GAAG,GAAG,EAAE,eAAe,SAAS,OAAO,GAAG,SAAS,GAAG,SAAS,CAAE,SAAQ,SAAS;IAC1H,KAAK,EAAG,MAAM,CAAA;IACd,MAAM,EAAG,gBAAgB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;IACxC,GAAG,EAAG,WAAW,CAAC,KAAK,EAAE,eAAe,CAAC,CAAA;IACzB,OAAO,UAAQ;IAE3D,IAAI,IAAI,UAA2B;IACnC,IAAI,YAAY,qBAAsC;IAEtD,WAAoB,MAAM,kCAsCzB;IAED,OAAO,KAAK,OAAO,GAGlB;IAED,cAAuB,QAAQ,0CAQ9B;CACD;AAED,OAAO,CAAC,MAAM,CAAC;IACd,UAAU,qBAAqB;QAC9B,mBAAmB,EAAE,YAAY,CAAC,OAAO,CAAC,CAAA;KAC1C;CACD"}
1
+ {"version":3,"file":"DataGridCell.d.ts","sourceRoot":"","sources":["../DataGridCell.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,SAAS,EAAsD,kBAAkB,EAAE,MAAM,WAAW,CAAA;AAGxH,OAAO,EAAE,gBAAgB,EAAuB,WAAW,EAAE,MAAM,YAAY,CAAA;AAO/E;;;;;;GAMG;AACH,qBACa,YAAY,CAAC,MAAM,SAAS,cAAc,CAAC,KAAK,CAAC,EAAE,KAAK,GAAG,GAAG,EAAE,eAAe,SAAS,OAAO,GAAG,SAAS,GAAG,SAAS,CAAE,SAAQ,SAAS;IAC1H,KAAK,EAAG,MAAM,CAAA;IACd,MAAM,EAAG,gBAAgB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;IACxC,GAAG,EAAG,WAAW,CAAC,KAAK,EAAE,eAAe,CAAC,CAAA;IAQlE,OAAO,CAAC,OAAO,CAAQ;IAE1B,IAAI,QAAQ,6DAA+B;IAC3C,IAAI,IAAI,UAA2B;IACnC,IAAI,YAAY,qBAAsC;IAEtD,OAAO,KAAK,SAAS,GAAkD;IACvE,OAAO,KAAK,QAAQ,GAA0D;IAE9E,OAAO,KAAK,UAAU,GAIrB;IAED,IAAI,SAAS,YAGZ;IAGD,SAAS,CAAC,iBAAiB,CAAC,KAAK,EAAE,YAAY;IAO/C,SAAS,CAAC,iBAAiB,CAAC,KAAK,EAAE,UAAU;cAQ7B,aAAa,CAAC,KAAK,EAAE,aAAa;IAyClD,OAAO,CAAC,SAAS;IAWjB,WAAoB,MAAM,kCA0CzB;IAED,OAAO,KAAK,OAAO,GAGlB;IAED,cAAuB,QAAQ,uBAU9B;IAED,OAAO,KAAK,eAAe,GAE1B;IAED,OAAO,KAAK,mBAAmB,GAE9B;CACD;AAED,OAAO,CAAC,MAAM,CAAC;IACd,UAAU,qBAAqB;QAC9B,mBAAmB,EAAE,YAAY,CAAC,OAAO,CAAC,CAAA;KAC1C;CACD"}
@@ -1,5 +1,6 @@
1
1
  import { __decorate } from "tslib";
2
- import { component, Component, html, property, css } from '@a11d/lit';
2
+ import { component, Component, html, property, css, eventListener, state, nothing } from '@a11d/lit';
3
+ import { NotificationHost } from '@a11d/lit-application';
3
4
  import { Localizer } from '@3mo/localization';
4
5
  Localizer.register("de" /* LanguageCode.German */, {
5
6
  'Using the clipboard is not allowed in an insecure browser environment': 'In einer unsicheren Browser-Umgebung darf kein Text in die Zwischenablage kopiert werden',
@@ -11,15 +12,89 @@ Localizer.register("de" /* LanguageCode.German */, {
11
12
  * @attr value
12
13
  * @attr column
13
14
  * @attr row
14
- * @attr editing
15
15
  */
16
16
  let DataGridCell = class DataGridCell extends Component {
17
17
  constructor() {
18
18
  super(...arguments);
19
19
  this.editing = false;
20
20
  }
21
+ get dataGrid() { return this.row.dataGrid; }
21
22
  get data() { return this.row.data; }
22
23
  get dataSelector() { return this.column.dataSelector; }
24
+ get cellIndex() { return this.row.cells.indexOf(this); }
25
+ get rowIndex() { return this.dataGrid.rows.indexOf(this.row); }
26
+ get isEditable() {
27
+ return !!this.column.editable
28
+ && this.dataGrid.editability !== "never" /* DataGridEditability.Never */
29
+ && [undefined, null, nothing].includes(this.editContentTemplate) === false;
30
+ }
31
+ get isEditing() {
32
+ return this.isEditable
33
+ && (this.editing || this.dataGrid.editability === "always" /* DataGridEditability.Always */);
34
+ }
35
+ handlePointerDown(event) {
36
+ if (this.isEditing && event.composedPath().includes(this) === false) {
37
+ this.editing = false;
38
+ }
39
+ }
40
+ handleDoubleClick(event) {
41
+ if (this.dataGrid.editability === "cell" /* DataGridEditability.Cell */) {
42
+ event.preventDefault();
43
+ this.editing = true;
44
+ }
45
+ }
46
+ async handleKeyDown(event) {
47
+ var _a, _b, _c;
48
+ switch (event.key) {
49
+ case 'Enter':
50
+ event.preventDefault();
51
+ if (this.isEditable) {
52
+ this.editing = true;
53
+ }
54
+ else {
55
+ this.click();
56
+ }
57
+ break;
58
+ case 'Escape':
59
+ event.preventDefault();
60
+ this.editing = false;
61
+ await this.updateComplete;
62
+ this.focusCell(event, this);
63
+ break;
64
+ case 'c':
65
+ if (this.isEditing === false && event.ctrlKey) {
66
+ event.preventDefault();
67
+ await navigator.clipboard.writeText(String(this.value));
68
+ (_a = NotificationHost.instance) === null || _a === void 0 ? void 0 : _a.notifySuccess(t('Copied to clipboard'));
69
+ }
70
+ break;
71
+ case 'Tab':
72
+ case 'ArrowRight':
73
+ this.focusCell(event, this.row.cells.at(this.cellIndex === this.dataGrid.visibleColumns.length - 1 ? 0 : this.cellIndex + 1));
74
+ break;
75
+ case 'ArrowLeft':
76
+ this.focusCell(event, this.row.cells.at(this.cellIndex === 0 ? this.dataGrid.visibleColumns.length - 1 : this.cellIndex - 1));
77
+ break;
78
+ case 'ArrowUp':
79
+ this.focusCell(event, (_b = this.dataGrid.rows.at(this.rowIndex === 0 ? this.dataGrid.rows.length - 1 : this.rowIndex - 1)) === null || _b === void 0 ? void 0 : _b.cells.at(this.cellIndex));
80
+ break;
81
+ case 'ArrowDown':
82
+ this.focusCell(event, (_c = this.dataGrid.rows.at(this.rowIndex === this.dataGrid.rows.length - 1 ? 0 : this.rowIndex + 1)) === null || _c === void 0 ? void 0 : _c.cells.at(this.cellIndex));
83
+ break;
84
+ default:
85
+ break;
86
+ }
87
+ }
88
+ focusCell(event, cell) {
89
+ if (cell && this.isEditing === false) {
90
+ event.preventDefault();
91
+ cell.focus();
92
+ this.editing = false;
93
+ if (this.dataGrid.selectionCheckboxesHidden) {
94
+ this.dataGrid.select([...(event.shiftKey ? this.dataGrid.selectedData : []), cell.row.data]);
95
+ }
96
+ }
97
+ }
23
98
  static get styles() {
24
99
  return css `
25
100
  :host {
@@ -33,7 +108,11 @@ let DataGridCell = class DataGridCell extends Component {
33
108
  font-size: small;
34
109
  }
35
110
 
36
- :host([editing]) {
111
+ :host(:not([isEditing]):focus) {
112
+ outline: 2px solid var(--mo-color-accent);
113
+ }
114
+
115
+ :host([isEditing]) {
37
116
  display: grid;
38
117
  }
39
118
 
@@ -53,7 +132,7 @@ let DataGridCell = class DataGridCell extends Component {
53
132
  line-height: var(--mo-data-grid-row-height);
54
133
  }
55
134
 
56
- :host([editing]) > :first-child {
135
+ :host([isEditing]) > :first-child {
57
136
  align-self: center;
58
137
  justify-self: stretch;
59
138
  }
@@ -64,14 +143,24 @@ let DataGridCell = class DataGridCell extends Component {
64
143
  return allowedTitleTypes.includes(typeof this.value) ? String(this.value) : '';
65
144
  }
66
145
  get template() {
67
- var _a, _b, _c, _d, _e;
68
146
  this.title = this.tooltip;
69
- const contentTemplate = (_c = (_b = (_a = this.column).getContentTemplate) === null || _b === void 0 ? void 0 : _b.call(_a, this.value, this.data)) !== null && _c !== void 0 ? _c : this.value;
70
- const editContentTemplate = (_e = (_d = this.column).getEditContentTemplate) === null || _e === void 0 ? void 0 : _e.call(_d, this.value, this.data);
147
+ this.toggleAttribute('isEditing', this.isEditing);
71
148
  this.setAttribute('alignment', this.column.alignment || 'start');
72
- return this.column.editable && this.editing && editContentTemplate ? editContentTemplate : html `
73
- ${contentTemplate}
74
- `;
149
+ if (this.isEditing) {
150
+ this.removeAttribute('tabindex');
151
+ }
152
+ else {
153
+ this.setAttribute('tabindex', '-1');
154
+ }
155
+ return this.isEditing ? this.editContentTemplate : this.contentTemplate;
156
+ }
157
+ get contentTemplate() {
158
+ var _a, _b, _c;
159
+ return (_c = (_b = (_a = this.column).getContentTemplate) === null || _b === void 0 ? void 0 : _b.call(_a, this.value, this.data)) !== null && _c !== void 0 ? _c : html `${this.value}`;
160
+ }
161
+ get editContentTemplate() {
162
+ var _a, _b;
163
+ return (_b = (_a = this.column).getEditContentTemplate) === null || _b === void 0 ? void 0 : _b.call(_a, this.value, this.data);
75
164
  }
76
165
  };
77
166
  __decorate([
@@ -84,8 +173,24 @@ __decorate([
84
173
  property({ type: Object })
85
174
  ], DataGridCell.prototype, "row", void 0);
86
175
  __decorate([
87
- property({ type: Boolean, reflect: true })
176
+ state({
177
+ updated() {
178
+ var _a;
179
+ if (this.isEditing) {
180
+ (_a = this.renderRoot.querySelector('[data-focus]')) === null || _a === void 0 ? void 0 : _a.focus();
181
+ }
182
+ }
183
+ })
88
184
  ], DataGridCell.prototype, "editing", void 0);
185
+ __decorate([
186
+ eventListener({ target: document, type: 'pointerdown' })
187
+ ], DataGridCell.prototype, "handlePointerDown", null);
188
+ __decorate([
189
+ eventListener('dblclick')
190
+ ], DataGridCell.prototype, "handleDoubleClick", null);
191
+ __decorate([
192
+ eventListener('keydown')
193
+ ], DataGridCell.prototype, "handleKeyDown", null);
89
194
  DataGridCell = __decorate([
90
195
  component('mo-data-grid-cell')
91
196
  ], DataGridCell);
@@ -101,7 +101,7 @@ let DataGridHeader = class DataGridHeader extends Component {
101
101
  `;
102
102
  }
103
103
  get selectionTemplate() {
104
- return this.dataGrid.hasSelection === false ? nothing : html `
104
+ return this.dataGrid.hasSelection === false || this.dataGrid.selectionCheckboxesHidden ? nothing : html `
105
105
  <mo-flex justifyContent='center' alignItems='center'>
106
106
  ${this.dataGrid.selectionMode !== "multiple" /* DataGridSelectionMode.Multiple */ ? nothing : html `
107
107
  <mo-checkbox ${style({ position: 'absolute' })} value=${this.selection} @change=${this.handleSelectionChange}></mo-checkbox>
@@ -23,7 +23,7 @@ export declare abstract class DataGridColumn<TData, TValue> extends Component {
23
23
  nonEditable: boolean;
24
24
  get definition(): ColumnDefinition<TData, TValue>;
25
25
  abstract getContentTemplate(value: TValue | undefined, data: TData): HTMLTemplateResult;
26
- abstract getEditContentTemplate(value: TValue | undefined, data: TData): HTMLTemplateResult;
26
+ abstract getEditContentTemplate?(value: TValue | undefined, data: TData): HTMLTemplateResult;
27
27
  protected handleEdit(value: TValue | undefined, data: TData): void;
28
28
  connectedCallback(): void;
29
29
  protected updated(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"DataGridColumn.d.ts","sourceRoot":"","sources":["../../columns/DataGridColumn.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAY,kBAAkB,EAAE,MAAM,WAAW,CAAA;AAEnE,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAE9D;;;;;;;;;GASG;AACH,8BAAsB,cAAc,CAAC,KAAK,EAAE,MAAM,CAAE,SAAQ,SAAS;IACxC,QAAQ,CAAC,EAAE,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,SAAS,CAAA;IAE3D,KAAK,SAAuB;IACF,MAAM,UAAQ;IACvB,OAAO,SAAK;IACZ,SAAS,SAAU;IACV,KAAK,EAAG,MAAM,CAAA;IACvB,YAAY,EAAG,SAAS,CAAC,KAAK,CAAC,CAAA;IAChB,WAAW,UAAQ;IACnB,WAAW,UAAQ;IAE/D,IAAI,UAAU,IAAI,gBAAgB,CAAC,KAAK,EAAE,MAAM,CAAC,CAahD;IAED,QAAQ,CAAC,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,IAAI,EAAE,KAAK,GAAG,kBAAkB;IACvF,QAAQ,CAAC,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,IAAI,EAAE,KAAK,GAAG,kBAAkB;IAE3F,SAAS,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,IAAI,EAAE,KAAK;IAIlD,iBAAiB;cAOP,OAAO;CAI1B"}
1
+ {"version":3,"file":"DataGridColumn.d.ts","sourceRoot":"","sources":["../../columns/DataGridColumn.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAY,kBAAkB,EAAE,MAAM,WAAW,CAAA;AAEnE,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAE9D;;;;;;;;;GASG;AACH,8BAAsB,cAAc,CAAC,KAAK,EAAE,MAAM,CAAE,SAAQ,SAAS;IACxC,QAAQ,CAAC,EAAE,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,SAAS,CAAA;IAE3D,KAAK,SAAuB;IACF,MAAM,UAAQ;IACvB,OAAO,SAAK;IACZ,SAAS,SAAU;IACV,KAAK,EAAG,MAAM,CAAA;IACvB,YAAY,EAAG,SAAS,CAAC,KAAK,CAAC,CAAA;IAChB,WAAW,UAAQ;IACnB,WAAW,UAAQ;IAE/D,IAAI,UAAU,IAAI,gBAAgB,CAAC,KAAK,EAAE,MAAM,CAAC,CAahD;IAED,QAAQ,CAAC,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,IAAI,EAAE,KAAK,GAAG,kBAAkB;IACvF,QAAQ,CAAC,sBAAsB,CAAC,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,IAAI,EAAE,KAAK,GAAG,kBAAkB;IAE5F,SAAS,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,IAAI,EAAE,KAAK;IAIlD,iBAAiB;cAOP,OAAO;CAI1B"}
@@ -23,6 +23,7 @@ export class DataGridColumn extends Component {
23
23
  this.nonEditable = false;
24
24
  }
25
25
  get definition() {
26
+ var _a;
26
27
  return {
27
28
  dataSelector: this.dataSelector,
28
29
  heading: this.heading,
@@ -31,9 +32,9 @@ export class DataGridColumn extends Component {
31
32
  hidden: this.hidden,
32
33
  width: !AsteriskSyntaxStyleHandler.regex.test(this.width) ? this.width : `${AsteriskSyntaxStyleHandler.getProportion(this.width)}fr`,
33
34
  sortable: !this.nonSortable,
34
- editable: !this.nonEditable,
35
+ editable: !this.nonEditable && this.getEditContentTemplate !== undefined,
35
36
  getContentTemplate: this.getContentTemplate.bind(this),
36
- getEditContentTemplate: this.getEditContentTemplate.bind(this),
37
+ getEditContentTemplate: (_a = this.getEditContentTemplate) === null || _a === void 0 ? void 0 : _a.bind(this),
37
38
  };
38
39
  }
39
40
  handleEdit(value, data) {
@@ -27,7 +27,7 @@ let DataGridColumnBoolean = class DataGridColumnBoolean extends DataGridColumn {
27
27
  }
28
28
  getEditContentTemplate(value, data) {
29
29
  return html `
30
- <mo-checkbox label=${this.heading}
30
+ <mo-checkbox label=${this.heading} data-focus
31
31
  ?checked=${value}
32
32
  @change=${(e) => this.handleEdit(e.detail === 'checked', data)}
33
33
  ></mo-checkbox>
@@ -14,7 +14,7 @@ let DataGridColumnCurrency = class DataGridColumnCurrency extends DataGridColumn
14
14
  }
15
15
  getEditContentTemplate(value, data) {
16
16
  return html `
17
- <mo-field-currency dense
17
+ <mo-field-currency dense data-focus
18
18
  label=${this.heading}
19
19
  value=${ifDefined(value)}
20
20
  @change=${(e) => this.handleEdit(e.detail, data)}
@@ -17,7 +17,7 @@ let DataGridColumnDate = class DataGridColumnDate extends DataGridColumn {
17
17
  }
18
18
  getEditContentTemplate(value, data) {
19
19
  return html `
20
- <mo-field-date dense
20
+ <mo-field-date dense data-focus
21
21
  ?hideDatePicker=${this.hideDatePicker}
22
22
  label=${this.heading}
23
23
  .value=${value}
@@ -2,7 +2,7 @@ import { DataGridColumn } from './DataGridColumn.js';
2
2
  /** @element mo-data-grid-column-image */
3
3
  export declare class DataGridColumnImage<TData> extends DataGridColumn<TData, string> {
4
4
  getContentTemplate(value: string | undefined, _data: TData): import("lit-html").HTMLTemplateResult;
5
- getEditContentTemplate(value: string | undefined, data: TData): import("lit-html").HTMLTemplateResult;
5
+ getEditContentTemplate: undefined;
6
6
  }
7
7
  declare global {
8
8
  interface HTMLElementTagNameMap {
@@ -1 +1 @@
1
- {"version":3,"file":"DataGridColumnImage.d.ts","sourceRoot":"","sources":["../../columns/DataGridColumnImage.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAEpD,yCAAyC;AACzC,qBACa,mBAAmB,CAAC,KAAK,CAAE,SAAQ,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC;IAE5E,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,KAAK,EAAE,KAAK;IAM1D,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,IAAI,EAAE,KAAK;CAG7D;AAED,OAAO,CAAC,MAAM,CAAC;IACd,UAAU,qBAAqB;QAC9B,2BAA2B,EAAE,mBAAmB,CAAC,OAAO,CAAC,CAAA;KACzD;CACD"}
1
+ {"version":3,"file":"DataGridColumnImage.d.ts","sourceRoot":"","sources":["../../columns/DataGridColumnImage.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAEpD,yCAAyC;AACzC,qBACa,mBAAmB,CAAC,KAAK,CAAE,SAAQ,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC;IAE5E,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,KAAK,EAAE,KAAK;IAMjD,sBAAsB,YAAY;CAC3C;AAED,OAAO,CAAC,MAAM,CAAC;IACd,UAAU,qBAAqB;QAC9B,2BAA2B,EAAE,mBAAmB,CAAC,OAAO,CAAC,CAAA;KACzD;CACD"}
@@ -3,15 +3,16 @@ import { component, html, nothing } from '@a11d/lit';
3
3
  import { DataGridColumn } from './DataGridColumn.js';
4
4
  /** @element mo-data-grid-column-image */
5
5
  let DataGridColumnImage = class DataGridColumnImage extends DataGridColumn {
6
+ constructor() {
7
+ super(...arguments);
8
+ this.getEditContentTemplate = undefined;
9
+ }
6
10
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
7
11
  getContentTemplate(value, _data) {
8
12
  return !value ? nothing : html `
9
13
  <img style='vertical-align: middle' src=${value} onload='this.hidden = false' onerror='this.hidden = true'/>
10
14
  `;
11
15
  }
12
- getEditContentTemplate(value, data) {
13
- return this.getContentTemplate(value, data);
14
- }
15
16
  };
16
17
  DataGridColumnImage = __decorate([
17
18
  component('mo-data-grid-column-image')
@@ -10,7 +10,7 @@ let DataGridColumnNumber = class DataGridColumnNumber extends DataGridColumnNumb
10
10
  }
11
11
  getEditContentTemplate(value, data) {
12
12
  return html `
13
- <mo-field-number dense label=${this.heading}
13
+ <mo-field-number dense label=${this.heading} data-focus
14
14
  value=${ifDefined(value)}
15
15
  @change=${(e) => this.handleEdit(e.detail, data)}
16
16
  ></mo-field-number>
@@ -1,11 +1,11 @@
1
- import { TemplateResult } from '@a11d/lit';
1
+ import { HTMLTemplateResult } from '@a11d/lit';
2
2
  import { DataGridColumn } from './DataGridColumn.js';
3
3
  export declare abstract class DataGridColumnNumberBase<TData> extends DataGridColumn<TData, number> {
4
4
  sumHeading: string | undefined;
5
5
  textAlign: string;
6
6
  get definition(): {
7
7
  sumHeading: string | undefined;
8
- getSumTemplate: (sum: number) => TemplateResult<1>;
8
+ getSumTemplate: (sum: number) => HTMLTemplateResult;
9
9
  heading: string;
10
10
  title?: string | undefined;
11
11
  dataSelector: KeyPathOf<TData>;
@@ -14,9 +14,9 @@ export declare abstract class DataGridColumnNumberBase<TData> extends DataGridCo
14
14
  hidden?: boolean | undefined;
15
15
  sortable?: boolean | undefined;
16
16
  editable?: boolean | undefined;
17
- getContentTemplate?(value: number, data: TData): import("lit-html").HTMLTemplateResult;
18
- getEditContentTemplate?(value: number, data: TData): import("lit-html").HTMLTemplateResult;
17
+ getContentTemplate?(value: number, data: TData): HTMLTemplateResult;
18
+ getEditContentTemplate?(value: number, data: TData): HTMLTemplateResult;
19
19
  };
20
- abstract getSumTemplate(sum: number): TemplateResult<1>;
20
+ abstract getSumTemplate(sum: number): HTMLTemplateResult;
21
21
  }
22
22
  //# sourceMappingURL=DataGridColumnNumberBase.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"DataGridColumnNumberBase.d.ts","sourceRoot":"","sources":["../../columns/DataGridColumnNumberBase.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,cAAc,EAAE,MAAM,WAAW,CAAA;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAEpD,8BAAsB,wBAAwB,CAAC,KAAK,CAAE,SAAQ,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC;IAC9E,UAAU,EAAE,MAAM,GAAG,SAAS,CAAY;IACjC,SAAS,SAAQ;IAEtC,IAAa,UAAU;;;;;;;;;;;;;MAMtB;IAED,QAAQ,CAAC,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,CAAC,CAAC,CAAC;CACvD"}
1
+ {"version":3,"file":"DataGridColumnNumberBase.d.ts","sourceRoot":"","sources":["../../columns/DataGridColumnNumberBase.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAY,MAAM,WAAW,CAAA;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAEpD,8BAAsB,wBAAwB,CAAC,KAAK,CAAE,SAAQ,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC;IAC9E,UAAU,EAAE,MAAM,GAAG,SAAS,CAAY;IACjC,SAAS,SAAQ;IAEtC,IAAa,UAAU;;;;;;;;;;;;;MAMtB;IAED,QAAQ,CAAC,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,kBAAkB;CACxD"}
@@ -10,7 +10,7 @@ let DataGridColumnPercent = class DataGridColumnPercent extends DataGridColumnNu
10
10
  }
11
11
  getEditContentTemplate(value, data) {
12
12
  return html `
13
- <mo-field-percent dense
13
+ <mo-field-percent dense data-focus
14
14
  label=${this.heading}
15
15
  value=${ifDefined(value)}
16
16
  @change=${(e) => this.handleEdit(e.detail, data)}
@@ -9,7 +9,7 @@ let DataGridColumnText = class DataGridColumnText extends DataGridColumn {
9
9
  }
10
10
  getEditContentTemplate(value, data) {
11
11
  return html `
12
- <mo-field-text dense label=${this.heading}
12
+ <mo-field-text dense label=${this.heading} data-focus
13
13
  value=${ifDefined(value)}
14
14
  @change=${(e) => this.handleEdit(e.detail, data)}
15
15
  ></mo-field-text>
@@ -18,10 +18,7 @@ export declare abstract class DataGridRow<TData, TDetailsElement extends Element
18
18
  selected: boolean;
19
19
  detailsOpen: boolean;
20
20
  protected contextMenuOpen: boolean;
21
- protected editing: boolean;
22
21
  get detailsElement(): TDetailsElement | undefined;
23
- protected connected(): void;
24
- protected disconnected(): void;
25
22
  protected initialized(): void;
26
23
  updated(...parameters: Parameters<Component['updated']>): void;
27
24
  protected get hasDetails(): boolean;
@@ -35,8 +32,6 @@ export declare abstract class DataGridRow<TData, TDetailsElement extends Element
35
32
  protected get detailsTemplate(): HTMLTemplateResult;
36
33
  private setSelection;
37
34
  protected handleContentClick(): void;
38
- private dataBeforeEdit?;
39
- private enableEditMode;
40
35
  protected handleContentDoubleClick(): Promise<void>;
41
36
  openContextMenu(mouseEvent?: MouseEvent): Promise<void>;
42
37
  private get contextMenuData();