stk-table-vue 1.0.0-beta.1 → 1.0.0-beta.2

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