@waline/client 2.6.3 → 2.7.1

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 (45) hide show
  1. package/dist/component.esm.js +1 -1
  2. package/dist/component.esm.js.map +1 -1
  3. package/dist/component.js +1 -1
  4. package/dist/component.js.map +1 -1
  5. package/dist/legacy.d.ts +4 -1
  6. package/dist/legacy.js +1 -1
  7. package/dist/legacy.js.map +1 -1
  8. package/dist/pageview.cjs.js +1 -1
  9. package/dist/pageview.cjs.js.map +1 -1
  10. package/dist/pageview.esm.js +1 -1
  11. package/dist/pageview.esm.js.map +1 -1
  12. package/dist/pageview.js +1 -1
  13. package/dist/pageview.js.map +1 -1
  14. package/dist/shim.d.ts +4 -1
  15. package/dist/shim.esm.d.ts +4 -1
  16. package/dist/shim.esm.js +1 -1
  17. package/dist/shim.esm.js.map +1 -1
  18. package/dist/shim.js +1 -1
  19. package/dist/shim.js.map +1 -1
  20. package/dist/waline.cjs.d.ts +4 -1
  21. package/dist/waline.cjs.js +1 -1
  22. package/dist/waline.cjs.js.map +1 -1
  23. package/dist/waline.css +1 -1
  24. package/dist/waline.css.map +1 -1
  25. package/dist/waline.d.ts +4 -1
  26. package/dist/waline.esm.d.ts +4 -1
  27. package/dist/waline.esm.js +1 -1
  28. package/dist/waline.esm.js.map +1 -1
  29. package/dist/waline.js +1 -1
  30. package/dist/waline.js.map +1 -1
  31. package/package.json +12 -12
  32. package/src/components/Waline.vue +46 -3
  33. package/src/config/i18n/en.ts +3 -0
  34. package/src/config/i18n/generate.ts +3 -0
  35. package/src/config/i18n/jp.ts +3 -0
  36. package/src/config/i18n/pt-BR.ts +3 -0
  37. package/src/config/i18n/ru.ts +3 -0
  38. package/src/config/i18n/vi-VN.ts +15 -12
  39. package/src/config/i18n/zh-CN.ts +3 -0
  40. package/src/config/i18n/zh-TW.ts +3 -0
  41. package/src/styles/layout.scss +28 -1
  42. package/src/typings/locale.ts +3 -0
  43. package/src/typings/waline.ts +1 -1
  44. package/src/utils/config.ts +1 -1
  45. 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.6.3",
3
+ "version": "2.7.1",
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
- "prepublish": "pnpm clean && pnpm build",
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": "^9.1.0",
83
+ "@vueuse/core": "^9.2.0",
84
84
  "autosize": "^5.0.1",
85
- "marked": "^4.0.18",
86
- "vue": "^3.2.37"
85
+ "marked": "^4.1.0",
86
+ "vue": "^3.2.38"
87
87
  },
88
88
  "devDependencies": {
89
- "@babel/core": "7.18.10",
89
+ "@babel/core": "7.18.13",
90
90
  "@babel/preset-env": "7.18.10",
91
91
  "@rollup/plugin-babel": "5.3.1",
92
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.3",
97
- "@types/node": "18.7.3",
98
- "@vitejs/plugin-vue": "3.0.3",
96
+ "@types/marked": "4.0.6",
97
+ "@types/node": "18.7.15",
98
+ "@vitejs/plugin-vue": "3.1.0",
99
99
  "rimraf": "3.0.2",
100
- "rollup": "2.78.0",
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.7.4",
105
- "vite": "3.0.7"
104
+ "typescript": "4.8.2",
105
+ "vite": "3.1.0"
106
106
  },
