@jx3box/jx3box-ui 2.3.26 → 2.3.27

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jx3box/jx3box-ui",
3
- "version": "2.3.26",
3
+ "version": "2.3.27",
4
4
  "description": "JX3BOX Vue3 UI",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -3,7 +3,7 @@
3
3
  append-to-body
4
4
  v-model="visible"
5
5
  custom-class="c-alternate"
6
- width="320px"
6
+ width="360px"
7
7
  :title="$jx3boxT('jx3boxUi.commonHeader.alternate.title', '切换马甲')"
8
8
  >
9
9
  <div class="c-alternate__content">
@@ -218,33 +218,40 @@ export default {
218
218
  <style lang="less">
219
219
  /* src/header/alternate.vue */
220
220
  .c-alternate {
221
+ border-radius: 6px;
222
+
221
223
  .el-dialog__title {
222
- .fz(12px);
224
+ color: #303133;
225
+ .fz(16px);
226
+ font-weight: 600;
223
227
  }
224
228
  .el-dialog__body {
225
229
  padding: 0;
226
230
  }
227
231
  .el-dialog__header {
228
- // padding: 10px;
229
- border-bottom: #dcdfe6 1px solid;
232
+ margin-right: 0;
233
+ padding: 16px 20px;
234
+ border-bottom: 1px solid #ebeef5;
230
235
  }
231
236
  }
232
237
 
233
238
  .c-alternate__content {
234
- max-height: 600px;
239
+ max-height: min(600px, calc(100vh - 120px));
235
240
  overflow-y: auto;
236
241
 
237
242
  .c-alternate-item {
238
243
  .flex;
239
- gap: 10px;
244
+ align-items: center;
245
+ gap: 12px;
240
246
  .pointer;
241
- padding: 10px;
247
+ padding: 12px 16px;
242
248
  .pr;
243
- border-bottom: 1px solid #eee;
249
+ border-bottom: 1px solid #ebeef5;
244
250
  .fz(13px);
251
+ transition: background-color 0.15s ease;
245
252
 
246
253
  &:hover {
247
- background-color: @bg-light;
254
+ background-color: @bg-gray;
248
255
 
249
256
  .u-remove {
250
257
  display: block;
@@ -254,11 +261,12 @@ export default {
254
261
 
255
262
  .u-remove {
256
263
  .pa;
257
- right: 10px;
258
- top: 5px;
259
- color: #999;
264
+ right: 14px;
265
+ top: 50%;
266
+ color: #909399;
260
267
  .pointer;
261
268
  font-size: 16px;
269
+ transform: translateY(-50%);
262
270
 
263
271
  &:hover {
264
272
  color: #333;
@@ -270,9 +278,12 @@ export default {
270
278
  .pr;
271
279
  }
272
280
  .u-avatar {
281
+ display: block;
273
282
  width: 50px;
274
283
  height: 50px;
284
+ background-color: #fff;
275
285
  border-radius: 50%;
286
+ object-fit: cover;
276
287
  }
277
288
  .u-active {
278
289
  .pa;
@@ -280,18 +291,26 @@ export default {
280
291
  top: -6px;
281
292
  width: 20px;
282
293
  height: 20px;
283
- // fill: #fff;
284
294
  color: #0dbc19;
295
+ background-color: #fff;
296
+ border-radius: 50%;
297
+ box-shadow: 0 0 0 2px #fff;
285
298
  }
286
299
 
287
300
  .m-misc {
301
+ min-width: 0;
288
302
  .flex;
289
303
  flex-direction: column;
290
- gap: 10px;
304
+ gap: 4px;
305
+ }
306
+ .u-name,
307
+ .u-time {
308
+ color: #606266;
309
+ line-height: 20px;
291
310
  }
292
311
  .u-label {
293
312
  font-size: 12px;
294
- color: #999;
313
+ color: #909399;
295
314
  }
296
315
 
297
316
  .u-extra {
@@ -306,17 +325,16 @@ export default {
306
325
  }
307
326
 
308
327
  .c-alternate-btn {
309
- // padding: 10px;
310
328
  text-align: center;
311
329
  .pointer;
312
- // width: 100%;
313
- // border-radius: 0;
314
330
  .size(100%,74px);
315
331
  .fz(40px,74px);
316
- color: #999;
332
+ color: #909399;
333
+ transition: background-color 0.15s ease, color 0.15s ease;
334
+
317
335
  &:hover {
318
- background-color: @bg-light;
319
- color: #888;
336
+ background-color: @bg-gray;
337
+ color: #606266;
320
338
  }
321
339
  }
322
340
  }
@@ -16,10 +16,8 @@
16
16
  <template v-for="item in userPanel" :key="item.label">
17
17
  <li>
18
18
  <a :href="item.link" :target="item.target || '_self'" class="u-menu-item" @click="onClick(item)">
19
- <span class="u-menu-icon-wrap">
20
- <img :src="resolveImg(item.icon)" class="u-menu-icon" :alt="item.icon" />
21
- </span>
22
- <span class="u-menu-label">{{ getPanelLabel(item) }}</span>
19
+ <img :src="resolveImg(item.icon)" class="u-menu-icon" :alt="item.icon" />
20
+ {{ getPanelLabel(item) }}
23
21
  <span v-if="showPop && isFeaturePanelItem(item)" class="u-new">New!</span>
24
22
  </a>
25
23
  <a
@@ -28,10 +26,8 @@
28
26
  class="u-menu-item u-menu-item--account-ready"
29
27
  @click.prevent="openAccountReady"
30
28
  >
31
- <span class="u-menu-icon-wrap">
32
- <img :src="resolveImg(item.icon)" class="u-menu-icon" :alt="item.icon" />
33
- </span>
34
- <span class="u-menu-label">资料完善</span>
29
+ <img :src="resolveImg(item.icon)" class="u-menu-icon" :alt="item.icon" />
30
+ 资料完善
35
31
  <span class="u-new u-new--important">重要</span>
36
32
  </a>
37
33
  </li>
@@ -40,10 +36,8 @@
40
36
  <hr v-if="adminPanel.length" />
41
37
  <li v-for="item in adminPanel" :key="item.label">
42
38
  <a :href="item.link" :target="item.target || '_self'" class="u-menu-item">
43
- <span class="u-menu-icon-wrap">
44
- <img :src="resolveImg(item.icon)" class="u-menu-icon" :alt="item.icon" />
45
- </span>
46
- <span class="u-menu-label">{{ getPanelLabel(item) }}</span>
39
+ <img :src="resolveImg(item.icon)" class="u-menu-icon" :alt="item.icon" />
40
+ {{ getPanelLabel(item) }}
47
41
  </a>
48
42
  </li>
49
43
  </template>
@@ -221,95 +215,36 @@ export default {
221
215
  align-items: center;
222
216
  }
223
217
  .u-menu {
224
- width: 272px;
225
- box-sizing: border-box;
226
- right: -10px;
227
- top: calc(100% + 8px);
228
- margin: 0;
229
- padding: 8px;
230
- border: 1px solid rgba(31, 35, 41, 0.1);
231
- border-radius: 12px;
232
- background: rgba(255, 255, 255, 0.98);
233
- box-shadow: 0 12px 36px rgba(15, 23, 42, 0.16), 0 2px 8px rgba(15, 23, 42, 0.08);
234
- backdrop-filter: blur(12px);
235
- -webkit-backdrop-filter: blur(12px);
236
-
237
- &:before {
238
- right: 16px;
239
- top: -14px;
240
- border-width: 7px;
241
- border-bottom-color: rgba(31, 35, 41, 0.1);
242
- }
243
-
244
- &:after {
245
- right: 17px;
246
- top: -12px;
247
- border-width: 6px;
248
- border-bottom-color: #fff;
249
- }
250
-
251
- li {
252
- margin: 0;
253
- }
254
-
255
218
  .u-menu-item {
256
219
  .flex;
257
220
  align-items: center;
258
- gap: 10px;
259
- min-height: 44px;
260
- box-sizing: border-box;
261
- padding: 8px 10px;
262
- border-radius: 8px;
263
- color: #303133;
264
- font-size: 14px;
265
- line-height: 20px;
266
- text-decoration: none;
267
- transition: background-color 0.16s ease, color 0.16s ease;
221
+ gap: 4px;
222
+ transition: background-color 0.15s ease;
268
223
 
269
224
  &:hover {
270
- color: #4338ca;
271
- background: #f4f3ff;
272
-
273
- .u-menu-icon-wrap {
274
- background: #e8e7ff;
275
- }
276
-
277
225
  .u-menu-icon {
278
- opacity: 0.9;
226
+ filter: invert(100%) sepia(0%) saturate(5658%) hue-rotate(215deg) brightness(114%) contrast(106%);
227
+ }
228
+ .u-new {
229
+ background-color: #fff;
230
+ color: @v4primary-dark;
231
+ box-shadow: inset 0 0 0 1px fade(@v4primary-dark, 20%);
232
+ }
233
+ .u-new--important {
234
+ color: #f56c6c;
235
+ box-shadow: inset 0 0 0 1px fade(#f56c6c, 20%);
279
236
  }
280
237
  }
281
238
  }
282
-
283
- .u-menu-icon-wrap {
284
- .flex;
285
- align-items: center;
286
- justify-content: center;
287
- width: 30px;
288
- height: 30px;
289
- flex: 0 0 30px;
290
- border-radius: 8px;
291
- background: #f3f4f6;
292
- transition: background-color 0.16s ease;
293
- }
294
-
295
239
  .u-menu-icon {
296
- width: 18px;
297
- height: 18px;
298
- opacity: 0.72;
299
- }
300
-
301
- .u-menu-label {
302
- flex: 1;
303
- min-width: 0;
304
- font-weight: 500;
305
- letter-spacing: 0.01em;
240
+ width: 16px;
241
+ height: 16px;
306
242
  }
307
243
  }
308
244
 
309
245
  hr {
310
246
  border: 0;
311
- border-top: 1px solid #eef0f3;
312
- margin: 6px 4px;
247
+ border-top: 1px solid #eee;
313
248
  }
314
249
 
315
250
  .u-icon-msg {
@@ -332,38 +267,22 @@ export default {
332
267
  }
333
268
 
334
269
  .u-new {
335
- flex: 0 0 auto;
336
- box-sizing: border-box;
337
- min-width: 38px;
338
- margin-left: 4px;
339
- padding: 2px 7px;
340
- border: 1px solid #d9d6fe;
341
- border-radius: 999px;
342
- background: #eeedff;
343
- color: #4f46e5;
344
270
  font-size: 11px;
345
- font-weight: 700;
346
- line-height: 16px;
347
- text-align: center;
271
+ line-height: 18px;
272
+ margin-left: 4px;
273
+ background-color: @v4primary-dark;
274
+ color: #fff;
275
+ padding: 0 5px;
276
+ border-radius: 2px;
277
+ transition: color 0.15s ease, background-color 0.15s ease, box-shadow 0.15s ease;
348
278
  }
349
279
 
350
280
  .u-new--important {
351
- border-color: #ffd1d1;
352
- background: #fff0f0;
353
- color: #e5484d;
281
+ background-color: #f56c6c;
354
282
  }
355
283
 
356
284
  .u-menu-item--account-ready {
357
- color: #303133;
358
-
359
- &:hover {
360
- color: #d9363e;
361
- background: #fff5f5;
362
-
363
- .u-menu-icon-wrap {
364
- background: #ffe8e8;
365
- }
366
- }
285
+ color: #f56c6c;
367
286
  }
368
287
  }
369
288
  </style>