@keenmate/web-grid 1.0.0-rc02
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/LICENSE +21 -0
- package/README.md +243 -0
- package/component-variables.manifest.json +192 -0
- package/dist/grid.d.ts +319 -0
- package/dist/index.d.ts +4 -0
- package/dist/modules/contextmenu/index.d.ts +10 -0
- package/dist/modules/datepicker/datepicker.d.ts +79 -0
- package/dist/modules/datepicker/formatting.d.ts +44 -0
- package/dist/modules/datepicker/index.d.ts +4 -0
- package/dist/modules/datepicker/interaction.d.ts +39 -0
- package/dist/modules/datepicker/navigation.d.ts +37 -0
- package/dist/modules/datepicker/rendering.d.ts +56 -0
- package/dist/modules/datepicker/types.d.ts +62 -0
- package/dist/modules/dropdown/index.d.ts +4 -0
- package/dist/modules/dropdown/input-handlers.d.ts +14 -0
- package/dist/modules/dropdown/interaction.d.ts +34 -0
- package/dist/modules/dropdown/options.d.ts +33 -0
- package/dist/modules/dropdown/rendering.d.ts +11 -0
- package/dist/modules/editing/index.d.ts +2 -0
- package/dist/modules/editing/lifecycle.d.ts +25 -0
- package/dist/modules/editing/renderers.d.ts +39 -0
- package/dist/modules/navigation/focus.d.ts +46 -0
- package/dist/modules/navigation/index.d.ts +1 -0
- package/dist/modules/rendering/display.d.ts +7 -0
- package/dist/modules/rendering/index.d.ts +3 -0
- package/dist/modules/rendering/table.d.ts +39 -0
- package/dist/modules/toolbar/index.d.ts +55 -0
- package/dist/modules/tooltip/index.d.ts +1 -0
- package/dist/modules/tooltip/tooltip.d.ts +13 -0
- package/dist/modules/types.d.ts +32 -0
- package/dist/types.d.ts +311 -0
- package/dist/web-component.d.ts +277 -0
- package/dist/web-grid.js +5370 -0
- package/dist/web-grid.umd.js +618 -0
- package/package.json +78 -0
- package/src/css/_cells.css +77 -0
- package/src/css/_dark-mode.css +51 -0
- package/src/css/_dialogs.css +121 -0
- package/src/css/_dropdown.css +193 -0
- package/src/css/_editors.css +184 -0
- package/src/css/_header.css +105 -0
- package/src/css/_modifiers.css +36 -0
- package/src/css/_navigation.css +25 -0
- package/src/css/_pagination.css +156 -0
- package/src/css/_table.css +90 -0
- package/src/css/_toolbar.css +139 -0
- package/src/css/_variables.css +265 -0
- package/src/css/_virtual-scroll.css +24 -0
- package/src/css/main.css +35 -0
|
@@ -0,0 +1,277 @@
|
|
|
1
|
+
import { WebGrid } from './grid.js';
|
|
2
|
+
import type { Column, CellValidationState, RowToolbarConfig, ContextMenuItem, RowChangeDetail, ToolbarClickDetail, RowActionClickDetail, ContextMenuContext, EditTrigger, EditorOption, EditorOptions, GridMode, ToggleVisibility, DataRequestDetail, SortState, PaginationLabelsCallback, SummaryContentCallback } from './types.js';
|
|
3
|
+
import type { GridContext } from './modules/types.js';
|
|
4
|
+
/**
|
|
5
|
+
* GridElement - Custom HTML Element for WebGrid
|
|
6
|
+
*
|
|
7
|
+
* Extends HTMLElement and composes WebGrid for business logic.
|
|
8
|
+
*
|
|
9
|
+
* Usage:
|
|
10
|
+
* ```html
|
|
11
|
+
* <web-grid></web-grid>
|
|
12
|
+
* ```
|
|
13
|
+
*
|
|
14
|
+
* ```js
|
|
15
|
+
* const grid = document.querySelector('web-grid');
|
|
16
|
+
* grid.items = [...];
|
|
17
|
+
* grid.columns = [...];
|
|
18
|
+
* ```
|
|
19
|
+
*/
|
|
20
|
+
export declare class GridElement<T = unknown> extends HTMLElement implements GridContext<T> {
|
|
21
|
+
readonly grid: WebGrid<T>;
|
|
22
|
+
readonly shadow: ShadowRoot;
|
|
23
|
+
private styleElement;
|
|
24
|
+
private customStyleElement;
|
|
25
|
+
private updatePending;
|
|
26
|
+
isCommittingFromKeyboard: boolean;
|
|
27
|
+
private isTransitioningCells;
|
|
28
|
+
private wheelListenerAdded;
|
|
29
|
+
private toolbarOutsideClickAdded;
|
|
30
|
+
private toolbarScrollListenerAdded;
|
|
31
|
+
private toolbarMoveInProgress;
|
|
32
|
+
private toolbarHideTimeout;
|
|
33
|
+
private toolbarHovered;
|
|
34
|
+
dropdownOpen: boolean;
|
|
35
|
+
dropdownOptions: EditorOption[];
|
|
36
|
+
highlightedIndex: number;
|
|
37
|
+
filterText: string;
|
|
38
|
+
isUserFiltering: boolean;
|
|
39
|
+
justSelected: boolean;
|
|
40
|
+
isOpeningDropdown: boolean;
|
|
41
|
+
searchDebounceTimer: ReturnType<typeof setTimeout> | null;
|
|
42
|
+
searchAbortController: AbortController | null;
|
|
43
|
+
isSearching: boolean;
|
|
44
|
+
tooltipElement: HTMLElement | null;
|
|
45
|
+
tooltipArrowElement: HTMLElement | null;
|
|
46
|
+
tooltipAnchor: HTMLElement | null;
|
|
47
|
+
tooltipShowTimer: ReturnType<typeof setTimeout> | null;
|
|
48
|
+
tooltipHideTimer: ReturnType<typeof setTimeout> | null;
|
|
49
|
+
private _tooltipShowDelay;
|
|
50
|
+
private _tooltipHideDelay;
|
|
51
|
+
get tooltipShowDelay(): number;
|
|
52
|
+
set tooltipShowDelay(value: number);
|
|
53
|
+
get tooltipHideDelay(): number;
|
|
54
|
+
set tooltipHideDelay(value: number);
|
|
55
|
+
private datepicker;
|
|
56
|
+
private contextMenuElement;
|
|
57
|
+
private virtualScrollStart;
|
|
58
|
+
private virtualScrollEnd;
|
|
59
|
+
private scrollListenerAdded;
|
|
60
|
+
private isLoadingMoreItems;
|
|
61
|
+
constructor();
|
|
62
|
+
connectedCallback(): void;
|
|
63
|
+
disconnectedCallback(): void;
|
|
64
|
+
get items(): T[];
|
|
65
|
+
set items(value: T[]);
|
|
66
|
+
get columns(): Column<T>[];
|
|
67
|
+
set columns(value: Column<T>[]);
|
|
68
|
+
get sortable(): boolean;
|
|
69
|
+
set sortable(value: boolean);
|
|
70
|
+
get filterable(): boolean;
|
|
71
|
+
set filterable(value: boolean);
|
|
72
|
+
get pageable(): boolean;
|
|
73
|
+
set pageable(value: boolean);
|
|
74
|
+
get pageSize(): number;
|
|
75
|
+
set pageSize(value: number);
|
|
76
|
+
get pageSizes(): number[];
|
|
77
|
+
set pageSizes(value: number[]);
|
|
78
|
+
get striped(): boolean;
|
|
79
|
+
set striped(value: boolean);
|
|
80
|
+
get hoverable(): boolean;
|
|
81
|
+
set hoverable(value: boolean);
|
|
82
|
+
get editable(): boolean;
|
|
83
|
+
set editable(value: boolean);
|
|
84
|
+
get editTrigger(): EditTrigger;
|
|
85
|
+
set editTrigger(value: EditTrigger);
|
|
86
|
+
get mode(): GridMode;
|
|
87
|
+
set mode(value: GridMode);
|
|
88
|
+
get dropdownToggleVisibility(): ToggleVisibility;
|
|
89
|
+
set dropdownToggleVisibility(value: ToggleVisibility);
|
|
90
|
+
get dropdownShowOnFocus(): boolean;
|
|
91
|
+
set dropdownShowOnFocus(value: boolean);
|
|
92
|
+
get openDropdownOnEnter(): boolean;
|
|
93
|
+
set openDropdownOnEnter(value: boolean);
|
|
94
|
+
get checkboxAlwaysEditable(): boolean;
|
|
95
|
+
set checkboxAlwaysEditable(value: boolean);
|
|
96
|
+
get showRowNumbers(): boolean;
|
|
97
|
+
set showRowNumbers(value: boolean);
|
|
98
|
+
get invalidCells(): CellValidationState[];
|
|
99
|
+
set invalidCells(value: CellValidationState[]);
|
|
100
|
+
get showRowToolbar(): boolean;
|
|
101
|
+
set showRowToolbar(value: boolean);
|
|
102
|
+
get rowToolbar(): RowToolbarConfig<T>[];
|
|
103
|
+
set rowToolbar(value: RowToolbarConfig<T>[]);
|
|
104
|
+
get toolbarAlign(): 'center' | 'top';
|
|
105
|
+
set toolbarAlign(value: 'center' | 'top');
|
|
106
|
+
get toolbarTopPosition(): 'start' | 'center' | 'end' | 'cursor';
|
|
107
|
+
set toolbarTopPosition(value: 'start' | 'center' | 'end' | 'cursor');
|
|
108
|
+
get toolbarTrigger(): 'hover' | 'click' | 'button';
|
|
109
|
+
set toolbarTrigger(value: 'hover' | 'click' | 'button');
|
|
110
|
+
get contextMenu(): ContextMenuItem<T>[] | undefined;
|
|
111
|
+
set contextMenu(value: ContextMenuItem<T>[] | undefined);
|
|
112
|
+
get showRowActions(): boolean;
|
|
113
|
+
set showRowActions(value: boolean);
|
|
114
|
+
get rowActions(): RowToolbarConfig<T>[];
|
|
115
|
+
set rowActions(value: RowToolbarConfig<T>[]);
|
|
116
|
+
set onrowchange(value: ((detail: RowChangeDetail<T>) => void) | undefined);
|
|
117
|
+
set onroweditstart(value: ((detail: {
|
|
118
|
+
row: T;
|
|
119
|
+
rowIndex: number;
|
|
120
|
+
field: string;
|
|
121
|
+
}) => void) | undefined);
|
|
122
|
+
set onroweditcancel(value: ((detail: {
|
|
123
|
+
row: T;
|
|
124
|
+
rowIndex: number;
|
|
125
|
+
field: string;
|
|
126
|
+
}) => void) | undefined);
|
|
127
|
+
set onvalidationerror(value: ((detail: {
|
|
128
|
+
row: T;
|
|
129
|
+
rowIndex: number;
|
|
130
|
+
field: string;
|
|
131
|
+
error: string;
|
|
132
|
+
}) => void) | undefined);
|
|
133
|
+
set ontoolbarclick(value: ((detail: ToolbarClickDetail<T>) => void) | undefined);
|
|
134
|
+
set onrowaction(value: ((detail: RowActionClickDetail<T>) => void) | undefined);
|
|
135
|
+
set oncontextmenuopen(value: ((context: ContextMenuContext<T>) => void) | undefined);
|
|
136
|
+
get ondatarequest(): ((detail: DataRequestDetail) => void) | undefined;
|
|
137
|
+
set ondatarequest(value: ((detail: DataRequestDetail) => void) | undefined);
|
|
138
|
+
get onrowdelete(): ((detail: {
|
|
139
|
+
rowIndex: number;
|
|
140
|
+
row: T;
|
|
141
|
+
}) => void) | undefined;
|
|
142
|
+
set onrowdelete(value: ((detail: {
|
|
143
|
+
rowIndex: number;
|
|
144
|
+
row: T;
|
|
145
|
+
}) => void) | undefined);
|
|
146
|
+
get sort(): SortState[];
|
|
147
|
+
set sort(value: SortState[]);
|
|
148
|
+
get currentPage(): number;
|
|
149
|
+
set currentPage(value: number);
|
|
150
|
+
get totalItems(): number | null;
|
|
151
|
+
set totalItems(value: number | null);
|
|
152
|
+
get showPagination(): boolean | 'auto';
|
|
153
|
+
set showPagination(value: boolean | 'auto');
|
|
154
|
+
get paginationPosition(): string;
|
|
155
|
+
set paginationPosition(value: string);
|
|
156
|
+
get paginationLabelsCallback(): PaginationLabelsCallback | undefined;
|
|
157
|
+
set paginationLabelsCallback(value: PaginationLabelsCallback | undefined);
|
|
158
|
+
get paginationLayout(): string;
|
|
159
|
+
set paginationLayout(value: string);
|
|
160
|
+
get summaryPosition(): string | undefined;
|
|
161
|
+
set summaryPosition(value: string | undefined);
|
|
162
|
+
get summaryContentCallback(): SummaryContentCallback<T> | undefined;
|
|
163
|
+
set summaryContentCallback(value: SummaryContentCallback<T> | undefined);
|
|
164
|
+
get customStylesCallback(): (() => string) | undefined;
|
|
165
|
+
set customStylesCallback(value: (() => string) | undefined);
|
|
166
|
+
get rowClassCallback(): ((row: T, rowIndex: number) => string | null) | undefined;
|
|
167
|
+
set rowClassCallback(value: ((row: T, rowIndex: number) => string | null) | undefined);
|
|
168
|
+
get summaryMetadata(): unknown;
|
|
169
|
+
set summaryMetadata(value: unknown);
|
|
170
|
+
get summaryInline(): boolean;
|
|
171
|
+
set summaryInline(value: boolean);
|
|
172
|
+
get virtualScroll(): boolean;
|
|
173
|
+
set virtualScroll(value: boolean);
|
|
174
|
+
get virtualScrollThreshold(): number;
|
|
175
|
+
set virtualScrollThreshold(value: number);
|
|
176
|
+
get virtualScrollRowHeight(): number;
|
|
177
|
+
set virtualScrollRowHeight(value: number);
|
|
178
|
+
get virtualScrollBuffer(): number;
|
|
179
|
+
set virtualScrollBuffer(value: number);
|
|
180
|
+
get infiniteScroll(): boolean;
|
|
181
|
+
set infiniteScroll(value: boolean);
|
|
182
|
+
get infiniteScrollThreshold(): number;
|
|
183
|
+
set infiniteScrollThreshold(value: number);
|
|
184
|
+
get hasMoreItems(): boolean;
|
|
185
|
+
set hasMoreItems(value: boolean);
|
|
186
|
+
get displayItems(): T[];
|
|
187
|
+
get totalPages(): number;
|
|
188
|
+
get isNavigateMode(): boolean;
|
|
189
|
+
getRowDraft(rowIndex: number): T | undefined;
|
|
190
|
+
hasRowDraft(rowIndex: number): boolean;
|
|
191
|
+
discardRowDraft(rowIndex: number): void;
|
|
192
|
+
getDraftRowIndices(): number[];
|
|
193
|
+
discardAllDrafts(): void;
|
|
194
|
+
isCellInvalid(rowIndex: number, field: string): boolean;
|
|
195
|
+
getCellValidationError(rowIndex: number, field: string): string | null;
|
|
196
|
+
escapeHtml(text: string): string;
|
|
197
|
+
getCurrentEditingColumn(): Column<T> | null;
|
|
198
|
+
getCurrentEditorOptions(): EditorOptions;
|
|
199
|
+
moveFocusAfterCommit(rowIndex: number, field: string, direction: 'down' | 'up' | 'next' | 'prev'): void;
|
|
200
|
+
private requestUpdate;
|
|
201
|
+
/**
|
|
202
|
+
* Update custom styles in shadow DOM from customStylesCallback
|
|
203
|
+
*/
|
|
204
|
+
private updateCustomStyles;
|
|
205
|
+
/**
|
|
206
|
+
* Handle keyboard navigation in cells
|
|
207
|
+
*/
|
|
208
|
+
private handleCellKeyDown;
|
|
209
|
+
/**
|
|
210
|
+
* Handle keydown in editor inputs
|
|
211
|
+
*/
|
|
212
|
+
private handleEditorKeyDown;
|
|
213
|
+
private attachEventListeners;
|
|
214
|
+
/**
|
|
215
|
+
* Handle virtual scroll - recalculate visible range and re-render if changed
|
|
216
|
+
*/
|
|
217
|
+
private handleVirtualScroll;
|
|
218
|
+
/**
|
|
219
|
+
* Render only the tbody with virtual rows (fast update, no full re-render)
|
|
220
|
+
* After re-render, re-focus the focusedCell to maintain keyboard navigation
|
|
221
|
+
*/
|
|
222
|
+
private renderVirtualRows;
|
|
223
|
+
/**
|
|
224
|
+
* Handle infinite scroll - trigger load more when near bottom
|
|
225
|
+
*/
|
|
226
|
+
private handleInfiniteScroll;
|
|
227
|
+
private render;
|
|
228
|
+
/**
|
|
229
|
+
* Render the SVG connector arrow for toolbar row tracking
|
|
230
|
+
*/
|
|
231
|
+
private renderConnector;
|
|
232
|
+
/**
|
|
233
|
+
* Open the date picker for a date input
|
|
234
|
+
*/
|
|
235
|
+
private openDatePicker;
|
|
236
|
+
/**
|
|
237
|
+
* Handle date selection from the date picker
|
|
238
|
+
*/
|
|
239
|
+
private handleDatePickerSelect;
|
|
240
|
+
/**
|
|
241
|
+
* Commit the date editor value
|
|
242
|
+
*/
|
|
243
|
+
private commitDateEditor;
|
|
244
|
+
/**
|
|
245
|
+
* Parse date input string using format info
|
|
246
|
+
*/
|
|
247
|
+
private parseDateInput;
|
|
248
|
+
/**
|
|
249
|
+
* Show "Go to Row" dialog (Ctrl+G)
|
|
250
|
+
*/
|
|
251
|
+
private showGoToRowDialog;
|
|
252
|
+
/**
|
|
253
|
+
* Open custom editor by calling the cellEditCallback
|
|
254
|
+
*/
|
|
255
|
+
private openCustomEditor;
|
|
256
|
+
/**
|
|
257
|
+
* Handle context menu (right-click) on cells
|
|
258
|
+
*/
|
|
259
|
+
private handleContextMenu;
|
|
260
|
+
/**
|
|
261
|
+
* Show toolbar for a specific row
|
|
262
|
+
*/
|
|
263
|
+
private showToolbarForRow;
|
|
264
|
+
/**
|
|
265
|
+
* Close toolbar and reset move flag
|
|
266
|
+
*/
|
|
267
|
+
private closeToolbarAndReset;
|
|
268
|
+
/**
|
|
269
|
+
* Handle toolbar item click
|
|
270
|
+
*/
|
|
271
|
+
private handleToolbarItemClick;
|
|
272
|
+
/**
|
|
273
|
+
* Handle paste event in navigate mode
|
|
274
|
+
*/
|
|
275
|
+
private handlePaste;
|
|
276
|
+
}
|
|
277
|
+
export default GridElement;
|