@oscarpalmer/tabela 0.13.0 → 0.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (131) hide show
  1. package/dist/components/{body.component.mjs → body.component.js} +3 -6
  2. package/dist/components/{column.component.mjs → column.component.js} +5 -8
  3. package/dist/components/{footer.component.mjs → footer.component.js} +4 -7
  4. package/dist/components/group.component.js +28 -0
  5. package/dist/components/{header.component.mjs → header.component.js} +3 -6
  6. package/dist/components/{row.component.mjs → row.component.js} +7 -11
  7. package/dist/helpers/{dom.helpers.mjs → dom.helpers.js} +9 -13
  8. package/dist/helpers/{misc.helpers.mjs → misc.helpers.js} +1 -3
  9. package/dist/helpers/style.helper.js +6 -0
  10. package/dist/{index.mjs → index.js} +1 -3
  11. package/dist/managers/{column.manager.mjs → column.manager.js} +1 -6
  12. package/dist/managers/data.manager.js +181 -0
  13. package/dist/managers/{event.manager.mjs → event.manager.js} +8 -9
  14. package/dist/managers/{filter.manager.mjs → filter.manager.js} +14 -23
  15. package/dist/managers/group.manager.js +46 -0
  16. package/dist/managers/{navigation.manager.mjs → navigation.manager.js} +24 -27
  17. package/dist/managers/{render.manager.mjs → render.manager.js} +26 -35
  18. package/dist/managers/{row.manager.mjs → row.manager.js} +11 -18
  19. package/dist/managers/{selection.manager.mjs → selection.manager.js} +28 -32
  20. package/dist/managers/{sort.manager.mjs → sort.manager.js} +9 -12
  21. package/dist/models/body.model.js +0 -0
  22. package/dist/models/column.model.js +0 -0
  23. package/dist/models/data.model.js +0 -0
  24. package/dist/models/filter.model.js +0 -0
  25. package/dist/models/footer.model.js +0 -0
  26. package/dist/models/group.model.js +0 -0
  27. package/dist/models/header.model.js +0 -0
  28. package/dist/models/render.model.js +0 -0
  29. package/dist/models/selection.model.js +0 -0
  30. package/dist/models/sort.model.js +0 -0
  31. package/dist/models/tabela.model.js +0 -0
  32. package/dist/models/tabela.options.js +0 -0
  33. package/dist/{tabela.full.mjs → tabela.full.js} +860 -1049
  34. package/dist/tabela.js +105 -0
  35. package/package.json +1 -1
  36. package/src/components/body.component.ts +10 -7
  37. package/src/components/column.component.ts +19 -15
  38. package/src/components/footer.component.ts +7 -10
  39. package/src/components/group.component.ts +34 -12
  40. package/src/components/header.component.ts +6 -5
  41. package/src/components/row.component.ts +27 -19
  42. package/src/helpers/dom.helpers.ts +18 -22
  43. package/src/helpers/misc.helpers.ts +5 -0
  44. package/src/managers/data.manager.ts +80 -77
  45. package/src/managers/event.manager.ts +21 -10
  46. package/src/managers/filter.manager.ts +34 -21
  47. package/src/managers/group.manager.ts +18 -9
  48. package/src/managers/navigation.manager.ts +46 -49
  49. package/src/managers/render.manager.ts +34 -21
  50. package/src/managers/row.manager.ts +1 -1
  51. package/src/managers/selection.manager.ts +37 -35
  52. package/src/managers/sort.manager.ts +47 -34
  53. package/src/managers/style.manager.ts +40 -25
  54. package/src/models/column.model.ts +2 -6
  55. package/src/models/data.model.ts +7 -8
  56. package/src/models/dom.model.ts +33 -0
  57. package/src/models/event.model.ts +7 -0
  58. package/src/models/filter.model.ts +20 -0
  59. package/src/models/group.model.ts +4 -0
  60. package/src/models/sort.model.ts +4 -0
  61. package/src/models/style.model.ts +32 -20
  62. package/src/models/tabela.model.ts +1 -0
  63. package/src/tabela.ts +20 -22
  64. package/dist/body.component-_VDOpJhV.d.mts +0 -10
  65. package/dist/body.model-2iwsovAV.d.mts +0 -7
  66. package/dist/column.component-Bx46r3JI.d.mts +0 -16
  67. package/dist/column.model-D-aw4EU4.d.mts +0 -16
  68. package/dist/components/body.component.d.mts +0 -2
  69. package/dist/components/column.component.d.mts +0 -2
  70. package/dist/components/footer.component.d.mts +0 -2
  71. package/dist/components/group.component.d.mts +0 -2
  72. package/dist/components/group.component.mjs +0 -51
  73. package/dist/components/header.component.d.mts +0 -2
  74. package/dist/components/row.component.d.mts +0 -2
  75. package/dist/filter.model-7ukJrtil.d.mts +0 -16
  76. package/dist/footer.component-Curiab8j.d.mts +0 -12
  77. package/dist/footer.model-DhqoS6ds.d.mts +0 -8
  78. package/dist/group.component-Cq1YYbfJ.d.mts +0 -285
  79. package/dist/group.model-BsKFwHbt.d.mts +0 -10
  80. package/dist/header.component-BjjlpZIg.d.mts +0 -12
  81. package/dist/header.model-DN_KzUCV.d.mts +0 -7
  82. package/dist/helpers/dom.helpers.d.mts +0 -12
  83. package/dist/helpers/misc.helpers.d.mts +0 -6
  84. package/dist/helpers/style.helper.d.mts +0 -6
  85. package/dist/helpers/style.helper.mjs +0 -8
  86. package/dist/index.d.mts +0 -7
  87. package/dist/managers/column.manager.d.mts +0 -2
  88. package/dist/managers/data.manager.d.mts +0 -2
  89. package/dist/managers/data.manager.mjs +0 -222
  90. package/dist/managers/event.manager.d.mts +0 -2
  91. package/dist/managers/filter.manager.d.mts +0 -2
  92. package/dist/managers/group.manager.d.mts +0 -2
  93. package/dist/managers/group.manager.mjs +0 -73
  94. package/dist/managers/navigation.manager.d.mts +0 -2
  95. package/dist/managers/render.manager.d.mts +0 -2
  96. package/dist/managers/row.manager.d.mts +0 -2
  97. package/dist/managers/selection.manager.d.mts +0 -2
  98. package/dist/managers/sort.manager.d.mts +0 -2
  99. package/dist/managers/style.manager.d.mts +0 -2
  100. package/dist/managers/style.manager.mjs +0 -149
  101. package/dist/models/body.model.d.mts +0 -2
  102. package/dist/models/body.model.mjs +0 -1
  103. package/dist/models/column.model.d.mts +0 -2
  104. package/dist/models/column.model.mjs +0 -1
  105. package/dist/models/data.model.d.mts +0 -2
  106. package/dist/models/data.model.mjs +0 -1
  107. package/dist/models/filter.model.d.mts +0 -2
  108. package/dist/models/filter.model.mjs +0 -1
  109. package/dist/models/footer.model.d.mts +0 -2
  110. package/dist/models/footer.model.mjs +0 -1
  111. package/dist/models/group.model.d.mts +0 -2
  112. package/dist/models/group.model.mjs +0 -1
  113. package/dist/models/header.model.d.mts +0 -2
  114. package/dist/models/header.model.mjs +0 -1
  115. package/dist/models/render.model.d.mts +0 -2
  116. package/dist/models/render.model.mjs +0 -1
  117. package/dist/models/selection.model.d.mts +0 -2
  118. package/dist/models/selection.model.mjs +0 -1
  119. package/dist/models/sort.model.d.mts +0 -2
  120. package/dist/models/sort.model.mjs +0 -1
  121. package/dist/models/style.model.d.mts +0 -23
  122. package/dist/models/style.model.mjs +0 -23
  123. package/dist/models/tabela.model.d.mts +0 -2
  124. package/dist/models/tabela.model.mjs +0 -1
  125. package/dist/models/tabela.options.d.mts +0 -2
  126. package/dist/models/tabela.options.mjs +0 -1
  127. package/dist/selection.model-rwQe9fco.d.mts +0 -12
  128. package/dist/sort.model-CauImaLu.d.mts +0 -15
  129. package/dist/tabela.d.mts +0 -21
  130. package/dist/tabela.mjs +0 -126
  131. package/dist/tabela.options-RkZvfptB.d.mts +0 -14
