@aquera/nile-elements 0.1.73-beta-1.8 → 0.1.73-beta-1.9

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 (164) hide show
  1. package/README.md +0 -3
  2. package/demo/index.html +9 -47
  3. package/dist/axe.min-2b379f29.cjs.js +12 -0
  4. package/dist/axe.min-2b379f29.cjs.js.map +1 -0
  5. package/dist/axe.min-c2cd8733.esm.js +12 -0
  6. package/dist/{fixture-90b199c4.esm.js → fixture-2b5b3aba.esm.js} +1 -1
  7. package/dist/{fixture-5b79f853.cjs.js → fixture-3bfb4490.cjs.js} +2 -2
  8. package/dist/{fixture-5b79f853.cjs.js.map → fixture-3bfb4490.cjs.js.map} +1 -1
  9. package/dist/{fixture-dbd66009.cjs.js → fixture-7bfb866e.cjs.js} +2 -2
  10. package/dist/fixture-7bfb866e.cjs.js.map +1 -0
  11. package/dist/{fixture-cf7bfcf5.esm.js → fixture-8edec91c.esm.js} +1 -1
  12. package/dist/fixture-e7023246.esm.js +569 -0
  13. package/dist/fixture-fe6c932e.cjs.js +395 -0
  14. package/dist/{fixture-dbd66009.cjs.js.map → fixture-fe6c932e.cjs.js.map} +1 -1
  15. package/dist/index.js +4 -5
  16. package/dist/nile-accordion/nile-accordian.test.cjs.js +1 -1
  17. package/dist/nile-accordion/nile-accordian.test.esm.js +1 -1
  18. package/dist/nile-auto-complete/nile-auto-complete.test.cjs.js +1 -1
  19. package/dist/nile-auto-complete/nile-auto-complete.test.esm.js +1 -1
  20. package/dist/nile-avatar/nile-avatar.test.cjs.js +1 -1
  21. package/dist/nile-avatar/nile-avatar.test.esm.js +1 -1
  22. package/dist/nile-badge/nile-badge.test.cjs.js +1 -1
  23. package/dist/nile-badge/nile-badge.test.esm.js +1 -1
  24. package/dist/nile-button/nile-button.test.cjs.js +1 -1
  25. package/dist/nile-button/nile-button.test.esm.js +1 -1
  26. package/dist/nile-button-toggle-group/nile-button-toggle-group.test.cjs.js +1 -1
  27. package/dist/nile-button-toggle-group/nile-button-toggle-group.test.esm.js +1 -1
  28. package/dist/nile-calendar/nile-calendar.test.cjs.js +1 -1
  29. package/dist/nile-calendar/nile-calendar.test.esm.js +1 -1
  30. package/dist/nile-card/nile-card.test.cjs.js +1 -1
  31. package/dist/nile-card/nile-card.test.esm.js +1 -1
  32. package/dist/nile-checkbox/nile-checkbox.test.cjs.js +1 -1
  33. package/dist/nile-checkbox/nile-checkbox.test.esm.js +1 -1
  34. package/dist/nile-chip/nile-chip.test.cjs.js +1 -1
  35. package/dist/nile-chip/nile-chip.test.esm.js +1 -1
  36. package/dist/nile-dialog/nile-dialog.test.cjs.js +1 -1
  37. package/dist/nile-dialog/nile-dialog.test.esm.js +1 -1
  38. package/dist/nile-drawer/nile-drawer.test.cjs.js +1 -1
  39. package/dist/nile-drawer/nile-drawer.test.esm.js +1 -1
  40. package/dist/nile-dropdown/nile-dropdown.test.cjs.js +1 -1
  41. package/dist/nile-dropdown/nile-dropdown.test.esm.js +1 -1
  42. package/dist/nile-empty-state/nile-empty-state.test.cjs.js +1 -1
  43. package/dist/nile-empty-state/nile-empty-state.test.esm.js +1 -1
  44. package/dist/nile-error-message/nile-error-message.test.cjs.js +1 -1
  45. package/dist/nile-error-message/nile-error-message.test.esm.js +1 -1
  46. package/dist/nile-file-preview/nile-file-preview.test.cjs.js +1 -1
  47. package/dist/nile-file-preview/nile-file-preview.test.esm.js +1 -1
  48. package/dist/nile-file-upload/nile-file-upload.test.cjs.js +1 -1
  49. package/dist/nile-file-upload/nile-file-upload.test.esm.js +1 -1
  50. package/dist/nile-filter-chip/nile-filter-chip.test.cjs.js +1 -1
  51. package/dist/nile-filter-chip/nile-filter-chip.test.esm.js +1 -1
  52. package/dist/nile-form-group/nile-form-group.test.cjs.js +1 -1
  53. package/dist/nile-form-group/nile-form-group.test.esm.js +1 -1
  54. package/dist/nile-form-help-text/nile-form-help-text.test.cjs.js +1 -1
  55. package/dist/nile-form-help-text/nile-form-help-text.test.esm.js +1 -1
  56. package/dist/nile-hero/nile-hero.test.cjs.js +1 -1
  57. package/dist/nile-hero/nile-hero.test.esm.js +1 -1
  58. package/dist/nile-icon/nile-icon.test.cjs.js +1 -1
  59. package/dist/nile-icon/nile-icon.test.esm.js +1 -1
  60. package/dist/nile-input/nile-input.test.cjs.js +1 -1
  61. package/dist/nile-input/nile-input.test.esm.js +1 -1
  62. package/dist/nile-link/nile-link.test.cjs.js +1 -1
  63. package/dist/nile-link/nile-link.test.esm.js +1 -1
  64. package/dist/nile-loader/nile-loader.test.cjs.js +1 -1
  65. package/dist/nile-loader/nile-loader.test.esm.js +1 -1
  66. package/dist/nile-popover/nile-popover.test.cjs.js +1 -1
  67. package/dist/nile-popover/nile-popover.test.esm.js +1 -1
  68. package/dist/nile-popup/nile-popup.test.cjs.js +1 -1
  69. package/dist/nile-popup/nile-popup.test.esm.js +1 -1
  70. package/dist/nile-progress-bar/nile-progress-bar.test.cjs.js +1 -1
  71. package/dist/nile-progress-bar/nile-progress-bar.test.esm.js +1 -1
  72. package/dist/nile-radio/nile-radio.test.cjs.js +1 -1
  73. package/dist/nile-radio/nile-radio.test.esm.js +1 -1
  74. package/dist/nile-radio-group/nile-radio-group.test.cjs.js +1 -1
  75. package/dist/nile-radio-group/nile-radio-group.test.esm.js +1 -1
  76. package/dist/nile-select/nile-select.cjs.js.map +1 -1
  77. package/dist/nile-select/nile-select.test.cjs.js +1 -1
  78. package/dist/nile-select/nile-select.test.esm.js +1 -1
  79. package/dist/nile-slide-toggle/nile-slide-toggle.test.cjs.js +1 -1
  80. package/dist/nile-slide-toggle/nile-slide-toggle.test.esm.js +1 -1
  81. package/dist/nile-tab-group/nile-tab-group.test.cjs.js +1 -1
  82. package/dist/nile-tab-group/nile-tab-group.test.esm.js +1 -1
  83. package/dist/nile-textarea/nile-textarea.test.cjs.js +1 -1
  84. package/dist/nile-textarea/nile-textarea.test.esm.js +1 -1
  85. package/dist/nile-virtual-select/nile-virtual-select.cjs.js +1 -1
  86. package/dist/nile-virtual-select/nile-virtual-select.cjs.js.map +1 -1
  87. package/dist/nile-virtual-select/nile-virtual-select.esm.js +2 -2
  88. package/dist/nile-virtual-select/nile-virtual-select.test.cjs.js +1 -1
  89. package/dist/nile-virtual-select/nile-virtual-select.test.esm.js +1 -1
  90. package/dist/nile-virtual-select/renderer.cjs.js +1 -1
  91. package/dist/nile-virtual-select/renderer.cjs.js.map +1 -1
  92. package/dist/nile-virtual-select/renderer.esm.js +3 -4
  93. package/dist/src/nile-icon/icons/svg/ng-lock-03.d.ts +5 -0
  94. package/dist/src/nile-icon/icons/svg/ng-lock-03.js +5 -0
  95. package/dist/src/nile-icon/icons/svg/ng-lock-03.js.map +1 -0
  96. package/dist/src/nile-select/nile-select.js.map +1 -1
  97. package/dist/src/nile-virtual-select/nile-virtual-select.d.ts +1 -9
  98. package/dist/src/nile-virtual-select/nile-virtual-select.js +5 -55
  99. package/dist/src/nile-virtual-select/nile-virtual-select.js.map +1 -1
  100. package/dist/src/nile-virtual-select/renderer.d.ts +2 -2
  101. package/dist/src/nile-virtual-select/renderer.js +5 -6
  102. package/dist/src/nile-virtual-select/renderer.js.map +1 -1
  103. package/dist/tsconfig.tsbuildinfo +1 -1
  104. package/package.json +1 -1
  105. package/src/nile-select/nile-select.ts +11 -11
  106. package/src/nile-virtual-select/nile-virtual-select.ts +7 -68
  107. package/src/nile-virtual-select/renderer.ts +5 -7
  108. package/vscode-html-custom-data.json +1 -17
  109. package/dist/src/internal/resizable-helper.d.ts +0 -59
  110. package/dist/src/internal/resizable-helper.js +0 -115
  111. package/dist/src/internal/resizable-helper.js.map +0 -1
  112. package/dist/src/internal/resizable-styles.d.ts +0 -16
  113. package/dist/src/internal/resizable-styles.js +0 -144
  114. package/dist/src/internal/resizable-styles.js.map +0 -1
  115. package/dist/src/nile-badge/__snapshots__/nile-badge.test.snap.js +0 -17
  116. package/dist/src/nile-calendar/__snapshots__/nile-calendar.test.snap.js +0 -310
  117. package/dist/src/nile-card/__snapshots__/nile-card.test.snap.js +0 -34
  118. package/dist/src/nile-checkbox/__snapshots__/nile-checkbox.test.snap.js +0 -31
  119. package/dist/src/nile-grid/data-processor.d.ts +0 -37
  120. package/dist/src/nile-grid/data-processor.js +0 -122
  121. package/dist/src/nile-grid/data-processor.js.map +0 -1
  122. package/dist/src/nile-grid/event-handlers.d.ts +0 -35
  123. package/dist/src/nile-grid/event-handlers.js +0 -158
  124. package/dist/src/nile-grid/event-handlers.js.map +0 -1
  125. package/dist/src/nile-grid/index.d.ts +0 -5
  126. package/dist/src/nile-grid/index.js +0 -6
  127. package/dist/src/nile-grid/index.js.map +0 -1
  128. package/dist/src/nile-grid/nile-grid.css.d.ts +0 -1
  129. package/dist/src/nile-grid/nile-grid.css.js +0 -120
  130. package/dist/src/nile-grid/nile-grid.css.js.map +0 -1
  131. package/dist/src/nile-grid/nile-grid.d.ts +0 -39
  132. package/dist/src/nile-grid/nile-grid.js +0 -182
  133. package/dist/src/nile-grid/nile-grid.js.map +0 -1
  134. package/dist/src/nile-grid/renderer.d.ts +0 -8
  135. package/dist/src/nile-grid/renderer.js +0 -78
  136. package/dist/src/nile-grid/renderer.js.map +0 -1
  137. package/dist/src/nile-grid/resize-handler.d.ts +0 -4
  138. package/dist/src/nile-grid/resize-handler.js +0 -36
  139. package/dist/src/nile-grid/resize-handler.js.map +0 -1
  140. package/dist/src/nile-grid/types.d.ts +0 -32
  141. package/dist/src/nile-grid/types.js +0 -2
  142. package/dist/src/nile-grid/types.js.map +0 -1
  143. package/dist/src/nile-grid/utils.d.ts +0 -4
  144. package/dist/src/nile-grid/utils.js +0 -32
  145. package/dist/src/nile-grid/utils.js.map +0 -1
  146. package/dist/src/nile-hero/__snapshots__/nile-hero.test.snap.js +0 -47
  147. package/dist/src/nile-icon/__snapshots__/nile-icon.test.snap.js +0 -16
  148. package/dist/src/nile-input/__snapshots__/nile-input.test.snap.js +0 -75
  149. package/dist/src/nile-popover/__snapshots__/nile-popover.test.snap.js +0 -22
  150. package/dist/src/nile-table-body/virtual-scroll-helper.d.ts +0 -9
  151. package/dist/src/nile-table-body/virtual-scroll-helper.js +0 -24
  152. package/dist/src/nile-table-body/virtual-scroll-helper.js.map +0 -1
  153. package/dist/src/nile-virtual-table-body/index.d.ts +0 -2
  154. package/dist/src/nile-virtual-table-body/index.js +0 -3
  155. package/dist/src/nile-virtual-table-body/index.js.map +0 -1
  156. package/dist/src/nile-virtual-table-body/nile-virtual-table-body.css.d.ts +0 -1
  157. package/dist/src/nile-virtual-table-body/nile-virtual-table-body.css.js +0 -44
  158. package/dist/src/nile-virtual-table-body/nile-virtual-table-body.css.js.map +0 -1
  159. package/dist/src/nile-virtual-table-body/nile-virtual-table-body.d.ts +0 -50
  160. package/dist/src/nile-virtual-table-body/nile-virtual-table-body.js +0 -135
  161. package/dist/src/nile-virtual-table-body/nile-virtual-table-body.js.map +0 -1
  162. package/dist/src/nile-virtual-table-body/renderer.d.ts +0 -16
  163. package/dist/src/nile-virtual-table-body/renderer.js +0 -49
  164. package/dist/src/nile-virtual-table-body/renderer.js.map +0 -1
