@3mo/data-grid 0.8.5-rc.9 → 0.8.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,5 @@
1
1
  import { __decorate } from "tslib";
2
- import { component, Component, css, html, ifDefined, property, event, style, join, queryAll } from '@a11d/lit';
2
+ import { component, Component, css, html, ifDefined, property, event, style } from '@a11d/lit';
3
3
  import { KeyboardController } from '@3mo/keyboard-controller';
4
4
  import { tooltip } from '@3mo/tooltip';
5
5
  import { observeResize } from '@3mo/resize-observer';
@@ -34,9 +34,9 @@ let DataGridHeader = class DataGridHeader extends Component {
34
34
  });
35
35
  return html `
36
36
  <mo-flex class='cell' alignItems='center' direction=${column.alignment === 'end' ? 'horizontal-reversed' : 'horizontal'}
37
- data-sticky=${ifDefined(this.dataGrid.isUsingSubgrid ? column.sticky : undefined)}
37
+ data-sticky=${ifDefined(column.sticky)}
38
38
  data-sticking=${column.intersecting === false}
39
- ${!column.sticky || column.intersecting || this.dataGrid.isUsingSubgrid ? html.nothing : style({ insetInline: column.stickyColumnInsetInline })}
39
+ ${!column.sticky || column.intersecting ? html.nothing : style({ insetInline: column.stickyColumnInsetInline })}
40
40
  ${observeResizeDeferred(([entry]) => column.widthInPixels = entry?.contentRect.width ?? 0)}
41
41
  >
42
42
  <mo-flex direction=${column.alignment === 'end' ? 'horizontal-reversed' : 'horizontal'} alignItems='center'
@@ -53,13 +53,11 @@ let DataGridHeader = class DataGridHeader extends Component {
53
53
  <mo-icon ${style({ color: 'var(--mo-color-accent)' })} icon=${ifDefined(sortIcon)}></mo-icon>
54
54
  `}
55
55
  </mo-flex>
56
- ${!this.dataGrid.isUsingSubgrid ? html.nothing : html `
57
- <mo-data-grid-header-separator
58
- ?data-last=${columns.length - 1 === index}
59
- .dataGrid=${this.dataGrid}
60
- .column=${this.dataGrid.visibleColumns[index]}
61
- ></mo-data-grid-header-separator>
62
- `}
56
+ <mo-data-grid-header-separator
57
+ ?data-last=${columns.length - 1 === index}
58
+ .dataGrid=${this.dataGrid}
59
+ .column=${this.dataGrid.visibleColumns[index]}
60
+ ></mo-data-grid-header-separator>
63
61
  </mo-flex>
