@aquera/nile-elements 1.1.3-beta-1.4 → 1.1.3-beta-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.
- package/demo/index.html +124 -24
- package/dist/index.js +728 -770
- package/dist/nile-grid/nile-grid.cjs.js +1 -1
- package/dist/nile-grid/nile-grid.cjs.js.map +1 -1
- package/dist/nile-grid/nile-grid.css.cjs.js +1 -1
- package/dist/nile-grid/nile-grid.css.cjs.js.map +1 -1
- package/dist/nile-grid/nile-grid.css.esm.js +4 -8
- package/dist/nile-grid/nile-grid.esm.js +6 -6
- package/dist/nile-grid/nile-grid.utils.cjs.js +1 -1
- package/dist/nile-grid/nile-grid.utils.cjs.js.map +1 -1
- package/dist/nile-grid/nile-grid.utils.esm.js +1 -1
- package/dist/nile-grid-body/nile-grid-body.cjs.js +1 -1
- package/dist/nile-grid-body/nile-grid-body.cjs.js.map +1 -1
- package/dist/nile-grid-body/nile-grid-body.css.cjs.js +1 -1
- package/dist/nile-grid-body/nile-grid-body.css.cjs.js.map +1 -1
- package/dist/nile-grid-body/nile-grid-body.css.esm.js +4 -0
- package/dist/nile-grid-body/nile-grid-body.esm.js +3 -3
- package/dist/nile-grid-cell-item/nile-grid-cell-item.cjs.js +1 -1
- package/dist/nile-grid-cell-item/nile-grid-cell-item.cjs.js.map +1 -1
- package/dist/nile-grid-cell-item/nile-grid-cell-item.css.cjs.js +1 -1
- package/dist/nile-grid-cell-item/nile-grid-cell-item.css.cjs.js.map +1 -1
- package/dist/nile-grid-cell-item/nile-grid-cell-item.css.esm.js +3 -18
- package/dist/nile-grid-cell-item/nile-grid-cell-item.esm.js +3 -3
- package/dist/nile-grid-head/nile-grid-head.cjs.js +1 -1
- package/dist/nile-grid-head/nile-grid-head.cjs.js.map +1 -1
- package/dist/nile-grid-head/nile-grid-head.css.cjs.js +1 -1
- package/dist/nile-grid-head/nile-grid-head.css.cjs.js.map +1 -1
- package/dist/nile-grid-head/nile-grid-head.css.esm.js +1 -1
- package/dist/nile-grid-head/nile-grid-head.esm.js +3 -3
- package/dist/nile-grid-head-item/nile-grid-head-item.cjs.js +1 -1
- package/dist/nile-grid-head-item/nile-grid-head-item.cjs.js.map +1 -1
- package/dist/nile-grid-head-item/nile-grid-head-item.css.cjs.js +1 -1
- package/dist/nile-grid-head-item/nile-grid-head-item.css.cjs.js.map +1 -1
- package/dist/nile-grid-head-item/nile-grid-head-item.css.esm.js +5 -20
- package/dist/nile-grid-head-item/nile-grid-head-item.esm.js +3 -4
- package/dist/nile-grid-row/nile-grid-row.cjs.js +1 -1
- package/dist/nile-grid-row/nile-grid-row.cjs.js.map +1 -1
- package/dist/nile-grid-row/nile-grid-row.css.cjs.js +1 -1
- package/dist/nile-grid-row/nile-grid-row.css.cjs.js.map +1 -1
- package/dist/nile-grid-row/nile-grid-row.css.esm.js +5 -17
- package/dist/nile-grid-row/nile-grid-row.esm.js +5 -4
- package/dist/nile-virtual-select/nile-virtual-select.cjs.js +2 -2
- package/dist/nile-virtual-select/nile-virtual-select.cjs.js.map +1 -1
- package/dist/nile-virtual-select/nile-virtual-select.esm.js +7 -6
- package/dist/src/nile-grid/nile-grid.css.js +2 -6
- package/dist/src/nile-grid/nile-grid.css.js.map +1 -1
- package/dist/src/nile-grid/nile-grid.d.ts +3 -9
- package/dist/src/nile-grid/nile-grid.js +20 -96
- package/dist/src/nile-grid/nile-grid.js.map +1 -1
- package/dist/src/nile-grid/nile-grid.utils.d.ts +2 -3
- package/dist/src/nile-grid/nile-grid.utils.js +81 -223
- package/dist/src/nile-grid/nile-grid.utils.js.map +1 -1
- package/dist/src/nile-grid-body/nile-grid-body.css.js +4 -0
- package/dist/src/nile-grid-body/nile-grid-body.css.js.map +1 -1
- package/dist/src/nile-grid-body/nile-grid-body.js +1 -1
- package/dist/src/nile-grid-body/nile-grid-body.js.map +1 -1
- package/dist/src/nile-grid-cell-item/nile-grid-cell-item.css.js +2 -17
- package/dist/src/nile-grid-cell-item/nile-grid-cell-item.css.js.map +1 -1
- package/dist/src/nile-grid-cell-item/nile-grid-cell-item.d.ts +3 -0
- package/dist/src/nile-grid-cell-item/nile-grid-cell-item.js +11 -1
- package/dist/src/nile-grid-cell-item/nile-grid-cell-item.js.map +1 -1
- package/dist/src/nile-grid-head/nile-grid-head.css.js +1 -1
- package/dist/src/nile-grid-head/nile-grid-head.css.js.map +1 -1
- package/dist/src/nile-grid-head/nile-grid-head.js +1 -1
- package/dist/src/nile-grid-head/nile-grid-head.js.map +1 -1
- package/dist/src/nile-grid-head-item/nile-grid-head-item.css.js +3 -18
- package/dist/src/nile-grid-head-item/nile-grid-head-item.css.js.map +1 -1
- package/dist/src/nile-grid-head-item/nile-grid-head-item.d.ts +2 -3
- package/dist/src/nile-grid-head-item/nile-grid-head-item.js +11 -14
- package/dist/src/nile-grid-head-item/nile-grid-head-item.js.map +1 -1
- package/dist/src/nile-grid-row/nile-grid-row.css.js +5 -17
- package/dist/src/nile-grid-row/nile-grid-row.css.js.map +1 -1
- package/dist/src/nile-grid-row/nile-grid-row.d.ts +1 -4
- package/dist/src/nile-grid-row/nile-grid-row.js +4 -19
- package/dist/src/nile-grid-row/nile-grid-row.js.map +1 -1
- package/dist/src/nile-virtual-select/nile-virtual-select.d.ts +18 -0
- package/dist/src/nile-virtual-select/nile-virtual-select.js +230 -3
- package/dist/src/nile-virtual-select/nile-virtual-select.js.map +1 -1
- package/dist/src/version.js +1 -1
- package/dist/src/version.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/src/nile-grid/nile-grid.css.ts +2 -6
- package/src/nile-grid/nile-grid.ts +21 -124
- package/src/nile-grid/nile-grid.utils.ts +98 -353
- package/src/nile-grid-body/nile-grid-body.css.ts +4 -0
- package/src/nile-grid-body/nile-grid-body.ts +2 -2
- package/src/nile-grid-cell-item/nile-grid-cell-item.css.ts +2 -17
- package/src/nile-grid-cell-item/nile-grid-cell-item.ts +11 -3
- package/src/nile-grid-head/nile-grid-head.css.ts +1 -1
- package/src/nile-grid-head/nile-grid-head.ts +2 -2
- package/src/nile-grid-head-item/nile-grid-head-item.css.ts +3 -18
- package/src/nile-grid-head-item/nile-grid-head-item.ts +16 -8
- package/src/nile-grid-row/nile-grid-row.css.ts +5 -17
- package/src/nile-grid-row/nile-grid-row.ts +6 -9
- package/src/nile-virtual-select/nile-virtual-select.ts +257 -3
- package/vscode-html-custom-data.json +69 -37
- package/src/nile-grid/nile-grid.types.ts +0 -1
package/package.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"description": "Webcomponent nile-elements following open-wc recommendations",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"author": "nile-elements",
|
|
6
|
-
"version": "1.1.3-beta-
|
|
6
|
+
"version": "1.1.3-beta-2.0",
|
|
7
7
|
"main": "dist/src/index.js",
|
|
8
8
|
"type": "module",
|
|
9
9
|
"module": "dist/src/index.js",
|
|
@@ -9,7 +9,6 @@ import { css } from 'lit';
|
|
|
9
9
|
|
|
10
10
|
export const styles = css`
|
|
11
11
|
:host {
|
|
12
|
-
--min-width: 180px;
|
|
13
12
|
display: grid;
|
|
14
13
|
grid-template-rows: auto;
|
|
15
14
|
overflow: auto;
|
|
@@ -20,21 +19,18 @@ export const styles = css`
|
|
|
20
19
|
border: 1px solid var(--nile-colors-neutral-400);
|
|
21
20
|
border-radius: var(--nile-radius-radius-xl);
|
|
22
21
|
max-height: 100%;
|
|
23
|
-
width: 100%;
|
|
24
|
-
min-width: var(--min-width);
|
|
25
|
-
box-shadow: 0px 1px 3px 0px rgba(16, 24, 40, 0.1),
|
|
26
|
-
0px 1px 2px 0px rgba(16, 24, 40, 0.06);
|
|
27
22
|
}
|
|
28
23
|
|
|
29
24
|
::slotted(nile-grid-head),
|
|
30
25
|
::slotted(nile-grid-body) {
|
|
31
26
|
inline-size: 100%;
|
|
27
|
+
display: grid;
|
|
32
28
|
}
|
|
33
29
|
|
|
34
30
|
.nile-resize-start,
|
|
35
31
|
.nile-resize-end {
|
|
36
32
|
position: fixed;
|
|
37
|
-
z-index:
|
|
33
|
+
z-index: 2;
|
|
38
34
|
background-color: var(--nile-colors-neutral-400);
|
|
39
35
|
width: 2px;
|
|
40
36
|
height: 100%;
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
|
-
import { html, CSSResultArray, TemplateResult } from 'lit';
|
|
8
|
+
import { LitElement, html, CSSResultArray, TemplateResult } from 'lit';
|
|
9
9
|
import { customElement, property, query, state } from 'lit/decorators.js';
|
|
10
10
|
import { styles } from './nile-grid.css';
|
|
11
11
|
import NileElement from '../internal/nile-element';
|
|
@@ -18,7 +18,6 @@ import {
|
|
|
18
18
|
rebuildTemplate,
|
|
19
19
|
applyTemplate,
|
|
20
20
|
layout,
|
|
21
|
-
applyColumnsTemplate,
|
|
22
21
|
} from './nile-grid.utils';
|
|
23
22
|
|
|
24
23
|
/**
|
|
@@ -36,12 +35,14 @@ export class NileGrid extends NileElement {
|
|
|
36
35
|
public static get styles(): CSSResultArray {
|
|
37
36
|
return [styles];
|
|
38
37
|
}
|
|
38
|
+
/** User can pass custom widths for the columns */
|
|
39
|
+
@property({ type: Array, attribute: true }) customWidths: number[] = [];
|
|
39
40
|
|
|
40
41
|
/** To set the grid template columns in rebuildTemplate method */
|
|
41
42
|
@state() public colTemplate = '';
|
|
42
43
|
|
|
43
44
|
/** To store the column widths in the beginning and after resizing */
|
|
44
|
-
@state()
|
|
45
|
+
@state() private columnWidths: number[] = [...this.customWidths];
|
|
45
46
|
|
|
46
47
|
/** To get the slot element */
|
|
47
48
|
@query('slot') private slotEl!: HTMLSlotElement;
|
|
@@ -52,25 +53,12 @@ export class NileGrid extends NileElement {
|
|
|
52
53
|
/** To get the last resize line to show the resize handle */
|
|
53
54
|
@query('.nile-resize-end') resizeEnd: HTMLElement;
|
|
54
55
|
|
|
55
|
-
/** To enable horizontal scrolling when user is resizing */
|
|
56
|
-
@property({ type: Boolean, attribute: true, reflect: true })
|
|
57
|
-
enableResizeScroll: boolean = false;
|
|
58
|
-
|
|
59
56
|
/** To store the mutation observer */
|
|
60
57
|
private mo?: MutationObserver;
|
|
61
58
|
|
|
62
|
-
/** To store the resize observer */
|
|
63
|
-
private resizeObserver?: ResizeObserver;
|
|
64
|
-
|
|
65
59
|
/** To store the request animation frame */
|
|
66
60
|
private raf = 0;
|
|
67
61
|
|
|
68
|
-
/** To store the sticky index's */
|
|
69
|
-
@state() public stickyLeftIndexes: number[] = [];
|
|
70
|
-
|
|
71
|
-
/** To store the sticky index's */
|
|
72
|
-
@state() public stickyRightIndexes: number[] = [];
|
|
73
|
-
|
|
74
62
|
private scheduleLayout() {
|
|
75
63
|
if (this.raf) cancelAnimationFrame(this.raf);
|
|
76
64
|
this.raf = requestAnimationFrame(() => {
|
|
@@ -81,8 +69,7 @@ export class NileGrid extends NileElement {
|
|
|
81
69
|
this.ensureWidths.bind(this),
|
|
82
70
|
rebuildTemplate,
|
|
83
71
|
applyTemplate,
|
|
84
|
-
this.
|
|
85
|
-
this.stickyRightIndexes
|
|
72
|
+
this.columnWidths
|
|
86
73
|
);
|
|
87
74
|
});
|
|
88
75
|
}
|
|
@@ -98,107 +85,32 @@ export class NileGrid extends NileElement {
|
|
|
98
85
|
col: number;
|
|
99
86
|
widthPx: number;
|
|
100
87
|
};
|
|
101
|
-
|
|
88
|
+
let w: any;
|
|
102
89
|
const floor = 60;
|
|
103
|
-
const tgt = e.target as HTMLElement;
|
|
104
|
-
const hasSpan =
|
|
105
|
-
!!tgt.getAttribute('colspan') &&
|
|
106
|
-
parseInt(tgt.getAttribute('colspan')!, 10) > 1;
|
|
107
|
-
|
|
108
|
-
const prevW = this.columnWidths[col] ?? floor;
|
|
109
|
-
const newWraw = hasSpan
|
|
110
|
-
? widthPx - (this.columnWidths[col - 1] ?? 0)
|
|
111
|
-
: widthPx;
|
|
112
|
-
|
|
113
|
-
const newW = Math.max(
|
|
114
|
-
floor,
|
|
115
|
-
Math.round(Number.isFinite(newWraw) ? newWraw : prevW)
|
|
116
|
-
);
|
|
117
|
-
|
|
118
|
-
let delta = newW - prevW;
|
|
119
|
-
|
|
120
|
-
if (delta === 0) {
|
|
121
|
-
resizeLinesHandler(
|
|
122
|
-
this.resizeStart,
|
|
123
|
-
this.resizeEnd,
|
|
124
|
-
col,
|
|
125
|
-
this.scrollHeight,
|
|
126
|
-
this.columnWidths,
|
|
127
|
-
);
|
|
128
|
-
return;
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
const takeFromRight = (start: number, needInit: number) => {
|
|
132
|
-
let need = needInit;
|
|
133
|
-
for (let i = start; i < this.columnWidths.length && need > 0; i++) {
|
|
134
|
-
const reducible = Math.max(0, this.columnWidths[i] - floor);
|
|
135
|
-
const cut = Math.min(reducible, need);
|
|
136
|
-
if (cut > 0) {
|
|
137
|
-
this.columnWidths[i] -= cut;
|
|
138
|
-
need -= cut;
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
return need;
|
|
142
|
-
};
|
|
143
|
-
|
|
144
|
-
const giveToRight = (start: number, giveInit: number) => {
|
|
145
|
-
let give = giveInit;
|
|
146
|
-
if (start < this.columnWidths.length && give > 0) {
|
|
147
|
-
this.columnWidths[start] += give;
|
|
148
|
-
give = 0;
|
|
149
|
-
}
|
|
150
|
-
return give;
|
|
151
|
-
};
|
|
152
90
|
|
|
153
|
-
if (
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
}
|
|
159
|
-
if (rightReducible <= 0) {
|
|
160
|
-
delta = 0;
|
|
161
|
-
} else if (delta > rightReducible) {
|
|
162
|
-
delta = rightReducible;
|
|
163
|
-
}
|
|
164
|
-
|
|
165
|
-
this.columnWidths[col] = prevW + delta;
|
|
166
|
-
|
|
167
|
-
if (delta > 0) {
|
|
168
|
-
takeFromRight(col + 1, delta);
|
|
169
|
-
}
|
|
170
|
-
} else {
|
|
171
|
-
if (col === this.columnWidths.length - 1) {
|
|
172
|
-
delta = 0;
|
|
173
|
-
} else {
|
|
174
|
-
const shrink = -delta;
|
|
175
|
-
this.columnWidths[col] = Math.max(floor, prevW - shrink);
|
|
176
|
-
|
|
177
|
-
const remaining = giveToRight(col + 1, shrink);
|
|
178
|
-
if (remaining > 0) {
|
|
179
|
-
this.columnWidths[col] = prevW;
|
|
180
|
-
delta = 0;
|
|
181
|
-
}
|
|
182
|
-
}
|
|
183
|
-
}
|
|
91
|
+
if (
|
|
92
|
+
(e.target as HTMLElement).getAttribute('colspan') &&
|
|
93
|
+
parseInt((e.target as HTMLElement).getAttribute('colspan')!) > 1
|
|
94
|
+
) {
|
|
95
|
+
w = Math.max(floor, Math.round(widthPx - this.columnWidths[col - 1]));
|
|
184
96
|
} else {
|
|
185
|
-
|
|
97
|
+
w = Math.max(floor, Math.round(widthPx));
|
|
186
98
|
}
|
|
187
|
-
|
|
99
|
+
this.columnWidths[col] = w;
|
|
188
100
|
resizeLinesHandler(
|
|
189
101
|
this.resizeStart,
|
|
190
102
|
this.resizeEnd,
|
|
191
103
|
col,
|
|
104
|
+
widthPx,
|
|
192
105
|
this.scrollHeight,
|
|
193
|
-
this.columnWidths
|
|
106
|
+
this.columnWidths,
|
|
107
|
+
e
|
|
194
108
|
);
|
|
195
|
-
|
|
196
109
|
this.colTemplate = rebuildTemplate(
|
|
197
110
|
this.columnWidths.length,
|
|
198
111
|
this.columnWidths
|
|
199
112
|
);
|
|
200
113
|
applyTemplate(getHead(this.slotEl), getBody(this.slotEl), this.colTemplate);
|
|
201
|
-
applyColumnsTemplate(this, this.columnWidths, this.slotEl);
|
|
202
114
|
};
|
|
203
115
|
|
|
204
116
|
protected firstUpdated() {
|
|
@@ -216,18 +128,6 @@ export class NileGrid extends NileElement {
|
|
|
216
128
|
this.mo = new MutationObserver(() => {
|
|
217
129
|
this.scheduleLayout();
|
|
218
130
|
});
|
|
219
|
-
this.resizeObserver?.disconnect();
|
|
220
|
-
this.resizeObserver = new ResizeObserver(() => {
|
|
221
|
-
layout(
|
|
222
|
-
this,
|
|
223
|
-
this.slotEl,
|
|
224
|
-
this.ensureWidths.bind(this),
|
|
225
|
-
rebuildTemplate,
|
|
226
|
-
applyTemplate,
|
|
227
|
-
this.stickyLeftIndexes,
|
|
228
|
-
this.stickyRightIndexes
|
|
229
|
-
);
|
|
230
|
-
});
|
|
231
131
|
|
|
232
132
|
const head = getHead(this.slotEl);
|
|
233
133
|
const body = getBody(this.slotEl);
|
|
@@ -240,24 +140,22 @@ export class NileGrid extends NileElement {
|
|
|
240
140
|
attributes: true,
|
|
241
141
|
attributeFilter: ['colspan', 'rowspan'],
|
|
242
142
|
});
|
|
243
|
-
this.resizeObserver?.observe(this);
|
|
244
143
|
layout(
|
|
245
144
|
this,
|
|
246
145
|
this.slotEl,
|
|
247
146
|
this.ensureWidths.bind(this),
|
|
248
147
|
rebuildTemplate,
|
|
249
148
|
applyTemplate,
|
|
250
|
-
this.
|
|
251
|
-
this.stickyRightIndexes
|
|
149
|
+
this.columnWidths
|
|
252
150
|
);
|
|
253
151
|
}
|
|
254
152
|
|
|
255
153
|
public render(): TemplateResult {
|
|
256
154
|
return html`
|
|
257
|
-
<div
|
|
258
|
-
<slot
|
|
259
|
-
<div
|
|
260
|
-
<div
|
|
155
|
+
<div>
|
|
156
|
+
<slot></slot>
|
|
157
|
+
<div class="nile-resize-start"></div>
|
|
158
|
+
<div class="nile-resize-end"></div>
|
|
261
159
|
</div>
|
|
262
160
|
`;
|
|
263
161
|
}
|
|
@@ -265,7 +163,6 @@ export class NileGrid extends NileElement {
|
|
|
265
163
|
disconnectedCallback(): void {
|
|
266
164
|
super.disconnectedCallback?.();
|
|
267
165
|
this.mo?.disconnect();
|
|
268
|
-
this.resizeObserver?.disconnect();
|
|
269
166
|
|
|
270
167
|
if (this.raf) cancelAnimationFrame(this.raf);
|
|
271
168
|
removeEventListeners(
|