stk-table-vue 0.11.12 → 0.11.13

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 (82) hide show
  1. package/README.md +173 -173
  2. package/lib/index-BzpbBYPO.js +166 -166
  3. package/lib/src/StkTable/StkTable.vue.d.ts +840 -840
  4. package/lib/src/StkTable/custom-cells/EditableCell/EditableCell.vue.d.ts +18 -18
  5. package/lib/src/StkTable/custom-cells/EditableCell/createEditableCell.d.ts +33 -33
  6. package/lib/src/StkTable/custom-cells/EditableCell/index.d.ts +3 -3
  7. package/lib/src/StkTable/custom-cells/Filter/Dropdown/index.d.ts +26 -26
  8. package/lib/src/StkTable/custom-cells/Filter/Dropdown/index.vue.d.ts +16 -16
  9. package/lib/src/StkTable/custom-cells/Filter/Filter.vue.d.ts +35 -35
  10. package/lib/src/StkTable/custom-cells/Filter/createFilter.d.ts +23 -23
  11. package/lib/src/StkTable/custom-cells/Filter/index.d.ts +2 -2
  12. package/lib/src/StkTable/custom-cells/Filter/types.d.ts +38 -38
  13. package/lib/src/StkTable/features/const.d.ts +1 -1
  14. package/lib/src/StkTable/features/index.d.ts +1 -1
  15. package/lib/src/StkTable/features/useAreaSelection.d.ts +25 -25
  16. package/lib/src/StkTable/index.d.ts +9 -9
  17. package/lib/src/StkTable/registerFeature.d.ts +9 -9
  18. package/lib/src/StkTable/types/index.d.ts +416 -416
  19. package/lib/src/StkTable/useAutoResize.d.ts +10 -10
  20. package/lib/src/StkTable/useColResize.d.ts +5 -5
  21. package/lib/src/StkTable/useFixedCol.d.ts +9 -9
  22. package/lib/src/StkTable/useFixedStyle.d.ts +16 -16
  23. package/lib/src/StkTable/useGetFixedColPosition.d.ts +9 -9
  24. package/lib/src/StkTable/useHighlight.d.ts +8 -8
  25. package/lib/src/StkTable/useKeyboardArrowScroll.d.ts +10 -10
  26. package/lib/src/StkTable/useMaxRowSpan.d.ts +4 -4
  27. package/lib/src/StkTable/useMergeCells.d.ts +7 -7
  28. package/lib/src/StkTable/useRowExpand.d.ts +9 -9
  29. package/lib/src/StkTable/useScrollRowByRow.d.ts +3 -3
  30. package/lib/src/StkTable/useScrollbar.d.ts +45 -45
  31. package/lib/src/StkTable/useSorter.d.ts +38 -38
  32. package/lib/src/StkTable/useTableColumns.d.ts +8 -8
  33. package/lib/src/StkTable/useThDrag.d.ts +7 -7
  34. package/lib/src/StkTable/useTrDrag.d.ts +7 -7
  35. package/lib/src/StkTable/useTree.d.ts +10 -10
  36. package/lib/src/StkTable/useVirtualScroll.d.ts +78 -78
  37. package/lib/src/StkTable/utils/index.d.ts +73 -71
  38. package/lib/stk-table-vue.js +4507 -4490
  39. package/lib/style.css +686 -674
  40. package/lib/test/defaultSort.test.d.ts +1 -1
  41. package/lib/test/setSorter.test.d.ts +1 -1
  42. package/package.json +85 -85
  43. package/src/StkTable/StkTable.vue +1815 -1799
  44. package/src/StkTable/components/DragHandle.vue +9 -9
  45. package/src/StkTable/components/SortIcon.vue +6 -6
  46. package/src/StkTable/components/TreeNodeCell.vue +19 -19
  47. package/src/StkTable/components/TriangleIcon.vue +3 -3
  48. package/src/StkTable/const.ts +50 -50
  49. package/src/StkTable/custom-cells/Filter/createFilter.ts +1 -1
  50. package/src/StkTable/features/const.ts +1 -1
  51. package/src/StkTable/features/index.ts +1 -1
  52. package/src/StkTable/features/useAreaSelection.ts +951 -951
  53. package/src/StkTable/index.ts +12 -12
  54. package/src/StkTable/registerFeature.ts +40 -40
  55. package/src/StkTable/style.less +765 -749
  56. package/src/StkTable/types/highlightDimOptions.ts +26 -26
  57. package/src/StkTable/types/index.ts +437 -437
  58. package/src/StkTable/useAutoResize.ts +87 -87
  59. package/src/StkTable/useColResize.ts +202 -202
  60. package/src/StkTable/useFixedCol.ts +142 -142
  61. package/src/StkTable/useFixedStyle.ts +75 -75
  62. package/src/StkTable/useGetFixedColPosition.ts +63 -63
  63. package/src/StkTable/useHighlight.ts +253 -253
  64. package/src/StkTable/useKeyboardArrowScroll.ts +114 -114
  65. package/src/StkTable/useMaxRowSpan.ts +50 -50
  66. package/src/StkTable/useMergeCells.ts +138 -138
  67. package/src/StkTable/useRowExpand.ts +81 -81
  68. package/src/StkTable/useScrollRowByRow.ts +96 -96
  69. package/src/StkTable/useScrollbar.ts +177 -169
  70. package/src/StkTable/useSorter.ts +259 -259
  71. package/src/StkTable/useTableColumns.ts +129 -129
  72. package/src/StkTable/useThDrag.ts +94 -96
  73. package/src/StkTable/useTrDrag.ts +100 -100
  74. package/src/StkTable/useTree.ts +152 -152
  75. package/src/StkTable/useVirtualScroll.ts +554 -554
  76. package/src/StkTable/useWheeling.ts +23 -23
  77. package/src/StkTable/utils/constRefUtils.ts +29 -29
  78. package/src/StkTable/utils/index.ts +331 -324
  79. package/src/StkTable/utils/useTriggerRef.ts +33 -33
  80. package/src/VirtualTree.vue +622 -622
  81. package/src/VirtualTreeSelect.vue +367 -367
  82. package/src/vite-env.d.ts +10 -10
