@waline/client 2.6.2 → 2.7.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.
- package/dist/component.esm.js +1 -1
- package/dist/component.esm.js.map +1 -1
- package/dist/component.js +1 -1
- package/dist/component.js.map +1 -1
- package/dist/legacy.d.ts +8 -1
- package/dist/legacy.js +1 -1
- package/dist/legacy.js.map +1 -1
- package/dist/pageview.cjs.js +1 -1
- package/dist/pageview.cjs.js.map +1 -1
- package/dist/pageview.esm.js +1 -1
- package/dist/pageview.esm.js.map +1 -1
- package/dist/pageview.js +1 -1
- package/dist/pageview.js.map +1 -1
- package/dist/shim.d.ts +8 -1
- package/dist/shim.esm.d.ts +8 -1
- package/dist/shim.esm.js +1 -1
- package/dist/shim.esm.js.map +1 -1
- package/dist/shim.js +1 -1
- package/dist/shim.js.map +1 -1
- package/dist/waline.cjs.d.ts +8 -1
- package/dist/waline.cjs.js +1 -1
- package/dist/waline.cjs.js.map +1 -1
- package/dist/waline.css +1 -1
- package/dist/waline.css.map +1 -1
- package/dist/waline.d.ts +8 -1
- package/dist/waline.esm.d.ts +8 -1
- package/dist/waline.esm.js +1 -1
- package/dist/waline.esm.js.map +1 -1
- package/dist/waline.js +1 -1
- package/dist/waline.js.map +1 -1
- package/package.json +14 -14
- package/src/components/CommentBox.vue +4 -0
- package/src/components/CommentCard.vue +2 -2
- package/src/components/Waline.vue +53 -3
- package/src/config/default.ts +4 -0
- package/src/config/i18n/en.ts +7 -0
- package/src/config/i18n/generate.ts +7 -0
- package/src/config/i18n/jp.ts +7 -0
- package/src/config/i18n/pt-BR.ts +7 -0
- package/src/config/i18n/ru.ts +7 -0
- package/src/config/i18n/vi-VN.ts +19 -12
- package/src/config/i18n/zh-CN.ts +7 -0
- package/src/config/i18n/zh-TW.ts +7 -0
- package/src/styles/card.scss +2 -0
- package/src/styles/layout.scss +26 -0
- package/src/typings/locale.ts +7 -0
- package/src/typings/waline.ts +1 -1
- package/src/utils/config.ts +1 -1
- package/src/utils/fetch.ts +3 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@waline/client",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.7.0",
|
|
4
4
|
"description": "client for waline comment system",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"valine",
|
|
@@ -61,7 +61,7 @@
|
|
|
61
61
|
"clean": "rimraf ./dist",
|
|
62
62
|
"dev": "vite -c config/vite.config.js",
|
|
63
63
|
"lint": "eslint --ext .ts,.vue .",
|
|
64
|
-
"
|
|
64
|
+
"prepublishOnly": "pnpm clean && pnpm build",
|
|
65
65
|
"rollup": "rollup -c ./config/rollup.config.js",
|
|
66
66
|
"style": "sass ./src/styles/index.scss ./dist/waline.css --style=compressed"
|
|
67
67
|
},
|
|
@@ -80,29 +80,29 @@
|
|
|
80
80
|
]
|
|
81
81
|
},
|
|
82
82
|
"dependencies": {
|
|
83
|
-
"@vueuse/core": "^
|
|
83
|
+
"@vueuse/core": "^9.1.1",
|
|
84
84
|
"autosize": "^5.0.1",
|
|
85
|
-
"marked": "^4.0
|
|
86
|
-
"vue": "^3.2.
|
|
85
|
+
"marked": "^4.1.0",
|
|
86
|
+
"vue": "^3.2.38"
|
|
87
87
|
},
|
|
88
88
|
"devDependencies": {
|
|
89
|
-
"@babel/core": "7.18.
|
|
90
|
-
"@babel/preset-env": "7.18.
|
|
89
|
+
"@babel/core": "7.18.13",
|
|
90
|
+
"@babel/preset-env": "7.18.10",
|
|
91
91
|
"@rollup/plugin-babel": "5.3.1",
|
|
92
|
-
"@rollup/plugin-commonjs": "22.0.
|
|
92
|
+
"@rollup/plugin-commonjs": "22.0.2",
|
|
93
93
|
"@rollup/plugin-node-resolve": "13.3.0",
|
|
94
94
|
"@rollup/plugin-replace": "4.0.0",
|
|
95
95
|
"@types/autosize": "4.0.1",
|
|
96
|
-
"@types/marked": "4.0.
|
|
97
|
-
"@types/node": "18.
|
|
98
|
-
"@vitejs/plugin-vue": "3.0.
|
|
96
|
+
"@types/marked": "4.0.6",
|
|
97
|
+
"@types/node": "18.7.14",
|
|
98
|
+
"@vitejs/plugin-vue": "3.0.3",
|
|
99
99
|
"rimraf": "3.0.2",
|
|
100
|
-
"rollup": "2.
|
|
100
|
+
"rollup": "2.79.0",
|
|
101
101
|
"rollup-plugin-dts": "4.2.2",
|
|
102
102
|
"rollup-plugin-terser": "7.0.2",
|
|
103
103
|
"rollup-plugin-ts": "3.0.2",
|
|
104
|
-
"typescript": "4.
|
|
105
|
-
"vite": "3.0.
|
|
104
|
+
"typescript": "4.8.2",
|
|
105
|
+
"vite": "3.0.9"
|
|
106
106
|
},
|
|
107
107
|
"engines": {
|
|
108
108
|
"node": ">=14"
|
|
@@ -75,7 +75,7 @@
|
|
|
75
75
|
:class="`wl-btn wl-${status}`"
|
|
76
76
|
:disabled="comment.status === status"
|
|
77
77
|
@click="$emit('status', { status, comment })"
|
|
78
|
-
v-text="status"
|
|
78
|
+
v-text="locale[status]"
|
|
79
79
|
/>
|
|
80
80
|
</span>
|
|
81
81
|
|
|
@@ -84,7 +84,7 @@
|
|
|
84
84
|
class="wl-btn wl-sticky"
|
|
85
85
|
@click="$emit('sticky', comment)"
|
|
86
86
|
>
|
|
87
|
-
{{ comment.sticky ?
|
|
87
|
+
{{ comment.sticky ? locale.unsticky : locale.sticky }}
|
|
88
88
|
</button>
|
|
89
89
|
</div>
|
|
90
90
|
|
|
@@ -1,9 +1,21 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div data-waline>
|
|
3
3
|
<CommentBox v-if="!reply" @submit="onSubmit" />
|
|
4
|
-
<div class="wl-
|
|
5
|
-
<
|
|
6
|
-
|
|
4
|
+
<div class="wl-head">
|
|
5
|
+
<div class="wl-count">
|
|
6
|
+
<span v-if="count" class="wl-num" v-text="count" />
|
|
7
|
+
{{ i18n.comment }}
|
|
8
|
+
</div>
|
|
9
|
+
<ul class="wl-sort">
|
|
10
|
+
<li
|
|
11
|
+
v-for="item in sortByItems"
|
|
12
|
+
:key="item.key"
|
|
13
|
+
:class="[item.key === sortBy ? 'active' : '']"
|
|
14
|
+
@click="onSortByChange(item.key)"
|
|
15
|
+
>
|
|
16
|
+
{{ i18n[item.name] }}
|
|
17
|
+
</li>
|
|
18
|
+
</ul>
|
|
7
19
|
</div>
|
|
8
20
|
|
|
9
21
|
<div class="wl-cards">
|
|
@@ -89,6 +101,7 @@ import type {
|
|
|
89
101
|
WalineHighlighter,
|
|
90
102
|
WalineTexRenderer,
|
|
91
103
|
WalineImageUploader,
|
|
104
|
+
WalineSearchOptions,
|
|
92
105
|
WalineLocale,
|
|
93
106
|
WalineProps,
|
|
94
107
|
WalineMeta,
|
|
@@ -112,9 +125,28 @@ const props = [
|
|
|
112
125
|
'highlighter',
|
|
113
126
|
'texRenderer',
|
|
114
127
|
'imageUploader',
|
|
128
|
+
'search',
|
|
115
129
|
'copyright',
|
|
116
130
|
];
|
|
117
131
|
|
|
132
|
+
type SortKeyItems = 'insertedAt_desc' | 'insertedAt_asc' | 'like_desc';
|
|
133
|
+
type SortNameItems = 'latest' | 'oldest' | 'hottest';
|
|
134
|
+
type SortByItems = { key: SortKeyItems; name: SortNameItems }[];
|
|
135
|
+
const sortByItems: SortByItems = [
|
|
136
|
+
{
|
|
137
|
+
key: 'insertedAt_desc',
|
|
138
|
+
name: 'latest',
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
key: 'insertedAt_asc',
|
|
142
|
+
name: 'oldest',
|
|
143
|
+
},
|
|
144
|
+
{
|
|
145
|
+
key: 'like_desc',
|
|
146
|
+
name: 'hottest',
|
|
147
|
+
},
|
|
148
|
+
];
|
|
149
|
+
|
|
118
150
|
const propsWithValidate = {
|
|
119
151
|
serverURL: {
|
|
120
152
|
type: String,
|
|
@@ -197,6 +229,11 @@ const propsWithValidate = {
|
|
|
197
229
|
default: undefined,
|
|
198
230
|
},
|
|
199
231
|
|
|
232
|
+
search: {
|
|
233
|
+
type: [Object, Boolean] as PropType<WalineSearchOptions | false>,
|
|
234
|
+
default: undefined,
|
|
235
|
+
},
|
|
236
|
+
|
|
200
237
|
copyright: { type: Boolean, default: true },
|
|
201
238
|
};
|
|
202
239
|
|
|
@@ -222,6 +259,7 @@ export default defineComponent({
|
|
|
222
259
|
const count = ref(0);
|
|
223
260
|
const page = ref(1);
|
|
224
261
|
const totalPages = ref(0);
|
|
262
|
+
const sortBy = ref<SortKeyItems>(sortByItems[0].key);
|
|
225
263
|
|
|
226
264
|
const data = ref<WalineComment[]>([]);
|
|
227
265
|
const reply = ref<WalineComment | null>(null);
|
|
@@ -246,6 +284,7 @@ export default defineComponent({
|
|
|
246
284
|
lang: config.value.lang,
|
|
247
285
|
path,
|
|
248
286
|
pageSize,
|
|
287
|
+
sortBy: sortBy.value,
|
|
249
288
|
page: pageNumber,
|
|
250
289
|
signal: controller.signal,
|
|
251
290
|
token: userInfo.value?.token,
|
|
@@ -275,6 +314,14 @@ export default defineComponent({
|
|
|
275
314
|
fetchComment(1);
|
|
276
315
|
};
|
|
277
316
|
|
|
317
|
+
const onSortByChange = (item: SortKeyItems): void => {
|
|
318
|
+
if (sortBy.value === item) {
|
|
319
|
+
return;
|
|
320
|
+
}
|
|
321
|
+
sortBy.value = item;
|
|
322
|
+
refresh();
|
|
323
|
+
};
|
|
324
|
+
|
|
278
325
|
const onReply = (comment: WalineComment | null): void => {
|
|
279
326
|
reply.value = comment;
|
|
280
327
|
};
|
|
@@ -405,11 +452,14 @@ export default defineComponent({
|
|
|
405
452
|
count,
|
|
406
453
|
page,
|
|
407
454
|
totalPages,
|
|
455
|
+
sortBy,
|
|
456
|
+
sortByItems,
|
|
408
457
|
data,
|
|
409
458
|
reply,
|
|
410
459
|
|
|
411
460
|
loadMore,
|
|
412
461
|
refresh,
|
|
462
|
+
onSortByChange,
|
|
413
463
|
onReply,
|
|
414
464
|
onSubmit,
|
|
415
465
|
onStatusChange,
|
package/src/config/default.ts
CHANGED
|
@@ -9,6 +9,10 @@ export const defaultLang = 'zh-CN';
|
|
|
9
9
|
|
|
10
10
|
export const defaultUploadImage = (file: File): Promise<string> =>
|
|
11
11
|
new Promise((resolve, reject) => {
|
|
12
|
+
if (file.size > 128 * 1000) {
|
|
13
|
+
return reject(new Error('File too large! File size limit 128KB'));
|
|
14
|
+
}
|
|
15
|
+
|
|
12
16
|
const reader = new FileReader();
|
|
13
17
|
|
|
14
18
|
reader.readAsDataURL(file);
|
package/src/config/i18n/en.ts
CHANGED
package/src/config/i18n/jp.ts
CHANGED
package/src/config/i18n/pt-BR.ts
CHANGED
package/src/config/i18n/ru.ts
CHANGED
package/src/config/i18n/vi-VN.ts
CHANGED
|
@@ -10,8 +10,8 @@ export default generateLocale([
|
|
|
10
10
|
'Hãy bình luận có văn hoá!',
|
|
11
11
|
'Chưa có bình luận',
|
|
12
12
|
'Gửi',
|
|
13
|
-
'
|
|
14
|
-
'
|
|
13
|
+
'Thích',
|
|
14
|
+
'Bỏ thích',
|
|
15
15
|
'Trả lời',
|
|
16
16
|
'Hủy bỏ',
|
|
17
17
|
'bình luận',
|
|
@@ -28,18 +28,25 @@ export default generateLocale([
|
|
|
28
28
|
'Đang tải lên',
|
|
29
29
|
'Đăng nhập',
|
|
30
30
|
'đăng xuất',
|
|
31
|
-
'
|
|
32
|
-
'
|
|
31
|
+
'Quản trị viên',
|
|
32
|
+
'Dính',
|
|
33
33
|
'từ',
|
|
34
|
-
'
|
|
34
|
+
'Bình luận phải có độ dài giữa $0 và $1 từ!\n Số từ hiện tại: $2',
|
|
35
35
|
'Vô danh',
|
|
36
|
-
'
|
|
37
|
-
'
|
|
38
|
-
'
|
|
39
|
-
'
|
|
40
|
-
'
|
|
36
|
+
'Người lùn',
|
|
37
|
+
'Người tí hon',
|
|
38
|
+
'Thần rừng',
|
|
39
|
+
'Pháp sư',
|
|
40
|
+
'Tiên tộc',
|
|
41
41
|
'Maiar',
|
|
42
|
-
'GIF',
|
|
43
|
-
'Tìm kiếm GIF',
|
|
42
|
+
'Ảnh GIF',
|
|
43
|
+
'Tìm kiếm ảnh GIF',
|
|
44
44
|
'thông tin cá nhân',
|
|
45
|
+
'Đã được phê duyệt',
|
|
46
|
+
'Đang chờ đợi',
|
|
47
|
+
'Thư rác',
|
|
48
|
+
'Không dính',
|
|
49
|
+
'lâu đời nhất',
|
|
50
|
+
'muộn nhất',
|
|
51
|
+
'nóng nhất',
|
|
45
52
|
]);
|
package/src/config/i18n/zh-CN.ts
CHANGED
package/src/config/i18n/zh-TW.ts
CHANGED
package/src/styles/card.scss
CHANGED
package/src/styles/layout.scss
CHANGED
|
@@ -53,6 +53,7 @@
|
|
|
53
53
|
padding: 0.375em;
|
|
54
54
|
font-weight: bold;
|
|
55
55
|
font-size: 1.25em;
|
|
56
|
+
flex: 1;
|
|
56
57
|
}
|
|
57
58
|
|
|
58
59
|
.wl-empty {
|
|
@@ -76,3 +77,28 @@
|
|
|
76
77
|
font-size: var(--waline-info-font-size);
|
|
77
78
|
text-align: right;
|
|
78
79
|
}
|
|
80
|
+
|
|
81
|
+
.wl-head {
|
|
82
|
+
display: flex;
|
|
83
|
+
flex-direction: row;
|
|
84
|
+
align-items: center;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
.wl-sort.ul {
|
|
88
|
+
list-style-type: none;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
.wl-sort li {
|
|
92
|
+
display: inline-block;
|
|
93
|
+
font-size: 0.75em;
|
|
94
|
+
color: var(--waline-info-color);
|
|
95
|
+
cursor: pointer;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
.wl-sort li + li {
|
|
99
|
+
margin-left: 1em;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
.wl-sort li.active {
|
|
103
|
+
color: var(--waline-theme-color);
|
|
104
|
+
}
|
package/src/typings/locale.ts
CHANGED
|
@@ -39,4 +39,11 @@ export interface WalineLocale extends WalineDateLocale, WalineLevelLocale {
|
|
|
39
39
|
gif: string;
|
|
40
40
|
gifSearchPlaceholder: string;
|
|
41
41
|
profile: string;
|
|
42
|
+
approved: string;
|
|
43
|
+
waiting: string;
|
|
44
|
+
spam: string;
|
|
45
|
+
unsticky: string;
|
|
46
|
+
oldest: string;
|
|
47
|
+
latest: string;
|
|
48
|
+
hottest: string;
|
|
42
49
|
}
|
package/src/typings/waline.ts
CHANGED
package/src/utils/config.ts
CHANGED
|
@@ -51,7 +51,7 @@ export const getConfig = ({
|
|
|
51
51
|
path = location.pathname,
|
|
52
52
|
lang = defaultLang,
|
|
53
53
|
locale,
|
|
54
|
-
emoji = ['//unpkg.com/@waline/emojis@1.0
|
|
54
|
+
emoji = ['//unpkg.com/@waline/emojis@1.1.0/weibo'],
|
|
55
55
|
meta = ['nick', 'mail', 'link'],
|
|
56
56
|
requiredMeta = [],
|
|
57
57
|
dark = false,
|
package/src/utils/fetch.ts
CHANGED
|
@@ -85,6 +85,7 @@ export interface FetchListOptions {
|
|
|
85
85
|
path: string;
|
|
86
86
|
page: number;
|
|
87
87
|
pageSize: number;
|
|
88
|
+
sortBy: string;
|
|
88
89
|
signal: AbortSignal;
|
|
89
90
|
token?: string;
|
|
90
91
|
lang: string;
|
|
@@ -102,6 +103,7 @@ export const fetchCommentList = ({
|
|
|
102
103
|
path,
|
|
103
104
|
page,
|
|
104
105
|
pageSize,
|
|
106
|
+
sortBy,
|
|
105
107
|
signal,
|
|
106
108
|
token,
|
|
107
109
|
}: FetchListOptions): Promise<FetchListResult> => {
|
|
@@ -112,7 +114,7 @@ export const fetchCommentList = ({
|
|
|
112
114
|
return fetch(
|
|
113
115
|
`${serverURL}/comment?path=${encodeURIComponent(
|
|
114
116
|
path
|
|
115
|
-
)}&pageSize=${pageSize}&page=${page}&lang=${lang}`,
|
|
117
|
+
)}&pageSize=${pageSize}&page=${page}&lang=${lang}&sortBy=${sortBy}`,
|
|
116
118
|
{ signal, headers }
|
|
117
119
|
)
|
|
118
120
|
.then((resp) => resp.json() as Promise<FetchListResult>)
|