64
62
  `;
65
63
  };
@@ -76,8 +74,6 @@ let DataGridHeader = class DataGridHeader extends Component {
76
74
  connected() {
77
75
  this.dataGrid.dataChange.subscribe(this.handleDataGridDataChange);
78
76
  this.dataGrid.selectionChange.subscribe(this.handleDataGridSelectionChange);
79
- this.toggleAttribute('subgrid', this.dataGrid.isUsingSubgrid);
80
- this.toggleAttribute('details', this.dataGrid.hasDetails);
81
77
  }
82
78
  disconnected() {
83
79
  this.dataGrid.dataChange.unsubscribe(this.handleDataGridDataChange);
@@ -88,73 +84,22 @@ let DataGridHeader = class DataGridHeader extends Component {
88
84
  :host {
89
85
  --mo-data-grid-header-separator-height: 15px;
90
86
  --mo-data-grid-header-separator-width: 2px;
91
- display: inherit;
92
- font-size: small;
93
- }
94
-
95
- :host([subgrid]) {
96
- position: sticky;
97
87
  display: grid;
98
88
  grid-template-columns: subgrid;
99
89
  grid-column: -1 / 1;
100
90
  background: var(--mo-data-grid-sticky-part-color);
91
+ position: sticky;
101
92
  top: 0;
102
93
  z-index: 4;
103
-
104
- .details, .selection, .more {
105
- position: sticky;
106
- background: var(--mo-data-grid-sticky-part-color);
107
- z-index: 10;
108
- }
109
-
110
- .cell {
111
- position: relative;
112
- }
113
-
114
- .cell[data-sticky] {
115
- position: sticky;
116
- }
117
-
118
- .cell[data-sticky] /*[data-sticking]*/ {
119
- z-index: 6;
120
- background: var(--mo-data-grid-sticky-part-color);
121
- }
122
-
123
- mo-data-grid-header-separator {
124
- z-index: 5;
125
- }
126
-
127
- .cell[data-sticky] /*[data-sticking]*/ mo-data-grid-header-separator {
128
- z-index: 7;
129
- }
130
-
131
- .details {
132
- inset-inline-start: 0px;
133
- }
134
-
135
- .selection {
136
- inset-inline-start: 0px;
137
- }
138
-
139
- .more {
140
- cursor: pointer;
141
- inset-inline-end: 0px;
142
- }
143
- }
144
-
145
- :host([subgrid][details]) .selection {
146
- inset-inline-start: 20px;
94
+ font-size: small;
147
95
  }
148
96
 
149
- :host([subgrid]), #header {
97
+ #header {
150
98
  border-top: var(--mo-data-grid-border);
151
99
  border-bottom: var(--mo-data-grid-border);
152
- }
153
-
154
- #header {
155
100
  position: relative;
156
101
  height: var(--mo-data-grid-header-height);
157
- background-color: var(--mo-data-grid-sticky-part-color);
102
+ background: var(--mo-data-grid-header-background);
158
103
  }
159
104
 
160
105
  .headerContent {
@@ -180,29 +125,49 @@ let DataGridHeader = class DataGridHeader extends Component {
180
125
  align-items: center;
181
126
  justify-content: center;
182
127
  }
128
+
129
+ .cell {
130
+ position: relative;
131
+ }
132
+
133
+ .cell[data-sticky] {
134
+ position: sticky;
135
+ }
136
+
137
+ .cell[data-sticky] /*[data-sticking]*/ {
138
+ z-index: 6;
139
+ background: var(--mo-data-grid-sticky-part-color);
140
+ }
141
+
142
+ mo-data-grid-header-separator {
143
+ z-index: 5;
144
+ }
145
+
146
+ .cell[data-sticky] /*[data-sticking]*/ mo-data-grid-header-separator {
147
+ z-index: 7;
148
+ }
149
+
150
+ .details, .selection, .more {
151
+ position: sticky;
152
+ background: var(--mo-data-grid-sticky-part-color);
153
+ z-index: 5;
154
+ }
155
+
156
+ .details {
157
+ inset-inline-start: 0px;
158
+ }
159
+
160
+ .selection {
161
+ inset-inline-start: 0px;
162
+ }
163
+
164
+ .more {
165
+ cursor: pointer;
166
+ inset-inline-end: 0px;
167
+ }
183
168
  `;
184
169
  }
185
- get skeletonColumns() {
186
- return [
187
- this.dataGrid.detailsColumnWidth,
188
- this.dataGrid.selectionColumnWidth,
189
- '1fr'
190
- ].filter((c) => c !== undefined).join(' ');
191
- }
192
- get separatorAdjustedColumns() {
193
- return this.dataGrid.dataColumnsWidths.join(' var(--mo-data-grid-columns-gap, 2px) ');
194
- }
195
170
  get template() {
196
- if (!this.dataGrid.isUsingSubgrid) {
197
- return html `
198
- <mo-grid id='header' columns=${this.skeletonColumns} columnGap='var(--mo-data-grid-columns-gap, 2px)'>
199
- ${this.detailsExpanderTemplate}
200
- ${this.selectionTemplate}
201
- ${this.contentTemplate}
202
- ${this.moreTemplate}
203
- </mo-grid>
204
- `;
205
- }
206
171
  return html `
207
172
  ${this.detailsExpanderTemplate}
208
173
  ${this.selectionTemplate}
@@ -234,19 +199,6 @@ let DataGridHeader = class DataGridHeader extends Component {
234
199
  `;
235
200
  }
