@jx3box/jx3box-ui 2.0.5 → 2.0.7

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 (241) hide show
  1. package/.storybook/preview.js +22 -13
  2. package/.storybook/storybookMocks.js +214 -0
  3. package/README.md +39 -43
  4. package/assets/css/bread/admin.less +20 -2
  5. package/assets/css/bread/breadcrumb.less +5 -2
  6. package/assets/css/comment/quick-reply.less +1 -1
  7. package/assets/css/common/left-sidebar.less +1 -1
  8. package/assets/css/interact/like2.less +5 -2
  9. package/assets/css/interact/qrcode.less +69 -0
  10. package/assets/css/single/author.less +15 -10
  11. package/assets/css/single/cms-single.less +1 -0
  12. package/assets/css/single/thx.less +34 -11
  13. package/assets/css/wiki/wiki-comments.less +176 -0
  14. package/assets/css/wiki/wiki-panel.less +177 -0
  15. package/assets/css/wiki/wiki-revisions.less +62 -0
  16. package/assets/data/nav.json +344 -10
  17. package/assets/img/comment/comment.svg +1 -1
  18. package/assets/img/comment/heart_1.svg +1 -1
  19. package/assets/img/comment/hide.svg +1 -1
  20. package/assets/img/leftsidebar/medal.svg +1 -1
  21. package/assets/img/leftsidebar/post.svg +27 -46
  22. package/i18n/messages/en-US.js +357 -22
  23. package/i18n/messages/vi.js +350 -22
  24. package/i18n/messages/zh-CN.js +469 -20
  25. package/i18n/messages/zh-TW.js +350 -22
  26. package/index.js +19 -7
  27. package/package.json +8 -5
  28. package/service/cms.js +22 -0
  29. package/service/commit-history.js +18 -0
  30. package/service/community.js +60 -0
  31. package/service/fav.js +5 -6
  32. package/src/App.vue +210 -80
  33. package/src/Breadcrumb.vue +24 -11
  34. package/src/CommonFooter.vue +2 -2
  35. package/src/Footer.vue +13 -5
  36. package/src/LeftSideToggle.vue +10 -3
  37. package/src/LeftSidebar.vue +19 -5
  38. package/src/Main.vue +9 -2
  39. package/src/RightSidebar.vue +12 -3
  40. package/src/SuspendCommon.vue +52 -38
  41. package/src/author/AuthorFans.vue +7 -5
  42. package/src/author/AuthorFollow.vue +14 -7
  43. package/src/author/AuthorGift.vue +25 -17
  44. package/src/author/AuthorInfo.vue +46 -19
  45. package/src/author/AuthorLink.vue +3 -1
  46. package/src/author/AuthorMedals.vue +5 -2
  47. package/src/author/AuthorPosts.vue +31 -13
  48. package/src/author/AuthorRss.vue +7 -3
  49. package/src/author/AuthorTeams.vue +3 -1
  50. package/src/author/UserPop.vue +29 -17
  51. package/src/bread/Admin.vue +55 -32
  52. package/src/bread/AdminDirectMessage.vue +15 -8
  53. package/src/bread/AdminDrop.vue +124 -45
  54. package/src/bread/CommunityAdmin.vue +527 -0
  55. package/src/bread/DesignTask.vue +30 -26
  56. package/src/bread/ListAdmin.vue +199 -0
  57. package/src/bread/MigrateCommunity.vue +192 -0
  58. package/src/bread/MoveToCommunityDialog.vue +234 -0
  59. package/src/comment/Avatar.vue +18 -24
  60. package/src/comment/CommentContent.vue +57 -37
  61. package/src/comment/CommentContentSimple.vue +61 -63
  62. package/src/comment/CommentInputForm.vue +45 -34
  63. package/src/comment/CommentWithReply.vue +9 -6
  64. package/src/comment/QuickReply.vue +5 -1
  65. package/src/comment/ReplyForReply.vue +6 -4
  66. package/src/comment/ReplyList.vue +28 -18
  67. package/src/comment/Upload.vue +24 -6
  68. package/src/filters/clientBy.vue +10 -8
  69. package/src/filters/markBy.vue +35 -31
  70. package/src/filters/menuBy.vue +20 -22
  71. package/src/filters/orderBy.vue +17 -11
  72. package/src/filters/tagBy.vue +4 -2
  73. package/src/filters/topicBy.vue +12 -10
  74. package/src/filters/versionBy.vue +5 -3
  75. package/src/filters/zlpBy.vue +29 -25
  76. package/src/footer/copyright.vue +5 -5
  77. package/src/footer/links.vue +2 -2
  78. package/src/footer/official.vue +1 -1
  79. package/src/footer/resource.vue +6 -6
  80. package/src/header/alternate.vue +35 -18
  81. package/src/header/asset.vue +9 -19
  82. package/src/header/box.vue +20 -8
  83. package/src/header/box2.vue +16 -9
  84. package/src/header/client.vue +7 -7
  85. package/src/header/lang.vue +41 -6
  86. package/src/header/logo.vue +2 -3
  87. package/src/header/manage.vue +2 -2
  88. package/src/header/message.vue +3 -3
  89. package/src/header/nav.vue +26 -23
  90. package/src/header/publish.vue +2 -2
  91. package/src/header/search.vue +2 -2
  92. package/src/header/shop.vue +2 -2
  93. package/src/header/user.vue +4 -4
  94. package/src/header/userInfo.vue +22 -24
  95. package/src/header/vip.vue +2 -2
  96. package/src/interact/BoxcoinAdmin.vue +30 -16
  97. package/src/interact/BoxcoinRecords.vue +28 -11
  98. package/src/interact/BoxcoinUser.vue +33 -17
  99. package/src/interact/Fav.vue +5 -1
  100. package/src/interact/Homework.vue +317 -0
  101. package/src/interact/Like.vue +4 -2
  102. package/src/interact/QRcode.vue +104 -0
  103. package/src/interact/Rss.vue +10 -4
  104. package/src/interact/Share.vue +18 -19
  105. package/src/interact/WatchLater.vue +5 -1
  106. package/src/main.js +1 -0
  107. package/src/single/Author.vue +5 -1
  108. package/src/single/CmsSingle.vue +29 -15
  109. package/src/single/Collection.vue +36 -26
  110. package/src/single/Comment.vue +19 -13
  111. package/src/single/Creators.vue +5 -3
  112. package/src/single/PostCollection.vue +158 -0
  113. package/src/single/PostDirectory.vue +0 -126
  114. package/src/single/PostGuide.vue +93 -0
  115. package/src/single/PostHeader.vue +39 -17
  116. package/src/single/PostTopic.vue +3 -3
  117. package/src/single/PostVersion.vue +219 -0
  118. package/src/single/RightAffix.vue +160 -0
  119. package/src/single/SimpleThx.vue +4 -2
  120. package/src/single/Thx.vue +14 -2
  121. package/src/single/VersionDialog.vue +238 -0
  122. package/src/stories/components/StoryPropsTable.vue +137 -0
  123. package/src/stories/filters/FilterGallery.stories.js +110 -0
  124. package/src/stories/filters/clientBy.stories.js +24 -0
  125. package/src/stories/filters/markBy.stories.js +6 -0
  126. package/src/stories/filters/menuBy.stories.js +6 -0
  127. package/src/stories/filters/orderBy.stories.js +6 -0
  128. package/src/stories/filters/tagBy.stories.js +6 -0
  129. package/src/stories/filters/topicBy.stories.js +6 -0
  130. package/src/stories/filters/versionBy.stories.js +6 -0
  131. package/src/stories/filters/zlpBy.stories.js +6 -0
  132. package/src/stories/interact/QRcode.stories.js +59 -0
  133. package/src/stories/layout/BaseShell.stories.js +38 -0
  134. package/src/stories/layout/Breadcrumb.stories.js +40 -0
  135. package/src/stories/layout/CommonFooter.stories.js +1 -1
  136. package/src/stories/layout/CommonHeader.stories.js +1 -1
  137. package/src/stories/layout/LeftSideToggle.stories.js +78 -0
  138. package/src/stories/layout/LeftSidebar.stories.js +40 -0
  139. package/src/stories/layout/Main.stories.js +41 -0
  140. package/src/stories/layout/RightSidebar.stories.js +36 -0
  141. package/src/stories/layout/StorybookShell.vue +271 -0
  142. package/src/stories/layout/SuspendCommon.stories.js +67 -0
  143. package/src/stories/layout/SuspendCommonStage.vue +143 -0
  144. package/src/stories/mockData.js +369 -0
  145. package/src/stories/other/UserPop.stories.js +51 -0
  146. package/src/stories/single/Author.stories.js +19 -0
  147. package/src/stories/single/AuthorStoryStage.vue +103 -0
  148. package/src/stories/single/CmsSingle.stories.js +19 -0
  149. package/src/stories/single/CmsSingleStoryStage.vue +118 -0
  150. package/src/stories/single/Collection.stories.js +34 -0
  151. package/src/stories/single/Comment.stories.js +36 -0
  152. package/src/stories/single/Creators.stories.js +34 -0
  153. package/src/stories/single/PostCollection.stories.js +34 -0
  154. package/src/stories/single/PostDirectory.stories.js +31 -0
  155. package/src/stories/single/PostGuide.stories.js +47 -0
  156. package/src/stories/single/PostHeader.stories.js +39 -0
  157. package/src/stories/single/PostVersion.stories.js +41 -0
  158. package/src/stories/single/RightAffix.stories.js +84 -0
  159. package/src/stories/single/SimpleThx.stories.js +39 -0
  160. package/src/stories/single/SingleGallery.stories.js +207 -0
  161. package/src/stories/single/Thx.stories.js +38 -0
  162. package/src/stories/wiki/GamePrice.stories.js +64 -0
  163. package/src/stories/wiki/WikiComments.stories.js +58 -0
  164. package/src/stories/wiki/WikiPanel.stories.js +69 -0
  165. package/src/stories/wiki/WikiRevisions.stories.js +47 -0
  166. package/src/wiki/GamePrice.vue +107 -0
  167. package/src/wiki/WikiComment.vue +153 -0
  168. package/src/wiki/WikiComments.vue +206 -0
  169. package/src/wiki/WikiPanel.vue +121 -0
  170. package/src/wiki/WikiRevisions.vue +125 -0
  171. package/vue.config.js +2 -12
  172. package/assets/css/common/bottom.less +0 -25
  173. package/assets/css/editor/article.less +0 -36
  174. package/assets/css/editor/combo.less +0 -362
  175. package/assets/css/editor/resource.less +0 -399
  176. package/assets/css/editor/tinymce.less +0 -100
  177. package/assets/css/editor/upload.less +0 -136
  178. package/assets/css/module/author.less +0 -231
  179. package/assets/css/module/buff.less +0 -88
  180. package/assets/css/module/directory.less +0 -165
  181. package/assets/css/module/icon.less +0 -25
  182. package/assets/css/module/item.less +0 -279
  183. package/assets/css/module/item_simple.less +0 -58
  184. package/assets/css/module/jx3_element.less +0 -5
  185. package/assets/css/module/macro.less +0 -89
  186. package/assets/css/module/npc.less +0 -265
  187. package/assets/css/module/resource.less +0 -93
  188. package/assets/css/module/skill.less +0 -74
  189. package/assets/css/module/talent.less +0 -495
  190. package/assets/js/a.js +0 -46
  191. package/assets/js/code.js +0 -13
  192. package/assets/js/combo.js +0 -40
  193. package/assets/js/directory.js +0 -114
  194. package/assets/js/filter2.js +0 -186
  195. package/assets/js/fold.js +0 -11
  196. package/assets/js/gallery.js +0 -14
  197. package/assets/js/hljs_languages.js +0 -177
  198. package/assets/js/iframe.js +0 -38
  199. package/assets/js/img.js +0 -23
  200. package/assets/js/item/attribute_percent.js +0 -88
  201. package/assets/js/item/bind.js +0 -18
  202. package/assets/js/item/border.js +0 -19
  203. package/assets/js/item/border_quest.js +0 -12
  204. package/assets/js/item/color.js +0 -25
  205. package/assets/js/item/hljs_languages.js +0 -177
  206. package/assets/js/item/icon_url.js +0 -15
  207. package/assets/js/item/second_format.js +0 -19
  208. package/assets/js/jx3_element.js +0 -73
  209. package/assets/js/katex.js +0 -181
  210. package/assets/js/macro.js +0 -16
  211. package/assets/js/nextpage.js +0 -4
  212. package/assets/js/pswp.js +0 -67
  213. package/assets/js/pswp_template.js +0 -66
  214. package/assets/js/pz_iframe.js +0 -30
  215. package/assets/js/qixue.js +0 -28
  216. package/assets/js/renderImgPreview.js +0 -18
  217. package/assets/js/script.js +0 -6
  218. package/assets/js/stat.js +0 -107
  219. package/assets/js/talent2.js +0 -21
  220. package/assets/js/tex-mml-chtml.js +0 -36310
  221. package/assets/js/voice.js +0 -238
  222. package/assets/js/xss.js +0 -130
  223. package/src/editor/Article.vue +0 -230
  224. package/src/editor/BoxResource.vue +0 -441
  225. package/src/editor/Resource.vue +0 -623
  226. package/src/editor/Tinymce.vue +0 -204
  227. package/src/editor/Upload.vue +0 -277
  228. package/src/editor/UploadAlum.vue +0 -176
  229. package/src/editor/UploadBanner.vue +0 -156
  230. package/src/editor/components/Author.vue +0 -322
  231. package/src/editor/components/Avatar.vue +0 -95
  232. package/src/editor/components/Buff.vue +0 -80
  233. package/src/editor/components/Combo.vue +0 -259
  234. package/src/editor/components/Equip.vue +0 -299
  235. package/src/editor/components/GameText.vue +0 -242
  236. package/src/editor/components/Item.vue +0 -325
  237. package/src/editor/components/ItemSimple.vue +0 -134
  238. package/src/editor/components/Medal.vue +0 -43
  239. package/src/editor/components/Npc.vue +0 -215
  240. package/src/editor/components/PostAuthor.vue +0 -102
  241. package/src/editor/components/Skill.vue +0 -71
