@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.
- package/dist/DataGrid.d.ts +2 -5
- package/dist/DataGrid.d.ts.map +1 -1
- package/dist/DataGrid.js +55 -149
- package/dist/DataGridCell.d.ts.map +1 -1
- package/dist/DataGridCell.js +3 -5
- package/dist/DataGridFooter.js +2 -2
- package/dist/DataGridHeader.d.ts +1 -4
- package/dist/DataGridHeader.d.ts.map +1 -1
- package/dist/DataGridHeader.js +52 -103
- package/dist/DataGridHeaderSeparator.d.ts.map +1 -1
- package/dist/DataGridHeaderSeparator.js +3 -17
- package/dist/columns/DataGridColumnComponent.d.ts.map +1 -1
- package/dist/columns/DataGridColumnComponent.js +2 -8
- package/dist/custom-elements.json +5054 -20
- package/dist/rows/DataGridDefaultRow.d.ts.map +1 -1
- package/dist/rows/DataGridDefaultRow.js +11 -16
- package/dist/rows/DataGridRow.d.ts +3 -5
- package/dist/rows/DataGridRow.d.ts.map +1 -1
- package/dist/rows/DataGridRow.js +29 -84
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
package/dist/DataGridHeader.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { __decorate } from "tslib";
|
|
2
|
-
import { component, Component, css, html, ifDefined, property, event, style
|
|
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(
|
|
37
|
+
data-sticky=${ifDefined(column.sticky)}
|
|
38
38
|
data-sticking=${column.intersecting === false}
|
|
39
|
-
${!column.sticky || column.intersecting
|
|
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
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
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
|
-
|
|
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
|
|
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;
|
|
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
|
|
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;
|
|
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()
|