jky-component-lib 0.0.64 → 0.0.67
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/es/components.d.ts +1 -0
- package/dist/es/components.js +4 -1
- package/dist/es/form/Form.vue.d.ts +10 -6
- package/dist/es/form/Form.vue.js +131 -81
- package/dist/es/form/FormItem.vue.js +55 -3
- package/dist/es/form/SelectTable.vue.d.ts +38 -0
- package/dist/es/form/SelectTable.vue.js +217 -0
- package/dist/es/form/SelectTable.vue3.js +5 -0
- package/dist/es/form/style.css +56 -0
- package/dist/es/index.js +15 -0
- package/dist/es/package.json.js +1 -1
- package/dist/es/page-header/PageHeader.vue.js +2 -2
- package/dist/es/page-header/PopoverMenu.vue.js +2 -2
- package/dist/es/page-layout/PageLayout.vue.js +1 -1
- package/dist/es/page-layout/style.css +2 -0
- package/dist/es/page-table/PageTable.vue.d.ts +44 -28
- package/dist/es/page-table/PageTable.vue.js +91 -25
- package/dist/es/page-table/style.css +9 -1
- package/dist/es/style.css +164 -26
- package/dist/es/styles.css +1 -1
- package/dist/es/tabs/TabContent.vue.d.ts +16 -0
- package/dist/es/tabs/TabContent.vue.js +65 -0
- package/dist/es/tabs/TabContent.vue3.js +5 -0
- package/dist/es/tabs/Tabs.vue.d.ts +46 -0
- package/dist/es/tabs/Tabs.vue.js +275 -0
- package/dist/es/tabs/Tabs.vue3.js +5 -0
- package/dist/es/tabs/index.d.ts +9 -0
- package/dist/es/tabs/index.js +8 -0
- package/dist/es/tabs/routeListener.d.ts +19 -0
- package/dist/es/tabs/routeListener.js +26 -0
- package/dist/es/tabs/style.css +29 -0
- package/dist/es/tabs/useTabs.d.ts +27 -0
- package/dist/es/tabs/useTabs.js +59 -0
- package/dist/es/tabs/useTabsStore.d.ts +53 -0
- package/dist/es/tabs/useTabsStore.js +208 -0
- package/dist/lib/components.d.ts +1 -0
- package/dist/lib/components.js +4 -1
- package/dist/lib/form/Form.vue.d.ts +10 -6
- package/dist/lib/form/Form.vue.js +129 -79
- package/dist/lib/form/FormItem.vue.js +54 -2
- package/dist/lib/form/SelectTable.vue.d.ts +38 -0
- package/dist/lib/form/SelectTable.vue.js +217 -0
- package/dist/lib/form/SelectTable.vue3.js +5 -0
- package/dist/lib/form/style.css +56 -0
- package/dist/lib/index.js +15 -0
- package/dist/lib/package.json.js +1 -1
- package/dist/lib/page-header/PageHeader.vue.js +3 -3
- package/dist/lib/page-header/PopoverMenu.vue.js +2 -2
- package/dist/lib/page-layout/PageLayout.vue.js +1 -1
- package/dist/lib/page-layout/style.css +2 -0
- package/dist/lib/page-table/PageTable.vue.d.ts +44 -28
- package/dist/lib/page-table/PageTable.vue.js +90 -24
- package/dist/lib/page-table/style.css +9 -1
- package/dist/lib/style.css +164 -26
- package/dist/lib/styles.css +1 -1
- package/dist/lib/tabs/TabContent.vue.d.ts +16 -0
- package/dist/lib/tabs/TabContent.vue.js +65 -0
- package/dist/lib/tabs/TabContent.vue3.js +5 -0
- package/dist/lib/tabs/Tabs.vue.d.ts +46 -0
- package/dist/lib/tabs/Tabs.vue.js +275 -0
- package/dist/lib/tabs/Tabs.vue3.js +5 -0
- package/dist/lib/tabs/index.d.ts +9 -0
- package/dist/lib/tabs/index.js +8 -0
- package/dist/lib/tabs/routeListener.d.ts +19 -0
- package/dist/lib/tabs/routeListener.js +26 -0
- package/dist/lib/tabs/style.css +29 -0
- package/dist/lib/tabs/useTabs.d.ts +27 -0
- package/dist/lib/tabs/useTabs.js +59 -0
- package/dist/lib/tabs/useTabsStore.d.ts +53 -0
- package/dist/lib/tabs/useTabsStore.js +208 -0
- package/package.json +10 -2
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
6
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
7
|
+
var __spreadValues = (a, b) => {
|
|
8
|
+
for (var prop in b || (b = {}))
|
|
9
|
+
if (__hasOwnProp.call(b, prop))
|
|
10
|
+
__defNormalProp(a, prop, b[prop]);
|
|
11
|
+
if (__getOwnPropSymbols)
|
|
12
|
+
for (var prop of __getOwnPropSymbols(b)) {
|
|
13
|
+
if (__propIsEnum.call(b, prop))
|
|
14
|
+
__defNormalProp(a, prop, b[prop]);
|
|
15
|
+
}
|
|
16
|
+
return a;
|
|
17
|
+
};
|
|
18
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
19
|
+
const pinia = require("pinia");
|
|
20
|
+
const vue = require("vue");
|
|
21
|
+
const PERSIST_KEY_SYMBOL = Symbol("jky-tabs-persist-key");
|
|
22
|
+
const DEFAULT_PERSIST_KEY = "jky-tabs-state";
|
|
23
|
+
function getPersistConfig(persist, persistKey) {
|
|
24
|
+
const injectedPersistKey = vue.inject(PERSIST_KEY_SYMBOL, void 0);
|
|
25
|
+
const finalPersistKey = injectedPersistKey || persistKey || DEFAULT_PERSIST_KEY;
|
|
26
|
+
return {
|
|
27
|
+
enabled: persist !== void 0 ? persist : false,
|
|
28
|
+
key: finalPersistKey
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
function loadFromStorage(key) {
|
|
32
|
+
try {
|
|
33
|
+
const stored = localStorage.getItem(key);
|
|
34
|
+
if (stored) {
|
|
35
|
+
return JSON.parse(stored);
|
|
36
|
+
}
|
|
37
|
+
} catch (error) {
|
|
38
|
+
console.warn("Failed to load tabs from storage:", error);
|
|
39
|
+
}
|
|
40
|
+
return null;
|
|
41
|
+
}
|
|
42
|
+
function saveToStorage(key, data) {
|
|
43
|
+
try {
|
|
44
|
+
localStorage.setItem(key, JSON.stringify(data));
|
|
45
|
+
} catch (error) {
|
|
46
|
+
console.warn("Failed to save tabs to storage:", error);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
function createTabsStore(persist, persistKey) {
|
|
50
|
+
const persistConfig = getPersistConfig(persist, persistKey);
|
|
51
|
+
const initialData = persistConfig.enabled ? loadFromStorage(persistConfig.key) : null;
|
|
52
|
+
const store = pinia.defineStore("jky-tabs", () => {
|
|
53
|
+
const tabList = vue.ref((initialData == null ? void 0 : initialData.tabList) || []);
|
|
54
|
+
const activeTab = vue.ref((initialData == null ? void 0 : initialData.activeTab) || "");
|
|
55
|
+
const cacheTabs = vue.shallowRef((initialData == null ? void 0 : initialData.cacheTabs) || []);
|
|
56
|
+
const closedTabs = vue.shallowRef((initialData == null ? void 0 : initialData.closedTabs) || []);
|
|
57
|
+
const cacheSet = vue.computed(() => new Set(cacheTabs.value));
|
|
58
|
+
const closedSet = vue.computed(() => new Set(closedTabs.value));
|
|
59
|
+
function persistState() {
|
|
60
|
+
if (!persistConfig.enabled)
|
|
61
|
+
return;
|
|
62
|
+
saveToStorage(persistConfig.key, {
|
|
63
|
+
tabList: tabList.value,
|
|
64
|
+
activeTab: activeTab.value,
|
|
65
|
+
cacheTabs: cacheTabs.value,
|
|
66
|
+
closedTabs: closedTabs.value
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
function addTab(tab) {
|
|
70
|
+
const index = tabList.value.findIndex((t) => t.name === tab.name);
|
|
71
|
+
if (index !== -1) {
|
|
72
|
+
tabList.value[index] = __spreadValues(__spreadValues({}, tabList.value[index]), tab);
|
|
73
|
+
} else {
|
|
74
|
+
tabList.value.push(tab);
|
|
75
|
+
}
|
|
76
|
+
persistState();
|
|
77
|
+
}
|
|
78
|
+
function updateTab(name, tab) {
|
|
79
|
+
const index = tabList.value.findIndex((t) => t.name === name);
|
|
80
|
+
if (index !== -1) {
|
|
81
|
+
tabList.value[index] = __spreadValues(__spreadValues({}, tabList.value[index]), tab);
|
|
82
|
+
persistState();
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
function removeTab(name) {
|
|
86
|
+
const index = tabList.value.findIndex((t) => t.name === name);
|
|
87
|
+
if (index !== -1) {
|
|
88
|
+
tabList.value.splice(index, 1);
|
|
89
|
+
removeCache(name);
|
|
90
|
+
if (activeTab.value === name && tabList.value.length > 0) {
|
|
91
|
+
const nextTab = tabList.value[index] || tabList.value[index - 1];
|
|
92
|
+
if (nextTab) {
|
|
93
|
+
activeTab.value = nextTab.name;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
persistState();
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
function setActiveTab(name) {
|
|
100
|
+
activeTab.value = name;
|
|
101
|
+
persistState();
|
|
102
|
+
}
|
|
103
|
+
function addCache(name) {
|
|
104
|
+
if (!cacheSet.value.has(name)) {
|
|
105
|
+
cacheTabs.value = [...cacheTabs.value, name];
|
|
106
|
+
persistState();
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
function removeCache(name) {
|
|
110
|
+
cacheTabs.value = cacheTabs.value.filter((t) => t !== name);
|
|
111
|
+
persistState();
|
|
112
|
+
}
|
|
113
|
+
function bulkRemove(names) {
|
|
114
|
+
tabList.value = tabList.value.filter((tab) => !names.includes(tab.name));
|
|
115
|
+
names.forEach((name) => removeCache(name));
|
|
116
|
+
persistState();
|
|
117
|
+
}
|
|
118
|
+
function closeLeft(name) {
|
|
119
|
+
const index = tabList.value.findIndex((t) => t.name === name);
|
|
120
|
+
if (index > 0) {
|
|
121
|
+
const leftTabs = tabList.value.slice(0, index);
|
|
122
|
+
const removableTabs = leftTabs.filter((tab) => !tab.affix);
|
|
123
|
+
bulkRemove(removableTabs.map((tab) => tab.name));
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
function closeRight(name) {
|
|
127
|
+
const index = tabList.value.findIndex((t) => t.name === name);
|
|
128
|
+
if (index >= 0 && index < tabList.value.length - 1) {
|
|
129
|
+
const rightTabs = tabList.value.slice(index + 1);
|
|
130
|
+
const removableTabs = rightTabs.filter((tab) => !tab.affix);
|
|
131
|
+
bulkRemove(removableTabs.map((tab) => tab.name));
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
function closeOther(name) {
|
|
135
|
+
const removableTabs = tabList.value.filter(
|
|
136
|
+
(tab) => tab.name !== name && !tab.affix
|
|
137
|
+
);
|
|
138
|
+
bulkRemove(removableTabs.map((tab) => tab.name));
|
|
139
|
+
}
|
|
140
|
+
function closeAll() {
|
|
141
|
+
const removableTabs = tabList.value.filter((tab) => !tab.affix);
|
|
142
|
+
bulkRemove(removableTabs.map((tab) => tab.name));
|
|
143
|
+
}
|
|
144
|
+
function refresh(name) {
|
|
145
|
+
removeCache(name);
|
|
146
|
+
setTimeout(() => {
|
|
147
|
+
addCache(name);
|
|
148
|
+
}, 0);
|
|
149
|
+
}
|
|
150
|
+
function getTabList() {
|
|
151
|
+
return [...tabList.value];
|
|
152
|
+
}
|
|
153
|
+
function getCacheTabs() {
|
|
154
|
+
return [...cacheTabs.value];
|
|
155
|
+
}
|
|
156
|
+
function isClosed(name) {
|
|
157
|
+
return closedSet.value.has(name);
|
|
158
|
+
}
|
|
159
|
+
function isCached(name) {
|
|
160
|
+
return cacheSet.value.has(name);
|
|
161
|
+
}
|
|
162
|
+
function reset() {
|
|
163
|
+
tabList.value = [];
|
|
164
|
+
activeTab.value = "";
|
|
165
|
+
cacheTabs.value = [];
|
|
166
|
+
closedTabs.value = [];
|
|
167
|
+
persistState();
|
|
168
|
+
}
|
|
169
|
+
return {
|
|
170
|
+
tabList,
|
|
171
|
+
activeTab,
|
|
172
|
+
cacheTabs,
|
|
173
|
+
closedTabs,
|
|
174
|
+
addTab,
|
|
175
|
+
updateTab,
|
|
176
|
+
removeTab,
|
|
177
|
+
setActiveTab,
|
|
178
|
+
addCache,
|
|
179
|
+
removeCache,
|
|
180
|
+
bulkRemove,
|
|
181
|
+
closeLeft,
|
|
182
|
+
closeRight,
|
|
183
|
+
closeOther,
|
|
184
|
+
closeAll,
|
|
185
|
+
refresh,
|
|
186
|
+
getTabList,
|
|
187
|
+
getCacheTabs,
|
|
188
|
+
isClosed,
|
|
189
|
+
isCached,
|
|
190
|
+
reset
|
|
191
|
+
};
|
|
192
|
+
});
|
|
193
|
+
return store();
|
|
194
|
+
}
|
|
195
|
+
const storeInstances = /* @__PURE__ */ new Map();
|
|
196
|
+
function useTabsStore(persist, persistKey) {
|
|
197
|
+
const key = persistKey || DEFAULT_PERSIST_KEY;
|
|
198
|
+
if (!storeInstances.has(key)) {
|
|
199
|
+
storeInstances.set(key, () => createTabsStore(persist, persistKey));
|
|
200
|
+
}
|
|
201
|
+
return storeInstances.get(key)();
|
|
202
|
+
}
|
|
203
|
+
function resetTabsStore() {
|
|
204
|
+
storeInstances.clear();
|
|
205
|
+
}
|
|
206
|
+
exports.createTabsStore = createTabsStore;
|
|
207
|
+
exports.resetTabsStore = resetTabsStore;
|
|
208
|
+
exports.useTabsStore = useTabsStore;
|
package/package.json
CHANGED
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "jky-component-lib",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "0.0.
|
|
4
|
+
"version": "0.0.67",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
7
7
|
},
|
|
8
8
|
"packageManager": "bun@1.3.5",
|
|
9
|
+
"workspaces": [
|
|
10
|
+
"apps/*"
|
|
11
|
+
],
|
|
9
12
|
"description": "Vue 3 component library starter template, provides VitePress documentation, supports building ESM, CJS and UMD formats. ",
|
|
10
13
|
"author": "Kieran Wang <kieranwme@gmail.com> (https://github.com/kieranwv/)",
|
|
11
14
|
"license": "MIT",
|
|
@@ -38,6 +41,7 @@
|
|
|
38
41
|
},
|
|
39
42
|
"main": "dist/lib/index.js",
|
|
40
43
|
"module": "dist/es/index.js",
|
|
44
|
+
"source": "src/index.ts",
|
|
41
45
|
"unpkg": "dist/umd/index.js",
|
|
42
46
|
"jsdelivr": "dist/umd/index.js",
|
|
43
47
|
"types": "dist/es/index.d.ts",
|
|
@@ -77,7 +81,10 @@
|
|
|
77
81
|
"@tinymce/tinymce-vue": "^6.0.0",
|
|
78
82
|
"@vueuse/core": "^14.2.1",
|
|
79
83
|
"codemirror": "^6.0.0",
|
|
80
|
-
"element-plus": "^2.
|
|
84
|
+
"element-plus": "^2.13.6",
|
|
85
|
+
"mitt": "^3.0.1",
|
|
86
|
+
"pinia": "^3.0.4",
|
|
87
|
+
"pinia-plugin-persistedstate": "^4.7.1",
|
|
81
88
|
"vue": "^3.2.0"
|
|
82
89
|
},
|
|
83
90
|
"devDependencies": {
|
|
@@ -101,6 +108,7 @@
|
|
|
101
108
|
"@vitejs/plugin-vue-jsx": "^4.1.2",
|
|
102
109
|
"@vue/test-utils": "^2.4.6",
|
|
103
110
|
"@vueuse/core": "^14.2.1",
|
|
111
|
+
"ajv": "^8.18.0",
|
|
104
112
|
"bumpp": "^10.1.0",
|
|
105
113
|
"codemirror": "^6.0.2",
|
|
106
114
|
"cssnano": "^7.0.7",
|