@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.
Files changed (159) hide show
  1. package/dist/body.component-_VDOpJhV.d.mts +10 -0
  2. package/dist/body.model-2iwsovAV.d.mts +7 -0
  3. package/dist/column.component-Bx46r3JI.d.mts +16 -0
  4. package/dist/column.model-D-aw4EU4.d.mts +16 -0
  5. package/dist/components/body.component.d.mts +2 -0
  6. package/dist/components/{body.component.js → body.component.mjs} +6 -3
  7. package/dist/components/column.component.d.mts +2 -0
  8. package/dist/components/{column.component.js → column.component.mjs} +12 -9
  9. package/dist/components/footer.component.d.mts +2 -0
  10. package/dist/components/{footer.component.js → footer.component.mjs} +7 -4
  11. package/dist/components/group.component.d.mts +2 -0
  12. package/dist/components/group.component.mjs +51 -0
  13. package/dist/components/header.component.d.mts +2 -0
  14. package/dist/components/{header.component.js → header.component.mjs} +6 -3
  15. package/dist/components/row.component.d.mts +2 -0
  16. package/dist/components/{row.component.js → row.component.mjs} +11 -7
  17. package/dist/filter.model-7ukJrtil.d.mts +16 -0
  18. package/dist/footer.component-Curiab8j.d.mts +12 -0
  19. package/dist/footer.model-DhqoS6ds.d.mts +8 -0
  20. package/dist/group.component-Cq1YYbfJ.d.mts +285 -0
  21. package/dist/group.model-BsKFwHbt.d.mts +10 -0
  22. package/dist/header.component-BjjlpZIg.d.mts +12 -0
  23. package/dist/header.model-DN_KzUCV.d.mts +7 -0
  24. package/dist/helpers/dom.helpers.d.mts +12 -0
  25. package/dist/helpers/{dom.helpers.js → dom.helpers.mjs} +14 -10
  26. package/dist/helpers/misc.helpers.d.mts +6 -0
  27. package/dist/helpers/{misc.helpers.js → misc.helpers.mjs} +3 -1
  28. package/dist/helpers/style.helper.d.mts +6 -0
  29. package/dist/helpers/style.helper.mjs +8 -0
  30. package/dist/index.d.mts +7 -0
  31. package/dist/{index.js → index.mjs} +3 -1
  32. package/dist/managers/column.manager.d.mts +2 -0
  33. package/dist/managers/{column.manager.js → column.manager.mjs} +6 -1
  34. package/dist/managers/data.manager.d.mts +2 -0
  35. package/dist/managers/data.manager.mjs +222 -0
  36. package/dist/managers/event.manager.d.mts +2 -0
  37. package/dist/managers/{event.manager.js → event.manager.mjs} +12 -8
  38. package/dist/managers/filter.manager.d.mts +2 -0
  39. package/dist/managers/{filter.manager.js → filter.manager.mjs} +25 -11
  40. package/dist/managers/group.manager.d.mts +2 -0
  41. package/dist/managers/group.manager.mjs +73 -0
  42. package/dist/managers/navigation.manager.d.mts +2 -0
  43. package/dist/managers/{navigation.manager.js → navigation.manager.mjs} +27 -24
  44. package/dist/managers/render.manager.d.mts +2 -0
  45. package/dist/managers/render.manager.mjs +144 -0
  46. package/dist/managers/row.manager.d.mts +2 -0
  47. package/dist/managers/{row.manager.js → row.manager.mjs} +18 -11
  48. package/dist/managers/selection.manager.d.mts +2 -0
  49. package/dist/managers/{selection.manager.js → selection.manager.mjs} +57 -48
  50. package/dist/managers/sort.manager.d.mts +2 -0
  51. package/dist/managers/{sort.manager.js → sort.manager.mjs} +32 -2
  52. package/dist/managers/style.manager.d.mts +2 -0
  53. package/dist/managers/style.manager.mjs +149 -0
  54. package/dist/models/body.model.d.mts +2 -0
  55. package/dist/models/body.model.mjs +1 -0
  56. package/dist/models/column.model.d.mts +2 -0
  57. package/dist/models/column.model.mjs +1 -0
  58. package/dist/models/data.model.d.mts +2 -0
  59. package/dist/models/data.model.mjs +1 -0
  60. package/dist/models/filter.model.d.mts +2 -0
  61. package/dist/models/filter.model.mjs +1 -0
  62. package/dist/models/footer.model.d.mts +2 -0
  63. package/dist/models/footer.model.mjs +1 -0
  64. package/dist/models/group.model.d.mts +2 -0
  65. package/dist/models/group.model.mjs +1 -0
  66. package/dist/models/header.model.d.mts +2 -0
  67. package/dist/models/header.model.mjs +1 -0
  68. package/dist/models/render.model.d.mts +2 -0
  69. package/dist/models/render.model.mjs +1 -0
  70. package/dist/models/selection.model.d.mts +2 -0
  71. package/dist/models/selection.model.mjs +1 -0
  72. package/dist/models/sort.model.d.mts +2 -0
  73. package/dist/models/sort.model.mjs +1 -0
  74. package/dist/models/style.model.d.mts +23 -0
  75. package/dist/models/style.model.mjs +23 -0
  76. package/dist/models/tabela.model.d.mts +2 -0
  77. package/dist/models/tabela.model.mjs +1 -0
  78. package/dist/models/tabela.options.d.mts +2 -0
  79. package/dist/models/tabela.options.mjs +1 -0
  80. package/dist/selection.model-rwQe9fco.d.mts +12 -0
  81. package/dist/sort.model-CauImaLu.d.mts +15 -0
  82. package/dist/tabela.d.mts +21 -0
  83. package/dist/{tabela.full.js → tabela.full.mjs} +1407 -1124
  84. package/dist/tabela.mjs +126 -0
  85. package/dist/tabela.options-RkZvfptB.d.mts +14 -0
  86. package/package.json +45 -37
  87. package/src/components/body.component.ts +4 -3
  88. package/src/components/column.component.ts +19 -24
  89. package/src/components/footer.component.ts +8 -3
  90. package/src/components/group.component.ts +85 -0
  91. package/src/components/header.component.ts +3 -2
  92. package/src/components/row.component.ts +10 -8
  93. package/src/helpers/dom.helpers.ts +24 -20
  94. package/src/helpers/style.helper.ts +1 -1
  95. package/src/managers/column.manager.ts +8 -4
  96. package/src/managers/data.manager.ts +265 -61
  97. package/src/managers/event.manager.ts +14 -11
  98. package/src/managers/filter.manager.ts +38 -19
  99. package/src/managers/group.manager.ts +131 -0
  100. package/src/managers/navigation.manager.ts +25 -23
  101. package/src/managers/render.manager.ts +84 -32
  102. package/src/managers/row.manager.ts +23 -11
  103. package/src/managers/selection.manager.ts +68 -54
  104. package/src/managers/sort.manager.ts +81 -16
  105. package/src/managers/style.manager.ts +156 -0
  106. package/src/models/column.model.ts +2 -2
  107. package/src/models/data.model.ts +23 -9
  108. package/src/models/filter.model.ts +11 -3
  109. package/src/models/group.model.ts +8 -0
  110. package/src/models/render.model.ts +2 -2
  111. package/src/models/selection.model.ts +9 -0
  112. package/src/models/sort.model.ts +11 -3
  113. package/src/models/style.model.ts +39 -0
  114. package/src/models/tabela.model.ts +14 -46
  115. package/src/models/tabela.options.ts +3 -2
  116. package/src/tabela.ts +72 -41
  117. package/dist/helpers/style.helper.js +0 -6
  118. package/dist/managers/data.manager.js +0 -120
  119. package/dist/managers/render.manager.js +0 -110
  120. package/dist/models/body.model.js +0 -0
  121. package/dist/models/column.model.js +0 -0
  122. package/dist/models/data.model.js +0 -0
  123. package/dist/models/filter.model.js +0 -0
  124. package/dist/models/footer.model.js +0 -0
  125. package/dist/models/header.model.js +0 -0
  126. package/dist/models/render.model.js +0 -0
  127. package/dist/models/sort.model.js +0 -0
  128. package/dist/models/tabela.model.js +0 -0
  129. package/dist/models/tabela.options.js +0 -0
  130. package/dist/tabela.js +0 -102
  131. package/types/components/body.component.d.ts +0 -6
  132. package/types/components/column.component.d.ts +0 -13
  133. package/types/components/footer.component.d.ts +0 -8
  134. package/types/components/header.component.d.ts +0 -8
  135. package/types/components/row.component.d.ts +0 -11
  136. package/types/helpers/dom.helpers.d.ts +0 -10
  137. package/types/helpers/misc.helpers.d.ts +0 -2
  138. package/types/helpers/style.helper.d.ts +0 -1
  139. package/types/index.d.ts +0 -4
  140. package/types/managers/column.manager.d.ts +0 -12
  141. package/types/managers/data.manager.d.ts +0 -27
  142. package/types/managers/event.manager.d.ts +0 -7
  143. package/types/managers/filter.manager.d.ts +0 -19
  144. package/types/managers/navigation.manager.d.ts +0 -10
  145. package/types/managers/render.manager.d.ts +0 -16
  146. package/types/managers/row.manager.d.ts +0 -13
  147. package/types/managers/selection.manager.d.ts +0 -18
  148. package/types/managers/sort.manager.d.ts +0 -26
  149. package/types/models/body.model.d.ts +0 -4
  150. package/types/models/column.model.d.ts +0 -13
  151. package/types/models/data.model.d.ts +0 -14
  152. package/types/models/filter.model.d.ts +0 -6
  153. package/types/models/footer.model.d.ts +0 -5
  154. package/types/models/header.model.d.ts +0 -4
  155. package/types/models/render.model.d.ts +0 -13
  156. package/types/models/sort.model.d.ts +0 -5
  157. package/types/models/tabela.model.d.ts +0 -69
  158. package/types/models/tabela.options.d.ts +0 -9
  159. 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,7 @@
