@oscarpalmer/tabela 0.12.0 → 0.13.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/body.component-_VDOpJhV.d.mts +10 -0
- package/dist/body.model-2iwsovAV.d.mts +7 -0
- package/dist/column.component-Bx46r3JI.d.mts +16 -0
- package/dist/column.model-D-aw4EU4.d.mts +16 -0
- package/dist/components/body.component.d.mts +2 -0
- package/dist/components/{body.component.js → body.component.mjs} +6 -3
- package/dist/components/column.component.d.mts +2 -0
- package/dist/components/{column.component.js → column.component.mjs} +8 -5
- package/dist/components/footer.component.d.mts +2 -0
- package/dist/components/{footer.component.js → footer.component.mjs} +7 -4
- package/dist/components/group.component.d.mts +2 -0
- package/dist/components/group.component.mjs +51 -0
- package/dist/components/header.component.d.mts +2 -0
- package/dist/components/{header.component.js → header.component.mjs} +6 -3
- package/dist/components/row.component.d.mts +2 -0
- package/dist/components/{row.component.js → row.component.mjs} +11 -7
- package/dist/filter.model-7ukJrtil.d.mts +16 -0
- package/dist/footer.component-Curiab8j.d.mts +12 -0
- package/dist/footer.model-DhqoS6ds.d.mts +8 -0
- package/dist/group.component-Cq1YYbfJ.d.mts +285 -0
- package/dist/group.model-BsKFwHbt.d.mts +10 -0
- package/dist/header.component-BjjlpZIg.d.mts +12 -0
- package/dist/header.model-DN_KzUCV.d.mts +7 -0
- package/dist/helpers/dom.helpers.d.mts +12 -0
- package/dist/helpers/{dom.helpers.js → dom.helpers.mjs} +13 -9
- package/dist/helpers/misc.helpers.d.mts +6 -0
- package/dist/helpers/{misc.helpers.js → misc.helpers.mjs} +3 -1
- package/dist/helpers/style.helper.d.mts +6 -0
- package/dist/helpers/style.helper.mjs +8 -0
- package/dist/index.d.mts +7 -0
- package/dist/{index.js → index.mjs} +3 -1
- package/dist/managers/column.manager.d.mts +2 -0
- package/dist/managers/{column.manager.js → column.manager.mjs} +6 -1
- package/dist/managers/data.manager.d.mts +2 -0
- package/dist/managers/data.manager.mjs +222 -0
- package/dist/managers/event.manager.d.mts +2 -0
- package/dist/managers/{event.manager.js → event.manager.mjs} +9 -8
- package/dist/managers/filter.manager.d.mts +2 -0
- package/dist/managers/{filter.manager.js → filter.manager.mjs} +23 -14
- package/dist/managers/group.manager.d.mts +2 -0
- package/dist/managers/group.manager.mjs +73 -0
- package/dist/managers/navigation.manager.d.mts +2 -0
- package/dist/managers/{navigation.manager.js → navigation.manager.mjs} +27 -24
- package/dist/managers/render.manager.d.mts +2 -0
- package/dist/managers/{render.manager.js → render.manager.mjs} +35 -26
- package/dist/managers/row.manager.d.mts +2 -0
- package/dist/managers/{row.manager.js → row.manager.mjs} +18 -11
- package/dist/managers/selection.manager.d.mts +2 -0
- package/dist/managers/{selection.manager.js → selection.manager.mjs} +32 -28
- package/dist/managers/sort.manager.d.mts +2 -0
- package/dist/managers/{sort.manager.js → sort.manager.mjs} +12 -9
- package/dist/managers/style.manager.d.mts +2 -0
- package/dist/managers/style.manager.mjs +149 -0
- package/dist/models/body.model.d.mts +2 -0
- package/dist/models/body.model.mjs +1 -0
- package/dist/models/column.model.d.mts +2 -0
- package/dist/models/column.model.mjs +1 -0
- package/dist/models/data.model.d.mts +2 -0
- package/dist/models/data.model.mjs +1 -0
- package/dist/models/filter.model.d.mts +2 -0
- package/dist/models/filter.model.mjs +1 -0
- package/dist/models/footer.model.d.mts +2 -0
- package/dist/models/footer.model.mjs +1 -0
- package/dist/models/group.model.d.mts +2 -0
- package/dist/models/group.model.mjs +1 -0
- package/dist/models/header.model.d.mts +2 -0
- package/dist/models/header.model.mjs +1 -0
- package/dist/models/render.model.d.mts +2 -0
- package/dist/models/render.model.mjs +1 -0
- package/dist/models/selection.model.d.mts +2 -0
- package/dist/models/selection.model.mjs +1 -0
- package/dist/models/sort.model.d.mts +2 -0
- package/dist/models/sort.model.mjs +1 -0
- package/dist/models/style.model.d.mts +23 -0
- package/dist/models/style.model.mjs +23 -0
- package/dist/models/tabela.model.d.mts +2 -0
- package/dist/models/tabela.model.mjs +1 -0
- package/dist/models/tabela.options.d.mts +2 -0
- package/dist/models/tabela.options.mjs +1 -0
- package/dist/selection.model-rwQe9fco.d.mts +12 -0
- package/dist/sort.model-CauImaLu.d.mts +15 -0
- package/dist/tabela.d.mts +21 -0
- package/dist/{tabela.full.js → tabela.full.mjs} +1073 -756
- package/dist/tabela.mjs +126 -0
- package/dist/tabela.options-RkZvfptB.d.mts +14 -0
- package/package.json +45 -37
- package/src/components/body.component.ts +4 -3
- package/src/components/column.component.ts +13 -18
- package/src/components/footer.component.ts +8 -3
- package/src/components/group.component.ts +48 -6
- package/src/components/header.component.ts +3 -2
- package/src/components/row.component.ts +8 -6
- package/src/helpers/dom.helpers.ts +21 -19
- package/src/helpers/style.helper.ts +1 -1
- package/src/managers/column.manager.ts +4 -0
- package/src/managers/data.manager.ts +170 -100
- package/src/managers/event.manager.ts +9 -10
- package/src/managers/filter.manager.ts +23 -12
- package/src/managers/group.manager.ts +63 -11
- package/src/managers/navigation.manager.ts +23 -22
- package/src/managers/render.manager.ts +43 -29
- package/src/managers/row.manager.ts +21 -9
- package/src/managers/selection.manager.ts +28 -21
- package/src/managers/sort.manager.ts +22 -20
- package/src/managers/style.manager.ts +156 -0
- package/src/models/data.model.ts +11 -8
- package/src/models/group.model.ts +6 -2
- package/src/models/style.model.ts +39 -0
- package/src/models/tabela.model.ts +10 -8
- package/src/tabela.ts +65 -33
- package/dist/components/group.component.js +0 -28
- package/dist/helpers/style.helper.js +0 -6
- package/dist/managers/data.manager.js +0 -181
- package/dist/managers/group.manager.js +0 -46
- 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.js +0 -105
- package/types/components/body.component.d.ts +0 -6
- package/types/components/column.component.d.ts +0 -13
- package/types/components/footer.component.d.ts +0 -8
- package/types/components/group.component.d.ts +0 -14
- package/types/components/header.component.d.ts +0 -8
- package/types/components/row.component.d.ts +0 -11
- package/types/helpers/dom.helpers.d.ts +0 -10
- package/types/helpers/misc.helpers.d.ts +0 -2
- package/types/helpers/style.helper.d.ts +0 -1
- package/types/index.d.ts +0 -4
- package/types/managers/column.manager.d.ts +0 -12
- package/types/managers/data.manager.d.ts +0 -29
- package/types/managers/event.manager.d.ts +0 -7
- package/types/managers/filter.manager.d.ts +0 -19
- package/types/managers/group.manager.d.ts +0 -17
- package/types/managers/navigation.manager.d.ts +0 -10
- package/types/managers/render.manager.d.ts +0 -17
- package/types/managers/row.manager.d.ts +0 -13
- package/types/managers/selection.manager.d.ts +0 -24
- package/types/managers/sort.manager.d.ts +0 -28
- package/types/models/body.model.d.ts +0 -4
- package/types/models/column.model.d.ts +0 -13
- package/types/models/data.model.d.ts +0 -24
- package/types/models/filter.model.d.ts +0 -13
- package/types/models/footer.model.d.ts +0 -5
- package/types/models/group.model.d.ts +0 -4
- package/types/models/header.model.d.ts +0 -4
- package/types/models/render.model.d.ts +0 -13
- package/types/models/selection.model.d.ts +0 -8
- package/types/models/sort.model.d.ts +0 -12
- package/types/models/tabela.model.d.ts +0 -39
- package/types/models/tabela.options.d.ts +0 -10
- package/types/tabela.d.ts +0 -15
|
@@ -1,181 +0,0 @@
|
|
|
1
|
-
import { GroupComponent } from "../components/group.component.js";
|
|
2
|
-
import { sortWithGroups } from "./sort.manager.js";
|
|
3
|
-
import { 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
|
-
var DataManager = class {
|
|
8
|
-
handlers = Object.freeze({
|
|
9
|
-
add: (data) => void this.add(data, true),
|
|
10
|
-
clear: () => void this.clear(),
|
|
11
|
-
get: (active) => this.get(active),
|
|
12
|
-
remove: (items) => void this.remove(items, true),
|
|
13
|
-
synchronize: (data, remove) => void this.synchronize(data, remove),
|
|
14
|
-
update: (data) => void this.update(data)
|
|
15
|
-
});
|
|
16
|
-
values = {
|
|
17
|
-
keys: { original: [] },
|
|
18
|
-
objects: {
|
|
19
|
-
mapped: /* @__PURE__ */ new Map(),
|
|
20
|
-
array: []
|
|
21
|
-
}
|
|
22
|
-
};
|
|
23
|
-
get keys() {
|
|
24
|
-
return this.values.keys.active ?? this.values.keys.original;
|
|
25
|
-
}
|
|
26
|
-
get size() {
|
|
27
|
-
return this.keys.length;
|
|
28
|
-
}
|
|
29
|
-
constructor(state) {
|
|
30
|
-
this.state = state;
|
|
31
|
-
}
|
|
32
|
-
async add(data, render) {
|
|
33
|
-
const { state, values } = this;
|
|
34
|
-
const { length } = data;
|
|
35
|
-
const updates = [];
|
|
36
|
-
for (let index = 0; index < length; index += 1) {
|
|
37
|
-
const item = data[index];
|
|
38
|
-
const key = item[state.key];
|
|
39
|
-
if (values.objects.mapped.has(key)) {
|
|
40
|
-
updates.push(item);
|
|
41
|
-
continue;
|
|
42
|
-
}
|
|
43
|
-
values.objects.array.push(item);
|
|
44
|
-
values.objects.mapped.set(key, item);
|
|
45
|
-
if (!state.managers.group.enabled) continue;
|
|
46
|
-
const groupKey = item[state.managers.group.field];
|
|
47
|
-
let group = state.managers.group.get(groupKey);
|
|
48
|
-
if (group == null) {
|
|
49
|
-
group = new GroupComponent(String(groupKey), String(groupKey), groupKey);
|
|
50
|
-
values.objects.array.push(group);
|
|
51
|
-
state.managers.group.add(group);
|
|
52
|
-
}
|
|
53
|
-
if (!group.expanded) state.managers.group.collapsed.add(key);
|
|
54
|
-
group.total += 1;
|
|
55
|
-
}
|
|
56
|
-
if (updates.length > 0) this.update(updates);
|
|
57
|
-
else if (render) this.render();
|
|
58
|
-
}
|
|
59
|
-
clear() {
|
|
60
|
-
if (this.values.objects.array.length > 0) this.set([]);
|
|
61
|
-
}
|
|
62
|
-
destroy() {
|
|
63
|
-
const { values } = this;
|
|
64
|
-
values.objects.mapped.clear();
|
|
65
|
-
values.keys.active = void 0;
|
|
66
|
-
values.keys.original.length = 0;
|
|
67
|
-
values.objects.array.length = 0;
|
|
68
|
-
this.handlers = void 0;
|
|
69
|
-
this.state = void 0;
|
|
70
|
-
this.values = void 0;
|
|
71
|
-
}
|
|
72
|
-
get(active) {
|
|
73
|
-
const { values } = this;
|
|
74
|
-
return active ?? false ? select(values.keys.active ?? [], (key) => !(key instanceof GroupComponent), (key) => values.objects.mapped.get(key)) : values.objects.array.filter((item) => !(item instanceof GroupComponent));
|
|
75
|
-
}
|
|
76
|
-
getIndex(key) {
|
|
77
|
-
return this.keys.indexOf(key);
|
|
78
|
-
}
|
|
79
|
-
async remove(items, render) {
|
|
80
|
-
const { state, values } = this;
|
|
81
|
-
const keys = items.map((value) => isPlainObject(value) ? value[state.key] : value).filter((key) => values.objects.mapped.has(key));
|
|
82
|
-
const { length } = keys;
|
|
83
|
-
if (length === 0) return;
|
|
84
|
-
for (let keyIndex = 0; keyIndex < length; keyIndex += 1) {
|
|
85
|
-
const key = keys[keyIndex];
|
|
86
|
-
values.objects.mapped.delete(key);
|
|
87
|
-
const arrayIndex = values.objects.array.findIndex((item) => !(item instanceof GroupComponent) && item[state.key] === key);
|
|
88
|
-
let item;
|
|
89
|
-
if (arrayIndex > -1) [item] = values.objects.array.splice(arrayIndex, 1);
|
|
90
|
-
values.keys.original.splice(values.keys.original.indexOf(key), 1);
|
|
91
|
-
state.managers.row.remove(key);
|
|
92
|
-
if (!state.managers.group.enabled || item == null) continue;
|
|
93
|
-
state.managers.group.collapsed.delete(key);
|
|
94
|
-
const groupKey = item[state.managers.group.field];
|
|
95
|
-
const group = state.managers.group.get(groupKey);
|
|
96
|
-
if (group == null) continue;
|
|
97
|
-
group.total -= 1;
|
|
98
|
-
if (group.total > 0) continue;
|
|
99
|
-
const groupIndex = values.objects.array.findIndex((item) => item instanceof GroupComponent && item.value === groupKey);
|
|
100
|
-
if (groupIndex > -1) values.objects.array.splice(groupIndex, 1);
|
|
101
|
-
state.managers.group.remove(group);
|
|
102
|
-
}
|
|
103
|
-
if (render) this.render();
|
|
104
|
-
}
|
|
105
|
-
render() {
|
|
106
|
-
const { state, values } = this;
|
|
107
|
-
if (state.managers.group.enabled) sortWithGroups(state, values.objects.array, [{
|
|
108
|
-
direction: "ascending",
|
|
109
|
-
key: state.key
|
|
110
|
-
}]);
|
|
111
|
-
else sort(values.objects.array, [{
|
|
112
|
-
direction: "ascending",
|
|
113
|
-
key: state.key
|
|
114
|
-
}]);
|
|
115
|
-
values.keys.original = values.objects.array.map((item) => item instanceof GroupComponent ? item : item[state.key]);
|
|
116
|
-
values.objects.mapped = toMap(values.objects.array.filter((item) => !(item instanceof GroupComponent)), (item) => item[state.key]);
|
|
117
|
-
if (Object.keys(state.managers.filter.items).length > 0) state.managers.filter.filter();
|
|
118
|
-
else if (state.managers.sort.items.length > 0) state.managers.sort.sort();
|
|
119
|
-
else state.managers.render.update(true, true);
|
|
120
|
-
}
|
|
121
|
-
set(data) {
|
|
122
|
-
const { state, values } = this;
|
|
123
|
-
const array = data.slice();
|
|
124
|
-
if (state.managers.group.enabled) {
|
|
125
|
-
const grouped = toRecord.arrays(data, state.managers.group.field);
|
|
126
|
-
const entries = Object.entries(grouped);
|
|
127
|
-
const { length } = entries;
|
|
128
|
-
const groups = [];
|
|
129
|
-
for (let index = 0; index < length; index += 1) {
|
|
130
|
-
const [value, items] = entries[index];
|
|
131
|
-
const key = String(value);
|
|
132
|
-
const group = new GroupComponent(key, key, value);
|
|
133
|
-
group.total = items.length;
|
|
134
|
-
groups.push(group);
|
|
135
|
-
array.push(group);
|
|
136
|
-
}
|
|
137
|
-
state.managers.group.set(groups);
|
|
138
|
-
}
|
|
139
|
-
values.objects.array = array;
|
|
140
|
-
this.render();
|
|
141
|
-
}
|
|
142
|
-
async synchronize(data, remove) {
|
|
143
|
-
const { state, values } = this;
|
|
144
|
-
const add = [];
|
|
145
|
-
const updated = [];
|
|
146
|
-
const keys = /* @__PURE__ */ new Set([]);
|
|
147
|
-
const { length } = data;
|
|
148
|
-
for (let index = 0; index < length; index += 1) {
|
|
149
|
-
const object = data[index];
|
|
150
|
-
const key = object[state.key];
|
|
151
|
-
if (values.objects.mapped.has(key)) updated.push(object);
|
|
152
|
-
else add.push(object);
|
|
153
|
-
keys.add(key);
|
|
154
|
-
}
|
|
155
|
-
if (keys.size === 0) return;
|
|
156
|
-
if (remove ?? false) {
|
|
157
|
-
const toRemove = values.keys.original.filter((key) => !(key instanceof GroupComponent) && !keys.has(key));
|
|
158
|
-
if (toRemove.length > 0) await this.remove(toRemove, false);
|
|
159
|
-
}
|
|
160
|
-
await this.update(updated);
|
|
161
|
-
if (add.length > 0) await this.add(add, false);
|
|
162
|
-
if (add.length > 0 || (remove ?? false)) this.render();
|
|
163
|
-
}
|
|
164
|
-
async update(data) {
|
|
165
|
-
const { state, values } = this;
|
|
166
|
-
const { length } = data;
|
|
167
|
-
for (let index = 0; index < length; index += 1) {
|
|
168
|
-
const object = data[index];
|
|
169
|
-
const key = object[state.key];
|
|
170
|
-
const value = values.objects.mapped.get(key);
|
|
171
|
-
if (value != null) {
|
|
172
|
-
values.objects.mapped.set(key, {
|
|
173
|
-
...value,
|
|
174
|
-
...object
|
|
175
|
-
});
|
|
176
|
-
state.managers.row.update(key);
|
|
177
|
-
}
|
|
178
|
-
}
|
|
179
|
-
}
|
|
180
|
-
};
|
|
181
|
-
export { DataManager };
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
import { sort } from "@oscarpalmer/atoms/array";
|
|
2
|
-
import { toRecord } from "@oscarpalmer/atoms/array/to-record";
|
|
3
|
-
import { isNullableOrWhitespace } from "@oscarpalmer/atoms/is";
|
|
4
|
-
var GroupManager = class {
|
|
5
|
-
collapsed = /* @__PURE__ */ new Set();
|
|
6
|
-
enabled = false;
|
|
7
|
-
field;
|
|
8
|
-
items = [];
|
|
9
|
-
order = {};
|
|
10
|
-
constructor(state) {
|
|
11
|
-
this.state = state;
|
|
12
|
-
if (isNullableOrWhitespace(state.options.grouping)) return;
|
|
13
|
-
this.enabled = true;
|
|
14
|
-
this.field = state.options.grouping;
|
|
15
|
-
}
|
|
16
|
-
add(group) {
|
|
17
|
-
this.set([...this.items, group]);
|
|
18
|
-
}
|
|
19
|
-
get(value) {
|
|
20
|
-
return this.items.find((item) => item.value === value);
|
|
21
|
-
}
|
|
22
|
-
handle(button) {
|
|
23
|
-
const key = button.dataset.key;
|
|
24
|
-
const group = this.get(key);
|
|
25
|
-
if (group == null) return;
|
|
26
|
-
const { collapsed, items, state } = this;
|
|
27
|
-
group.expanded = !group.expanded;
|
|
28
|
-
const index = items.indexOf(group);
|
|
29
|
-
let first = state.managers.data.values.keys.original.indexOf(items[index]) + 1;
|
|
30
|
-
const last = items[index + 1] == null ? state.managers.data.keys.length - 1 : state.managers.data.values.keys.original.indexOf(items[index + 1]) - 1;
|
|
31
|
-
for (; first <= last; first += 1) {
|
|
32
|
-
const key = state.managers.data.values.keys.original[first];
|
|
33
|
-
if (group.expanded) collapsed.delete(key);
|
|
34
|
-
else collapsed.add(key);
|
|
35
|
-
}
|
|
36
|
-
state.managers.render.update(true, true);
|
|
37
|
-
}
|
|
38
|
-
remove(group) {
|
|
39
|
-
this.set(this.items.filter((item) => item !== group));
|
|
40
|
-
}
|
|
41
|
-
set(items) {
|
|
42
|
-
this.items = sort(items, (item) => item.label);
|
|
43
|
-
this.order = toRecord(items, "value", (_, index) => index);
|
|
44
|
-
}
|
|
45
|
-
};
|
|
46
|
-
export { GroupManager };
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
package/dist/tabela.js
DELETED
|
@@ -1,105 +0,0 @@
|
|
|
1
|
-
import { BodyComponent } from "./components/body.component.js";
|
|
2
|
-
import { FooterComponent } from "./components/footer.component.js";
|
|
3
|
-
import { HeaderComponent } from "./components/header.component.js";
|
|
4
|
-
import { ColumnManager } from "./managers/column.manager.js";
|
|
5
|
-
import { SortManager } from "./managers/sort.manager.js";
|
|
6
|
-
import { DataManager } from "./managers/data.manager.js";
|
|
7
|
-
import { EventManager } from "./managers/event.manager.js";
|
|
8
|
-
import { FilterManager } from "./managers/filter.manager.js";
|
|
9
|
-
import { GroupManager } from "./managers/group.manager.js";
|
|
10
|
-
import { NavigationManager } from "./managers/navigation.manager.js";
|
|
11
|
-
import { RenderManager } from "./managers/render.manager.js";
|
|
12
|
-
import { RowManager } from "./managers/row.manager.js";
|
|
13
|
-
import { SelectionManager } from "./managers/selection.manager.js";
|
|
14
|
-
var Tabela = class {
|
|
15
|
-
#components = {
|
|
16
|
-
header: void 0,
|
|
17
|
-
body: void 0,
|
|
18
|
-
footer: void 0
|
|
19
|
-
};
|
|
20
|
-
#element;
|
|
21
|
-
#id = getId();
|
|
22
|
-
#key;
|
|
23
|
-
#managers = {
|
|
24
|
-
column: void 0,
|
|
25
|
-
data: void 0,
|
|
26
|
-
event: void 0,
|
|
27
|
-
filter: void 0,
|
|
28
|
-
group: void 0,
|
|
29
|
-
navigation: void 0,
|
|
30
|
-
render: void 0,
|
|
31
|
-
row: void 0,
|
|
32
|
-
selection: void 0,
|
|
33
|
-
sort: void 0
|
|
34
|
-
};
|
|
35
|
-
data;
|
|
36
|
-
filter;
|
|
37
|
-
selection;
|
|
38
|
-
sort;
|
|
39
|
-
get key() {
|
|
40
|
-
return this.#key;
|
|
41
|
-
}
|
|
42
|
-
constructor(element, options) {
|
|
43
|
-
this.#element = element;
|
|
44
|
-
element.innerHTML = "";
|
|
45
|
-
element.role = "table";
|
|
46
|
-
element.classList.add("tabela");
|
|
47
|
-
element.setAttribute("aria-label", options.label);
|
|
48
|
-
this.#key = options.key;
|
|
49
|
-
this.#components.header = new HeaderComponent();
|
|
50
|
-
this.#components.body = new BodyComponent();
|
|
51
|
-
this.#components.footer = new FooterComponent();
|
|
52
|
-
const state = {
|
|
53
|
-
element,
|
|
54
|
-
options,
|
|
55
|
-
components: this.#components,
|
|
56
|
-
id: this.#id,
|
|
57
|
-
key: this.#key,
|
|
58
|
-
managers: this.#managers
|
|
59
|
-
};
|
|
60
|
-
this.#managers.column = new ColumnManager(state);
|
|
61
|
-
this.#managers.data = new DataManager(state);
|
|
62
|
-
this.#managers.event = new EventManager(state);
|
|
63
|
-
this.#managers.filter = new FilterManager(state);
|
|
64
|
-
this.#managers.group = new GroupManager(state);
|
|
65
|
-
this.#managers.navigation = new NavigationManager(state);
|
|
66
|
-
this.#managers.render = new RenderManager(state);
|
|
67
|
-
this.#managers.row = new RowManager(state);
|
|
68
|
-
this.#managers.selection = new SelectionManager(state);
|
|
69
|
-
this.#managers.sort = new SortManager(state);
|
|
70
|
-
element.append(this.#components.header.elements.group, this.#components.body.elements.group, this.#components.footer.elements.group);
|
|
71
|
-
this.#managers.data.set(options.data);
|
|
72
|
-
this.data = this.#managers.data.handlers;
|
|
73
|
-
this.filter = this.#managers.filter.handlers;
|
|
74
|
-
this.selection = this.#managers.selection.handlers;
|
|
75
|
-
this.sort = this.#managers.sort.handlers;
|
|
76
|
-
}
|
|
77
|
-
destroy() {
|
|
78
|
-
const components = this.#components;
|
|
79
|
-
const managers = this.#managers;
|
|
80
|
-
const element = this.#element;
|
|
81
|
-
components.body.destroy();
|
|
82
|
-
components.footer.destroy();
|
|
83
|
-
components.header.destroy();
|
|
84
|
-
managers.column.destroy();
|
|
85
|
-
managers.data.destroy();
|
|
86
|
-
managers.event.destroy();
|
|
87
|
-
managers.filter.destroy();
|
|
88
|
-
managers.render.destroy();
|
|
89
|
-
managers.row.destroy();
|
|
90
|
-
managers.selection.destroy();
|
|
91
|
-
managers.sort.destroy();
|
|
92
|
-
element.innerHTML = "";
|
|
93
|
-
element.role = "";
|
|
94
|
-
element.classList.remove("tabela");
|
|
95
|
-
element.removeAttribute("aria-label");
|
|
96
|
-
element.removeAttribute("role");
|
|
97
|
-
this.#element = void 0;
|
|
98
|
-
}
|
|
99
|
-
};
|
|
100
|
-
function getId() {
|
|
101
|
-
id += 1;
|
|
102
|
-
return id;
|
|
103
|
-
}
|
|
104
|
-
var id = 0;
|
|
105
|
-
export { Tabela };
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import type { Column, TabelaColumn } from '../models/column.model';
|
|
2
|
-
export declare class ColumnComponent {
|
|
3
|
-
elements: ColumnElements;
|
|
4
|
-
options: Column;
|
|
5
|
-
constructor(column: TabelaColumn);
|
|
6
|
-
destroy(): void;
|
|
7
|
-
}
|
|
8
|
-
type ColumnElements = {
|
|
9
|
-
content: HTMLDivElement;
|
|
10
|
-
sorter: HTMLDivElement;
|
|
11
|
-
wrapper: HTMLDivElement;
|
|
12
|
-
};
|
|
13
|
-
export {};
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import type { FooterElements } from '../models/footer.model';
|
|
2
|
-
import type { ColumnComponent } from './column.component';
|
|
3
|
-
export declare class FooterComponent {
|
|
4
|
-
readonly elements: FooterElements;
|
|
5
|
-
constructor();
|
|
6
|
-
destroy(): void;
|
|
7
|
-
update(columns: ColumnComponent[]): void;
|
|
8
|
-
}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import type { State } from '../models/tabela.model';
|
|
2
|
-
export declare class GroupComponent {
|
|
3
|
-
readonly key: string;
|
|
4
|
-
readonly label: string;
|
|
5
|
-
readonly value: unknown;
|
|
6
|
-
element: HTMLElement | undefined;
|
|
7
|
-
expanded: boolean;
|
|
8
|
-
filtered: number;
|
|
9
|
-
selected: number;
|
|
10
|
-
total: number;
|
|
11
|
-
constructor(key: string, label: string, value: unknown);
|
|
12
|
-
}
|
|
13
|
-
export declare function renderGroup(state: State, component: GroupComponent): void;
|
|
14
|
-
export declare function updateGroup(state: State, component: GroupComponent): void;
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import type { HeaderElements } from '../models/header.model';
|
|
2
|
-
import type { ColumnComponent } from './column.component';
|
|
3
|
-
export declare class HeaderComponent {
|
|
4
|
-
readonly elements: HeaderElements;
|
|
5
|
-
constructor();
|
|
6
|
-
destroy(): void;
|
|
7
|
-
update(columns: ColumnComponent[]): void;
|
|
8
|
-
}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import type { Key } from '@oscarpalmer/atoms/models';
|
|
2
|
-
import type { RenderElementPool } from '../models/render.model';
|
|
3
|
-
import type { State } from '../models/tabela.model';
|
|
4
|
-
export declare function removeRow(pool: RenderElementPool, row: RowComponent): void;
|
|
5
|
-
export declare function renderRow(state: State, row: RowComponent): void;
|
|
6
|
-
export declare class RowComponent {
|
|
7
|
-
readonly key: Key;
|
|
8
|
-
cells: Record<string, HTMLDivElement>;
|
|
9
|
-
element: HTMLDivElement | undefined;
|
|
10
|
-
constructor(key: Key);
|
|
11
|
-
}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
type RowGroupWithRow = {
|
|
2
|
-
group: HTMLDivElement;
|
|
3
|
-
row: HTMLDivElement;
|
|
4
|
-
};
|
|
5
|
-
export declare function createCell(width: number, body?: boolean): HTMLDivElement;
|
|
6
|
-
export declare function createElement<TagName extends keyof HTMLElementTagNameMap>(tagName: TagName, properties: Partial<HTMLElementTagNameMap[TagName]>, attributes: Record<string, string>, style: Partial<CSSStyleDeclaration>): HTMLElementTagNameMap[TagName];
|
|
7
|
-
export declare function createRowGroup(): RowGroupWithRow;
|
|
8
|
-
export declare function createRowGroup(withRow: boolean): HTMLDivElement;
|
|
9
|
-
export declare function createRow(): HTMLDivElement;
|
|
10
|
-
export {};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare const dragStyling: import("@oscarpalmer/toretto/style").StyleToggler;
|
package/types/index.d.ts
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { ColumnComponent } from '../components/column.component';
|
|
2
|
-
import type { TabelaColumn } from '../models/column.model';
|
|
3
|
-
import type { State } from '../models/tabela.model';
|
|
4
|
-
export declare class ColumnManager {
|
|
5
|
-
state: State;
|
|
6
|
-
items: ColumnComponent[];
|
|
7
|
-
constructor(state: State);
|
|
8
|
-
destroy(): void;
|
|
9
|
-
remove(field: string): void;
|
|
10
|
-
remove(fields: string[]): void;
|
|
11
|
-
set(columns: TabelaColumn[]): void;
|
|
12
|
-
}
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import type { Key, PlainObject } from '@oscarpalmer/atoms/models';
|
|
2
|
-
import type { DataValues } from '../models/data.model';
|
|
3
|
-
import type { State } from '../models/tabela.model';
|
|
4
|
-
import { GroupComponent } from '../components/group.component';
|
|
5
|
-
export declare class DataManager {
|
|
6
|
-
state: State;
|
|
7
|
-
handlers: Readonly<{
|
|
8
|
-
add: (data: PlainObject[]) => undefined;
|
|
9
|
-
clear: () => undefined;
|
|
10
|
-
get: (active: boolean | undefined) => PlainObject[];
|
|
11
|
-
remove: (items: PlainObject[] | Key[]) => undefined;
|
|
12
|
-
synchronize: (data: PlainObject[], remove: boolean | undefined) => undefined;
|
|
13
|
-
update: (data: PlainObject[]) => undefined;
|
|
14
|
-
}>;
|
|
15
|
-
values: DataValues;
|
|
16
|
-
get keys(): Array<GroupComponent | Key>;
|
|
17
|
-
get size(): number;
|
|
18
|
-
constructor(state: State);
|
|
19
|
-
add(data: PlainObject[], render: boolean): Promise<void>;
|
|
20
|
-
clear(): void;
|
|
21
|
-
destroy(): void;
|
|
22
|
-
get(active?: boolean): PlainObject[];
|
|
23
|
-
getIndex(key: Key): number;
|
|
24
|
-
remove(items: Array<Key | PlainObject>, render: boolean): Promise<void>;
|
|
25
|
-
render(): void;
|
|
26
|
-
set(data: PlainObject[]): void;
|
|
27
|
-
synchronize(data: PlainObject[], remove?: boolean): Promise<void>;
|
|
28
|
-
update(data: PlainObject[]): Promise<void>;
|
|
29
|
-
}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import type { TabelaFilterItem } from '../models/filter.model';
|
|
2
|
-
import type { State } from '../models/tabela.model';
|
|
3
|
-
export declare class FilterManager {
|
|
4
|
-
state: State;
|
|
5
|
-
handlers: Readonly<{
|
|
6
|
-
add: (item: TabelaFilterItem) => void;
|
|
7
|
-
clear: () => void;
|
|
8
|
-
remove: (value: string | TabelaFilterItem) => void;
|
|
9
|
-
set: (items: TabelaFilterItem[]) => void;
|
|
10
|
-
}>;
|
|
11
|
-
items: Record<string, TabelaFilterItem[]>;
|
|
12
|
-
constructor(state: State);
|
|
13
|
-
add(item: TabelaFilterItem): void;
|
|
14
|
-
clear(): void;
|
|
15
|
-
destroy(): void;
|
|
16
|
-
filter(): void;
|
|
17
|
-
remove(value: string | TabelaFilterItem): void;
|
|
18
|
-
set(items: TabelaFilterItem[]): void;
|
|
19
|
-
}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import type { Key } from '@oscarpalmer/atoms/models';
|
|
2
|
-
import type { GroupComponent } from '../components/group.component';
|
|
3
|
-
import type { State } from '../models/tabela.model';
|
|
4
|
-
export declare class GroupManager {
|
|
5
|
-
readonly state: State;
|
|
6
|
-
collapsed: Set<Key>;
|
|
7
|
-
enabled: boolean;
|
|
8
|
-
field: string;
|
|
9
|
-
items: GroupComponent[];
|
|
10
|
-
order: Record<never, number>;
|
|
11
|
-
constructor(state: State);
|
|
12
|
-
add(group: GroupComponent): void;
|
|
13
|
-
get(value: unknown): GroupComponent | undefined;
|
|
14
|
-
handle(button: HTMLElement): void;
|
|
15
|
-
remove(group: GroupComponent): void;
|
|
16
|
-
set(items: GroupComponent[]): void;
|
|
17
|
-
}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import type { Key } from '@oscarpalmer/atoms/models';
|
|
2
|
-
import type { State } from '../models/tabela.model';
|
|
3
|
-
export declare class NavigationManager {
|
|
4
|
-
state: State;
|
|
5
|
-
active: Key | undefined;
|
|
6
|
-
constructor(state: State);
|
|
7
|
-
destroy(): void;
|
|
8
|
-
handle(event: KeyboardEvent): void;
|
|
9
|
-
setActive(key: Key | undefined, scroll?: boolean): void;
|
|
10
|
-
}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import type { Key } from '@oscarpalmer/atoms/models';
|
|
2
|
-
import type { RemovableEventListener } from '@oscarpalmer/toretto/models';
|
|
3
|
-
import { GroupComponent } from '../components/group.component';
|
|
4
|
-
import type { RenderElementPool, RenderState } from '../models/render.model';
|
|
5
|
-
import type { State } from '../models/tabela.model';
|
|
6
|
-
export declare class RenderManager {
|
|
7
|
-
fragment: DocumentFragment;
|
|
8
|
-
listener: RemovableEventListener;
|
|
9
|
-
pool: RenderElementPool;
|
|
10
|
-
state: RenderState;
|
|
11
|
-
visible: Map<number, GroupComponent | Key>;
|
|
12
|
-
constructor(state: State);
|
|
13
|
-
destroy(): void;
|
|
14
|
-
removeCells(fields: string[]): void;
|
|
15
|
-
getFragment(): DocumentFragment;
|
|
16
|
-
update(down: boolean, rerender?: boolean): void;
|
|
17
|
-
}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import type { Key } from '@oscarpalmer/atoms/models';
|
|
2
|
-
import { RowComponent } from '../components/row.component';
|
|
3
|
-
import type { State } from '../models/tabela.model';
|
|
4
|
-
export declare class RowManager {
|
|
5
|
-
state: State;
|
|
6
|
-
components: Map<Key, RowComponent>;
|
|
7
|
-
constructor(state: State);
|
|
8
|
-
destroy(): void;
|
|
9
|
-
get(key: Key): RowComponent | undefined;
|
|
10
|
-
has(key: Key): boolean;
|
|
11
|
-
remove(key: Key): void;
|
|
12
|
-
update(key: Key): void;
|
|
13
|
-
}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import type { Key } from '@oscarpalmer/atoms/models';
|
|
2
|
-
import type { State } from '../models/tabela.model';
|
|
3
|
-
export declare class SelectionManager {
|
|
4
|
-
state: State;
|
|
5
|
-
handlers: Readonly<{
|
|
6
|
-
add: (keys: Key[]) => void;
|
|
7
|
-
clear: () => void;
|
|
8
|
-
remove: (keys: Key[]) => void;
|
|
9
|
-
set: (keys: Key[]) => void;
|
|
10
|
-
toggle: () => void;
|
|
11
|
-
}>;
|
|
12
|
-
items: Set<Key>;
|
|
13
|
-
last: Key | undefined;
|
|
14
|
-
constructor(state: State);
|
|
15
|
-
add(keys: Key[]): void;
|
|
16
|
-
clear(): void;
|
|
17
|
-
destroy(): void;
|
|
18
|
-
handle(event: MouseEvent, target: HTMLElement): void;
|
|
19
|
-
range(from: Key | HTMLElement, to: Key | HTMLElement): void;
|
|
20
|
-
remove(keys: Key[]): void;
|
|
21
|
-
set(keys: Key[]): void;
|
|
22
|
-
toggle(): void;
|
|
23
|
-
update(removed: Key[]): void;
|
|
24
|
-
}
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import { type ArrayKeySorter } from '@oscarpalmer/atoms/array';
|
|
2
|
-
import type { PlainObject } from '@oscarpalmer/atoms/models';
|
|
3
|
-
import { GroupComponent } from '../components/group.component';
|
|
4
|
-
import type { TabelaSortDirection, TabelaSortItem } from '../models/sort.model';
|
|
5
|
-
import type { State } from '../models/tabela.model';
|
|
6
|
-
export declare class SortManager {
|
|
7
|
-
state: State;
|
|
8
|
-
handlers: Readonly<{
|
|
9
|
-
add: (field: string, direction: TabelaSortDirection | undefined) => void;
|
|
10
|
-
flip: (field: string) => void;
|
|
11
|
-
clear: () => void;
|
|
12
|
-
remove: (field: string) => void;
|
|
13
|
-
set: (items: TabelaSortItem[]) => void;
|
|
14
|
-
}>;
|
|
15
|
-
items: ArrayKeySorter<PlainObject>[];
|
|
16
|
-
constructor(state: State);
|
|
17
|
-
add(field: string, direction?: TabelaSortDirection): void;
|
|
18
|
-
addOrSet(event: MouseEvent, field: string): void;
|
|
19
|
-
clear(): void;
|
|
20
|
-
destroy(): void;
|
|
21
|
-
flip(field: string): void;
|
|
22
|
-
remove(field: string): void;
|
|
23
|
-
removeOrClear(event: MouseEvent, field: string): void;
|
|
24
|
-
set(items: TabelaSortItem[]): void;
|
|
25
|
-
sort(): void;
|
|
26
|
-
toggle(event: MouseEvent, field: string, direction?: string | null): void;
|
|
27
|
-
}
|
|
28
|
-
export declare function sortWithGroups(state: State, data: Array<GroupComponent | PlainObject>, sorters: ArrayKeySorter<PlainObject>[]): Array<GroupComponent | PlainObject>;
|