236
201
  get contentTemplate() {
237
- if (!this.dataGrid.isUsingSubgrid) {
238
- return html `
239
- <mo-grid columns=${this.separatorAdjustedColumns}>
240
- ${join(this.dataGrid.visibleColumns.map(this.getHeaderCellTemplate), index => html `
241
- <mo-data-grid-header-separator
242
- .dataGrid=${this.dataGrid}
243
- .column=${this.dataGrid.visibleColumns[index]}
244
- @columnUpdate=${() => this.dataGrid.requestUpdate()}
245
- ></mo-data-grid-header-separator>
246
- `)}
247
- </mo-grid>
248
- `;
249
- }
250
202
  return html `
251
203
  ${this.dataGrid.visibleColumns.map(this.getHeaderCellTemplate)}
252
204
  `;
@@ -322,9 +274,6 @@ __decorate([
322
274
  __decorate([
323
275
  property({ type: Boolean, reflect: true })
324
276
  ], DataGridHeader.prototype, "overlayOpen", void 0);
325
- __decorate([
326
- queryAll('.headerContent')
327
- ], DataGridHeader.prototype, "cells", void 0);
328
277
  DataGridHeader = __decorate([
329
278
  component('mo-data-grid-header')
330
279
  ], DataGridHeader);
@@ -1 +1 @@
1
- {"version":3,"file":"DataGridHeaderSeparator.d.ts","sourceRoot":"","sources":["../DataGridHeaderSeparator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAA+D,MAAM,WAAW,CAAA;AAClG,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,CAAA;AAE/D,qBACa,uBAAwB,SAAQ,SAAS;IAQlD,QAAQ,EAAG,QAAQ,CAAC,OAAO,CAAC,CAAA;IACH,MAAM,EAAG,cAAc,CAAC,OAAO,CAAC,CAAA;IAEnD,OAAO,CAAC,UAAU,CAAQ;IAC1B,OAAO,CAAC,kBAAkB,CAAI;IAEvC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAK;IAE7B,OAAO,CAAC,YAAY,CAAC,CAAQ;IAC7B,OAAO,CAAC,WAAW,CAAC,CAAQ;IAE5B,WAAoB,MAAM,kCAkDzB;IAED,cAAuB,QAAQ,0CAU9B;IAGD,SAAS,CAAC,eAAe;IAczB,SAAS,CAAC,iBAAiB,CAAC,CAAC,EAAE,YAAY,GAAG,UAAU;IAmBxD,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAIjC;IAED,OAAO,CAAC,qBAAqB;IAM7B,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAYjC;CACD;AAED,OAAO,CAAC,MAAM,CAAC;IACd,UAAU,qBAAqB;QAC9B,+BAA+B,EAAE,uBAAuB,CAAA;KACxD;CACD"}
1
+ {"version":3,"file":"DataGridHeaderSeparator.d.ts","sourceRoot":"","sources":["../DataGridHeaderSeparator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAA+D,MAAM,WAAW,CAAA;AAClG,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,CAAA;AAE/D,qBACa,uBAAwB,SAAQ,SAAS;IACzB,QAAQ,EAAG,QAAQ,CAAC,OAAO,CAAC,CAAA;IAC5B,MAAM,EAAG,cAAc,CAAC,OAAO,CAAC,CAAA;IAEnD,OAAO,CAAC,UAAU,CAAQ;IAC1B,OAAO,CAAC,kBAAkB,CAAI;IAEvC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAK;IAE7B,OAAO,CAAC,YAAY,CAAC,CAAQ;IAC7B,OAAO,CAAC,WAAW,CAAC,CAAQ;IAE5B,WAAoB,MAAM,kCAiDzB;IAED,cAAuB,QAAQ,0CAU9B;IAGD,SAAS,CAAC,eAAe;IAczB,SAAS,CAAC,iBAAiB,CAAC,CAAC,EAAE,YAAY,GAAG,UAAU;IAmBxD,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAIjC;IAED,OAAO,CAAC,qBAAqB;IAM7B,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAIjC;CACD;AAED,OAAO,CAAC,MAAM,CAAC;IACd,UAAU,qBAAqB;QAC9B,+BAA+B,EAAE,uBAAuB,CAAA;KACxD;CACD"}
@@ -12,23 +12,16 @@ let DataGridHeaderSeparator = class DataGridHeaderSeparator extends Component {
12
12
  this.updatePointerPosition(e);
13
13
  };
14
14
  this.handleDoubleClick = () => {
15
- this.column.width = 'max-content';
16
- if (!this.dataGrid.isUsingSubgrid) {
17
- const columns = this.dataGrid.rows.map(row => row.cells.filter(cell => cell.column === this.column)).flat();
18
- const headerCell = this.dataGrid?.header?.cells.find(cell => cell.dataset.selector === this.column.dataSelector);
19
- const width = Math.max(...columns.map(c => c.scrollWidth), headerCell?.scrollWidth ?? 0);
20
- this.column.width = `${width}px`;
21
- }
22
15
  this.isResizing = false;
16
+ this.column.width = 'max-content';
23
17
  this.dataGrid.setColumns(this.dataGrid.columns);
24
18
  };
25
19
  }
26
20
  static get styles() {
27
21
  return css `
28
- :host([subgrid]) {
22
+ :host {
29
23
  position: absolute;
30
24
  inset-inline-end: -2px;
31
- z-index: 2;
32
25
  }
33
26
 
34
27
  :host([data-last]) {
@@ -117,14 +110,7 @@ let DataGridHeaderSeparator = class DataGridHeaderSeparator extends Component {
117
110
  }
118
111
  };
119
112
  __decorate([
120
- property({
121
- type: Object,
122
- updated(dataGrid) {
123
- if (dataGrid) {
124
- this.toggleAttribute('subgrid', dataGrid.isUsingSubgrid);
125
- }
126
- }
127
- })
113
+ property({ type: Object })
128
114
  ], DataGridHeaderSeparator.prototype, "dataGrid", void 0);
129
115
  __decorate([
130
116
  property({ type: Object })
@@ -1 +1 @@
1
- {"version":3,"file":"DataGridColumnComponent.d.ts","sourceRoot":"","sources":["../../columns/DataGridColumnComponent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAY,KAAK,kBAAkB,EAAE,MAAM,WAAW,CAAA;AACxE,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,EAAE,cAAc,EAAE,KAAK,uBAAuB,EAAE,KAAK,oBAAoB,EAAE,MAAM,sBAAsB,CAAA;AAE9G;;;;;;;;;;;GAWG;AACH,8BAAsB,uBAAuB,CAAC,KAAK,EAAE,MAAM,CAAE,SAAQ,SAAS;IAQ1E,QAAQ,CAAC,EAAE,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,SAAS,CAAA;IAElC,KAAK,EAAG,MAAM,CAAA;IACY,MAAM,UAAQ;IACxC,MAAM,CAAC,EAAE,oBAAoB,CAAA;IACZ,OAAO,SAAK;IACZ,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,SAAS,EAAE,uBAAuB,CAAU;IAC5C,YAAY,EAAG,SAAS,CAAC,KAAK,CAAC,CAAA;IAC/B,gBAAgB,CAAC,EAAE,SAAS,CAAC,KAAK,CAAC,CAAA;IACpB,WAAW,UAAQ;IAO5D,WAAW,EAAE,OAAO,GAAG,SAAS,CAAC,KAAK,CAAC,CAAQ;IAElD,IAAI,MAAM,IAAI,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC,CAgB1C;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"}
1
+ {"version":3,"file":"DataGridColumnComponent.d.ts","sourceRoot":"","sources":["../../columns/DataGridColumnComponent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAY,KAAK,kBAAkB,EAAE,MAAM,WAAW,CAAA;AACxE,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,EAAE,cAAc,EAAE,KAAK,uBAAuB,EAAE,KAAK,oBAAoB,EAAE,MAAM,sBAAsB,CAAA;AAE9G;;;;;;;;;;;GAWG;AACH,8BAAsB,uBAAuB,CAAC,KAAK,EAAE,MAAM,CAAE,SAAQ,SAAS;IACjD,QAAQ,CAAC,EAAE,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,SAAS,CAAA;IAE3D,KAAK,SAAgB;IACK,MAAM,UAAQ;IACxC,MAAM,CAAC,EAAE,oBAAoB,CAAA;IACZ,OAAO,SAAK;IACZ,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,SAAS,EAAE,uBAAuB,CAAU;IAC5C,YAAY,EAAG,SAAS,CAAC,KAAK,CAAC,CAAA;IAC/B,gBAAgB,CAAC,EAAE,SAAS,CAAC,KAAK,CAAC,CAAA;IACpB,WAAW,UAAQ;IAO5D,WAAW,EAAE,OAAO,GAAG,SAAS,CAAC,KAAK,CAAC,CAAQ;IAElD,IAAI,MAAM,IAAI,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC,CAgB1C;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"}
@@ -17,6 +17,7 @@ import { DataGridColumn } from '../DataGridColumn.js';
17
17
  export class DataGridColumnComponent extends Component {
18
18
  constructor() {
19
19
  super(...arguments);
20
+ this.width = 'max-content';
20
21
  this.hidden = false;
21
22
  this.heading = '';
22
23
  this.textAlign = 'start';
@@ -55,14 +56,7 @@ export class DataGridColumnComponent extends Component {
55
56
  }
56
57
  }
57
58
  __decorate([
58
- property({
59
- type: Object,
60
- updated(dataGrid) {
61
- if (dataGrid) {
62
- this.width = dataGrid.isUsingSubgrid ? 'max-content' : 'minmax(100px, 1fr)';
63
- }
64
- }
65
- })
59
+ property({ type: Object })
66
60
  ], DataGridColumnComponent.prototype, "dataGrid", void 0);
67
61
  __decorate([
68
62
  property()