@@ -4,9 +4,11 @@ import zhCn from 'element-plus/es/locale/lang/zh-cn';
4
4
  import * as ElementPlusIconsVue from '@element-plus/icons-vue';
5
5
  import axios from 'axios';
6
6
 
7
+ import { install } from '../index';
7
8
  import { Jx3boxUiI18n } from '../i18n';
8
9
  import navData from '../assets/data/nav.json';
9
10
  import boxData from '../assets/data/box.json';
11
+ import { resolveAdapter, resolveStorybookMock } from './storybookMocks';
10
12
 
11
13
  import '@jx3box/jx3box-common/css/normalize.css';
12
14
  import '@jx3box/jx3box-common/css/font.css';
@@ -18,14 +20,26 @@ let axiosPatched = false;
18
20
  function patchAxiosForStorybook() {
19
21
  if (axiosPatched) return;
20
22
 
23
+ const originalCreate = axios.create.bind(axios);
21
24
  const originalGet = axios.get.bind(axios);
25
+
26
+ const withMockAdapter = (instance) => {
27
+ const defaultAdapter = resolveAdapter(axios, instance.defaults.adapter);
28
+ instance.defaults.adapter = async (config) => {
29
+ const mocked = resolveStorybookMock(config);
30
+ if (mocked) return mocked;
31
+ if (defaultAdapter) return defaultAdapter(config);
32
+ throw new Error(`Unmocked request in Storybook: ${config?.url || ''}`);
33
+ };
34
+ return instance;
35
+ };
36
+
37
+ axios.create = (...args) => withMockAdapter(originalCreate(...args));
22
38
  axios.get = (url, ...args) => {
23
- if (typeof url === 'string' && url.includes('/config/global.json')) {
24
- return Promise.resolve({
25
- data: {
26
- token_version: 'storybook',
27
- },
28
- });
39
+ const config = { method: 'get', url, ...(args[0] || {}) };
40
+ const mocked = resolveStorybookMock(config);
41
+ if (mocked) {
42
+ return Promise.resolve(mocked);
29
43
  }
30
44
  return originalGet(url, ...args);
31
45
  };
@@ -57,6 +71,7 @@ function bootstrapRuntimeData() {
57
71
  setup((app) => {
58
72
  app.use(Jx3boxUiI18n, { locale: 'zh-CN' });
59
73
  app.use(ElementPlus, { locale: zhCn });
74
+ install(app);
60
75
 
61
76
  for (const [name, component] of Object.entries(ElementPlusIconsVue)) {
62
77
  app.component(name, component);
@@ -64,13 +79,7 @@ setup((app) => {
64
79
  });
65
80
 
66
81
  patchAxiosForStorybook();
67
-
68
- export const decorators = [
69
- (story) => {
70
- bootstrapRuntimeData();
71
- return story();
72
- },
73
- ];
82
+ bootstrapRuntimeData();
74
83
 
75
84
  export const parameters = {
76
85
  actions: { argTypesRegex: '^on[A-Z].*' },
@@ -0,0 +1,214 @@
1
+ import {
2
+ mockBoxcoinConfig,
3
+ mockBoxcoinRecords,
4
+ mockCommitHistories,
5
+ mockCollection,
6
+ mockCommentPage,
7
+ mockCommentPower,
8
+ mockCreators,
9
+ mockHonor,
10
+ mockWikiComments,
11
+ mockWikiRevisions,
12
+ mockWikiStat,
13
+ mockMedals,
14
+ mockSearchUser,
15
+ mockTeams,
16
+ mockUserInfo,
17
+ mockUserPosts,
18
+ } from '../src/stories/mockData';
19
+
20
+ function resolveAdapter(axiosModule, adapter) {
21
+ if (!adapter) return null;
22
+ if (typeof adapter === 'function') return adapter;
23
+ if (typeof axiosModule?.getAdapter === 'function') {
24
+ return axiosModule.getAdapter(adapter);
25
+ }
26
+ return null;
27
+ }
28
+
29
+ function normalizePath(config) {
30
+ const rawUrl = config?.url || '';
31
+ const baseURL = config?.baseURL || '';
32
+ const base = baseURL
33
+ ? new URL(baseURL, 'https://storybook.local').toString()
34
+ : 'https://storybook.local';
35
+ const url = rawUrl.startsWith('http') ? new URL(rawUrl) : new URL(rawUrl || '/', base);
36
+ return url.pathname.replace(/^\/__proxy\/[^/]+/, '');
37
+ }
38
+
39
+ function respond(config, data, status = 200) {
40
+ return {
41
+ data,
42
+ status,
43
+ statusText: 'OK',
44
+ headers: {},
45
+ config,
46
+ request: {},
47
+ };
48
+ }
49
+
50
+ function mockCmsConfig(key) {
51
+ if (key === 'boxcoin') return { val: 1 };
52
+ if (key === 'admin_boxcoin_visible') return { val: 1 };
53
+ if (key === 'level_has_gift_permission') return { val: 0 };
54
+ if (key === 'comment_strict') return { val: 0 };
55
+ return { val: '' };
56
+ }
57
+
58
+ export function resolveStorybookMock(config) {
59
+ const method = String(config?.method || 'get').toLowerCase();
60
+ const path = normalizePath(config);
61
+ const params = config?.params || {};
62
+
63
+ if (path.includes('/config/global.json')) {
64
+ return respond(config, { token_version: 'storybook' });
65
+ }
66
+
67
+ if (method === 'get' && path === '/api/cms/config') {
68
+ return respond(config, { data: mockCmsConfig(params.key) });
69
+ }
70
+
71
+ if (method === 'get' && path.match(/^\/api\/cms\/post\/\d+\/authors$/)) {
72
+ return respond(config, { data: mockCreators });
73
+ }
74
+
75
+ if (method === 'get' && path.match(/^\/api\/cms\/post\/collection\/\d+$/)) {
76
+ return respond(config, { data: mockCollection });
77
+ }
78
+
79
+ if (method === 'get' && path.match(/^\/api\/cms\/user\/\d+\/info$/)) {
80
+ return respond(config, { data: mockUserInfo });
81
+ }
82
+
83
+ if (method === 'get' && path.match(/^\/api\/cms\/user\/honor\/\d+\/using$/)) {
84
+ return respond(config, { data: mockHonor });
85
+ }
86
+
87
+ if (method === 'get' && path === '/api/cms/user/search') {
88
+ return respond(config, { data: mockSearchUser });
89
+ }
90
+
91
+ if (method === 'get' && path.match(/^\/api\/cms\/posts\/user\/\d+\/latest$/)) {
92
+ return respond(config, { data: { list: mockUserPosts } });
93
+ }
94
+
95
+ if (method === 'get' && path === '/api/cms/user/decoration') {
96
+ return respond(config, { data: [] });
97
+ }
98
+
99
+ if (method === 'get' && path === '/api/cms/account/permission/i') {
100
+ return respond(config, { data: { permission: [{ action: 'manage_boxcoin_bbs' }] } });
101
+ }
102
+
103
+ if (method === 'get' && path.match(/^\/api\/next2\/user\/\d+\/medals$/)) {
104
+ return respond(config, { data: mockMedals });
105
+ }
106
+
107
+ if (method === 'get' && path === '/api/team/relation/public') {
108
+ return respond(config, { data: mockTeams });
109
+ }
110
+
111
+ if (method === 'get' && path.match(/^\/api\/next2\/rss\/overview\/author\/\d+$/)) {
112
+ return respond(config, { data: { total: 128, subscribed: false } });
113
+ }
114
+
115
+ if (method === 'get' && path.match(/^\/api\/inspire\/article\/.+\/boxcoin\/limit$/)) {
116
+ return respond(config, { data: mockBoxcoinConfig });
117
+ }
118
+
119
+ if (method === 'get' && path.match(/^\/api\/inspire\/article\/.+\/history$/)) {
120
+ return respond(config, { data: mockBoxcoinRecords });
121
+ }
122
+
123
+ if (method === 'get' && path.match(/^\/api\/summary-any\/.+\/stat$/)) {
124
+ return respond(config, { data: mockWikiStat, status: 200 });
125
+ }
126
+
127
+ if (method === 'get' && path === '/api/cms/wiki/comment') {
128
+ return respond(config, { data: mockWikiComments });
129
+ }
130
+
131
+ if (method === 'get' && path.match(/^\/api\/cms\/wiki\/post\/type\/.+\/source\/.+\/versions$/)) {
132
+ return respond(config, { data: mockWikiRevisions });
133
+ }
134
+
135
+ if (method === 'get' && path.match(/^\/api\/next2\/comment\/.+\/i-am-author$/)) {
136
+ return respond(config, mockCommentPower);
137
+ }
138
+
139
+ if (method === 'get' && path.match(/^\/api\/next2\/comment\/.+\/comment\/page\/\d+$/)) {
140
+ return respond(config, mockCommentPage);
141
+ }
142
+
143
+ if (method === 'get' && path.match(/^\/api\/next2\/comment\/.+\/comment\/\d+\/reply\/page\/\d+$/)) {
144
+ return respond(config, mockCommentPage);
145
+ }
146
+
147
+ if (method === 'get' && path.match(/^\/api\/next2\/userdata\/commit-history\/content-meta\/\d+\/commit\/history$/)) {
148
+ return respond(config, {
149
+ data: {
150
+ list: mockCommitHistories.map(({ content, ...item }) => item),
151
+ page: {
152
+ total: mockCommitHistories.length,
153
+ },
154
+ },
155
+ });
156
+ }
157
+
158
+ if (method === 'get' && path.match(/^\/api\/next2\/userdata\/commit-history\/content-meta\/\d+\/commit\/by-hash\/.+$/)) {
159
+ const hash = path.split('/').pop();
160
+ const matched = mockCommitHistories.find((item) => item.commit_hash === hash) || mockCommitHistories[0];
161
+ return respond(config, {
162
+ data: {
163
+ content: matched?.content || '',
164
+ },
165
+ });
166
+ }
167
+
168
+ if (['post', 'put', 'delete'].includes(method) && path.startsWith('/api/next2/comment/')) {
169
+ return respond(config, { code: 0, data: {} });
170
+ }
171
+
172
+ if (['post', 'put', 'delete'].includes(method) && path.startsWith('/api/cms/wiki/comment')) {
173
+ return respond(config, { code: 0, data: {} });
174
+ }
175
+
176
+ if (method === 'put' && path.match(/^\/api\/cms\/manage\/wiki\/comment\/\d+\/(star|top)$/)) {
177
+ return respond(config, { code: 0, data: {} });
178
+ }
179
+
180
+ if (['post', 'delete'].includes(method) && path.startsWith('/api/next2/rss/')) {
181
+ return respond(config, { code: 0, data: { subscribed: method === 'post' } });
182
+ }
183
+
184
+ if (['post', 'delete', 'get'].includes(method) && path.startsWith('/api/article/favorites/')) {
185
+ return respond(config, { code: 0, data: { id: 1, totalFavorites: 12 } });
186
+ }
187
+
188
+ if (method === 'get' && path === '/api/vip/i') {
189
+ return respond(config, {
190
+ data: {
191
+ was_vip: 0,
192
+ expire_date: '1970-02-02T16:00:00.000Z',
193
+ total_day: 0,
194
+ was_pro: 0,
195
+ pro_expire_date: '1970-02-02T16:00:00.000Z',
196
+ pro_total_day: 0,
197
+ rename_card_count: 0,
198
+ had_renamed: 0,
199
+ namespace_card_count: 0,
200
+ box_coin: 300,
201
+ points: 16800,
202
+ experience: 16800,
203
+ },
204
+ });
205
+ }
206
+
207
+ if (method === 'post' && path === '/api/next2/userdata/watch-later/item') {
208
+ return respond(config, { code: 0, data: {} });
209
+ }
210
+
211
+ return null;
212
+ }
213
+
214
+ export { resolveAdapter };
package/README.md CHANGED
@@ -6,58 +6,54 @@
6
6
  ## 模块
7
7
 
8
8
  ### 全局
9
- - CommonHeader 公共头
10
- - Breadcrumb 面包屑
11
- - Main 默认内容框架(非必须)
12
- - LeftSidebar 左侧边栏(非必须)
13
- - LeftSideToggle 左侧边栏触发器(非必须,可独立使用)
14
- - RightSidebar 右侧边栏(非必须)
15
- - CommonFooter 公共底
16
- - SuspendCommon 移动侧浮窗底(此组件需要手动引入)
9
+
10
+ - CommonHeader 公共头
11
+ - Breadcrumb 面包屑
12
+ - Main 默认内容框架(非必须)
13
+ - LeftSidebar 左侧边栏(非必须)
14
+ - LeftSideToggle 左侧边栏触发器(非必须,可独立使用)
15
+ - RightSidebar 右侧边栏(非必须)
16
+ - CommonFooter 公共底
17
+ - SuspendCommon 移动侧浮窗底(此组件需要手动引入)
17
18
 
18
19
  ### 内容单页 single
19
20
 
20
21
  主要是用于详情页的展示内容
21
22
 
22
- - CmsSingle 单页框架
23
- - Author 侧边栏作者信息整合
24
- - PostDirectory 目录
25
- - PostHeader 创作信息
26
- - Creators 联合创作
27
- - Collection 小册
28
- - Article 文章内容
29
- - Thx 交互组件
30
- - SimpleThx 交互组件简化版(仅PVP栏目使用,需要手动引入)
31
- - Comment 评论
23
+ - CmsSingle 单页框架
24
+ - Author 侧边栏作者信息整合
25
+ - PostDirectory 目录
26
+ - PostHeader 创作信息
27
+ - Creators 联合创作
28
+ - Collection 小册
29
+ - Thx 交互组件
30
+ - SimpleThx 交互组件简化版(仅 PVP 栏目使用,需要手动引入)
31
+ - Comment 评论
32
+ - RightAffix 固钉
33
+ - PostGuide 快速跳转至上下篇
34
+ - PostVersion 修改历史
35
+ - PostCollection 关联小册
32
36
 
33
37
  ### 筛选模块 list
34
38
 
35
39
  主要用于各栏目的列表筛选
36
40
 
37
- - clientBy 客户端筛选
38
- - markBy 标记筛选
39
- - menuBy 通用筛选
40
- - orderBy 排序筛选
41
- - tagBy 标签筛选
42
- - topicBy 主题筛选
43
- - versionBy 版本筛选
44
- - zlpBy 资料片筛选
45
-
46
- ### 个人模块 author
47
-
48
- 一般用于文章详情的左侧边栏,个人主页等
49
-
50
- - Avatar 头像
51
- - AuthorFans 粉丝榜
52
- - AuthorFollow 关注用户(区分rss,此处用户更新不会收到消息)
53
- - AuthorGift 打赏用户
54
- - AuthorHonor 用户称号
55
- - AuthorInfo 用户基础信息
56
- - AuthorLink 用户绑定平台账号(微博,github,直播间)
57
- - AuthorMedals 用户勋章
58
- - AuthorPosts 用户作品
59
- - AuthorRss 订阅用户
60
- - AuthorTeams 所在团队
61
- - UserPop 搜索用户弹窗
41
+ - clientBy 客户端筛选
42
+ - markBy 标记筛选
43
+ - menuBy 通用筛选
44
+ - orderBy 排序筛选
45
+ - tagBy 标签筛选
46
+ - topicBy 主题筛选
47
+ - versionBy 版本筛选
48
+ - zlpBy 资料片筛选
49
+
50
+ ### 百科模块 wiki
62
51
 
52
+ - GamePrice 游戏价格组件
53
+ - WikiPanel 百科面板
54
+ - WikiComments 百科评论
55
+ - WikiRevisions 百科修订
63
56
 
57
+ ### 其他
58
+
59
+ - UserPop 搜索用户弹窗
@@ -43,6 +43,10 @@
43
43
  /* assets/css/bread/admin.less */
44
44
  margin-left: 10px;;
45
45
  }
46
+ .m-status-op {
47
+ .flex;
48
+ align-items: center;
49
+ }
46
50
  }
47
51
 
48
52
  .c-admin-highlight-checkbox {
@@ -64,7 +68,7 @@
64
68
  /* assets/css/bread/admin.less */
65
69
  .u-banner {
66
70
  /* assets/css/bread/admin.less */
67
- .mt(5px);
71
+ .mt(10px);
68
72
  }
69
73
  .u-btn {
70
74
  /* assets/css/bread/admin.less */
@@ -82,6 +86,20 @@
82
86
  box-sizing: border-box;
83
87
  }
84
88
  overflow: hidden;
89
+
90
+ background-color: #fbfdff;
91
+ border: 1px dashed #c0ccda;
92
+ border-radius: 6px;
93
+ box-sizing: border-box;
94
+ width: 148px;
95
+ height: 148px;
96
+ line-height: 146px;
97
+ vertical-align: top;
98
+
99
+ &:hover {
100
+ /* assets/css/bread/admin.less */
101
+ border-color: #409eff;
102
+ }
85
103
  }
86
104
 
87
105
  .c-admin-info {
@@ -116,7 +134,7 @@
116
134
  }
117
135
  .el-select {
118
136
  /* assets/css/bread/admin.less */
119
- .el-input__wrapper {
137
+ .el-select__wrapper {
120
138
  /* assets/css/bread/admin.less */
121
139
  border-top-left-radius: 0;
122
140
  border-bottom-left-radius: 0;
@@ -41,11 +41,11 @@
41
41
  /* assets/css/bread/breadcrumb.less */
42
42
  .u-title {
43
43
  /* assets/css/bread/breadcrumb.less */
44
- color: @darkblue;
44
+ color: var(--el-color-primary);
45
45
  }
46
46
  .u-channel-logo svg {
47
47
  /* assets/css/bread/breadcrumb.less */
48
- fill: @darkblue;
48
+ fill: var(--el-color-primary);
49
49
  }
50
50
  }
51
51
 
@@ -122,6 +122,9 @@
122
122
  /* assets/css/bread/breadcrumb.less */
123
123
  .pa;
124
124
  .rt(10px);
125
+ .flex(y);gap:10px;
126
+
127
+ .el-button{margin:0 !important;}
125
128
  }
126
129
  }
127
130
  .c-breadcrumb.isOverlay {
@@ -4,8 +4,8 @@
4
4
  /* assets/css/comment/quick-reply.less */
5
5
  cursor: pointer;
6
6
  position: relative;
7
- top: 8px;
8
7
  margin-left: 10px;
8
+ color:#555;
9
9
  }
10
10
  }
11
11
  .c-jx3box-reply-pop {
@@ -6,7 +6,7 @@
6
6
  .pf;
7
7
  .z(600);
8
8
  left: 0;
9
- top: @header-height + @bread-height;
9
+ top: @header-height + @bread-height + 1px;
10
10
  bottom: 0;
11
11
  background-color: @bg-light;
12
12
  border-right: 1px solid #eee;
@@ -12,8 +12,6 @@
12
12
  /* assets/css/interact/like2.less */
13
13
  color: #888;
14
14
  .ml(10px);
15
- .pr;
16
- top: 4px;
17
15
  }
18
16
 
19
17
  &.disabled {
@@ -21,4 +19,9 @@
21
19
  .tm(0.5);
22
20
  cursor: default;
23
21
  }
22
+
23
+ .w-like2__trigger {
24
+ .flex;
25
+ align-items: center;
26
+ }
24
27
  }
@@ -0,0 +1,69 @@
1
+ .w-qrcode {
2
+ display: inline-flex;
3
+ align-items: center;
4
+ .pr;
5
+ z-index: 200;
6
+ width: fit-content;
7
+ white-space: nowrap;
8
+ .u-icon {
9
+ .mr(5px);
10
+ .size(14px);
11
+ .y(-2px);
12
+ fill: @color;
13
+ }
14
+ .u-text {
15
+ .fz(13px);
16
+ user-select: none;
17
+ }
18
+ .pointer;
19
+ transition: 0.1s ease-in-out;
20
+ &:hover {
21
+ color: @pink;
22
+ .u-icon {
23
+ fill: @pink;
24
+ }
25
+ }
26
+
27
+ .u-pic {
28
+ .size(100px);
29
+ .mb(5px);
30
+ }
31
+ }
32
+ .u-qrcode-popup {
33
+ position: fixed;
34
+ transform: translateX(-50%);
35
+ padding: 10px;
36
+ border: 1px solid #e8e8e8;
37
+ z-index: 9999;
38
+ background: #fff;
39
+ border-radius: 3px;
40
+ font-size: 12px;
41
+ text-align: center;
42
+ color: #888;
43
+ box-shadow: 0 0 8px rgba(0, 0, 0, 0.1);
44
+ }
45
+ @media screen and (max-width: @phone) {
46
+ .w-qrcode {
47
+ .none;
48
+ }
49
+ }
50
+ .w-qrcode-static {
51
+ .u-qrcode {
52
+ .ps;
53
+ }
54
+ .u-icon {
55
+ .mr(5px);
56
+ .size(14px);
57
+ .y(-2px);
58
+ fill: @color;
59
+ }
60
+ .u-pic {
61
+ background-color: #fff;
62
+ padding: 7px 7px 7px 8px;
63
+ }
64
+ .u-txt {
65
+ padding: 0 5px;
66
+ .db;
67
+ .fz(12px,2);
68
+ }
69
+ }
@@ -15,13 +15,13 @@
15
15
  i,
16
16
  svg {
17
17
  /* assets/css/single/author.less */
18
- .size(16px);
18
+ .size(18px);
19
19
  .mr(5px);
20
20
  }
21
21
  span {
22
22
  /* assets/css/single/author.less */
23
23
  .fz(12px);
24
- .bold;
24
+ font-weight: 500;
25
25
  }
26
26
  // border-bottom: 1px solid @border;
27
27
  }
@@ -85,6 +85,11 @@
85
85
  .mt(5px);
86
86
  display: flex;
87
87
  align-items: center;
88
+ gap:8px;
89
+
90
+ .el-button{
91
+ margin:0;
92
+ }
88
93
  }
89
94
  .u-links {
90
95
  /* assets/css/single/author.less */
@@ -92,16 +97,16 @@
92
97
  }
93
98
  .u-block {
94
99
  /* assets/css/single/author.less */
95
- .mt(20px);
100
+ .mt(22px);
96
101
  }
97
102
 
98
- .u-btn {
99
- /* assets/css/single/author.less */
100
- &:hover {
101
- /* assets/css/single/author.less */
102
- color: @primary;
103
- }
104
- }
103
+ // .u-btn {
104
+ // /* assets/css/single/author.less */
105
+ // &:hover {
106
+ // /* assets/css/single/author.less */
107
+ // color: @primary;
108
+ // }
109
+ // }
105
110
  }
106
111
 
107
112
  .c-sidebar-left .c-author {
@@ -11,6 +11,7 @@
11
11
  @media screen and (max-width: @phone) {
12
12
  /* assets/css/single/cms-single.less */
13
13
  .m-single-box {
14
+ --el-color-primary: @primary;
14
15
  /* assets/css/single/cms-single.less */
15
16
  padding: 0 15px;
16
17
  }