@waline/client 2.6.4 → 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.
Files changed (43) 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 +3 -0
  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 +3 -0
  15. package/dist/shim.esm.d.ts +3 -0
  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 +3 -0
  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 +3 -0
  26. package/dist/waline.esm.d.ts +3 -0
  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 +1 -1
  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 +3 -0
  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 +26 -0
  42. package/src/typings/locale.ts +3 -0
  43. 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.4",
3
+ "version": "2.7.0",
4
4
  "description": "client for waline comment system",
5
5
  "keywords": [
6
6
  "valine",
@@ -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-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
  ]);
@@ -46,4 +46,7 @@ export default generateLocale([
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
  ]);
@@ -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
+ }
@@ -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
  }
@@ -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>)