107
107
  "engines": {
108
108
  "node": ">=14"
@@ -1,9 +1,21 @@
1
1
  <template>
2
2
  <div data-waline>
3
3
  <CommentBox v-if="!reply" @submit="onSubmit" />
4
- <div class="wl-count">
5
- <span v-if="count" class="wl-num" v-text="count" />
6
- {{ i18n.comment }}
4
+ <div class="wl-meta-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">
@@ -117,6 +129,24 @@ const props = [
117
129
  'copyright',
118
130
  ];
119
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
+
120
150
  const propsWithValidate = {
121
151
  serverURL: {
122
152
  type: String,
@@ -229,6 +259,7 @@ export default defineComponent({
229
259
  const count = ref(0);
230
260
  const page = ref(1);
231
261
  const totalPages = ref(0);
262
+ const sortBy = ref<SortKeyItems>(sortByItems[0].key);
232
263
 
233
264
  const data = ref<WalineComment[]>([]);
234
265
  const reply = ref<WalineComment | null>(null);
@@ -253,6 +284,7 @@ export default defineComponent({
253
284
  lang: config.value.lang,
254
285
  path,
255
286
  pageSize,
287
+ sortBy: sortBy.value,
256
288
  page: pageNumber,
257
289
  signal: controller.signal,
258
290
  token: userInfo.value?.token,
@@ -282,6 +314,14 @@ export default defineComponent({
282
314
  fetchComment(1);
283
315
  };
284
316
 
317
+ const onSortByChange = (item: SortKeyItems): void => {
318
+ if (sortBy.value === item) {
319
+ return;
320
+ }
321
+ sortBy.value = item;
322
+ refresh();
323
+ };
324
+
285
325
  const onReply = (comment: WalineComment | null): void => {
286
326
  reply.value = comment;
287
327
  };
@@ -412,11 +452,14 @@ export default defineComponent({
412
452
  count,
413
453
  page,
414
454
  totalPages,
455
+ sortBy,
456
+ sortByItems,
415
457
  data,
416
458
  reply,
417
459
 
418
460
  loadMore,
419
461
  refresh,
462
+ onSortByChange,
420
463
  onReply,
421
464
  onSubmit,
422
465
  onStatusChange,
@@ -46,4 +46,7 @@ export default generateLocale([
46
46
  'Waiting',
47
47
  'Spam',
48
48
  'Unsticky',
49
+ 'Oldest',
50
+ 'Latest',
51
+ 'Hottest',
49
52
  ]);
@@ -46,6 +46,9 @@ const localeKeys = [
46
46
  'waiting',
47
47
  'spam',
48
48
  'unsticky',
49
+ 'oldest',
50
+ 'latest',
51
+ 'hottest',
49
52
  ];
50
53
 
51
54
  export const generateLocale = (locale: string[]): WalineLocale =>
@@ -46,4 +46,7 @@ export default generateLocale([
46
46
  '待っている',
47
47
  'スパム',
48
48
  'べたつかない',
49
+ '逆順',
50
+ '正順',
51
+ '人気順',
49
52
  ]);
@@ -46,4 +46,7 @@ export default generateLocale([
46
46
  'Espera',
47
47
  'Spam',
48
48
  'Unsticky',
49
+ 'Mais velho',
50
+ 'Mais recentes',
51
+ 'Mais quente',
49
52
  ]);
@@ -46,4 +46,7 @@ export default generateLocale([
46
46
  'Ожидающий',
47
47
  'Спам',
48
48
  'Нелипкий',
49
+ 'самый старый',
50
+ 'последний',
51
+ 'самый горячий',
49
52
  ]);
@@ -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
- 'Like',
14
- 'Cancel like',
13
+ 'Thích',
14
+ 'Bỏ thích',
15
15
  'Trả lời',
16
16
  'Hủy bỏ',
17
17
  'bình luận',
@@ -28,22 +28,25 @@ export default generateLocale([
28
28
  'Đang tải lên',
29
29
  'Đăng nhập',
30
30
  'đăng xuất',
31
- 'Admin',
32
- 'Sticky',
31
+ 'Quản trị viên',
32
+ 'Dính',
33
33
  'từ',
34
- 'Please input comments between $0 and $1 words!\n Current word number: $2',
34
+ 'Bình luận phải độ dài giữa $0 $1 từ!\n Số từ hiện tại: $2',
35
35
  'Vô danh',
36
- 'Dwarves',
37
- 'Hobbits',
38
- 'Ents',
39
- 'Wizards',
40
- 'Elves',
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
45
  'Đã được phê duyệt',
46
46
  'Đang chờ đợi',
47
47
  'Thư rác',
48
48
  'Không dính',
49
+ 'lâu đời nhất',
50
+ 'muộn nhất',
51
+ 'nóng nhất',
49
52
  ]);
@@ -46,4 +46,7 @@ export default generateLocale([
46
46
  '待审核',
47
47
  '垃圾',
48
48
  '取消置顶',
49
+ '按倒序',
50
+ '按正序',
51
+ '按热度',
49
52
  ]);
@@ -46,4 +46,7 @@ export default generateLocale([
46
46
  '待審核',
47
47
  '垃圾',
48
48
  '取消置頂',
49
+ '按倒序',
50
+ '按正序',
51
+ '按熱度',
49
52
  ]);
@@ -50,9 +50,9 @@
50
50
  }
51
51
 
52
52
  .wl-count {
53
- padding: 0.375em;
54
53
  font-weight: bold;
55
54
  font-size: 1.25em;
55
+ flex: 1;
56
56
  }
57
57
 
58
58
  .wl-empty {
@@ -76,3 +76,30 @@
76
76
  font-size: var(--waline-info-font-size);
77
77
  text-align: right;
78
78
  }
79
+
80
+ .wl-meta-head {
81
+ display: flex;
82
+ flex-direction: row;
83
+ align-items: center;
84
+ padding: 0.375em;
85
+ }
86
+
87
+ ul.wl-sort {
88
+ list-style-type: none;
89
+ margin: 0;
90
+ }
91
+
92
+ .wl-sort li {
93
+ display: inline-block;
94
+ font-size: 0.75em;
95
+ color: var(--waline-info-color);
96
+ cursor: pointer;
97
+ }
98
+
99
+ .wl-sort li + li {
100
+ margin-left: 1em;
101
+ }
102
+
103
+ .wl-sort li.active {
104
+ color: var(--waline-theme-color);
105
+ }
@@ -43,4 +43,7 @@ export interface WalineLocale extends WalineDateLocale, WalineLevelLocale {
43
43
  waiting: string;
44
44
  spam: string;
45
45
  unsticky: string;
46
+ oldest: string;
47
+ latest: string;
48
+ hottest: string;
46
49
  }
@@ -145,7 +145,7 @@ export interface WalineProps {
145
145
  *
146
146
  * Set Emojis
147
147
  *
148
- * @default ['//unpkg.com/@waline/emojis@1.0.1/weibo']
148
+ * @default ['//unpkg.com/@waline/emojis@1.1.0/weibo']
149
149
  */
150
150
  emoji?: (string | WalineEmojiInfo)[] | false;
151
151
 
@@ -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.1/weibo'],
54
+ emoji = ['//unpkg.com/@waline/emojis@1.1.0/weibo'],
55
55
  meta = ['nick', 'mail', 'link'],
56
56
  requiredMeta = [],
57
57
  dark = false,
@@ -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>)