@@ -1,158 +0,0 @@
1
- /**
2
- * Copyright Aquera Inc 2023
3
- *
4
- * This source code is licensed under the BSD-3-Clause license found in the
5
- * LICENSE file in the root directory of this source tree.
6
- */
7
- export class GridEventHandlers {
8
- constructor(options, dataProcessor) {
9
- this.selectedRows = [];
10
- this.isResizing = false;
11
- this.resizingColumn = null;
12
- this.dragStartX = 0;
13
- this.dragStartWidth = 0;
14
- this.options = options;
15
- this.dataProcessor = dataProcessor;
16
- }
17
- setOptions(options) {
18
- this.options = options;
19
- this.dataProcessor.setOptions(options);
20
- }
21
- handleKeyDown(event) {
22
- if (event.key === 'ArrowDown' || event.key === 'ArrowUp') {
23
- event.preventDefault();
24
- this.handleArrowKeyNavigation(event.key);
25
- }
26
- }
27
- handleWheel(event, updateVirtualScrolling) {
28
- if (this.options.enableVirtualScrolling) {
29
- updateVirtualScrolling();
30
- }
31
- }
32
- handleColumnSort(column, onSort) {
33
- if (!this.options.enableSorting)
34
- return;
35
- const currentField = this.dataProcessor.getSortField();
36
- const currentDirection = this.dataProcessor.getSortDirection();
37
- let newDirection;
38
- if (currentField === column.field) {
39
- newDirection = currentDirection === 'asc' ? 'desc' : 'asc';
40
- }
41
- else {
42
- newDirection = 'asc';
43
- }
44
- this.dataProcessor.setSortField(column.field);
45
- this.dataProcessor.setSortDirection(newDirection);
46
- onSort(column.field, newDirection);
47
- }
48
- handleColumnFilter(column, value, onFilter) {
49
- if (!this.options.enableFiltering)
50
- return;
51
- column.filterValue = value;
52
- this.dataProcessor.setFilterText(value);
53
- this.dataProcessor.setCurrentPage(1);
54
- onFilter();
55
- }
56
- handleRowSelection(row, event, currentData, onSelectionChange) {
57
- if (!this.options.enableRowSelection)
58
- return;
59
- const checkbox = event.target;
60
- if (this.options.enableMultiRowSelection) {
61
- if (checkbox.checked) {
62
- if (!this.selectedRows.find(r => r.id === row.id)) {
63
- this.selectedRows.push(row);
64
- row.selected = true;
65
- }
66
- }
67
- else {
68
- const index = this.selectedRows.findIndex(r => r.id === row.id);
69
- if (index > -1) {
70
- this.selectedRows.splice(index, 1);
71
- row.selected = false;
72
- }
73
- }
74
- }
75
- else {
76
- this.selectedRows = checkbox.checked ? [row] : [];
77
- // Update all rows selection state
78
- currentData.forEach(r => {
79
- r.selected = r.id === row.id ? checkbox.checked : false;
80
- });
81
- }
82
- onSelectionChange();
83
- }
84
- handleHeaderSelectionChange(event, currentData, onSelectionChange) {
85
- if (!this.options.enableRowSelection)
86
- return;
87
- const checkbox = event.target;
88
- const isChecked = checkbox.checked;
89
- currentData.forEach(row => {
90
- row.selected = isChecked;
91
- });
92
- if (isChecked) {
93
- this.selectedRows = [...currentData];
94
- }
95
- else {
96
- this.selectedRows = [];
97
- }
98
- onSelectionChange();
99
- }
100
- handleRowClick(row, event) {
101
- if (this.options.suppressRowClickSelection)
102
- return;
103
- const target = event.target;
104
- if (target.tagName === 'INPUT' || target.closest('.checkbox-cell'))
105
- return;
106
- // Emit row click event
107
- this.emit('nile-grid-row-click', { row, event });
108
- }
109
- handleCellEdit(row, column, value, onCellEdit) {
110
- if (!column.editable)
111
- return;
112
- const oldValue = row[column.field];
113
- row[column.field] = value;
114
- onCellEdit(row, column, oldValue, value);
115
- }
116
- handleColumnResizeStart(column, event) {
117
- if (!this.options.enableColumnResize)
118
- return;
119
- this.isResizing = true;
120
- this.resizingColumn = column;
121
- this.dragStartX = event.clientX;
122
- this.dragStartWidth = column.width || 150;
123
- document.addEventListener('mousemove', this.handleColumnResizeMove.bind(this));
124
- document.addEventListener('mouseup', this.handleColumnResizeEnd.bind(this));
125
- }
126
- handleColumnResizeMove(event) {
127
- if (!this.isResizing || !this.resizingColumn)
128
- return;
129
- const deltaX = event.clientX - this.dragStartX;
130
- const newWidth = Math.max(this.resizingColumn.minWidth || 50, Math.min(this.resizingColumn.maxWidth || 500, this.dragStartWidth + deltaX));
131
- this.resizingColumn.width = newWidth;
132
- }
133
- handleColumnResizeEnd() {
134
- this.isResizing = false;
135
- this.resizingColumn = null;
136
- document.removeEventListener('mousemove', this.handleColumnResizeMove.bind(this));
137
- document.removeEventListener('mouseup', this.handleColumnResizeEnd.bind(this));
138
- }
139
- handleArrowKeyNavigation(key) {
140
- // Emit keyboard navigation event
141
- this.emit('nile-grid-key-navigation', { key });
142
- }
143
- emit(eventName, detail) {
144
- // This will be implemented by the main component
145
- // The main component will listen to these events and emit them
146
- }
147
- // Getters
148
- getSelectedRows() {
149
- return this.selectedRows;
150
- }
151
- isResizingColumn() {
152
- return this.isResizing;
153
- }
154
- getResizingColumn() {
155
- return this.resizingColumn;
156
- }
157
- }
158
- //# sourceMappingURL=event-handlers.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"event-handlers.js","sourceRoot":"","sources":["../../../src/nile-grid/event-handlers.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,MAAM,OAAO,iBAAiB;IAS5B,YAAY,OAAoB,EAAE,aAAgC;QAN1D,iBAAY,GAAkB,EAAE,CAAC;QACjC,eAAU,GAAY,KAAK,CAAC;QAC5B,mBAAc,GAAyB,IAAI,CAAC;QAC5C,eAAU,GAAW,CAAC,CAAC;QACvB,mBAAc,GAAW,CAAC,CAAC;QAGjC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;IACrC,CAAC;IAED,UAAU,CAAC,OAAoB;QAC7B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IACzC,CAAC;IAED,aAAa,CAAC,KAAoB;QAChC,IAAI,KAAK,CAAC,GAAG,KAAK,WAAW,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;YACzD,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;IAED,WAAW,CAAC,KAAiB,EAAE,sBAAkC;QAC/D,IAAI,IAAI,CAAC,OAAO,CAAC,sBAAsB,EAAE,CAAC;YACxC,sBAAsB,EAAE,CAAC;QAC3B,CAAC;IACH,CAAC;IAED,gBAAgB,CAAC,MAAqB,EAAE,MAA0D;QAChG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa;YAAE,OAAO;QAExC,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,CAAC;QACvD,MAAM,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,gBAAgB,EAAE,CAAC;QAE/D,IAAI,YAA4B,CAAC;QACjC,IAAI,YAAY,KAAK,MAAM,CAAC,KAAK,EAAE,CAAC;YAClC,YAAY,GAAG,gBAAgB,KAAK,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;QAC7D,CAAC;aAAM,CAAC;YACN,YAAY,GAAG,KAAK,CAAC;QACvB,CAAC;QAED,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC9C,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;QAElD,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;IACrC,CAAC;IAED,kBAAkB,CAAC,MAAqB,EAAE,KAAa,EAAE,QAAoB;QAC3E,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe;YAAE,OAAO;QAE1C,MAAM,CAAC,WAAW,GAAG,KAAK,CAAC;QAC3B,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QACxC,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;QAErC,QAAQ,EAAE,CAAC;IACb,CAAC;IAED,kBAAkB,CAAC,GAAgB,EAAE,KAAY,EAAE,WAA0B,EAAE,iBAA6B;QAC1G,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,kBAAkB;YAAE,OAAO;QAE7C,MAAM,QAAQ,GAAG,KAAK,CAAC,MAA0B,CAAC;QAElD,IAAI,IAAI,CAAC,OAAO,CAAC,uBAAuB,EAAE,CAAC;YACzC,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;gBACrB,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;oBAClD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBAC5B,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC;gBACtB,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC;gBAChE,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC;oBACf,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;oBACnC,GAAG,CAAC,QAAQ,GAAG,KAAK,CAAC;gBACvB,CAAC;YACH,CAAC;QACH,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAClD,kCAAkC;YAClC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;gBACtB,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;YAC1D,CAAC,CAAC,CAAC;QACL,CAAC;QAED,iBAAiB,EAAE,CAAC;IACtB,CAAC;IAED,2BAA2B,CAAC,KAAY,EAAE,WAA0B,EAAE,iBAA6B;QACjG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,kBAAkB;YAAE,OAAO;QAE7C,MAAM,QAAQ,GAAG,KAAK,CAAC,MAA0B,CAAC;QAClD,MAAM,SAAS,GAAG,QAAQ,CAAC,OAAO,CAAC;QAEnC,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;YACxB,GAAG,CAAC,QAAQ,GAAG,SAAS,CAAC;QAC3B,CAAC,CAAC,CAAC;QAEH,IAAI,SAAS,EAAE,CAAC;YACd,IAAI,CAAC,YAAY,GAAG,CAAC,GAAG,WAAW,CAAC,CAAC;QACvC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;QACzB,CAAC;QAED,iBAAiB,EAAE,CAAC;IACtB,CAAC;IAED,cAAc,CAAC,GAAgB,EAAE,KAAY;QAC3C,IAAI,IAAI,CAAC,OAAO,CAAC,yBAAyB;YAAE,OAAO;QAEnD,MAAM,MAAM,GAAG,KAAK,CAAC,MAAqB,CAAC;QAC3C,IAAI,MAAM,CAAC,OAAO,KAAK,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC;YAAE,OAAO;QAE3E,uBAAuB;QACvB,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;IACnD,CAAC;IAED,cAAc,CAAC,GAAgB,EAAE,MAAqB,EAAE,KAAU,EAAE,UAA2F;QAC7J,IAAI,CAAC,MAAM,CAAC,QAAQ;YAAE,OAAO;QAE7B,MAAM,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACnC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;QAE1B,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;IAC3C,CAAC;IAED,uBAAuB,CAAC,MAAqB,EAAE,KAAiB;QAC9D,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,kBAAkB;YAAE,OAAO;QAE7C,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC;QAC7B,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC;QAChC,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,KAAK,IAAI,GAAG,CAAC;QAE1C,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC/E,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9E,CAAC;IAEO,sBAAsB,CAAC,KAAiB;QAC9C,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,cAAc;YAAE,OAAO;QAErD,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC;QAC/C,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CACvB,IAAI,CAAC,cAAc,CAAC,QAAQ,IAAI,EAAE,EAClC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,IAAI,GAAG,EAAE,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,CAC5E,CAAC;QAEF,IAAI,CAAC,cAAc,CAAC,KAAK,GAAG,QAAQ,CAAC;IACvC,CAAC;IAEO,qBAAqB;QAC3B,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACxB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAE3B,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAClF,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACjF,CAAC;IAEO,wBAAwB,CAAC,GAAW;QAC1C,iCAAiC;QACjC,IAAI,CAAC,IAAI,CAAC,0BAA0B,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;IACjD,CAAC;IAEO,IAAI,CAAC,SAAiB,EAAE,MAAW;QACzC,iDAAiD;QACjD,+DAA+D;IACjE,CAAC;IAED,UAAU;IACV,eAAe;QACb,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAED,gBAAgB;QACd,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAED,iBAAiB;QACf,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;CACF","sourcesContent":["/**\n * Copyright Aquera Inc 2023\n *\n * This source code is licensed under the BSD-3-Clause license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport type { GridColumnDef, GridRowData, GridOptions } from './types.js';\nimport type { GridDataProcessor } from './data-processor.js';\n\nexport class GridEventHandlers {\n private options: GridOptions;\n private dataProcessor: GridDataProcessor;\n private selectedRows: GridRowData[] = [];\n private isResizing: boolean = false;\n private resizingColumn: GridColumnDef | null = null;\n private dragStartX: number = 0;\n private dragStartWidth: number = 0;\n\n constructor(options: GridOptions, dataProcessor: GridDataProcessor) {\n this.options = options;\n this.dataProcessor = dataProcessor;\n }\n\n setOptions(options: GridOptions): void {\n this.options = options;\n this.dataProcessor.setOptions(options);\n }\n\n handleKeyDown(event: KeyboardEvent): void {\n if (event.key === 'ArrowDown' || event.key === 'ArrowUp') {\n event.preventDefault();\n this.handleArrowKeyNavigation(event.key);\n }\n }\n\n handleWheel(event: WheelEvent, updateVirtualScrolling: () => void): void {\n if (this.options.enableVirtualScrolling) {\n updateVirtualScrolling();\n }\n }\n\n handleColumnSort(column: GridColumnDef, onSort: (field: string, direction: 'asc' | 'desc') => void): void {\n if (!this.options.enableSorting) return;\n\n const currentField = this.dataProcessor.getSortField();\n const currentDirection = this.dataProcessor.getSortDirection();\n\n let newDirection: 'asc' | 'desc';\n if (currentField === column.field) {\n newDirection = currentDirection === 'asc' ? 'desc' : 'asc';\n } else {\n newDirection = 'asc';\n }\n\n this.dataProcessor.setSortField(column.field);\n this.dataProcessor.setSortDirection(newDirection);\n \n onSort(column.field, newDirection);\n }\n\n handleColumnFilter(column: GridColumnDef, value: string, onFilter: () => void): void {\n if (!this.options.enableFiltering) return;\n\n column.filterValue = value;\n this.dataProcessor.setFilterText(value);\n this.dataProcessor.setCurrentPage(1);\n \n onFilter();\n }\n\n handleRowSelection(row: GridRowData, event: Event, currentData: GridRowData[], onSelectionChange: () => void): void {\n if (!this.options.enableRowSelection) return;\n\n const checkbox = event.target as HTMLInputElement;\n \n if (this.options.enableMultiRowSelection) {\n if (checkbox.checked) {\n if (!this.selectedRows.find(r => r.id === row.id)) {\n this.selectedRows.push(row);\n row.selected = true;\n }\n } else {\n const index = this.selectedRows.findIndex(r => r.id === row.id);\n if (index > -1) {\n this.selectedRows.splice(index, 1);\n row.selected = false;\n }\n }\n } else {\n this.selectedRows = checkbox.checked ? [row] : [];\n // Update all rows selection state\n currentData.forEach(r => {\n r.selected = r.id === row.id ? checkbox.checked : false;\n });\n }\n\n onSelectionChange();\n }\n\n handleHeaderSelectionChange(event: Event, currentData: GridRowData[], onSelectionChange: () => void): void {\n if (!this.options.enableRowSelection) return;\n\n const checkbox = event.target as HTMLInputElement;\n const isChecked = checkbox.checked;\n \n currentData.forEach(row => {\n row.selected = isChecked;\n });\n\n if (isChecked) {\n this.selectedRows = [...currentData];\n } else {\n this.selectedRows = [];\n }\n\n onSelectionChange();\n }\n\n handleRowClick(row: GridRowData, event: Event): void {\n if (this.options.suppressRowClickSelection) return;\n\n const target = event.target as HTMLElement;\n if (target.tagName === 'INPUT' || target.closest('.checkbox-cell')) return;\n\n // Emit row click event\n this.emit('nile-grid-row-click', { row, event });\n }\n\n handleCellEdit(row: GridRowData, column: GridColumnDef, value: any, onCellEdit: (row: GridRowData, column: GridColumnDef, oldValue: any, newValue: any) => void): void {\n if (!column.editable) return;\n\n const oldValue = row[column.field];\n row[column.field] = value;\n\n onCellEdit(row, column, oldValue, value);\n }\n\n handleColumnResizeStart(column: GridColumnDef, event: MouseEvent): void {\n if (!this.options.enableColumnResize) return;\n\n this.isResizing = true;\n this.resizingColumn = column;\n this.dragStartX = event.clientX;\n this.dragStartWidth = column.width || 150;\n\n document.addEventListener('mousemove', this.handleColumnResizeMove.bind(this));\n document.addEventListener('mouseup', this.handleColumnResizeEnd.bind(this));\n }\n\n private handleColumnResizeMove(event: MouseEvent): void {\n if (!this.isResizing || !this.resizingColumn) return;\n\n const deltaX = event.clientX - this.dragStartX;\n const newWidth = Math.max(\n this.resizingColumn.minWidth || 50,\n Math.min(this.resizingColumn.maxWidth || 500, this.dragStartWidth + deltaX)\n );\n\n this.resizingColumn.width = newWidth;\n }\n\n private handleColumnResizeEnd(): void {\n this.isResizing = false;\n this.resizingColumn = null;\n \n document.removeEventListener('mousemove', this.handleColumnResizeMove.bind(this));\n document.removeEventListener('mouseup', this.handleColumnResizeEnd.bind(this));\n }\n\n private handleArrowKeyNavigation(key: string): void {\n // Emit keyboard navigation event\n this.emit('nile-grid-key-navigation', { key });\n }\n\n private emit(eventName: string, detail: any): void {\n // This will be implemented by the main component\n // The main component will listen to these events and emit them\n }\n\n // Getters\n getSelectedRows(): GridRowData[] {\n return this.selectedRows;\n }\n\n isResizingColumn(): boolean {\n return this.isResizing;\n }\n\n getResizingColumn(): GridColumnDef | null {\n return this.resizingColumn;\n }\n}\n"]}
@@ -1,5 +0,0 @@
1
- export { NileGrid } from './nile-grid';
2
- export * from './types';
3
- export * from './utils';
4
- export * from './renderer';
5
- export * from './resize-handler';
@@ -1,6 +0,0 @@
1
- export { NileGrid } from './nile-grid';
2
- export * from './types';
3
- export * from './utils';
4
- export * from './renderer';
5
- export * from './resize-handler';
6
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/nile-grid/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC","sourcesContent":["export { NileGrid } from './nile-grid';\nexport * from './types';\nexport * from './utils';\nexport * from './renderer';\nexport * from './resize-handler';\n"]}
@@ -1 +0,0 @@
1
- export declare const styles: import("lit").CSSResult;
@@ -1,120 +0,0 @@
1
- import { css } from 'lit';
2
- export const styles = css `
3
- :host {
4
- display: block;
5
- font-family: var(--nile-font-family, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif);
6
- font-size: var(--nile-font-size, 14px);
7
- line-height: var(--nile-line-height, 1.4);
8
- color: var(--nile-color-text, #333);
9
- }
10
-
11
- .grid-container {
12
- border: 1px solid var(--nile-color-border, #ddd);
13
- border-radius: var(--nile-border-radius, 4px);
14
- background: var(--nile-color-background, #fff);
15
- overflow: hidden;
16
- width: 100%;
17
- min-width: 100%;
18
- box-sizing: border-box;
19
- }
20
-
21
- .grid-header {
22
- display: grid;
23
- background: var(--nile-color-header-background, #f8f9fa);
24
- border-bottom: 1px solid var(--nile-color-border, #ddd);
25
- font-weight: 600;
26
- width: 100%;
27
- }
28
-
29
- .grid-header-cell {
30
- padding: 8px 12px;
31
- border-right: 1px solid var(--nile-color-border, #ddd);
32
- display: flex;
33
- align-items: center;
34
- justify-content: space-between;
35
- overflow: hidden;
36
- text-overflow: ellipsis;
37
- white-space: nowrap;
38
- position: relative;
39
- }
40
-
41
- .grid-header-cell:last-child {
42
- border-right: none;
43
- }
44
-
45
- .grid-resize-handle {
46
- position: absolute;
47
- right: 0;
48
- top: 0;
49
- bottom: 0;
50
- width: 4px;
51
- cursor: col-resize;
52
- background: transparent;
53
- transition: background-color 0.2s ease;
54
- }
55
-
56
- .grid-resize-handle:hover {
57
- background: var(--nile-color-primary, #007bff);
58
- }
59
-
60
- .grid-resize-handle:active {
61
- background: var(--nile-color-primary, #007bff);
62
- }
63
-
64
- .grid-body {
65
- max-height: 400px;
66
- overflow-y: auto;
67
- width: 100%;
68
- }
69
-
70
- .grid-row {
71
- display: grid;
72
- border-bottom: 1px solid var(--nile-color-border-light, #f0f0f0);
73
- width: 100%;
74
- min-width: 100%;
75
- }
76
-
77
- .grid-row:nth-child(even) {
78
- background: var(--nile-color-row-even, #fafafa);
79
- }
80
-
81
- .grid-row:nth-child(odd) {
82
- background: var(--nile-color-row-odd, #fff);
83
- }
84
-
85
- .grid-cell {
86
- padding: 8px 12px;
87
- border-right: 1px solid var(--nile-color-border-light, #f0f0f0);
88
- display: flex;
89
- align-items: center;
90
- overflow: hidden;
91
- text-overflow: ellipsis;
92
- white-space: nowrap;
93
- }
94
-
95
- .grid-cell:last-child {
96
- border-right: none;
97
- }
98
-
99
- /* Column spanning styles */
100
- .grid-cell[style*="grid-column"] {
101
- border-right: 1px solid var(--nile-color-border-light, #f0f0f0);
102
- }
103
-
104
- .grid-cell[style*="grid-column"]:last-of-type {
105
- border-right: none;
106
- }
107
-
108
- .grid-empty {
109
- display: flex;
110
- align-items: center;
111
- justify-content: center;
112
- padding: 40px;
113
- color: var(--nile-color-muted, #6c757d);
114
- }
115
-
116
- .empty-text {
117
- font-size: 14px;
118
- }
119
- `;
120
- //# sourceMappingURL=nile-grid.css.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"nile-grid.css.js","sourceRoot":"","sources":["../../../src/nile-grid/nile-grid.css.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqHxB,CAAC","sourcesContent":["import { css } from 'lit';\n\nexport const styles = css`\n :host {\n display: block;\n font-family: var(--nile-font-family, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif);\n font-size: var(--nile-font-size, 14px);\n line-height: var(--nile-line-height, 1.4);\n color: var(--nile-color-text, #333);\n }\n\n .grid-container {\n border: 1px solid var(--nile-color-border, #ddd);\n border-radius: var(--nile-border-radius, 4px);\n background: var(--nile-color-background, #fff);\n overflow: hidden;\n width: 100%;\n min-width: 100%;\n box-sizing: border-box;\n }\n\n .grid-header {\n display: grid;\n background: var(--nile-color-header-background, #f8f9fa);\n border-bottom: 1px solid var(--nile-color-border, #ddd);\n font-weight: 600;\n width: 100%;\n }\n\n .grid-header-cell {\n padding: 8px 12px;\n border-right: 1px solid var(--nile-color-border, #ddd);\n display: flex;\n align-items: center;\n justify-content: space-between;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n position: relative;\n }\n\n .grid-header-cell:last-child {\n border-right: none;\n }\n\n .grid-resize-handle {\n position: absolute;\n right: 0;\n top: 0;\n bottom: 0;\n width: 4px;\n cursor: col-resize;\n background: transparent;\n transition: background-color 0.2s ease;\n }\n\n .grid-resize-handle:hover {\n background: var(--nile-color-primary, #007bff);\n }\n\n .grid-resize-handle:active {\n background: var(--nile-color-primary, #007bff);\n }\n\n .grid-body {\n max-height: 400px;\n overflow-y: auto;\n width: 100%;\n }\n\n .grid-row {\n display: grid;\n border-bottom: 1px solid var(--nile-color-border-light, #f0f0f0);\n width: 100%;\n min-width: 100%;\n }\n\n .grid-row:nth-child(even) {\n background: var(--nile-color-row-even, #fafafa);\n }\n\n .grid-row:nth-child(odd) {\n background: var(--nile-color-row-odd, #fff);\n }\n\n .grid-cell {\n padding: 8px 12px;\n border-right: 1px solid var(--nile-color-border-light, #f0f0f0);\n display: flex;\n align-items: center;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .grid-cell:last-child {\n border-right: none;\n }\n\n /* Column spanning styles */\n .grid-cell[style*=\"grid-column\"] {\n border-right: 1px solid var(--nile-color-border-light, #f0f0f0);\n }\n\n .grid-cell[style*=\"grid-column\"]:last-of-type {\n border-right: none;\n }\n\n .grid-empty {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 40px;\n color: var(--nile-color-muted, #6c757d);\n }\n\n .empty-text {\n font-size: 14px;\n }\n`;\n"]}
@@ -1,39 +0,0 @@
1
- import { TemplateResult } from 'lit';
2
- import type { CSSResultGroup } from 'lit';
3
- import NileElement from '../internal/nile-element';
4
- import type { ColumnDef, GridOptions } from './types.js';
5
- /**
6
- * @summary A simple data grid component
7
- * @status stable
8
- * @since 2.0
9
- *
10
- * @event grid-ready - Emitted when the grid is ready
11
- */
12
- export declare class NileGrid extends NileElement {
13
- static styles: CSSResultGroup;
14
- /** Column definitions for the grid */
15
- columnDefs: ColumnDef[];
16
- /** Row data to display in the grid */
17
- rowData: any[];
18
- /** Grid options for configuration */
19
- gridOptions: GridOptions;
20
- private gridApi;
21
- connectedCallback(): void;
22
- firstUpdated(): void;
23
- private initializeGridApi;
24
- private emitGridReady;
25
- private handleResizeStart;
26
- private renderHeader;
27
- private shouldShowResizeHandle;
28
- private renderBody;
29
- private renderRowCells;
30
- private calculateColSpan;
31
- private getGridTemplateColumns;
32
- render(): TemplateResult;
33
- }
34
- export default NileGrid;
35
- declare global {
36
- interface HTMLElementTagNameMap {
37
- 'nile-grid': NileGrid;
38
- }
39
- }
@@ -1,182 +0,0 @@
1
- import { __decorate } from "tslib";
2
- import { customElement, property } from 'lit/decorators.js';
3
- import { html } from 'lit';
4
- import { styles } from './nile-grid.css';
5
- import NileElement from '../internal/nile-element';
6
- import { virtualize } from '@lit-labs/virtualizer/virtualize.js';
7
- import { GridRenderer } from './renderer.js';
8
- import { ResizeHandler } from './resize-handler.js';
9
- /**
10
- * @summary A simple data grid component
11
- * @status stable
12
- * @since 2.0
13
- *
14
- * @event grid-ready - Emitted when the grid is ready
15
- */
16
- let NileGrid = class NileGrid extends NileElement {
17
- constructor() {
18
- super(...arguments);
19
- /** Column definitions for the grid */
20
- this.columnDefs = [];
21
- /** Row data to display in the grid */
22
- this.rowData = [];
23
- /** Grid options for configuration */
24
- this.gridOptions = {};
25
- this.gridApi = null;
26
- }
27
- connectedCallback() {
28
- super.connectedCallback();
29
- this.initializeGridApi();
30
- }
31
- firstUpdated() {
32
- this.emitGridReady();
33
- }
34
- initializeGridApi() {
35
- this.gridApi = {
36
- getSelectedRows: () => [],
37
- setRowData: (data) => {
38
- this.rowData = data;
39
- this.requestUpdate();
40
- },
41
- setColumnDefs: (defs) => {
42
- this.columnDefs = defs;
43
- this.requestUpdate();
44
- }
45
- };
46
- }
47
- emitGridReady() {
48
- if (this.gridApi) {
49
- const event = {
50
- api: this.gridApi,
51
- type: 'gridReady'
52
- };
53
- this.emit('grid-ready', event);
54
- }
55
- }
56
- handleResizeStart(event, col, columnIndex) {
57
- ResizeHandler.handleResizeStart(event, col, columnIndex, this.columnDefs, this.gridOptions, () => this.requestUpdate());
58
- }
59
- renderHeader() {
60
- return html `
61
- <div class="grid-header" style="grid-template-columns: ${this.getGridTemplateColumns()};">
62
- ${this.columnDefs.map((col, index) => html `
63
- <div class="grid-header-cell">
64
- <span>${col.headerName || col.field}</span>
65
- ${this.shouldShowResizeHandle(col) ? html `
66
- <div
67
- class="grid-resize-handle"
68
- @mousedown=${(e) => this.handleResizeStart(e, col, index)}
69
- title="Drag to resize column"
70
- ></div>
71
- ` : ''}
72
- </div>
73
- `)}
74
- </div>
75
- `;
76
- }
77
- shouldShowResizeHandle(col) {
78
- if (!this.gridOptions.enableColResize)
79
- return false;
80
- if (col.resizable === false)
81
- return false;
82
- return true;
83
- }
84
- renderBody() {
85
- if (this.gridOptions.enableVirtualScroll && this.rowData.length > 0) {
86
- return html `
87
- <div class="grid-body">
88
- ${virtualize({
89
- items: this.rowData,
90
- renderItem: (row, rowIndex) => html `
91
- <div class="grid-row" style="grid-template-columns: ${this.getGridTemplateColumns()};">
92
- ${this.renderRowCells(row, rowIndex)}
93
- </div>
94
- `,
95
- scroller: true,
96
- })}
97
- </div>
98
- `;
99
- }
100
- return GridRenderer.renderBody(this.rowData, this.columnDefs, false, () => html ``);
101
- }
102
- renderRowCells(row, rowIndex) {
103
- const cells = [];
104
- let currentColIndex = 0;
105
- for (let colIndex = 0; colIndex < this.columnDefs.length; colIndex++) {
106
- const col = this.columnDefs[colIndex];
107
- // Check if this column should be skipped due to previous spanning
108
- if (currentColIndex > colIndex) {
109
- continue;
110
- }
111
- // Calculate column span
112
- const colSpan = this.calculateColSpan(col, row, rowIndex, colIndex);
113
- if (colSpan > 0) {
114
- const cellStyle = `grid-column: ${currentColIndex + 1} / span ${colSpan};`;
115
- cells.push(html `
116
- <div class="grid-cell" style="${cellStyle}">
117
- <span>${row[col.field]}</span>
118
- </div>
119
- `);
120
- currentColIndex += colSpan;
121
- }
122
- }
123
- return html `${cells}`;
124
- }
125
- calculateColSpan(col, row, rowIndex, colIndex) {
126
- if (col.colSpan) {
127
- const params = {
128
- data: row,
129
- field: col.field,
130
- rowIndex,
131
- columnIndex: colIndex
132
- };
133
- return col.colSpan(params);
134
- }
135
- return 1;
136
- }
137
- getGridTemplateColumns() {
138
- return this.columnDefs.map((col, index) => {
139
- if (col.width) {
140
- return `${col.width}px`;
141
- }
142
- // Last column takes remaining space
143
- if (index === this.columnDefs.length - 1) {
144
- return '1fr';
145
- }
146
- return 'auto';
147
- }).join(' ');
148
- }
149
- render() {
150
- if (!this.columnDefs || this.columnDefs.length === 0) {
151
- return html `
152
- <div class="grid-container">
153
- <div class="grid-empty">
154
- <div class="empty-text">No columns defined</div>
155
- </div>
156
- </div>
157
- `;
158
- }
159
- return html `
160
- <div class="grid-container">
161
- ${this.renderHeader()}
162
- ${this.renderBody()}
163
- </div>
164
- `;
165
- }
166
- };
167
- NileGrid.styles = styles;
168
- __decorate([
169
- property({ type: Array, attribute: 'columnDefs' })
170
- ], NileGrid.prototype, "columnDefs", void 0);
171
- __decorate([
172
- property({ type: Array, attribute: 'rowData' })
173
- ], NileGrid.prototype, "rowData", void 0);
174
- __decorate([
175
- property({ type: Object, attribute: 'gridOptions' })
176
- ], NileGrid.prototype, "gridOptions", void 0);
177
- NileGrid = __decorate([
178
- customElement('nile-grid')
179
- ], NileGrid);
180
- export { NileGrid };
181
- export default NileGrid;
182
- //# sourceMappingURL=nile-grid.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"nile-grid.js","sourceRoot":"","sources":["../../../src/nile-grid/nile-grid.ts"],"names":[],"mappings":"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","sourcesContent":["import { customElement, property } from 'lit/decorators.js';\nimport { html, TemplateResult } from 'lit';\nimport { styles } from './nile-grid.css';\nimport type { CSSResultGroup } from 'lit';\nimport NileElement from '../internal/nile-element';\nimport { virtualize } from '@lit-labs/virtualizer/virtualize.js';\nimport type { ColumnDef, GridOptions, GridApi, GridReadyEvent } from './types.js';\nimport { GridRenderer } from './renderer.js';\nimport { ResizeHandler } from './resize-handler.js';\n\n/**\n * @summary A simple data grid component\n * @status stable\n * @since 2.0\n *\n * @event grid-ready - Emitted when the grid is ready\n */\n\n@customElement('nile-grid')\nexport class NileGrid extends NileElement {\n static styles: CSSResultGroup = styles;\n\n /** Column definitions for the grid */\n @property({ type: Array, attribute: 'columnDefs' }) columnDefs: ColumnDef[] = [];\n\n /** Row data to display in the grid */\n @property({ type: Array, attribute: 'rowData' }) rowData: any[] = [];\n\n /** Grid options for configuration */\n @property({ type: Object, attribute: 'gridOptions' }) gridOptions: GridOptions = {};\n\n private gridApi: GridApi | null = null;\n\n connectedCallback() {\n super.connectedCallback();\n this.initializeGridApi();\n }\n\n firstUpdated() {\n this.emitGridReady();\n }\n\n private initializeGridApi() {\n this.gridApi = {\n getSelectedRows: () => [],\n setRowData: (data: any[]) => {\n this.rowData = data;\n this.requestUpdate();\n },\n setColumnDefs: (defs: ColumnDef[]) => {\n this.columnDefs = defs;\n this.requestUpdate();\n }\n };\n }\n\n private emitGridReady() {\n if (this.gridApi) {\n const event: GridReadyEvent = {\n api: this.gridApi,\n type: 'gridReady'\n };\n this.emit('grid-ready', event);\n }\n }\n\n private handleResizeStart(event: MouseEvent, col: ColumnDef, columnIndex: number): void {\n ResizeHandler.handleResizeStart(\n event, \n col, \n columnIndex, \n this.columnDefs, \n this.gridOptions, \n () => this.requestUpdate()\n );\n }\n\n private renderHeader(): TemplateResult {\n return html`\n <div class=\"grid-header\" style=\"grid-template-columns: ${this.getGridTemplateColumns()};\">\n ${this.columnDefs.map((col, index) => html`\n <div class=\"grid-header-cell\">\n <span>${col.headerName || col.field}</span>\n ${this.shouldShowResizeHandle(col) ? html`\n <div \n class=\"grid-resize-handle\"\n @mousedown=${(e: MouseEvent) => this.handleResizeStart(e, col, index)}\n title=\"Drag to resize column\"\n ></div>\n ` : ''}\n </div>\n `)}\n </div>\n `;\n }\n\n private shouldShowResizeHandle(col: any): boolean {\n if (!this.gridOptions.enableColResize) return false;\n if (col.resizable === false) return false;\n return true;\n }\n\n private renderBody(): TemplateResult {\n if (this.gridOptions.enableVirtualScroll && this.rowData.length > 0) {\n return html`\n <div class=\"grid-body\">\n ${virtualize({\n items: this.rowData,\n renderItem: (row: any, rowIndex: number) => html`\n <div class=\"grid-row\" style=\"grid-template-columns: ${this.getGridTemplateColumns()};\">\n ${this.renderRowCells(row, rowIndex)}\n </div>\n `,\n scroller: true,\n })}\n </div>\n `;\n }\n\n return GridRenderer.renderBody(\n this.rowData,\n this.columnDefs,\n false,\n () => html``\n );\n }\n\n private renderRowCells(row: any, rowIndex: number): TemplateResult {\n const cells: TemplateResult[] = [];\n let currentColIndex = 0;\n\n for (let colIndex = 0; colIndex < this.columnDefs.length; colIndex++) {\n const col = this.columnDefs[colIndex];\n \n // Check if this column should be skipped due to previous spanning\n if (currentColIndex > colIndex) {\n continue;\n }\n\n // Calculate column span\n const colSpan = this.calculateColSpan(col, row, rowIndex, colIndex);\n \n if (colSpan > 0) {\n const cellStyle = `grid-column: ${currentColIndex + 1} / span ${colSpan};`;\n \n cells.push(html`\n <div class=\"grid-cell\" style=\"${cellStyle}\">\n <span>${row[col.field]}</span>\n </div>\n `);\n \n currentColIndex += colSpan;\n }\n }\n\n return html`${cells}`;\n }\n\n private calculateColSpan(col: any, row: any, rowIndex: number, colIndex: number): number {\n if (col.colSpan) {\n const params = {\n data: row,\n field: col.field,\n rowIndex,\n columnIndex: colIndex\n };\n return col.colSpan(params);\n }\n return 1;\n }\n\n private getGridTemplateColumns(): string {\n return this.columnDefs.map((col, index) => {\n if (col.width) {\n return `${col.width}px`;\n }\n // Last column takes remaining space\n if (index === this.columnDefs.length - 1) {\n return '1fr';\n }\n return 'auto';\n }).join(' ');\n }\n\n render(): TemplateResult {\n if (!this.columnDefs || this.columnDefs.length === 0) {\n return html`\n <div class=\"grid-container\">\n <div class=\"grid-empty\">\n <div class=\"empty-text\">No columns defined</div>\n </div>\n </div>\n `;\n }\n\n return html`\n <div class=\"grid-container\">\n ${this.renderHeader()}\n ${this.renderBody()}\n </div>\n `;\n }\n}\n\nexport default NileGrid;\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'nile-grid': NileGrid;\n }\n}\n"]}
@@ -1,8 +0,0 @@
1
- import { TemplateResult } from 'lit';
2
- import type { ColumnDef } from './types.js';
3
- export declare class GridRenderer {
4
- static renderHeader(columnDefs: ColumnDef[], enableColResize: boolean, onResizeStart: (e: MouseEvent, col: ColumnDef, index: number) => void): TemplateResult;
5
- static renderBody(rowData: any[], columnDefs: ColumnDef[], enableVirtualScroll: boolean, onVirtualizeRender: (row: any, rowIndex: number) => TemplateResult): TemplateResult;
6
- static renderRowWithSpanning(row: any, rowIndex: number, columnDefs: ColumnDef[]): TemplateResult;
7
- private static shouldShowResizeHandle;
8
- }
@@ -1,78 +0,0 @@
1
- import { html } from 'lit';
2
- import { getGridTemplateColumns, calculateColSpan } from './utils.js';
3
- export class GridRenderer {
4
- static renderHeader(columnDefs, enableColResize, onResizeStart) {
5
- return html `
6
- <div class="grid-header" style="grid-template-columns: ${getGridTemplateColumns(columnDefs)};">
7
- ${columnDefs.map((col, index) => html `
8
- <div class="grid-header-cell">
9
- <span>${col.headerName || col.field}</span>
10
- ${this.shouldShowResizeHandle(col, enableColResize) ? html `
11
- <div
12
- class="grid-resize-handle"
13
- @mousedown=${(e) => onResizeStart(e, col, index)}
14
- title="Drag to resize column"
15
- ></div>
16
- ` : ''}
17
- </div>
18
- `)}
19
- </div>
20
- `;
21
- }
22
- static renderBody(rowData, columnDefs, enableVirtualScroll, onVirtualizeRender) {
23
- if (rowData.length === 0) {
24
- return html `
25
- <div class="grid-empty">
26
- <div class="empty-text">No data available</div>
27
- </div>
28
- `;
29
- }
30
- if (enableVirtualScroll) {
31
- return html `
32
- <div class="grid-body">
33
- ${onVirtualizeRender}
34
- </div>
35
- `;
36
- }
37
- return html `
38
- <div class="grid-body">
39
- ${rowData.map((row, rowIndex) => this.renderRowWithSpanning(row, rowIndex, columnDefs))}
40
- </div>
41
- `;
42
- }
43
- static renderRowWithSpanning(row, rowIndex, columnDefs) {
44
- const cells = [];
45
- let currentColIndex = 0;
46
- for (let colIndex = 0; colIndex < columnDefs.length; colIndex++) {
47
- const col = columnDefs[colIndex];
48
- // Check if this column should be skipped due to previous spanning
49
- if (currentColIndex > colIndex) {
50
- continue;
51
- }
52
- // Calculate column span
53
- const colSpan = calculateColSpan(col, row, rowIndex, colIndex);
54
- if (colSpan > 0) {
55
- const cellStyle = `grid-column: ${currentColIndex + 1} / span ${colSpan};`;
56
- cells.push(html `
57
- <div class="grid-cell" style="${cellStyle}">
58
- <span>${row[col.field]}</span>
59
- </div>
60
- `);
61
- currentColIndex += colSpan;
62
- }
63
- }
64
- return html `
65
- <div class="grid-row" style="grid-template-columns: ${getGridTemplateColumns(columnDefs)};">
66
- ${cells}
67
- </div>
68
- `;
69
- }
70
- static shouldShowResizeHandle(col, enableColResize) {
71
- if (!enableColResize)
72
- return false;
73
- if (col.resizable === false)
74
- return false;
75
- return true;
76
- }
77
- }
78
- //# sourceMappingURL=renderer.js.map