@oscarpalmer/tabela 0.11.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} +12 -9
- 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} +14 -10
- 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} +12 -8
- package/dist/managers/filter.manager.d.mts +2 -0
- package/dist/managers/{filter.manager.js → filter.manager.mjs} +25 -11
- 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.mjs +144 -0
- 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} +57 -48
- package/dist/managers/sort.manager.d.mts +2 -0
- package/dist/managers/{sort.manager.js → sort.manager.mjs} +32 -2
- 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} +1407 -1124
- 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 +19 -24
- package/src/components/footer.component.ts +8 -3
- package/src/components/group.component.ts +85 -0
- package/src/components/header.component.ts +3 -2
- package/src/components/row.component.ts +10 -8
- package/src/helpers/dom.helpers.ts +24 -20
- package/src/helpers/style.helper.ts +1 -1
- package/src/managers/column.manager.ts +8 -4
- package/src/managers/data.manager.ts +265 -61
- package/src/managers/event.manager.ts +14 -11
- package/src/managers/filter.manager.ts +38 -19
- package/src/managers/group.manager.ts +131 -0
- package/src/managers/navigation.manager.ts +25 -23
- package/src/managers/render.manager.ts +84 -32
- package/src/managers/row.manager.ts +23 -11
- package/src/managers/selection.manager.ts +68 -54
- package/src/managers/sort.manager.ts +81 -16
- package/src/managers/style.manager.ts +156 -0
- package/src/models/column.model.ts +2 -2
- package/src/models/data.model.ts +23 -9
- package/src/models/filter.model.ts +11 -3
- package/src/models/group.model.ts +8 -0
- package/src/models/render.model.ts +2 -2
- package/src/models/selection.model.ts +9 -0
- package/src/models/sort.model.ts +11 -3
- package/src/models/style.model.ts +39 -0
- package/src/models/tabela.model.ts +14 -46
- package/src/models/tabela.options.ts +3 -2
- package/src/tabela.ts +72 -41
- package/dist/helpers/style.helper.js +0 -6
- package/dist/managers/data.manager.js +0 -120
- package/dist/managers/render.manager.js +0 -110
- 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/header.model.js +0 -0
- package/dist/models/render.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 -102
- 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/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 -27
- package/types/managers/event.manager.d.ts +0 -7
- package/types/managers/filter.manager.d.ts +0 -19
- package/types/managers/navigation.manager.d.ts +0 -10
- package/types/managers/render.manager.d.ts +0 -16
- package/types/managers/row.manager.d.ts +0 -13
- package/types/managers/selection.manager.d.ts +0 -18
- package/types/managers/sort.manager.d.ts +0 -26
- 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 -14
- package/types/models/filter.model.d.ts +0 -6
- package/types/models/footer.model.d.ts +0 -5
- package/types/models/header.model.d.ts +0 -4
- package/types/models/render.model.d.ts +0 -13
- package/types/models/sort.model.d.ts +0 -5
- package/types/models/tabela.model.d.ts +0 -69
- package/types/models/tabela.options.d.ts +0 -9
- package/types/tabela.d.ts +0 -12
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { t as BodyElements } from "./body.model-2iwsovAV.mjs";
|
|
2
|
+
|
|
3
|
+
//#region src/components/body.component.d.ts
|
|
4
|
+
declare class BodyComponent {
|
|
5
|
+
readonly elements: BodyElements;
|
|
6
|
+
constructor();
|
|
7
|
+
destroy(): void;
|
|
8
|
+
}
|
|
9
|
+
//#endregion
|
|
10
|
+
export { BodyComponent as t };
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { n as TabelaColumn, t as Column } from "./column.model-D-aw4EU4.mjs";
|
|
2
|
+
|
|
3
|
+
//#region src/components/column.component.d.ts
|
|
4
|
+
declare class ColumnComponent {
|
|
5
|
+
elements: ColumnElements;
|
|
6
|
+
options: Column;
|
|
7
|
+
constructor(column: TabelaColumn);
|
|
8
|
+
destroy(): void;
|
|
9
|
+
}
|
|
10
|
+
type ColumnElements = {
|
|
11
|
+
content: HTMLDivElement;
|
|
12
|
+
sorter: HTMLDivElement;
|
|
13
|
+
wrapper: HTMLDivElement;
|
|
14
|
+
};
|
|
15
|
+
//#endregion
|
|
16
|
+
export { ColumnComponent as t };
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
//#region src/models/column.model.d.ts
|
|
2
|
+
type Column = {
|
|
3
|
+
field: string;
|
|
4
|
+
title: string;
|
|
5
|
+
type: TabelaColumnType;
|
|
6
|
+
width: number;
|
|
7
|
+
};
|
|
8
|
+
type TabelaColumn = {
|
|
9
|
+
field: string;
|
|
10
|
+
title: string;
|
|
11
|
+
type: TabelaColumnType;
|
|
12
|
+
width?: number;
|
|
13
|
+
};
|
|
14
|
+
type TabelaColumnType = 'boolean' | 'date' | 'date-time' | 'number' | 'string' | 'time';
|
|
15
|
+
//#endregion
|
|
16
|
+
export { TabelaColumn as n, TabelaColumnType as r, Column as t };
|
|
@@ -1,6 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { CSS_TABELA_FAKER, CSS_TABELA_ROWGROUP_BODY } from "../models/style.model.mjs";
|
|
2
|
+
import { createElement, createRowGroup } from "../helpers/dom.helpers.mjs";
|
|
3
|
+
//#region src/components/body.component.ts
|
|
2
4
|
function createFaker() {
|
|
3
|
-
return createElement("div", { className:
|
|
5
|
+
return createElement("div", { className: CSS_TABELA_FAKER });
|
|
4
6
|
}
|
|
5
7
|
var BodyComponent = class {
|
|
6
8
|
elements = {
|
|
@@ -10,7 +12,7 @@ var BodyComponent = class {
|
|
|
10
12
|
constructor() {
|
|
11
13
|
const group = createRowGroup(false);
|
|
12
14
|
this.elements.group = group;
|
|
13
|
-
group.className +=
|
|
15
|
+
group.className += ` ${CSS_TABELA_ROWGROUP_BODY}`;
|
|
14
16
|
group.tabIndex = 0;
|
|
15
17
|
group.setAttribute("data-event", "body");
|
|
16
18
|
group.append(this.elements.faker);
|
|
@@ -20,4 +22,5 @@ var BodyComponent = class {
|
|
|
20
22
|
this.elements.group = void 0;
|
|
21
23
|
}
|
|
22
24
|
};
|
|
25
|
+
//#endregion
|
|
23
26
|
export { BodyComponent };
|
|
@@ -1,14 +1,16 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { CSS_TABELA_HEADING, CSS_TABELA_HEADING_CONTENT, CSS_TABELA_HEADING_SORTER } from "../models/style.model.mjs";
|
|
2
|
+
import { createElement } from "../helpers/dom.helpers.mjs";
|
|
3
|
+
//#region src/components/column.component.ts
|
|
2
4
|
var ColumnComponent = class {
|
|
3
5
|
elements;
|
|
4
6
|
options;
|
|
5
|
-
constructor(
|
|
6
|
-
const width = Number.parseInt(getComputedStyle(document.body).fontSize, 10) * (
|
|
7
|
+
constructor(column) {
|
|
8
|
+
const width = Number.parseInt(getComputedStyle(document.body).fontSize, 10) * (column.width ?? column.title.length * 1.5);
|
|
7
9
|
this.options = {
|
|
8
|
-
...
|
|
10
|
+
...column,
|
|
9
11
|
width
|
|
10
12
|
};
|
|
11
|
-
this.elements = createHeading(options.field, options.title, width);
|
|
13
|
+
this.elements = createHeading(this.options.field, this.options.title, width);
|
|
12
14
|
}
|
|
13
15
|
destroy() {
|
|
14
16
|
this.elements.content.remove();
|
|
@@ -20,17 +22,17 @@ var ColumnComponent = class {
|
|
|
20
22
|
};
|
|
21
23
|
function createHeading(field, title, width) {
|
|
22
24
|
const wrapper = createElement("div", {
|
|
23
|
-
className:
|
|
25
|
+
className: CSS_TABELA_HEADING,
|
|
24
26
|
role: "columnheader"
|
|
25
27
|
}, {
|
|
26
28
|
"data-event": "heading",
|
|
27
29
|
"data-field": field
|
|
28
30
|
}, { width: `${width}px` });
|
|
29
31
|
const content = createElement("div", {
|
|
30
|
-
className:
|
|
32
|
+
className: CSS_TABELA_HEADING_CONTENT,
|
|
31
33
|
textContent: title
|
|
32
|
-
}
|
|
33
|
-
const sorter = createElement("div", { className:
|
|
34
|
+
});
|
|
35
|
+
const sorter = createElement("div", { className: CSS_TABELA_HEADING_SORTER });
|
|
34
36
|
wrapper.append(content, sorter);
|
|
35
37
|
return {
|
|
36
38
|
content,
|
|
@@ -38,4 +40,5 @@ function createHeading(field, title, width) {
|
|
|
38
40
|
wrapper
|
|
39
41
|
};
|
|
40
42
|
}
|
|
43
|
+
//#endregion
|
|
41
44
|
export { ColumnComponent };
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { CSS_TABELA_CELL_FOOTER, CSS_TABELA_ROWGROUP_FOOTER, CSS_TABELA_ROW_FOOTER } from "../models/style.model.mjs";
|
|
2
|
+
import { createCell, createRowGroup } from "../helpers/dom.helpers.mjs";
|
|
3
|
+
//#region src/components/footer.component.ts
|
|
2
4
|
var FooterComponent = class {
|
|
3
5
|
elements;
|
|
4
6
|
constructor() {
|
|
@@ -8,8 +10,8 @@ var FooterComponent = class {
|
|
|
8
10
|
row,
|
|
9
11
|
cells: []
|
|
10
12
|
};
|
|
11
|
-
group.className +=
|
|
12
|
-
row.className +=
|
|
13
|
+
group.className += ` ${CSS_TABELA_ROWGROUP_FOOTER}`;
|
|
14
|
+
row.className += ` ${CSS_TABELA_ROW_FOOTER}`;
|
|
13
15
|
}
|
|
14
16
|
destroy() {
|
|
15
17
|
this.elements.cells.length = 0;
|
|
@@ -23,11 +25,12 @@ var FooterComponent = class {
|
|
|
23
25
|
elements.row.innerHTML = "";
|
|
24
26
|
for (let index = 0; index < length; index += 1) {
|
|
25
27
|
const cell = createCell(columns[index].options.width ?? 4, false);
|
|
26
|
-
cell.className +=
|
|
28
|
+
cell.className += ` ${CSS_TABELA_CELL_FOOTER}`;
|
|
27
29
|
cell.innerHTML = " ";
|
|
28
30
|
elements.cells.push(cell);
|
|
29
31
|
elements.row.append(cell);
|
|
30
32
|
}
|
|
31
33
|
}
|
|
32
34
|
};
|
|
35
|
+
//#endregion
|
|
33
36
|
export { FooterComponent };
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { CSS_TABELA_ROW, CSS_TABELA_ROW_GROUP } from "../models/style.model.mjs";
|
|
2
|
+
import { createElement } from "../helpers/dom.helpers.mjs";
|
|
3
|
+
import { getString } from "@oscarpalmer/atoms/string";
|
|
4
|
+
//#region src/components/group.component.ts
|
|
5
|
+
var GroupComponent = class {
|
|
6
|
+
element;
|
|
7
|
+
expanded = true;
|
|
8
|
+
filtered = 0;
|
|
9
|
+
key;
|
|
10
|
+
selected = 0;
|
|
11
|
+
total = 0;
|
|
12
|
+
value;
|
|
13
|
+
constructor(label, value) {
|
|
14
|
+
this.label = label;
|
|
15
|
+
const stringified = getString(value);
|
|
16
|
+
this.key = `group:${stringified}`;
|
|
17
|
+
this.value = {
|
|
18
|
+
stringified,
|
|
19
|
+
original: value
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
function removeGroup(group) {
|
|
24
|
+
if (group.element == null) return;
|
|
25
|
+
group.element.innerHTML = "";
|
|
26
|
+
group.element.remove();
|
|
27
|
+
}
|
|
28
|
+
function renderGroup(state, component) {
|
|
29
|
+
component.element ??= createElement("div", {
|
|
30
|
+
className: `${CSS_TABELA_ROW} ${CSS_TABELA_ROW_GROUP}`,
|
|
31
|
+
innerHTML: `<div class="tabela__cell tabela__cell--group" role="cell">
|
|
32
|
+
<button class="tabela__button tabela__button--group" data-event="group" data-key="tabela_${state.id}_${component.key}" type="button">
|
|
33
|
+
<span aria-hidden="true"></span>
|
|
34
|
+
<span>Open/close</span>
|
|
35
|
+
</button>
|
|
36
|
+
<p>${component.label}</p>
|
|
37
|
+
<span class="tabela__group__total">${component.total}</span>
|
|
38
|
+
<span class="tabela__group__selected">${component.selected === 0 ? "" : component.selected}</span>
|
|
39
|
+
</div>`,
|
|
40
|
+
role: "row"
|
|
41
|
+
}, {}, { height: `${state.options.rowHeight}px` });
|
|
42
|
+
}
|
|
43
|
+
function updateGroup(state, component) {
|
|
44
|
+
if (component.element == null) return;
|
|
45
|
+
const selected = component.element.querySelector(".tabela__group__selected");
|
|
46
|
+
const total = component.element.querySelector(".tabela__group__total");
|
|
47
|
+
if (selected != null) selected.textContent = component.selected === 0 ? "" : String(component.selected);
|
|
48
|
+
if (total != null) total.textContent = String(component.total);
|
|
49
|
+
}
|
|
50
|
+
//#endregion
|
|
51
|
+
export { GroupComponent, removeGroup, renderGroup, updateGroup };
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { CSS_TABELA_ROWGROUP_HEADER, CSS_TABELA_ROW_HEADER } from "../models/style.model.mjs";
|
|
2
|
+
import { createRowGroup } from "../helpers/dom.helpers.mjs";
|
|
3
|
+
//#region src/components/header.component.ts
|
|
2
4
|
var HeaderComponent = class {
|
|
3
5
|
elements;
|
|
4
6
|
constructor() {
|
|
@@ -7,8 +9,8 @@ var HeaderComponent = class {
|
|
|
7
9
|
group,
|
|
8
10
|
row
|
|
9
11
|
};
|
|
10
|
-
group.className +=
|
|
11
|
-
row.className +=
|
|
12
|
+
group.className += ` ${CSS_TABELA_ROWGROUP_HEADER}`;
|
|
13
|
+
row.className += ` ${CSS_TABELA_ROW_HEADER}`;
|
|
12
14
|
}
|
|
13
15
|
destroy() {
|
|
14
16
|
this.elements.group = void 0;
|
|
@@ -19,4 +21,5 @@ var HeaderComponent = class {
|
|
|
19
21
|
this.elements.row.append(...columns.map((column) => column.elements.wrapper));
|
|
20
22
|
}
|
|
21
23
|
};
|
|
24
|
+
//#endregion
|
|
22
25
|
export { HeaderComponent };
|
|
@@ -1,5 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { CSS_TABELA_ROW_BODY, CSS_TABELA_ROW_SELECTED } from "../models/style.model.mjs";
|
|
2
|
+
import { createCell, createRow } from "../helpers/dom.helpers.mjs";
|
|
2
3
|
import { setAttributes } from "@oscarpalmer/toretto/attribute";
|
|
4
|
+
import { getValue } from "@oscarpalmer/atoms/value/handle";
|
|
5
|
+
//#region src/components/row.component.ts
|
|
3
6
|
function removeRow(pool, row) {
|
|
4
7
|
if (row.element != null) {
|
|
5
8
|
row.element.innerHTML = "";
|
|
@@ -20,20 +23,20 @@ function renderRow(state, row) {
|
|
|
20
23
|
"data-active": String(state.managers.navigation.active === row.key),
|
|
21
24
|
"data-event": "row",
|
|
22
25
|
"data-key": key,
|
|
23
|
-
id: `tabela_${state.id}
|
|
26
|
+
id: `tabela_${state.id}_${key}`
|
|
24
27
|
});
|
|
25
|
-
element.classList.add(
|
|
26
|
-
if (selected) element.classList.add(
|
|
27
|
-
else element.classList.remove(
|
|
28
|
+
element.classList.add(CSS_TABELA_ROW_BODY);
|
|
29
|
+
if (selected) element.classList.add(CSS_TABELA_ROW_SELECTED);
|
|
30
|
+
else element.classList.remove(CSS_TABELA_ROW_SELECTED);
|
|
28
31
|
const columns = state.managers.column.items;
|
|
29
32
|
const { length } = columns;
|
|
30
|
-
const data = state.managers.data.values.
|
|
33
|
+
const data = state.managers.data.state.values.mapped.get(row.key);
|
|
31
34
|
if (data == null) return;
|
|
32
35
|
for (let index = 0; index < length; index += 1) {
|
|
33
36
|
const { options } = columns[index];
|
|
34
37
|
state.managers.render.pool.cells[options.field] ??= [];
|
|
35
38
|
const cell = state.managers.render.pool.cells[columns[index].options.field].shift() ?? createCell(options.width);
|
|
36
|
-
cell.textContent = String(data
|
|
39
|
+
cell.textContent = String(getValue(data, options.field));
|
|
37
40
|
row.cells[options.field] = cell;
|
|
38
41
|
element.append(cell);
|
|
39
42
|
}
|
|
@@ -45,4 +48,5 @@ var RowComponent = class {
|
|
|
45
48
|
this.key = key;
|
|
46
49
|
}
|
|
47
50
|
};
|
|
51
|
+
//#endregion
|
|
48
52
|
export { RowComponent, removeRow, renderRow };
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
//#region src/models/filter.model.d.ts
|
|
2
|
+
type TabelaFilter = {
|
|
3
|
+
add(item: TabelaFilterItem): void;
|
|
4
|
+
clear(): void;
|
|
5
|
+
remove(field: string): void;
|
|
6
|
+
remove(item: TabelaFilterItem): void;
|
|
7
|
+
set(items: TabelaFilterItem[]): void;
|
|
8
|
+
};
|
|
9
|
+
type TabelaFilterComparison = 'contains' | 'ends-with' | 'equals' | 'greater-than' | 'greater-than-or-equal' | 'less-than' | 'less-than-or-equal' | 'not-contains' | 'not-equals' | 'starts-with';
|
|
10
|
+
type TabelaFilterItem = {
|
|
11
|
+
comparison: TabelaFilterComparison;
|
|
12
|
+
field: string;
|
|
13
|
+
value: unknown;
|
|
14
|
+
};
|
|
15
|
+
//#endregion
|
|
16
|
+
export { TabelaFilterComparison as n, TabelaFilterItem as r, TabelaFilter as t };
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { t as ColumnComponent } from "./column.component-Bx46r3JI.mjs";
|
|
2
|
+
import { t as FooterElements } from "./footer.model-DhqoS6ds.mjs";
|
|
3
|
+
|
|
4
|
+
//#region src/components/footer.component.d.ts
|
|
5
|
+
declare class FooterComponent {
|
|
6
|
+
readonly elements: FooterElements;
|
|
7
|
+
constructor();
|
|
8
|
+
destroy(): void;
|
|
9
|
+
update(columns: ColumnComponent[]): void;
|
|
10
|
+
}
|
|
11
|
+
//#endregion
|
|
12
|
+
export { FooterComponent as t };
|
|
@@ -0,0 +1,285 @@
|
|
|
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 };
|
|
@@ -0,0 +1,12 @@
|
|
|
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 };
|