1
+ //#region src/models/body.model.d.ts
2
+ type BodyElements = {
3
+ faker: HTMLDivElement;
4
+ group: HTMLDivElement;
5
+ };
6
+ //#endregion
7
+ export { BodyElements 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 };
@@ -0,0 +1,2 @@
1
+ import { t as BodyComponent } from "../body.component-_VDOpJhV.mjs";
2
+ export { BodyComponent };
@@ -1,6 +1,8 @@
1
- import { createElement, createRowGroup } from "../helpers/dom.helpers.js";
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: "tabela__faker" }, {}, {});
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 += " tabela__rowgroup--body";
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 };
@@ -0,0 +1,2 @@
1
+ import { t as ColumnComponent } from "../column.component-Bx46r3JI.mjs";
2
+ export { ColumnComponent };
@@ -1,14 +1,16 @@
1
- import { createElement } from "../helpers/dom.helpers.js";
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(options) {
6
- const width = Number.parseInt(getComputedStyle(document.body).fontSize, 10) * (options.width ?? options.title.length * 1.5);
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
- ...options,
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: "tabela__heading",
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: "tabela__heading__content",
32
+ className: CSS_TABELA_HEADING_CONTENT,
31
33
  textContent: title
32
- }, {}, {});
33
- const sorter = createElement("div", { className: "tabela__heading__sorter" }, {}, {});
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 };
@@ -0,0 +1,2 @@
1
+ import { t as FooterComponent } from "../footer.component-Curiab8j.mjs";
2
+ export { FooterComponent };
@@ -1,4 +1,6 @@
1
- import { createCell, createRowGroup } from "../helpers/dom.helpers.js";
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 += " tabela__rowgroup--footer";
12
- row.className += " tabela__row--footer";
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 += " tabela__cell--footer";
28
+ cell.className += ` ${CSS_TABELA_CELL_FOOTER}`;
27
29
  cell.innerHTML = "&nbsp;";
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,2 @@
1
+ import { i as updateGroup, n as removeGroup, r as renderGroup, t as GroupComponent } from "../group.component-Cq1YYbfJ.mjs";
2
+ export { GroupComponent, removeGroup, renderGroup, updateGroup };
@@ -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 };
@@ -0,0 +1,2 @@
1
+ import { t as HeaderComponent } from "../header.component-BjjlpZIg.mjs";
2
+ export { HeaderComponent };
@@ -1,4 +1,6 @@
1
- import { createRowGroup } from "../helpers/dom.helpers.js";
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 += " tabela__rowgroup--header";
11
- row.className += " tabela__row--header";
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 };
@@ -0,0 +1,2 @@
1
+ import { h as renderRow, m as removeRow, p as RowComponent } from "../group.component-Cq1YYbfJ.mjs";
2
+ export { RowComponent, removeRow, renderRow };
@@ -1,5 +1,8 @@
1
- import { createCell, createRow } from "../helpers/dom.helpers.js";
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}_row_${key}`
26
+ id: `tabela_${state.id}_${key}`
24
27
  });
25
- element.classList.add("tabela__row--body");
26
- if (selected) element.classList.add("tabela__row--selected");
27
- else element.classList.remove("tabela__row--selected");
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.objects.mapped.get(row.key);
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[options.field]);
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,8 @@
1
+ //#region src/models/footer.model.d.ts
2
+ type FooterElements = {
3
+ cells: HTMLDivElement[];
4
+ group: HTMLDivElement;
5
+ row: HTMLDivElement;
6
+ };
7
+ //#endregion
8
+ export { FooterElements 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,10 @@
1
+ //#region src/models/group.model.d.ts
2
+ type GroupValue = {
3
+ original: unknown;
4
+ stringified: string;
5
+ };
6
+ type TabelaGroup = {
7
+ set(group?: string): void;
8
+ };
9
+ //#endregion
10
+ export { TabelaGroup as n, GroupValue as t };
@@ -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 };
@@ -0,0 +1,7 @@
1
+ //#region src/models/header.model.d.ts
2
+ type HeaderElements = {
3
+ group: HTMLDivElement;
4
+ row: HTMLDivElement;
5
+ };
6
+ //#endregion
7
+ export { HeaderElements as t };