@@ -1,8 +1,6 @@
1
- import { GroupComponent } from "../components/group.component.mjs";
2
- import { getKey } from "../helpers/misc.helpers.mjs";
1
+ import { getKey } from "../helpers/misc.helpers.js";
3
2
  import { isNullableOrWhitespace } from "@oscarpalmer/atoms/is";
4
3
  import { clamp } from "@oscarpalmer/atoms/number";
5
- //#region src/managers/navigation.manager.ts
6
4
  var NavigationManager = class {
7
5
  active;
8
6
  constructor(state) {
@@ -16,28 +14,28 @@ var NavigationManager = class {
16
14
  event.preventDefault();
17
15
  const { components, id, managers } = this.state;
18
16
  const activeDescendant = components.body.elements.group.getAttribute("aria-activedescendant");
19
- const { items } = managers.data;
20
- const { length } = items;
17
+ const { keys } = managers.data;
18
+ const { length } = keys;
21
19
  let next;
22
20
  if (isNullableOrWhitespace(activeDescendant)) next = getDefaultIndex(event.key, length);
23
- else next = getIndex(this.state, event, activeDescendant, id);
24
- if (next != null) this.setActive(items.at(next));
21
+ else next = getIndex(event, activeDescendant, id, keys);
22
+ if (next != null) this.setActive(keys.at(next));
25
23
  }
26
- setActive(item, scroll) {
27
- const { components, id, managers, options } = this.state;
28
- this.active = item;
24
+ setActive(key, scroll) {
25
+ const { components, managers, options } = this.state;
26
+ this.active = key;
29
27
  const active = components.body.elements.group.querySelectorAll("[data-active=\"true\"]");
30
28
  for (const item of active) item.setAttribute("data-active", "false");
31
- const component = item instanceof GroupComponent ? item : managers.row.get(item, false);
32
- if (component != null) {
33
- component.element?.setAttribute("data-active", "true");
34
- if (scroll ?? true) if (component.element == null) components.body.elements.group.scrollTo({
35
- top: managers.data.getIndex(item) * options.rowHeight,
29
+ const row = managers.row.get(key);
30
+ if (row != null) {
31
+ row.element?.setAttribute("data-active", "true");
32
+ if (scroll ?? true) if (row.element == null) components.body.elements.group.scrollTo({
33
+ top: managers.data.getIndex(key) * options.rowHeight,
36
34
  behavior: "smooth"
37
35
  });
38
- else component.element.scrollIntoView({ block: "nearest" });
36
+ else row.element.scrollIntoView({ block: "nearest" });
39
37
  }
40
- components.body.elements.group.setAttribute("aria-activedescendant", component == null ? "" : `tabela_${id}_${component.key}`);
38
+ components.body.elements.group.setAttribute("aria-activedescendant", row == null ? "" : `tabela_${this.state.id}_row_${key}`);
41
39
  }
42
40
  };
43
41
  function getDefaultIndex(key, max) {
@@ -48,11 +46,11 @@ function getDefaultIndex(key, max) {
48
46
  default: return 0;
49
47
  }
50
48
  }
51
- function getIndex(state, event, active, id) {
52
- const key = getKey(active.replace(`tabela_${id}_`, ""));
49
+ function getIndex(event, active, id, keys) {
50
+ const key = getKey(active.replace(`tabela_${id}_row_`, ""));
53
51
  if (key == null) return;
54
- if (absoluteKeys.has(event.key)) return event.key === "Home" ? 0 : state.managers.data.size - 1;
55
- return clamp(state.managers.data.getIndex(key) + getOffset(event.key), 0, state.managers.data.size - 1, true);
52
+ if (absoluteKeys.has(event.key)) return event.key === "Home" ? 0 : keys.length - 1;
53
+ return clamp(keys.indexOf(key) + getOffset(event.key), 0, keys.length - 1, true);
56
54
  }
57
55
  function getOffset(key) {
58
56
  switch (key) {
@@ -63,14 +61,13 @@ function getOffset(key) {
63
61
  default: return 0;
64
62
  }
65
63
  }
66
- const absoluteKeys = new Set(["End", "Home"]);
67
- const arrowKeys = new Set(["ArrowDown", "ArrowUp"]);
68
- const negativeDefaultKeys = new Set(["ArrowUp", "End"]);
69
- const pageKeys = new Set(["PageDown", "PageUp"]);
70
- const allKeys = new Set([
64
+ var absoluteKeys = new Set(["End", "Home"]);
65
+ var arrowKeys = new Set(["ArrowDown", "ArrowUp"]);
66
+ var negativeDefaultKeys = new Set(["ArrowUp", "End"]);
67
+ var pageKeys = new Set(["PageDown", "PageUp"]);
68
+ var allKeys = new Set([
71
69
  ...absoluteKeys,
72
70
  ...arrowKeys,
73
71
  ...pageKeys
74
72
  ]);
75
- //#endregion
76
73
  export { NavigationManager };
@@ -1,20 +1,17 @@
1
- import { GroupComponent, renderGroup } from "../components/group.component.mjs";
2
- import { removeRow, renderRow } from "../components/row.component.mjs";
1
+ import { GroupComponent, renderGroup } from "../components/group.component.js";
2
+ import { removeRow, renderRow } from "../components/row.component.js";
3
3
  import { on } from "@oscarpalmer/toretto/event";
4
- //#region src/managers/render.manager.ts
5
4
  function getRange(state, down) {
6
- const { element, managers, options } = state;
7
- const { clientHeight, scrollTop } = element;
8
- const { items } = managers.data;
9
- const firstIndex = Math.floor(scrollTop / options.rowHeight);
10
- const lastIndex = items.length - managers.group.collapsed.size - 1;
11
- const last = Math.min(lastIndex, Math.ceil((scrollTop + clientHeight) / options.rowHeight) - 1);
12
- const visible = clientHeight / options.rowHeight;
13
- const before = Math.ceil(visible) * (down ? 1 : 2);
14
- const after = Math.ceil(visible) * (down ? 2 : 1);
15
- const start = Math.max(0, firstIndex - before);
5
+ const { components, managers, options } = state;
6
+ const { clientHeight, scrollTop } = components.body.elements.group;
7
+ const { keys } = managers.data;
8
+ const first = Math.floor(scrollTop / options.rowHeight);
9
+ const last = Math.min(keys.length - managers.group.collapsed.size - 1, Math.ceil((scrollTop + clientHeight) / options.rowHeight) - 1);
10
+ const before = Math.ceil(clientHeight / options.rowHeight) * (down ? 1 : 2);
11
+ const after = Math.ceil(clientHeight / options.rowHeight) * (down ? 2 : 1);
12
+ const start = Math.max(0, first - before);
16
13
  return {
17
- end: Math.min(lastIndex, last + after),
14
+ end: Math.min(keys.length - managers.group.collapsed.size - 1, last + after),
18
15
  start
19
16
  };
20
17
  }
@@ -22,7 +19,7 @@ function onScroll() {
22
19
  const { state } = this;
23
20
  if (!state.active) {
24
21
  requestAnimationFrame(() => {
25
- const top = state.element.scrollTop;
22
+ const top = state.components.body.elements.group.scrollTop;
26
23
  this.update(top > state.top);
27
24
  state.active = false;
28
25
  state.top = top;
@@ -40,7 +37,7 @@ var RenderManager = class {
40
37
  state;
41
38
  visible = /* @__PURE__ */ new Map();
42
39
  constructor(state) {
43
- this.listener = on(state.element, "scroll", onScroll.bind(this));
40
+ this.listener = on(state.components.body.elements.group, "scroll", onScroll.bind(this));
44
41
  this.state = {
45
42
  ...state,
46
43
  active: false,
@@ -51,11 +48,6 @@ var RenderManager = class {
51
48
  const { listener, pool, visible } = this;
52
49
  listener();
53
50
  visible.clear();
54
- const cells = Object.values(pool.cells).flat();
55
- let { length } = cells;
56
- for (let index = 0; index < length; index += 1) cells[index].remove();
57
- length = pool.rows.length;
58
- for (let index = 0; index < length; index += 1) pool.rows[index].remove();
59
51
  pool.cells = {};
60
52
  pool.rows = [];
61
53
  this.fragment = void 0;
@@ -70,7 +62,7 @@ var RenderManager = class {
70
62
  for (let index = 0; index < length; index += 1) delete pool.cells[fields[index]];
71
63
  for (const [, key] of visible) {
72
64
  if (key instanceof GroupComponent) continue;
73
- const row = state.managers.row.get(key, false);
65
+ const row = state.managers.row.get(key);
74
66
  if (row == null || row.element == null) continue;
75
67
  for (let index = 0; index < length; index += 1) {
76
68
  row.cells[fields[index]].innerHTML = "";
@@ -100,38 +92,38 @@ var RenderManager = class {
100
92
  }
101
93
  continue;
102
94
  }
103
- const row = managers.row.get(key, false);
95
+ const row = managers.row.get(key);
104
96
  if (remove || row == null || !indices.has(index) || managers.group.collapsed.has(key)) {
105
97
  visible.delete(index);
106
98
  if (row != null) removeRow(pool, row);
107
99
  }
108
100
  }
109
101
  const fragment = this.getFragment();
110
- const { items } = managers.data;
102
+ const { keys } = managers.data;
111
103
  let count = 0;
112
104
  let offset = 0;
113
105
  for (let index = range.start; index <= range.end + offset; index += 1) {
114
106
  if (visible.has(index)) continue;
115
- const item = items[index];
116
- if (item instanceof GroupComponent) {
107
+ const key = keys[index];
108
+ if (key instanceof GroupComponent) {
117
109
  count += 1;
118
- renderGroup(state, item);
119
- visible.set(index, item);
120
- if (item.element != null) {
121
- item.element.style.transform = `translateY(${(index - offset) * options.rowHeight}px)`;
122
- fragment.append(item.element);
110
+ renderGroup(state, key);
111
+ visible.set(index, key);
112
+ if (key.element != null) {
113
+ key.element.style.transform = `translateY(${(index - offset) * options.rowHeight}px)`;
114
+ fragment.append(key.element);
123
115
  }
124
116
  continue;
125
117
  }
126
- const row = managers.row.get(item, true);
118
+ const row = managers.row.get(key);
127
119
  if (row == null) continue;
128
- if (managers.group.collapsed.has(item)) {
120
+ if (managers.group.collapsed.has(key)) {
129
121
  offset += 1;
130
122
  continue;
131
123
  }
132
124
  count += 1;
133
125
  renderRow(state, row);
134
- visible.set(index, item);
126
+ visible.set(index, key);
135
127
  if (row.element != null) {
136
128
  row.element.style.transform = `translateY(${(index - offset) * options.rowHeight}px)`;
137
129
  fragment.append(row.element);
@@ -140,5 +132,4 @@ var RenderManager = class {
140
132
  if (count > 0) components.body.elements.group[down ? "append" : "prepend"](fragment);
141
133
  }
142
134
  };
143
- //#endregion
144
135
  export { RenderManager };
@@ -1,25 +1,20 @@
1
- import { RowComponent, removeRow, renderRow } from "../components/row.component.mjs";
2
- //#region src/managers/row.manager.ts
1
+ import { RowComponent, removeRow, renderRow } from "../components/row.component.js";
3
2
  var RowManager = class {
4
3
  components = /* @__PURE__ */ new Map();
5
4
  constructor(state) {
6
5
  this.state = state;
7
6
  }
8
- clear() {
9
- const { components } = this;
10
- const rows = [...components.values()];
11
- const { length } = rows;
12
- for (let index = 0; index < length; index += 1) this.removeRow(rows[index]);
13
- components.clear();
14
- }
15
7
  destroy() {
16
- this.clear();
8
+ const components = [...this.components.values()];
9
+ const { length } = components;
10
+ for (let index = 0; index < length; index += 1) removeRow(this.state.managers.render.pool, components[index]);
11
+ this.components.clear();
17
12
  this.components = void 0;
18
13
  this.state = void 0;
19
14
  }
20
- get(key, create) {
15
+ get(key) {
21
16
  let row = this.components.get(key);
22
- if (row == null && create) {
17
+ if (row == null) {
23
18
  row = new RowComponent(key);
24
19
  this.components.set(key, row);
25
20
  }
@@ -30,16 +25,14 @@ var RowManager = class {
30
25
  }
31
26
  remove(key) {
32
27
  const row = this.components.get(key);
33
- if (row != null) this.removeRow(row);
34
- }
35
- removeRow(row) {
36
- if (row.element != null) removeRow(this.state.managers.render.pool, row);
37
- this.components.delete(row.key);
28
+ if (row != null) {
29
+ removeRow(this.state.managers.render.pool, row);
30
+ this.components.delete(key);
31
+ }
38
32
  }
39
33
  update(key) {
40
34
  const row = this.components.get(key);
41
35
  if (row != null) renderRow(this.state, row);
42
36
  }
43
37
  };
44
- //#endregion
45
38
  export { RowManager };
@@ -1,13 +1,11 @@
1
- import { CSS_TABELA_ROW_BODY, CSS_TABELA_ROW_SELECTED, CSS_TABELA_SELECTION } from "../models/style.model.mjs";
2
- import { createElement } from "../helpers/dom.helpers.mjs";
3
- import { GroupComponent } from "../components/group.component.mjs";
4
- import { getKey } from "../helpers/misc.helpers.mjs";
5
- import { preventSelection } from "../helpers/style.helper.mjs";
1
+ import { createElement } from "../helpers/dom.helpers.js";
2
+ import { GroupComponent } from "../components/group.component.js";
3
+ import { getKey } from "../helpers/misc.helpers.js";
4
+ import { dragStyling } from "../helpers/style.helper.js";
6
5
  import { setAttribute } from "@oscarpalmer/toretto/attribute";
7
6
  import { isKey } from "@oscarpalmer/atoms/is";
8
7
  import { getPosition, on } from "@oscarpalmer/toretto/event";
9
8
  import { findAncestor } from "@oscarpalmer/toretto/find";
10
- //#region src/managers/selection.manager.ts
11
9
  var SelectionManager = class {
12
10
  handlers = Object.freeze({
13
11
  add: (keys) => this.add(keys),
@@ -71,15 +69,15 @@ var SelectionManager = class {
71
69
  const fromKey = keyed ? from : getKey(from.getAttribute("data-key"));
72
70
  const toKey = keyed ? to : getKey(to.getAttribute("data-key"));
73
71
  if (fromKey === toKey) return;
74
- const { items } = state.managers.data;
72
+ const { keys } = state.managers.data;
75
73
  const fromIndex = state.managers.data.getIndex(fromKey);
76
74
  const toIndex = state.managers.data.getIndex(toKey);
77
75
  if (fromIndex === -1 || toIndex === -1) return;
78
76
  const [start, end] = fromIndex < toIndex ? [fromIndex, toIndex] : [toIndex, fromIndex];
79
77
  const selected = [];
80
78
  for (let index = start; index <= end; index += 1) {
81
- const item = items[index];
82
- if (!(item instanceof GroupComponent)) selected.push(item);
79
+ const key = keys[index];
80
+ if (!(key instanceof GroupComponent)) selected.push(key);
83
81
  }
84
82
  if (keyed) this.add(selected);
85
83
  else this.set(selected);
@@ -105,12 +103,11 @@ var SelectionManager = class {
105
103
  }
106
104
  toggle() {
107
105
  const { items, state } = this;
108
- const data = state.managers.data.items;
109
- if (items.size === data.length - state.managers.group.items.length) this.clear();
110
- else this.set(data.filter((key) => !(key instanceof GroupComponent)));
106
+ const { keys } = state.managers.data;
107
+ if (items.size === keys.length - state.managers.group.items.length) this.clear();
108
+ else this.set(keys.filter((key) => !(key instanceof GroupComponent)));
111
109
  }
112
110
  update(removed) {
113
- const { state } = this;
114
111
  const items = [...removed.map((key) => ({
115
112
  key,
116
113
  removed: true
@@ -118,28 +115,28 @@ var SelectionManager = class {
118
115
  key,
119
116
  removed: false
120
117
  }))];
121
- let { length } = items;
118
+ const { length } = items;
122
119
  for (let index = 0; index < length; index += 1) {
123
120
  const { key, removed } = items[index];
124
- const element = state.managers.row.get(key, false)?.element;
125
- if (element == null) continue;
126
- setAttribute(element, "aria-selected", String(!removed));
127
- if (removed) element.classList.remove(CSS_TABELA_ROW_SELECTED);
128
- else element.classList.add(CSS_TABELA_ROW_SELECTED);
121
+ const row = this.state.managers.row.get(key);
122
+ if (row == null || row.element == null) continue;
123
+ setAttribute(row.element, "aria-selected", String(!removed));
124
+ if (removed) row.element.classList.remove("tabela__row--selected");
125
+ else row.element.classList.add("tabela__row--selected");
129
126
  }
130
127
  }
131
128
  };
132
129
  function getPlaceholder() {
133
- placeholder ??= createElement("div", { className: CSS_TABELA_SELECTION }, {}, {});
130
+ placeholder ??= createElement("div", { className: "tabela__selection--placeholder" }, {}, {});
134
131
  return placeholder;
135
132
  }
136
133
  function onMouseDown(event) {
137
134
  if (shifted) {
138
- const row = findAncestor(event.target, `.${CSS_TABELA_ROW_BODY}`);
135
+ const row = findAncestor(event.target, ".tabela__row--body");
139
136
  if (!(row instanceof HTMLElement)) return;
140
137
  startElement = row;
141
138
  startPosition = getPosition(event);
142
- preventSelection.set();
139
+ dragStyling.set();
143
140
  }
144
141
  }
145
142
  function onMouseMove(event) {
@@ -160,14 +157,14 @@ function onMouseUp(event) {
160
157
  if (startElement == null) return;
161
158
  if (!event.shiftKey) {
162
159
  shifted = false;
163
- preventSelection.remove();
160
+ dragStyling.remove();
164
161
  }
165
162
  getPlaceholder().remove();
166
163
  const row = findAncestor(event.target, ".tabela__row--body");
167
164
  if (row instanceof HTMLElement) {
168
165
  endElement = row;
169
- const endTable = findAncestor(endElement, ".tabela__table");
170
- const startTable = findAncestor(startElement, ".tabela__table");
166
+ const endTable = findAncestor(endElement, ".tabela");
167
+ const startTable = findAncestor(startElement, ".tabela");
171
168
  if (startTable != null && startTable === endTable) mapped.get(startTable)?.range(startElement, endElement);
172
169
  }
173
170
  endElement = void 0;
@@ -183,16 +180,15 @@ function onShiftDown(event) {
183
180
  function onShiftUp(event) {
184
181
  onShift(event, false);
185
182
  }
186
- const mapped = /* @__PURE__ */ new WeakMap();
187
- let shifted = false;
188
- let endElement;
189
- let placeholder;
190
- let startPosition;
191
- let startElement;
183
+ var mapped = /* @__PURE__ */ new WeakMap();
184
+ var shifted = false;
185
+ var endElement;
186
+ var placeholder;
187
+ var startPosition;
188
+ var startElement;
192
189
  on(document, "keydown", onShiftDown);
193
190
  on(document, "keyup", onShiftUp);
194
191
  on(document, "mousedown", onMouseDown);
195
192
  on(document, "mousemove", onMouseMove);
196
193
  on(document, "mouseup", onMouseUp);
197
- //#endregion
198
194
  export { SelectionManager };
@@ -1,9 +1,7 @@
1
- import { GroupComponent } from "../components/group.component.mjs";
1
+ import { GroupComponent } from "../components/group.component.js";
2
2
  import { setAttribute, setAttributes } from "@oscarpalmer/toretto/attribute";
3
3
  import { sort } from "@oscarpalmer/atoms/array";
4
- import { getValue } from "@oscarpalmer/atoms/value/handle";
5
4
  import { compare } from "@oscarpalmer/atoms/value/compare";
6
- //#region src/managers/sort.manager.ts
7
5
  var SortManager = class {
8
6
  handlers = Object.freeze({
9
7
  add: (field, direction) => this.add(field, direction),
@@ -79,7 +77,7 @@ var SortManager = class {
79
77
  });
80
78
  setAttribute(column.elements.sorter, "data-sort-position", sorterIndex > -1 && items.length > 1 ? sorterIndex + 1 : void 0);
81
79
  }
82
- state.managers.data.state.items.active = items.length === 0 ? void 0 : getSortedItems(state, items);
80
+ state.managers.data.values.keys.active = items.length === 0 ? void 0 : getSortedKeys(state, items);
83
81
  state.managers.render.update(true, true);
84
82
  }
85
83
  toggle(event, field, direction) {
@@ -96,16 +94,16 @@ var SortManager = class {
96
94
  }
97
95
  }
98
96
  };
99
- function getSortedItems(state, sorters) {
100
- const data = state.managers.data.state.items.active?.map((key) => key instanceof GroupComponent ? key : state.managers.data.state.values.mapped.get(key)) ?? state.managers.data.state.values.array.slice();
101
- if (!state.managers.group.enabled) return sort(data, sorters).map((item) => getValue(item, state.key));
102
- return sortWithGroups(state, data, sorters).map((item) => item instanceof GroupComponent ? item : getValue(item, state.key));
97
+ function getSortedKeys(state, sorters) {
98
+ const data = state.managers.data.values.keys.active?.map((key) => key instanceof GroupComponent ? key : state.managers.data.values.objects.mapped.get(key)) ?? state.managers.data.values.objects.array.slice();
99
+ if (!state.managers.group.enabled) return sort(data, sorters).map((item) => item[state.key]);
100
+ return sortWithGroups(state, data, sorters).map((item) => item instanceof GroupComponent ? item : item[state.key]);
103
101
  }
104
102
  function sortWithGroups(state, data, sorters) {
105
103
  const { length } = sorters;
106
104
  return data.sort((first, second) => {
107
- const firstValue = first instanceof GroupComponent ? first.value.stringified : getValue(first, state.managers.group.field);
108
- const secondValue = second instanceof GroupComponent ? second.value.stringified : getValue(second, state.managers.group.field);
105
+ const firstValue = first instanceof GroupComponent ? first.value : first[state.managers.group.field];
106
+ const secondValue = second instanceof GroupComponent ? second.value : second[state.managers.group.field];
109
107
  const firstOrder = state.managers.group.order[firstValue];
110
108
  const secondOrder = state.managers.group.order[secondValue];
111
109
  const groupComparison = compare(firstOrder, secondOrder);
@@ -115,11 +113,10 @@ function sortWithGroups(state, data, sorters) {
115
113
  if (firstIsGroup || secondIsGroup) return firstIsGroup && secondIsGroup ? 0 : firstIsGroup ? -1 : 1;
116
114
  for (let index = 0; index < length; index += 1) {
117
115
  const sorter = sorters[index];
118
- const comparison = compare(getValue(first, sorter.key), getValue(second, sorter.key));
116
+ const comparison = compare(first[sorter.key], second[sorter.key]);
119
117
  if (comparison !== 0) return comparison * (sorter.direction === "ascending" ? 1 : -1);
120
118
  }
121
119
  return 0;
122
120
  });
123
121
  }
124
- //#endregion
125
122
  export { SortManager, sortWithGroups };
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