@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.
Files changed (98) hide show
  1. package/demo/index.html +124 -24
  2. package/dist/index.js +728 -770
  3. package/dist/nile-grid/nile-grid.cjs.js +1 -1
  4. package/dist/nile-grid/nile-grid.cjs.js.map +1 -1
  5. package/dist/nile-grid/nile-grid.css.cjs.js +1 -1
  6. package/dist/nile-grid/nile-grid.css.cjs.js.map +1 -1
  7. package/dist/nile-grid/nile-grid.css.esm.js +4 -8
  8. package/dist/nile-grid/nile-grid.esm.js +6 -6
  9. package/dist/nile-grid/nile-grid.utils.cjs.js +1 -1
  10. package/dist/nile-grid/nile-grid.utils.cjs.js.map +1 -1
  11. package/dist/nile-grid/nile-grid.utils.esm.js +1 -1
  12. package/dist/nile-grid-body/nile-grid-body.cjs.js +1 -1
  13. package/dist/nile-grid-body/nile-grid-body.cjs.js.map +1 -1
  14. package/dist/nile-grid-body/nile-grid-body.css.cjs.js +1 -1
  15. package/dist/nile-grid-body/nile-grid-body.css.cjs.js.map +1 -1
  16. package/dist/nile-grid-body/nile-grid-body.css.esm.js +4 -0
  17. package/dist/nile-grid-body/nile-grid-body.esm.js +3 -3
  18. package/dist/nile-grid-cell-item/nile-grid-cell-item.cjs.js +1 -1
  19. package/dist/nile-grid-cell-item/nile-grid-cell-item.cjs.js.map +1 -1
  20. package/dist/nile-grid-cell-item/nile-grid-cell-item.css.cjs.js +1 -1
  21. package/dist/nile-grid-cell-item/nile-grid-cell-item.css.cjs.js.map +1 -1
  22. package/dist/nile-grid-cell-item/nile-grid-cell-item.css.esm.js +3 -18
  23. package/dist/nile-grid-cell-item/nile-grid-cell-item.esm.js +3 -3
  24. package/dist/nile-grid-head/nile-grid-head.cjs.js +1 -1
  25. package/dist/nile-grid-head/nile-grid-head.cjs.js.map +1 -1
  26. package/dist/nile-grid-head/nile-grid-head.css.cjs.js +1 -1
  27. package/dist/nile-grid-head/nile-grid-head.css.cjs.js.map +1 -1
  28. package/dist/nile-grid-head/nile-grid-head.css.esm.js +1 -1
  29. package/dist/nile-grid-head/nile-grid-head.esm.js +3 -3
  30. package/dist/nile-grid-head-item/nile-grid-head-item.cjs.js +1 -1
  31. package/dist/nile-grid-head-item/nile-grid-head-item.cjs.js.map +1 -1
  32. package/dist/nile-grid-head-item/nile-grid-head-item.css.cjs.js +1 -1
  33. package/dist/nile-grid-head-item/nile-grid-head-item.css.cjs.js.map +1 -1
  34. package/dist/nile-grid-head-item/nile-grid-head-item.css.esm.js +5 -20
  35. package/dist/nile-grid-head-item/nile-grid-head-item.esm.js +3 -4
  36. package/dist/nile-grid-row/nile-grid-row.cjs.js +1 -1
  37. package/dist/nile-grid-row/nile-grid-row.cjs.js.map +1 -1
  38. package/dist/nile-grid-row/nile-grid-row.css.cjs.js +1 -1
  39. package/dist/nile-grid-row/nile-grid-row.css.cjs.js.map +1 -1
  40. package/dist/nile-grid-row/nile-grid-row.css.esm.js +5 -17
  41. package/dist/nile-grid-row/nile-grid-row.esm.js +5 -4
  42. package/dist/nile-virtual-select/nile-virtual-select.cjs.js +2 -2
  43. package/dist/nile-virtual-select/nile-virtual-select.cjs.js.map +1 -1
  44. package/dist/nile-virtual-select/nile-virtual-select.esm.js +7 -6
  45. package/dist/src/nile-grid/nile-grid.css.js +2 -6
  46. package/dist/src/nile-grid/nile-grid.css.js.map +1 -1
  47. package/dist/src/nile-grid/nile-grid.d.ts +3 -9
  48. package/dist/src/nile-grid/nile-grid.js +20 -96
  49. package/dist/src/nile-grid/nile-grid.js.map +1 -1
  50. package/dist/src/nile-grid/nile-grid.utils.d.ts +2 -3
  51. package/dist/src/nile-grid/nile-grid.utils.js +81 -223
  52. package/dist/src/nile-grid/nile-grid.utils.js.map +1 -1
  53. package/dist/src/nile-grid-body/nile-grid-body.css.js +4 -0
  54. package/dist/src/nile-grid-body/nile-grid-body.css.js.map +1 -1
  55. package/dist/src/nile-grid-body/nile-grid-body.js +1 -1
  56. package/dist/src/nile-grid-body/nile-grid-body.js.map +1 -1
  57. package/dist/src/nile-grid-cell-item/nile-grid-cell-item.css.js +2 -17
  58. package/dist/src/nile-grid-cell-item/nile-grid-cell-item.css.js.map +1 -1
  59. package/dist/src/nile-grid-cell-item/nile-grid-cell-item.d.ts +3 -0
  60. package/dist/src/nile-grid-cell-item/nile-grid-cell-item.js +11 -1
  61. package/dist/src/nile-grid-cell-item/nile-grid-cell-item.js.map +1 -1
  62. package/dist/src/nile-grid-head/nile-grid-head.css.js +1 -1
  63. package/dist/src/nile-grid-head/nile-grid-head.css.js.map +1 -1
  64. package/dist/src/nile-grid-head/nile-grid-head.js +1 -1
  65. package/dist/src/nile-grid-head/nile-grid-head.js.map +1 -1
  66. package/dist/src/nile-grid-head-item/nile-grid-head-item.css.js +3 -18
  67. package/dist/src/nile-grid-head-item/nile-grid-head-item.css.js.map +1 -1
  68. package/dist/src/nile-grid-head-item/nile-grid-head-item.d.ts +2 -3
  69. package/dist/src/nile-grid-head-item/nile-grid-head-item.js +11 -14
  70. package/dist/src/nile-grid-head-item/nile-grid-head-item.js.map +1 -1
  71. package/dist/src/nile-grid-row/nile-grid-row.css.js +5 -17
  72. package/dist/src/nile-grid-row/nile-grid-row.css.js.map +1 -1
  73. package/dist/src/nile-grid-row/nile-grid-row.d.ts +1 -4
  74. package/dist/src/nile-grid-row/nile-grid-row.js +4 -19
  75. package/dist/src/nile-grid-row/nile-grid-row.js.map +1 -1
  76. package/dist/src/nile-virtual-select/nile-virtual-select.d.ts +18 -0
  77. package/dist/src/nile-virtual-select/nile-virtual-select.js +230 -3
  78. package/dist/src/nile-virtual-select/nile-virtual-select.js.map +1 -1
  79. package/dist/src/version.js +1 -1
  80. package/dist/src/version.js.map +1 -1
  81. package/dist/tsconfig.tsbuildinfo +1 -1
  82. package/package.json +1 -1
  83. package/src/nile-grid/nile-grid.css.ts +2 -6
  84. package/src/nile-grid/nile-grid.ts +21 -124
  85. package/src/nile-grid/nile-grid.utils.ts +98 -353
  86. package/src/nile-grid-body/nile-grid-body.css.ts +4 -0
  87. package/src/nile-grid-body/nile-grid-body.ts +2 -2
  88. package/src/nile-grid-cell-item/nile-grid-cell-item.css.ts +2 -17
  89. package/src/nile-grid-cell-item/nile-grid-cell-item.ts +11 -3
  90. package/src/nile-grid-head/nile-grid-head.css.ts +1 -1
  91. package/src/nile-grid-head/nile-grid-head.ts +2 -2
  92. package/src/nile-grid-head-item/nile-grid-head-item.css.ts +3 -18
  93. package/src/nile-grid-head-item/nile-grid-head-item.ts +16 -8
  94. package/src/nile-grid-row/nile-grid-row.css.ts +5 -17
  95. package/src/nile-grid-row/nile-grid-row.ts +6 -9
  96. package/src/nile-virtual-select/nile-virtual-select.ts +257 -3
  97. package/vscode-html-custom-data.json +69 -37
  98. 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-1.4",
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: 4;
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() public columnWidths: number[] = [];
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.stickyLeftIndexes,
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 (!this.enableResizeScroll) {
154
- if (delta > 0) {
155
- let rightReducible = 0;
156
- for (let i = col + 1; i < this.columnWidths.length; i++) {
157
- rightReducible += Math.max(0, this.columnWidths[i] - floor);
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
- this.columnWidths[col] = newW;
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.stickyLeftIndexes,
251
- this.stickyRightIndexes
149
+ this.columnWidths
252
150
  );
253
151
  }
254
152
 
255
153
  public render(): TemplateResult {
256
154
  return html`
257
- <div part="grid-base" class="nile-grid-base">
258
- <slot part="grid-slot"></slot>
259
- <div part="resize-start" class="nile-resize-start"></div>
260
- <div part="resize-end" class="nile-resize-end"></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(