@oscarpalmer/tabela 0.13.0 → 0.14.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/dist/components/{body.component.mjs → body.component.js} +3 -6
- package/dist/components/{column.component.mjs → column.component.js} +5 -8
- package/dist/components/{footer.component.mjs → footer.component.js} +4 -7
- package/dist/components/group.component.js +28 -0
- package/dist/components/{header.component.mjs → header.component.js} +3 -6
- package/dist/components/{row.component.mjs → row.component.js} +7 -11
- package/dist/helpers/{dom.helpers.mjs → dom.helpers.js} +9 -13
- package/dist/helpers/{misc.helpers.mjs → misc.helpers.js} +1 -3
- package/dist/helpers/style.helper.js +6 -0
- package/dist/{index.mjs → index.js} +1 -3
- package/dist/managers/{column.manager.mjs → column.manager.js} +1 -6
- package/dist/managers/data.manager.js +181 -0
- package/dist/managers/{event.manager.mjs → event.manager.js} +8 -9
- package/dist/managers/{filter.manager.mjs → filter.manager.js} +14 -23
- package/dist/managers/group.manager.js +46 -0
- package/dist/managers/{navigation.manager.mjs → navigation.manager.js} +24 -27
- package/dist/managers/{render.manager.mjs → render.manager.js} +26 -35
- package/dist/managers/{row.manager.mjs → row.manager.js} +11 -18
- package/dist/managers/{selection.manager.mjs → selection.manager.js} +28 -32
- package/dist/managers/{sort.manager.mjs → sort.manager.js} +9 -12
- package/dist/models/body.model.js +0 -0
- package/dist/models/column.model.js +0 -0
- package/dist/models/data.model.js +0 -0
- package/dist/models/filter.model.js +0 -0
- package/dist/models/footer.model.js +0 -0
- package/dist/models/group.model.js +0 -0
- package/dist/models/header.model.js +0 -0
- package/dist/models/render.model.js +0 -0
- package/dist/models/selection.model.js +0 -0
- package/dist/models/sort.model.js +0 -0
- package/dist/models/tabela.model.js +0 -0
- package/dist/models/tabela.options.js +0 -0
- package/dist/{tabela.full.mjs → tabela.full.js} +860 -1049
- package/dist/tabela.js +105 -0
- package/package.json +1 -1
- package/src/components/body.component.ts +10 -7
- package/src/components/column.component.ts +19 -15
- package/src/components/footer.component.ts +7 -10
- package/src/components/group.component.ts +34 -12
- package/src/components/header.component.ts +6 -5
- package/src/components/row.component.ts +27 -19
- package/src/helpers/dom.helpers.ts +18 -22
- package/src/helpers/misc.helpers.ts +5 -0
- package/src/managers/data.manager.ts +80 -77
- package/src/managers/event.manager.ts +21 -10
- package/src/managers/filter.manager.ts +34 -21
- package/src/managers/group.manager.ts +18 -9
- package/src/managers/navigation.manager.ts +46 -49
- package/src/managers/render.manager.ts +34 -21
- package/src/managers/row.manager.ts +1 -1
- package/src/managers/selection.manager.ts +37 -35
- package/src/managers/sort.manager.ts +47 -34
- package/src/managers/style.manager.ts +40 -25
- package/src/models/column.model.ts +2 -6
- package/src/models/data.model.ts +7 -8
- package/src/models/dom.model.ts +33 -0
- package/src/models/event.model.ts +7 -0
- package/src/models/filter.model.ts +20 -0
- package/src/models/group.model.ts +4 -0
- package/src/models/sort.model.ts +4 -0
- package/src/models/style.model.ts +32 -20
- package/src/models/tabela.model.ts +1 -0
- package/src/tabela.ts +20 -22
- package/dist/body.component-_VDOpJhV.d.mts +0 -10
- package/dist/body.model-2iwsovAV.d.mts +0 -7
- package/dist/column.component-Bx46r3JI.d.mts +0 -16
- package/dist/column.model-D-aw4EU4.d.mts +0 -16
- package/dist/components/body.component.d.mts +0 -2
- package/dist/components/column.component.d.mts +0 -2
- package/dist/components/footer.component.d.mts +0 -2
- package/dist/components/group.component.d.mts +0 -2
- package/dist/components/group.component.mjs +0 -51
- package/dist/components/header.component.d.mts +0 -2
- package/dist/components/row.component.d.mts +0 -2
- package/dist/filter.model-7ukJrtil.d.mts +0 -16
- package/dist/footer.component-Curiab8j.d.mts +0 -12
- package/dist/footer.model-DhqoS6ds.d.mts +0 -8
- package/dist/group.component-Cq1YYbfJ.d.mts +0 -285
- package/dist/group.model-BsKFwHbt.d.mts +0 -10
- package/dist/header.component-BjjlpZIg.d.mts +0 -12
- package/dist/header.model-DN_KzUCV.d.mts +0 -7
- package/dist/helpers/dom.helpers.d.mts +0 -12
- package/dist/helpers/misc.helpers.d.mts +0 -6
- package/dist/helpers/style.helper.d.mts +0 -6
- package/dist/helpers/style.helper.mjs +0 -8
- package/dist/index.d.mts +0 -7
- package/dist/managers/column.manager.d.mts +0 -2
- package/dist/managers/data.manager.d.mts +0 -2
- package/dist/managers/data.manager.mjs +0 -222
- package/dist/managers/event.manager.d.mts +0 -2
- package/dist/managers/filter.manager.d.mts +0 -2
- package/dist/managers/group.manager.d.mts +0 -2
- package/dist/managers/group.manager.mjs +0 -73
- package/dist/managers/navigation.manager.d.mts +0 -2
- package/dist/managers/render.manager.d.mts +0 -2
- package/dist/managers/row.manager.d.mts +0 -2
- package/dist/managers/selection.manager.d.mts +0 -2
- package/dist/managers/sort.manager.d.mts +0 -2
- package/dist/managers/style.manager.d.mts +0 -2
- package/dist/managers/style.manager.mjs +0 -149
- package/dist/models/body.model.d.mts +0 -2
- package/dist/models/body.model.mjs +0 -1
- package/dist/models/column.model.d.mts +0 -2
- package/dist/models/column.model.mjs +0 -1
- package/dist/models/data.model.d.mts +0 -2
- package/dist/models/data.model.mjs +0 -1
- package/dist/models/filter.model.d.mts +0 -2
- package/dist/models/filter.model.mjs +0 -1
- package/dist/models/footer.model.d.mts +0 -2
- package/dist/models/footer.model.mjs +0 -1
- package/dist/models/group.model.d.mts +0 -2
- package/dist/models/group.model.mjs +0 -1
- package/dist/models/header.model.d.mts +0 -2
- package/dist/models/header.model.mjs +0 -1
- package/dist/models/render.model.d.mts +0 -2
- package/dist/models/render.model.mjs +0 -1
- package/dist/models/selection.model.d.mts +0 -2
- package/dist/models/selection.model.mjs +0 -1
- package/dist/models/sort.model.d.mts +0 -2
- package/dist/models/sort.model.mjs +0 -1
- package/dist/models/style.model.d.mts +0 -23
- package/dist/models/style.model.mjs +0 -23
- package/dist/models/tabela.model.d.mts +0 -2
- package/dist/models/tabela.model.mjs +0 -1
- package/dist/models/tabela.options.d.mts +0 -2
- package/dist/models/tabela.options.mjs +0 -1
- package/dist/selection.model-rwQe9fco.d.mts +0 -12
- package/dist/sort.model-CauImaLu.d.mts +0 -15
- package/dist/tabela.d.mts +0 -21
- package/dist/tabela.mjs +0 -126
- package/dist/tabela.options-RkZvfptB.d.mts +0 -14
|
@@ -1,285 +0,0 @@
|
|
|
1
|
-
import { t as BodyComponent } from "./body.component-_VDOpJhV.mjs";
|
|
2
|
-
import { n as TabelaColumn } from "./column.model-D-aw4EU4.mjs";
|
|
3
|
-
import { t as ColumnComponent } from "./column.component-Bx46r3JI.mjs";
|
|
4
|
-
import { t as FooterComponent } from "./footer.component-Curiab8j.mjs";
|
|
5
|
-
import { t as GroupValue } from "./group.model-BsKFwHbt.mjs";
|
|
6
|
-
import { t as HeaderComponent } from "./header.component-BjjlpZIg.mjs";
|
|
7
|
-
import { r as TabelaFilterItem } from "./filter.model-7ukJrtil.mjs";
|
|
8
|
-
import { n as TabelaSortDirection, r as TabelaSortItem } from "./sort.model-CauImaLu.mjs";
|
|
9
|
-
import { t as TabelaOptions } from "./tabela.options-RkZvfptB.mjs";
|
|
10
|
-
import { Key, PlainObject } from "@oscarpalmer/atoms/models";
|
|
11
|
-
import { RemovableEventListener } from "@oscarpalmer/toretto/models";
|
|
12
|
-
|
|
13
|
-
//#region src/managers/column.manager.d.ts
|
|
14
|
-
declare class ColumnManager {
|
|
15
|
-
state: State;
|
|
16
|
-
items: ColumnComponent[];
|
|
17
|
-
constructor(state: State);
|
|
18
|
-
destroy(): void;
|
|
19
|
-
get(field: string): ColumnComponent | undefined;
|
|
20
|
-
remove(field: string): void;
|
|
21
|
-
remove(fields: string[]): void;
|
|
22
|
-
set(columns: TabelaColumn[]): void;
|
|
23
|
-
}
|
|
24
|
-
//#endregion
|
|
25
|
-
//#region src/models/data.model.d.ts
|
|
26
|
-
type DataItem = GroupComponent | Key;
|
|
27
|
-
type DataItems = {
|
|
28
|
-
active?: Array<DataItem>;
|
|
29
|
-
original: Array<DataItem>;
|
|
30
|
-
};
|
|
31
|
-
type DataState = {
|
|
32
|
-
items: DataItems;
|
|
33
|
-
values: DataValues;
|
|
34
|
-
} & State;
|
|
35
|
-
type DataValues = {
|
|
36
|
-
array: Array<GroupComponent | PlainObject>;
|
|
37
|
-
mapped: Map<Key, PlainObject>;
|
|
38
|
-
};
|
|
39
|
-
type TabelaData = {
|
|
40
|
-
add(data: PlainObject[]): void;
|
|
41
|
-
clear(): void;
|
|
42
|
-
get(active?: boolean): PlainObject[];
|
|
43
|
-
remove(keys: Key[]): void;
|
|
44
|
-
remove(data: PlainObject[]): void;
|
|
45
|
-
synchronize(data: PlainObject[], remove?: boolean): void;
|
|
46
|
-
update(data: PlainObject[]): void;
|
|
47
|
-
};
|
|
48
|
-
//#endregion
|
|
49
|
-
//#region src/managers/data.manager.d.ts
|
|
50
|
-
declare class DataManager {
|
|
51
|
-
handlers: Readonly<{
|
|
52
|
-
add: (data: PlainObject[]) => undefined;
|
|
53
|
-
clear: () => undefined;
|
|
54
|
-
get: (active: boolean | undefined) => PlainObject[];
|
|
55
|
-
remove: (items: Key[] | PlainObject[]) => undefined;
|
|
56
|
-
synchronize: (data: PlainObject[], remove: boolean | undefined) => undefined;
|
|
57
|
-
update: (data: PlainObject[]) => undefined;
|
|
58
|
-
}>;
|
|
59
|
-
state: DataState;
|
|
60
|
-
get items(): DataItem[];
|
|
61
|
-
get size(): number;
|
|
62
|
-
constructor(state: State);
|
|
63
|
-
add(data: PlainObject[], render: boolean): Promise<void>;
|
|
64
|
-
clear(): void;
|
|
65
|
-
destroy(): void;
|
|
66
|
-
get(active?: boolean): PlainObject[];
|
|
67
|
-
getIndex(item: DataItem): number;
|
|
68
|
-
remove(items: Array<Key | PlainObject>, render: boolean): Promise<void>;
|
|
69
|
-
removeItems(items: DataItem[], clear: boolean, render: boolean): Promise<void>;
|
|
70
|
-
render(): void;
|
|
71
|
-
set(data: PlainObject[]): void;
|
|
72
|
-
synchronize(data: PlainObject[], remove?: boolean): Promise<void>;
|
|
73
|
-
update(data: PlainObject[]): Promise<void>;
|
|
74
|
-
}
|
|
75
|
-
//#endregion
|
|
76
|
-
//#region src/managers/event.manager.d.ts
|
|
77
|
-
declare class EventManager {
|
|
78
|
-
state: State;
|
|
79
|
-
constructor(state: State);
|
|
80
|
-
destroy(): void;
|
|
81
|
-
onSort(event: MouseEvent, target: HTMLElement): void;
|
|
82
|
-
}
|
|
83
|
-
//#endregion
|
|
84
|
-
//#region src/managers/filter.manager.d.ts
|
|
85
|
-
declare class FilterManager {
|
|
86
|
-
state: State;
|
|
87
|
-
handlers: Readonly<{
|
|
88
|
-
add: (item: TabelaFilterItem) => void;
|
|
89
|
-
clear: () => void;
|
|
90
|
-
remove: (value: string | TabelaFilterItem) => void;
|
|
91
|
-
set: (items: TabelaFilterItem[]) => void;
|
|
92
|
-
}>;
|
|
93
|
-
items: Record<string, TabelaFilterItem[]>;
|
|
94
|
-
constructor(state: State);
|
|
95
|
-
add(item: TabelaFilterItem): void;
|
|
96
|
-
clear(): void;
|
|
97
|
-
destroy(): void;
|
|
98
|
-
filter(): void;
|
|
99
|
-
remove(value: string | TabelaFilterItem): void;
|
|
100
|
-
set(items: TabelaFilterItem[]): void;
|
|
101
|
-
}
|
|
102
|
-
//#endregion
|
|
103
|
-
//#region src/managers/group.manager.d.ts
|
|
104
|
-
declare class GroupManager {
|
|
105
|
-
state: State;
|
|
106
|
-
collapsed: Set<Key>;
|
|
107
|
-
enabled: boolean;
|
|
108
|
-
field: string;
|
|
109
|
-
handlers: Readonly<{
|
|
110
|
-
set: (group?: string) => void;
|
|
111
|
-
}>;
|
|
112
|
-
items: GroupComponent[];
|
|
113
|
-
order: Record<never, number>;
|
|
114
|
-
constructor(state: State);
|
|
115
|
-
add(group: GroupComponent): void;
|
|
116
|
-
clear(): void;
|
|
117
|
-
destroy(): void;
|
|
118
|
-
get(value: unknown): GroupComponent | undefined;
|
|
119
|
-
handle(button: HTMLElement): void;
|
|
120
|
-
remove(group: GroupComponent): void;
|
|
121
|
-
set(items: GroupComponent[]): void;
|
|
122
|
-
}
|
|
123
|
-
//#endregion
|
|
124
|
-
//#region src/managers/navigation.manager.d.ts
|
|
125
|
-
declare class NavigationManager {
|
|
126
|
-
state: State;
|
|
127
|
-
active: DataItem | undefined;
|
|
128
|
-
constructor(state: State);
|
|
129
|
-
destroy(): void;
|
|
130
|
-
handle(event: KeyboardEvent): void;
|
|
131
|
-
setActive(item: DataItem | undefined, scroll?: boolean): void;
|
|
132
|
-
}
|
|
133
|
-
//#endregion
|
|
134
|
-
//#region src/models/render.model.d.ts
|
|
135
|
-
type RenderElementPool = {
|
|
136
|
-
cells: Record<string, HTMLDivElement[]>;
|
|
137
|
-
rows: HTMLDivElement[];
|
|
138
|
-
};
|
|
139
|
-
type RenderRange = {
|
|
140
|
-
end: number;
|
|
141
|
-
start: number;
|
|
142
|
-
};
|
|
143
|
-
type RenderState = {
|
|
144
|
-
active: boolean;
|
|
145
|
-
top: number;
|
|
146
|
-
} & State;
|
|
147
|
-
//#endregion
|
|
148
|
-
//#region src/managers/render.manager.d.ts
|
|
149
|
-
declare class RenderManager {
|
|
150
|
-
fragment: DocumentFragment;
|
|
151
|
-
listener: RemovableEventListener;
|
|
152
|
-
pool: RenderElementPool;
|
|
153
|
-
state: RenderState;
|
|
154
|
-
visible: Map<number, DataItem>;
|
|
155
|
-
constructor(state: State);
|
|
156
|
-
destroy(): void;
|
|
157
|
-
removeCells(fields: string[]): void;
|
|
158
|
-
getFragment(): DocumentFragment;
|
|
159
|
-
update(down: boolean, rerender?: boolean): void;
|
|
160
|
-
}
|
|
161
|
-
//#endregion
|
|
162
|
-
//#region src/components/row.component.d.ts
|
|
163
|
-
declare function removeRow(pool: RenderElementPool, row: RowComponent): void;
|
|
164
|
-
declare function renderRow(state: State, row: RowComponent): void;
|
|
165
|
-
declare class RowComponent {
|
|
166
|
-
readonly key: Key;
|
|
167
|
-
cells: Record<string, HTMLDivElement>;
|
|
168
|
-
element: HTMLDivElement | undefined;
|
|
169
|
-
constructor(key: Key);
|
|
170
|
-
}
|
|
171
|
-
//#endregion
|
|
172
|
-
//#region src/managers/row.manager.d.ts
|
|
173
|
-
declare class RowManager {
|
|
174
|
-
state: State;
|
|
175
|
-
components: Map<Key, RowComponent>;
|
|
176
|
-
constructor(state: State);
|
|
177
|
-
clear(): void;
|
|
178
|
-
destroy(): void;
|
|
179
|
-
get(key: Key, create: boolean): RowComponent | undefined;
|
|
180
|
-
has(key: Key): boolean;
|
|
181
|
-
remove(key: Key): void;
|
|
182
|
-
removeRow(row: RowComponent): void;
|
|
183
|
-
update(key: Key): void;
|
|
184
|
-
}
|
|
185
|
-
//#endregion
|
|
186
|
-
//#region src/managers/selection.manager.d.ts
|
|
187
|
-
declare class SelectionManager {
|
|
188
|
-
state: State;
|
|
189
|
-
handlers: Readonly<{
|
|
190
|
-
add: (keys: Key[]) => void;
|
|
191
|
-
clear: () => void;
|
|
192
|
-
remove: (keys: Key[]) => void;
|
|
193
|
-
set: (keys: Key[]) => void;
|
|
194
|
-
toggle: () => void;
|
|
195
|
-
}>;
|
|
196
|
-
items: Set<Key>;
|
|
197
|
-
last: Key | undefined;
|
|
198
|
-
constructor(state: State);
|
|
199
|
-
add(keys: Key[]): void;
|
|
200
|
-
clear(): void;
|
|
201
|
-
destroy(): void;
|
|
202
|
-
handle(event: MouseEvent, target: HTMLElement): void;
|
|
203
|
-
range(from: Key | HTMLElement, to: Key | HTMLElement): void;
|
|
204
|
-
remove(keys: Key[]): void;
|
|
205
|
-
set(keys: Key[]): void;
|
|
206
|
-
toggle(): void;
|
|
207
|
-
update(removed: Key[]): void;
|
|
208
|
-
}
|
|
209
|
-
//#endregion
|
|
210
|
-
//#region src/managers/sort.manager.d.ts
|
|
211
|
-
declare class SortManager {
|
|
212
|
-
state: State;
|
|
213
|
-
handlers: Readonly<{
|
|
214
|
-
add: (field: string, direction: TabelaSortDirection | undefined) => void;
|
|
215
|
-
flip: (field: string) => void;
|
|
216
|
-
clear: () => void;
|
|
217
|
-
remove: (field: string) => void;
|
|
218
|
-
set: (items: TabelaSortItem[]) => void;
|
|
219
|
-
}>;
|
|
220
|
-
items: PlainObject[];
|
|
221
|
-
constructor(state: State);
|
|
222
|
-
add(field: string, direction?: TabelaSortDirection): void;
|
|
223
|
-
addOrSet(event: MouseEvent, field: string): void;
|
|
224
|
-
clear(): void;
|
|
225
|
-
destroy(): void;
|
|
226
|
-
flip(field: string): void;
|
|
227
|
-
remove(field: string): void;
|
|
228
|
-
removeOrClear(event: MouseEvent, field: string): void;
|
|
229
|
-
set(items: TabelaSortItem[]): void;
|
|
230
|
-
sort(): void;
|
|
231
|
-
toggle(event: MouseEvent, field: string, direction?: string | null): void;
|
|
232
|
-
}
|
|
233
|
-
declare function sortWithGroups(state: State, data: Array<GroupComponent | PlainObject>, sorters: PlainObject[]): Array<GroupComponent | PlainObject>;
|
|
234
|
-
//#endregion
|
|
235
|
-
//#region src/managers/style.manager.d.ts
|
|
236
|
-
declare class StyleManager {
|
|
237
|
-
readonly state: State;
|
|
238
|
-
constructor(state: State);
|
|
239
|
-
}
|
|
240
|
-
//#endregion
|
|
241
|
-
//#region src/models/tabela.model.d.ts
|
|
242
|
-
type Components = {
|
|
243
|
-
body: BodyComponent;
|
|
244
|
-
footer: FooterComponent;
|
|
245
|
-
header: HeaderComponent;
|
|
246
|
-
};
|
|
247
|
-
type Managers = {
|
|
248
|
-
column: ColumnManager;
|
|
249
|
-
data: DataManager;
|
|
250
|
-
event: EventManager;
|
|
251
|
-
filter: FilterManager;
|
|
252
|
-
group: GroupManager;
|
|
253
|
-
navigation: NavigationManager;
|
|
254
|
-
render: RenderManager;
|
|
255
|
-
row: RowManager;
|
|
256
|
-
selection: SelectionManager;
|
|
257
|
-
sort: SortManager;
|
|
258
|
-
style: StyleManager;
|
|
259
|
-
};
|
|
260
|
-
type State = {
|
|
261
|
-
components: Components;
|
|
262
|
-
element: HTMLElement;
|
|
263
|
-
id: number;
|
|
264
|
-
key: string;
|
|
265
|
-
managers: Managers;
|
|
266
|
-
options: TabelaOptions;
|
|
267
|
-
};
|
|
268
|
-
//#endregion
|
|
269
|
-
//#region src/components/group.component.d.ts
|
|
270
|
-
declare class GroupComponent {
|
|
271
|
-
readonly label: string;
|
|
272
|
-
element: HTMLElement | undefined;
|
|
273
|
-
expanded: boolean;
|
|
274
|
-
filtered: number;
|
|
275
|
-
readonly key: string;
|
|
276
|
-
selected: number;
|
|
277
|
-
total: number;
|
|
278
|
-
readonly value: GroupValue;
|
|
279
|
-
constructor(label: string, value: unknown);
|
|
280
|
-
}
|
|
281
|
-
declare function removeGroup(group: GroupComponent): void;
|
|
282
|
-
declare function renderGroup(state: State, component: GroupComponent): void;
|
|
283
|
-
declare function updateGroup(state: State, component: GroupComponent): void;
|
|
284
|
-
//#endregion
|
|
285
|
-
export { EventManager as C, TabelaData as D, DataState as E, ColumnManager as O, FilterManager as S, DataItem as T, RenderElementPool as _, Components as a, NavigationManager as b, StyleManager as c, SelectionManager as d, RowManager as f, RenderManager as g, renderRow as h, updateGroup as i, SortManager as l, removeRow as m, removeGroup as n, Managers as o, RowComponent as p, renderGroup as r, State as s, GroupComponent as t, sortWithGroups as u, RenderRange as v, DataManager as w, GroupManager as x, RenderState as y };
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { t as ColumnComponent } from "./column.component-Bx46r3JI.mjs";
|
|
2
|
-
import { t as HeaderElements } from "./header.model-DN_KzUCV.mjs";
|
|
3
|
-
|
|
4
|
-
//#region src/components/header.component.d.ts
|
|
5
|
-
declare class HeaderComponent {
|
|
6
|
-
readonly elements: HeaderElements;
|
|
7
|
-
constructor();
|
|
8
|
-
destroy(): void;
|
|
9
|
-
update(columns: ColumnComponent[]): void;
|
|
10
|
-
}
|
|
11
|
-
//#endregion
|
|
12
|
-
export { HeaderComponent as t };
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
//#region src/helpers/dom.helpers.d.ts
|
|
2
|
-
type RowGroupWithRow = {
|
|
3
|
-
group: HTMLDivElement;
|
|
4
|
-
row: HTMLDivElement;
|
|
5
|
-
};
|
|
6
|
-
declare function createCell(width: number, body?: boolean): HTMLDivElement;
|
|
7
|
-
declare function createElement<TagName extends keyof HTMLElementTagNameMap>(tagName: TagName, properties?: Partial<HTMLElementTagNameMap[TagName]>, attributes?: Record<string, string>, style?: Partial<CSSStyleDeclaration>): HTMLElementTagNameMap[TagName];
|
|
8
|
-
declare function createRowGroup(): RowGroupWithRow;
|
|
9
|
-
declare function createRowGroup(withRow: boolean): HTMLDivElement;
|
|
10
|
-
declare function createRow(): HTMLDivElement;
|
|
11
|
-
//#endregion
|
|
12
|
-
export { createCell, createElement, createRow, createRowGroup };
|
package/dist/index.d.mts
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { t as TabelaOptions } from "./tabela.options-RkZvfptB.mjs";
|
|
2
|
-
import { Tabela } from "./tabela.mjs";
|
|
3
|
-
|
|
4
|
-
//#region src/index.d.ts
|
|
5
|
-
declare function tabela(element: HTMLElement, options: TabelaOptions): Tabela;
|
|
6
|
-
//#endregion
|
|
7
|
-
export { type Tabela, type TabelaOptions, tabela };
|
|
@@ -1,222 +0,0 @@
|
|
|
1
|
-
import { GroupComponent, updateGroup } from "../components/group.component.mjs";
|
|
2
|
-
import { sortWithGroups } from "./sort.manager.mjs";
|
|
3
|
-
import { chunk, select, sort } from "@oscarpalmer/atoms/array";
|
|
4
|
-
import { toMap } from "@oscarpalmer/atoms/array/to-map";
|
|
5
|
-
import { toRecord } from "@oscarpalmer/atoms/array/to-record";
|
|
6
|
-
import { isPlainObject } from "@oscarpalmer/atoms/is";
|
|
7
|
-
import { delay } from "@oscarpalmer/atoms/promise/delay";
|
|
8
|
-
import { getValue } from "@oscarpalmer/atoms/value/handle";
|
|
9
|
-
//#region src/managers/data.manager.ts
|
|
10
|
-
var DataManager = class {
|
|
11
|
-
handlers = Object.freeze({
|
|
12
|
-
add: (data) => void this.add(data, true),
|
|
13
|
-
clear: () => void this.clear(),
|
|
14
|
-
get: (active) => this.get(active),
|
|
15
|
-
remove: (items) => void this.remove(items, true),
|
|
16
|
-
synchronize: (data, remove) => void this.synchronize(data, remove),
|
|
17
|
-
update: (data) => void this.update(data)
|
|
18
|
-
});
|
|
19
|
-
state;
|
|
20
|
-
get items() {
|
|
21
|
-
return this.state.items.active ?? this.state.items.original;
|
|
22
|
-
}
|
|
23
|
-
get size() {
|
|
24
|
-
return this.items.length;
|
|
25
|
-
}
|
|
26
|
-
constructor(state) {
|
|
27
|
-
this.state = {
|
|
28
|
-
...state,
|
|
29
|
-
items: { original: [] },
|
|
30
|
-
values: {
|
|
31
|
-
array: [],
|
|
32
|
-
mapped: /* @__PURE__ */ new Map()
|
|
33
|
-
}
|
|
34
|
-
};
|
|
35
|
-
}
|
|
36
|
-
async add(data, render) {
|
|
37
|
-
const { state } = this;
|
|
38
|
-
const groups = [];
|
|
39
|
-
const updates = [];
|
|
40
|
-
let groupColumn;
|
|
41
|
-
let { length } = data;
|
|
42
|
-
for (let index = 0; index < length; index += 1) {
|
|
43
|
-
const item = data[index];
|
|
44
|
-
const key = getValue(item, state.key);
|
|
45
|
-
if (state.values.mapped.has(key)) {
|
|
46
|
-
updates.push(item);
|
|
47
|
-
continue;
|
|
48
|
-
}
|
|
49
|
-
state.values.array.push(item);
|
|
50
|
-
state.values.mapped.set(key, item);
|
|
51
|
-
if (!state.managers.group.enabled) continue;
|
|
52
|
-
const groupValue = getValue(item, state.managers.group.field);
|
|
53
|
-
let group = state.managers.group.get(groupValue);
|
|
54
|
-
if (group == null) {
|
|
55
|
-
groupColumn ??= state.managers.column.get(state.managers.group.field);
|
|
56
|
-
group = new GroupComponent(`${groupColumn?.options.title ?? state.managers.group.field}: ${groupValue}`, groupValue);
|
|
57
|
-
state.values.array.push(group);
|
|
58
|
-
state.managers.group.add(group);
|
|
59
|
-
}
|
|
60
|
-
if (!group.expanded) state.managers.group.collapsed.add(key);
|
|
61
|
-
group.total += 1;
|
|
62
|
-
groups.push(group);
|
|
63
|
-
}
|
|
64
|
-
length = groups.length;
|
|
65
|
-
for (let index = 0; index < length; index += 1) updateGroup(state, groups[index]);
|
|
66
|
-
if (updates.length > 0) this.update(updates);
|
|
67
|
-
else if (render) this.render();
|
|
68
|
-
}
|
|
69
|
-
clear() {
|
|
70
|
-
if (this.state.values.array.length > 0) this.removeItems([], true, true);
|
|
71
|
-
}
|
|
72
|
-
destroy() {
|
|
73
|
-
const { state } = this;
|
|
74
|
-
state.values.mapped.clear();
|
|
75
|
-
state.items.active = void 0;
|
|
76
|
-
state.items.original.length = 0;
|
|
77
|
-
state.values.array.length = 0;
|
|
78
|
-
this.handlers = void 0;
|
|
79
|
-
this.state = void 0;
|
|
80
|
-
}
|
|
81
|
-
get(active) {
|
|
82
|
-
const { state } = this;
|
|
83
|
-
return active ?? false ? select(state.items.active ?? [], (key) => !(key instanceof GroupComponent), (key) => state.values.mapped.get(key)) : state.values.array.filter((item) => !(item instanceof GroupComponent));
|
|
84
|
-
}
|
|
85
|
-
getIndex(item) {
|
|
86
|
-
if (item instanceof GroupComponent) return this.items.indexOf(item);
|
|
87
|
-
return this.items.findIndex((value) => value instanceof GroupComponent ? value.key === item : value === item);
|
|
88
|
-
}
|
|
89
|
-
async remove(items, render) {
|
|
90
|
-
const { state } = this;
|
|
91
|
-
const keys = items.map((value) => isPlainObject(value) ? getValue(value, state.key) : value);
|
|
92
|
-
const { length } = keys;
|
|
93
|
-
if (length > 0) return this.removeItems(keys, false, render === true);
|
|
94
|
-
}
|
|
95
|
-
async removeItems(items, clear, render) {
|
|
96
|
-
const { state } = this;
|
|
97
|
-
if (clear) {
|
|
98
|
-
state.items.active = void 0;
|
|
99
|
-
state.items.original = [];
|
|
100
|
-
state.values.array = [];
|
|
101
|
-
state.values.mapped.clear();
|
|
102
|
-
state.managers.row.clear();
|
|
103
|
-
if (state.managers.group.enabled) state.managers.group.clear();
|
|
104
|
-
return this.render();
|
|
105
|
-
}
|
|
106
|
-
const groups = [];
|
|
107
|
-
const chunked = chunk(items);
|
|
108
|
-
const chunkedLength = chunked.length;
|
|
109
|
-
for (let chunkedIndex = 0; chunkedIndex < chunkedLength; chunkedIndex += 1) {
|
|
110
|
-
const chunk = chunked[chunkedIndex];
|
|
111
|
-
const chunkLength = chunk.length;
|
|
112
|
-
for (let itemIndex = 0; itemIndex < chunkLength; itemIndex += 1) {
|
|
113
|
-
const item = chunk[itemIndex];
|
|
114
|
-
const dataIndex = state.items.original.indexOf(item);
|
|
115
|
-
let dataValue;
|
|
116
|
-
[dataValue] = state.values.array.splice(dataIndex, 1);
|
|
117
|
-
state.items.original.splice(dataIndex, 1);
|
|
118
|
-
state.managers.row.remove(item);
|
|
119
|
-
state.values.mapped.delete(item);
|
|
120
|
-
if (!state.managers.group.enabled || item instanceof GroupComponent) continue;
|
|
121
|
-
state.managers.group.collapsed.delete(item);
|
|
122
|
-
const groupKey = getValue(dataValue, state.managers.group.field);
|
|
123
|
-
const group = state.managers.group.get(groupKey);
|
|
124
|
-
if (group == null) continue;
|
|
125
|
-
group.total -= 1;
|
|
126
|
-
if (group.total > 0) {
|
|
127
|
-
groups.push(group);
|
|
128
|
-
continue;
|
|
129
|
-
}
|
|
130
|
-
let groupIndex = groups.indexOf(group);
|
|
131
|
-
if (groupIndex > -1) groups.splice(groupIndex, 1);
|
|
132
|
-
groupIndex = state.values.array.indexOf(group);
|
|
133
|
-
if (groupIndex > -1) {
|
|
134
|
-
state.items.original.splice(groupIndex, 1);
|
|
135
|
-
state.values.array.splice(groupIndex, 1);
|
|
136
|
-
}
|
|
137
|
-
state.managers.group.remove(group);
|
|
138
|
-
if (items.length >= 1e4) await delay(25);
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
const { length } = groups;
|
|
142
|
-
for (let index = 0; index < length; index += 1) updateGroup(state, groups[index]);
|
|
143
|
-
if (render) return this.render();
|
|
144
|
-
}
|
|
145
|
-
render() {
|
|
146
|
-
const { state } = this;
|
|
147
|
-
if (state.managers.group.enabled) sortWithGroups(state, state.values.array, [{
|
|
148
|
-
direction: "ascending",
|
|
149
|
-
key: state.key
|
|
150
|
-
}]);
|
|
151
|
-
else sort(state.values.array, [{
|
|
152
|
-
direction: "ascending",
|
|
153
|
-
key: state.key
|
|
154
|
-
}]);
|
|
155
|
-
state.items.original = state.values.array.map((item) => item instanceof GroupComponent ? item : getValue(item, state.key));
|
|
156
|
-
state.values.mapped = toMap(state.values.array.filter((item) => !(item instanceof GroupComponent)), (item) => getValue(item, state.key));
|
|
157
|
-
if (Object.keys(state.managers.filter.items).length > 0) state.managers.filter.filter();
|
|
158
|
-
else if (state.managers.sort.items.length > 0) state.managers.sort.sort();
|
|
159
|
-
else state.managers.render.update(true, true);
|
|
160
|
-
}
|
|
161
|
-
set(data) {
|
|
162
|
-
const { state } = this;
|
|
163
|
-
const array = data.slice();
|
|
164
|
-
if (state.managers.group.enabled) {
|
|
165
|
-
const column = state.managers.column.get(state.managers.group.field);
|
|
166
|
-
const grouped = toRecord.arrays(data, state.managers.group.field);
|
|
167
|
-
const entries = Object.entries(grouped);
|
|
168
|
-
const { length } = entries;
|
|
169
|
-
const groups = [];
|
|
170
|
-
for (let index = 0; index < length; index += 1) {
|
|
171
|
-
const [value, items] = entries[index];
|
|
172
|
-
const group = new GroupComponent(`${column?.options.title ?? state.managers.group.field}: ${value}`, value);
|
|
173
|
-
group.total = items.length;
|
|
174
|
-
groups.push(group);
|
|
175
|
-
array.push(group);
|
|
176
|
-
}
|
|
177
|
-
state.managers.group.set(groups);
|
|
178
|
-
}
|
|
179
|
-
state.values.array = array;
|
|
180
|
-
this.render();
|
|
181
|
-
}
|
|
182
|
-
async synchronize(data, remove) {
|
|
183
|
-
const { state } = this;
|
|
184
|
-
const add = [];
|
|
185
|
-
const updated = [];
|
|
186
|
-
const keys = /* @__PURE__ */ new Set([]);
|
|
187
|
-
const { length } = data;
|
|
188
|
-
for (let index = 0; index < length; index += 1) {
|
|
189
|
-
const object = data[index];
|
|
190
|
-
const key = getValue(object, state.key);
|
|
191
|
-
if (state.values.mapped.has(key)) updated.push(object);
|
|
192
|
-
else add.push(object);
|
|
193
|
-
keys.add(key);
|
|
194
|
-
}
|
|
195
|
-
if (keys.size === 0) return;
|
|
196
|
-
if (remove ?? false) {
|
|
197
|
-
const toRemove = state.items.original.filter((key) => !(key instanceof GroupComponent) && !keys.has(key));
|
|
198
|
-
if (toRemove.length > 0) await this.remove(toRemove, false);
|
|
199
|
-
}
|
|
200
|
-
await this.update(updated);
|
|
201
|
-
if (add.length > 0) await this.add(add, false);
|
|
202
|
-
if (add.length > 0 || (remove ?? false)) this.render();
|
|
203
|
-
}
|
|
204
|
-
async update(data) {
|
|
205
|
-
const { state } = this;
|
|
206
|
-
const { length } = data;
|
|
207
|
-
for (let index = 0; index < length; index += 1) {
|
|
208
|
-
const object = data[index];
|
|
209
|
-
const key = getValue(object, state.key);
|
|
210
|
-
const value = state.values.mapped.get(key);
|
|
211
|
-
if (value != null) {
|
|
212
|
-
state.values.mapped.set(key, {
|
|
213
|
-
...value,
|
|
214
|
-
...object
|
|
215
|
-
});
|
|
216
|
-
state.managers.row.update(key);
|
|
217
|
-
}
|
|
218
|
-
}
|
|
219
|
-
}
|
|
220
|
-
};
|
|
221
|
-
//#endregion
|
|
222
|
-
export { DataManager };
|
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
import { removeGroup } from "../components/group.component.mjs";
|
|
2
|
-
import { sort } from "@oscarpalmer/atoms/array";
|
|
3
|
-
import { toRecord } from "@oscarpalmer/atoms/array/to-record";
|
|
4
|
-
import { isNullableOrWhitespace } from "@oscarpalmer/atoms/is";
|
|
5
|
-
import { getString } from "@oscarpalmer/atoms/string";
|
|
6
|
-
//#region src/managers/group.manager.ts
|
|
7
|
-
var GroupManager = class {
|
|
8
|
-
collapsed = /* @__PURE__ */ new Set();
|
|
9
|
-
enabled = false;
|
|
10
|
-
field;
|
|
11
|
-
handlers = Object.freeze({ set: (group) => {
|
|
12
|
-
if (group === this.field) return;
|
|
13
|
-
this.enabled = !isNullableOrWhitespace(group);
|
|
14
|
-
this.field = group ?? "";
|
|
15
|
-
this.state.managers.data.set(this.state.managers.data.get());
|
|
16
|
-
} });
|
|
17
|
-
items = [];
|
|
18
|
-
order = {};
|
|
19
|
-
constructor(state) {
|
|
20
|
-
this.state = state;
|
|
21
|
-
if (isNullableOrWhitespace(state.options.grouping)) return;
|
|
22
|
-
this.enabled = true;
|
|
23
|
-
this.field = state.options.grouping;
|
|
24
|
-
}
|
|
25
|
-
add(group) {
|
|
26
|
-
this.set([...this.items, group]);
|
|
27
|
-
}
|
|
28
|
-
clear() {
|
|
29
|
-
const groups = this.items.splice(0);
|
|
30
|
-
const { length } = groups;
|
|
31
|
-
for (let index = 0; index < length; index += 1) this.remove(groups[index]);
|
|
32
|
-
}
|
|
33
|
-
destroy() {
|
|
34
|
-
const groups = this.items.splice(0);
|
|
35
|
-
const { length } = groups;
|
|
36
|
-
for (let index = 0; index < length; index += 1) removeGroup(groups[index]);
|
|
37
|
-
this.collapsed.clear();
|
|
38
|
-
this.handlers = void 0;
|
|
39
|
-
this.state = void 0;
|
|
40
|
-
}
|
|
41
|
-
get(value) {
|
|
42
|
-
const asString = getString(value);
|
|
43
|
-
return this.items.find((item) => item.value.stringified === asString);
|
|
44
|
-
}
|
|
45
|
-
handle(button) {
|
|
46
|
-
const value = button.dataset.key?.replace(`tabela_${this.state.id}_group:`, "");
|
|
47
|
-
const group = this.get(value);
|
|
48
|
-
if (group == null) return;
|
|
49
|
-
const { collapsed, items, state } = this;
|
|
50
|
-
group.expanded = !group.expanded;
|
|
51
|
-
const index = items.indexOf(group);
|
|
52
|
-
let first = state.managers.data.state.items.original.indexOf(items[index]) + 1;
|
|
53
|
-
const last = items[index + 1] == null ? state.managers.data.state.items.original.length - 1 : state.managers.data.state.items.original.indexOf(items[index + 1]) - 1;
|
|
54
|
-
for (; first <= last; first += 1) {
|
|
55
|
-
const key = state.managers.data.state.items.original[first];
|
|
56
|
-
if (group.expanded) collapsed.delete(key);
|
|
57
|
-
else collapsed.add(key);
|
|
58
|
-
}
|
|
59
|
-
if (Object.keys(state.managers.filter.items).length > 0) state.managers.filter.filter();
|
|
60
|
-
else if (state.managers.sort.items.length > 0) state.managers.sort.sort();
|
|
61
|
-
else state.managers.render.update(true, true);
|
|
62
|
-
}
|
|
63
|
-
remove(group) {
|
|
64
|
-
removeGroup(group);
|
|
65
|
-
this.set(this.items.filter((item) => item !== group));
|
|
66
|
-
}
|
|
67
|
-
set(items) {
|
|
68
|
-
this.items = sort(items, (item) => item.label);
|
|
69
|
-
this.order = toRecord(items, (group) => group.value.stringified, (_, index) => index);
|
|
70
|
-
}
|
|
71
|
-
};
|
|
72
|
-
//#endregion
|
|
73
|
-
export { GroupManager };
|