@@ -1,166 +1,166 @@
1
- /**
2
- * name: stk-table-vue
3
- * version: v0.11.12
4
- * description: High performance realtime virtual table for vue3 and vue2.7
5
- * author: japlus
6
- * homepage: https://ja-plus.github.io/stk-table-vue/
7
- * license: MIT
8
- */
9
- import { defineComponent, ref, reactive, h, onMounted, onUnmounted, createElementBlock, openBlock, withModifiers, normalizeStyle, normalizeClass, createVNode, createElementVNode, nextTick } from "vue";
10
- import { StkTable as _sfc_main$1 } from "./stk-table-vue.js";
11
- const DROPDOWN_DEFAULT_WIDTH = 300;
12
- const DROPDOWN_DEFAULT_HEIGHT = 400;
13
- const PADDING = 6;
14
- const _sfc_main = /* @__PURE__ */ defineComponent({
15
- __name: "index",
16
- setup(__props, { expose: __expose }) {
17
- const theme = ref("light");
18
- const checkedTempValueSet = reactive(/* @__PURE__ */ new Set());
19
- const columns = ref([
20
- {
21
- title: "",
22
- dataIndex: "value",
23
- width: 30,
24
- className: "stk-filter-dropdown-checkbox",
25
- customCell: ({ row }) => h("input", {
26
- type: "checkbox",
27
- checked: checkedTempValueSet.has(row.value)
28
- })
29
- },
30
- { title: "", dataIndex: "label", customCell: ({ row }) => h("span", [row.label]) }
31
- ]);
32
- const visible = ref(false);
33
- const position = ref({ x: 0, y: 0 });
34
- const options = ref([]);
35
- const dropdownEl = ref();
36
- onMounted(() => {
37
- document.addEventListener("click", handleClickOutside);
38
- });
39
- onUnmounted(() => {
40
- document.removeEventListener("click", handleClickOutside);
41
- });
42
- let onConfirmFn;
43
- function getDropdownSize() {
44
- if (!dropdownEl.value) {
45
- return [DROPDOWN_DEFAULT_WIDTH, DROPDOWN_DEFAULT_HEIGHT];
46
- }
47
- const rect = dropdownEl.value.getBoundingClientRect();
48
- return [rect.width || DROPDOWN_DEFAULT_WIDTH, rect.height || DROPDOWN_DEFAULT_HEIGHT];
49
- }
50
- function calculatePosition(docPos) {
51
- const scrollTop = window.pageYOffset || document.documentElement.scrollTop;
52
- const scrollLeft = window.pageXOffset || document.documentElement.scrollLeft;
53
- const viewportWidth = document.documentElement.clientWidth;
54
- const viewportHeight = document.documentElement.clientHeight;
55
- const [dropdownWidth, dropdownHeight] = getDropdownSize();
56
- let finalX = docPos.x;
57
- let finalY = docPos.y;
58
- const relativeX = docPos.x - scrollLeft;
59
- if (relativeX + dropdownWidth > viewportWidth - PADDING) {
60
- finalX = viewportWidth - dropdownWidth - PADDING + scrollLeft;
61
- }
62
- const relativeY = docPos.y - scrollTop;
63
- if (relativeY + dropdownHeight > viewportHeight - PADDING) {
64
- const triggerHeight = docPos.height || 30;
65
- if (relativeY - triggerHeight >= dropdownHeight + PADDING) {
66
- finalY = docPos.y - triggerHeight - dropdownHeight - PADDING;
67
- } else {
68
- finalY = PADDING + scrollTop;
69
- }
70
- }
71
- finalX = Math.max(PADDING + scrollLeft, finalX);
72
- finalY = Math.max(PADDING + scrollTop, finalY);
73
- return { x: finalX, y: finalY };
74
- }
75
- async function show(pos, opt, onConfirm) {
76
- if (dropdownEl.value) {
77
- dropdownEl.value.style.visibility = "hidden";
78
- }
79
- visible.value = true;
80
- options.value = opt || [];
81
- initChecked();
82
- onConfirmFn = onConfirm;
83
- await nextTick();
84
- position.value = calculatePosition(pos);
85
- if (dropdownEl.value) {
86
- dropdownEl.value.style.visibility = "visible";
87
- }
88
- }
89
- async function handleClickOutside(e) {
90
- var _a;
91
- if (!visible.value || ((_a = dropdownEl.value) == null ? void 0 : _a.contains(e.target))) return;
92
- hide();
93
- }
94
- function initChecked() {
95
- options.value.forEach((opt) => {
96
- if (opt.selected) {
97
- checkedTempValueSet.add(opt.value);
98
- }
99
- });
100
- }
101
- function updateChecked(checked, row) {
102
- if (checked) {
103
- checkedTempValueSet.add(row.value);
104
- } else {
105
- checkedTempValueSet.delete(row.value);
106
- }
107
- }
108
- function confirm() {
109
- options.value.forEach((opt) => opt.selected = checkedTempValueSet.has(opt.value));
110
- onConfirmFn(Array.from(checkedTempValueSet));
111
- hide();
112
- }
113
- function hide() {
114
- visible.value = false;
115
- options.value = [];
116
- checkedTempValueSet.clear();
117
- }
118
- function handleRowClick(e, row) {
119
- const selected = checkedTempValueSet.has(row.value);
120
- updateChecked(!selected, row);
121
- }
122
- function setTheme(t) {
123
- theme.value = t;
124
- }
125
- function handleClear() {
126
- checkedTempValueSet.clear();
127
- confirm();
128
- }
129
- __expose({ visible, show, hide, setTheme });
130
- return (_ctx, _cache) => {
131
- return openBlock(), createElementBlock("div", {
132
- ref_key: "dropdownEl",
133
- ref: dropdownEl,
134
- class: normalizeClass(["stk-filter-dropdown", [`stk-filter-dropdown--${theme.value}`]]),
135
- style: normalizeStyle({
136
- top: position.value.y + "px",
137
- left: position.value.x + "px",
138
- display: visible.value ? void 0 : "none"
139
- }),
140
- onClick: _cache[0] || (_cache[0] = withModifiers(() => {
141
- }, ["stop"]))
142
- }, [
143
- createVNode(_sfc_main$1, {
144
- "row-key": "id",
145
- headless: "",
146
- virtual: "",
147
- "no-data-full": "",
148
- theme: theme.value,
149
- "row-active": false,
150
- "row-height": 20,
151
- bordered: false,
152
- columns: columns.value,
153
- "data-source": options.value,
154
- onRowClick: handleRowClick
155
- }, null, 8, ["theme", "columns", "data-source"]),
156
- createElementVNode("footer", null, [
157
- createElementVNode("button", { onClick: handleClear }, "↺"),
158
- createElementVNode("button", { onClick: confirm }, "✓")
159
- ])
160
- ], 6);
161
- };
162
- }
163
- });
164
- export {
165
- _sfc_main as default
166
- };
1
+ /**
2
+ * name: stk-table-vue
3
+ * version: v0.11.12
4
+ * description: High performance realtime virtual table for vue3 and vue2.7
5
+ * author: japlus
6
+ * homepage: https://ja-plus.github.io/stk-table-vue/
7
+ * license: MIT
8
+ */
9
+ import { defineComponent, ref, reactive, h, onMounted, onUnmounted, createElementBlock, openBlock, withModifiers, normalizeStyle, normalizeClass, createVNode, createElementVNode, nextTick } from "vue";
10
+ import { StkTable as _sfc_main$1 } from "./stk-table-vue.js";
11
+ const DROPDOWN_DEFAULT_WIDTH = 300;
12
+ const DROPDOWN_DEFAULT_HEIGHT = 400;
13
+ const PADDING = 6;
14
+ const _sfc_main = /* @__PURE__ */ defineComponent({
15
+ __name: "index",
16
+ setup(__props, { expose: __expose }) {
17
+ const theme = ref("light");
18
+ const checkedTempValueSet = reactive(/* @__PURE__ */ new Set());
19
+ const columns = ref([
20
+ {
21
+ title: "",
22
+ dataIndex: "value",
23
+ width: 30,
24
+ className: "stk-filter-dropdown-checkbox",
25
+ customCell: ({ row }) => h("input", {
26
+ type: "checkbox",
27
+ checked: checkedTempValueSet.has(row.value)
28
+ })
29
+ },
30
+ { title: "", dataIndex: "label", customCell: ({ row }) => h("span", [row.label]) }
31
+ ]);
32
+ const visible = ref(false);
33
+ const position = ref({ x: 0, y: 0 });
34
+ const options = ref([]);
35
+ const dropdownEl = ref();
36
+ onMounted(() => {
37
+ document.addEventListener("click", handleClickOutside);
38
+ });
39
+ onUnmounted(() => {
40
+ document.removeEventListener("click", handleClickOutside);
41
+ });
42
+ let onConfirmFn;
43
+ function getDropdownSize() {
44
+ if (!dropdownEl.value) {
45
+ return [DROPDOWN_DEFAULT_WIDTH, DROPDOWN_DEFAULT_HEIGHT];
46
+ }
47
+ const rect = dropdownEl.value.getBoundingClientRect();
48
+ return [rect.width || DROPDOWN_DEFAULT_WIDTH, rect.height || DROPDOWN_DEFAULT_HEIGHT];
49
+ }
50
+ function calculatePosition(docPos) {
51
+ const scrollTop = window.pageYOffset || document.documentElement.scrollTop;
52
+ const scrollLeft = window.pageXOffset || document.documentElement.scrollLeft;
53
+ const viewportWidth = document.documentElement.clientWidth;
54
+ const viewportHeight = document.documentElement.clientHeight;
55
+ const [dropdownWidth, dropdownHeight] = getDropdownSize();
56
+ let finalX = docPos.x;
57
+ let finalY = docPos.y;
58
+ const relativeX = docPos.x - scrollLeft;
59
+ if (relativeX + dropdownWidth > viewportWidth - PADDING) {
60
+ finalX = viewportWidth - dropdownWidth - PADDING + scrollLeft;
61
+ }
62
+ const relativeY = docPos.y - scrollTop;
63
+ if (relativeY + dropdownHeight > viewportHeight - PADDING) {
64
+ const triggerHeight = docPos.height || 30;
65
+ if (relativeY - triggerHeight >= dropdownHeight + PADDING) {
66
+ finalY = docPos.y - triggerHeight - dropdownHeight - PADDING;
67
+ } else {
68
+ finalY = PADDING + scrollTop;
69
+ }
70
+ }
71
+ finalX = Math.max(PADDING + scrollLeft, finalX);
72
+ finalY = Math.max(PADDING + scrollTop, finalY);
73
+ return { x: finalX, y: finalY };
74
+ }
75
+ async function show(pos, opt, onConfirm) {
76
+ if (dropdownEl.value) {
77
+ dropdownEl.value.style.visibility = "hidden";
78
+ }
79
+ visible.value = true;
80
+ options.value = opt || [];
81
+ initChecked();
82
+ onConfirmFn = onConfirm;
83
+ await nextTick();
84
+ position.value = calculatePosition(pos);
85
+ if (dropdownEl.value) {
86
+ dropdownEl.value.style.visibility = "visible";
87
+ }
88
+ }
89
+ async function handleClickOutside(e) {
90
+ var _a;
91
+ if (!visible.value || ((_a = dropdownEl.value) == null ? void 0 : _a.contains(e.target))) return;
92
+ hide();
93
+ }
94
+ function initChecked() {
95
+ options.value.forEach((opt) => {
96
+ if (opt.selected) {
97
+ checkedTempValueSet.add(opt.value);
98
+ }
99
+ });
100
+ }
101
+ function updateChecked(checked, row) {
102
+ if (checked) {
103
+ checkedTempValueSet.add(row.value);
104
+ } else {
105
+ checkedTempValueSet.delete(row.value);
106
+ }
107
+ }
108
+ function confirm() {
109
+ options.value.forEach((opt) => opt.selected = checkedTempValueSet.has(opt.value));
110
+ onConfirmFn(Array.from(checkedTempValueSet));
111
+ hide();
112
+ }
113
+ function hide() {
114
+ visible.value = false;
115
+ options.value = [];
116
+ checkedTempValueSet.clear();
117
+ }
118
+ function handleRowClick(e, row) {
119
+ const selected = checkedTempValueSet.has(row.value);
120
+ updateChecked(!selected, row);
121
+ }
122
+ function setTheme(t) {
123
+ theme.value = t;
124
+ }
125
+ function handleClear() {
126
+ checkedTempValueSet.clear();
127
+ confirm();
128
+ }
129
+ __expose({ visible, show, hide, setTheme });
130
+ return (_ctx, _cache) => {
131
+ return openBlock(), createElementBlock("div", {
132
+ ref_key: "dropdownEl",
133
+ ref: dropdownEl,
134
+ class: normalizeClass(["stk-filter-dropdown", [`stk-filter-dropdown--${theme.value}`]]),
135
+ style: normalizeStyle({
136
+ top: position.value.y + "px",
137
+ left: position.value.x + "px",
138
+ display: visible.value ? void 0 : "none"
139
+ }),
140
+ onClick: _cache[0] || (_cache[0] = withModifiers(() => {
141
+ }, ["stop"]))
142
+ }, [
143
+ createVNode(_sfc_main$1, {
144
+ "row-key": "id",
145
+ headless: "",
146
+ virtual: "",
147
+ "no-data-full": "",
148
+ theme: theme.value,
149
+ "row-active": false,
150
+ "row-height": 20,
151
+ bordered: false,
152
+ columns: columns.value,
153
+ "data-source": options.value,
154
+ onRowClick: handleRowClick
155
+ }, null, 8, ["theme", "columns", "data-source"]),
156
+ createElementVNode("footer", null, [
157
+ createElementVNode("button", { onClick: handleClear }, "↺"),
158
+ createElementVNode("button", { onClick: confirm }, "✓")
159
+ ])
160
+ ], 6);
161
+ };
162
+ }
163
+ });
164
+ export {
165
+ _sfc_main as default
166
+ };