Skip to content

Commit c746c67

Browse files
committed
Merge branch 'develop'
2 parents 3b44bec + 8e13916 commit c746c67

File tree

9 files changed

+2441
-1610
lines changed

9 files changed

+2441
-1610
lines changed

mock/role/routes.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ export const constantRoutes = [
77
meta: { hidden: true },
88
children: [
99
{
10-
path: '/redirect/:path*',
10+
path: '/redirect/:path(.*)',
1111
component: 'views/redirect/index'
1212
}
1313
]

package.json

+48-48
Original file line numberDiff line numberDiff line change
@@ -14,14 +14,14 @@
1414
"test:unit": "jest --clearCache && vue-cli-service test:unit"
1515
},
1616
"dependencies": {
17-
"@tinymce/tinymce-vue": "^3.0.1",
18-
"axios": "^0.19.0",
17+
"@tinymce/tinymce-vue": "^3.1.0",
18+
"axios": "^0.19.2",
1919
"clipboard": "^2.0.4",
20-
"codemirror": "^5.49.2",
21-
"core-js": "^3.4.5",
20+
"codemirror": "^5.51.0",
21+
"core-js": "^3.6.4",
2222
"cors": "^2.8.5",
2323
"driver.js": "^0.9.8",
24-
"echarts": "^4.5.0",
24+
"echarts": "^4.6.0",
2525
"element-ui": "^2.13.0",
2626
"faker": "^4.1.0",
2727
"file-saver": "^2.0.2",
@@ -35,79 +35,79 @@
3535
"nprogress": "^0.2.0",
3636
"path-to-regexp": "^6.1.0",
3737
"register-service-worker": "^1.6.2",
38-
"screenfull": "^5.0.0",
38+
"screenfull": "^5.0.1",
3939
"script-loader": "^0.7.2",
4040
"simple-progress-webpack-plugin": "^1.1.2",
41-
"sortablejs": "^1.10.1",
42-
"tinymce": "^5.1.2",
43-
"tui-editor": "^1.4.8",
44-
"vue": "^2.6.10",
45-
"vue-class-component": "^7.1.0",
41+
"sortablejs": "^1.10.2",
42+
"tinymce": "^5.1.6",
43+
"tui-editor": "^1.4.10",
44+
"vue": "^2.6.11",
45+
"vue-class-component": "^7.2.2",
4646
"vue-count-to": "^1.0.13",
47-
"vue-i18n": "^8.15.1",
47+
"vue-i18n": "^8.15.3",
4848
"vue-image-crop-upload": "^2.5.0",
49-
"vue-property-decorator": "^8.3.0",
50-
"vue-router": "^3.1.3",
49+
"vue-property-decorator": "^8.4.0",
50+
"vue-router": "^3.1.5",
5151
"vue-splitpane": "^1.0.6",
5252
"vue-svgicon": "^3.2.6",
5353
"vue2-dropzone": "^3.6.0",
5454
"vuedraggable": "^2.23.2",
5555
"vuex": "^3.1.2",
56-
"vuex-class": "^0.3.2",
57-
"vuex-module-decorators": "^0.11.0",
58-
"xlsx": "^0.15.3",
56+
"vuex-module-decorators": "^0.16.1",
57+
"xlsx": "^0.15.5",
5958
"yamljs": "^0.3.0"
6059
},
6160
"devDependencies": {
6261
"@types/clipboard": "^2.0.1",
63-
"@types/codemirror": "^0.0.81",
64-
"@types/compression": "^1.0.1",
62+
"@types/codemirror": "^0.0.84",
63+
"@types/compression": "^1.7.0",
6564
"@types/cors": "^2.8.6",
66-
"@types/echarts": "^4.4.1",
65+
"@types/echarts": "^4.4.3",
6766
"@types/express": "^4.17.2",
68-
"@types/faker": "^4.1.8",
67+
"@types/faker": "^4.1.9",
6968
"@types/file-saver": "^2.0.1",
70-
"@types/jest": "^24.0.23",
69+
"@types/jest": "^25.1.2",
7170
"@types/js-cookie": "^2.2.4",
72-
"@types/jszip": "^3.1.6",
71+
"@types/jszip": "^3.1.7",
7372
"@types/lodash": "^4.14.149",
7473
"@types/morgan": "^1.7.37",
74+
"@types/node": "^13.7.0",
7575
"@types/nprogress": "^0.2.0",
76-
"@types/sortablejs": "^1.10.0",
76+
"@types/sortablejs": "^1.10.2",
7777
"@types/tinymce": "^4.5.23",
78-
"@types/webpack-env": "^1.14.1",
78+
"@types/webpack-env": "^1.15.1",
7979
"@types/yamljs": "^0.2.30",
80-
"@vue/cli-plugin-babel": "^4.0.5",
81-
"@vue/cli-plugin-e2e-cypress": "^4.0.5",
82-
"@vue/cli-plugin-eslint": "^4.0.5",
83-
"@vue/cli-plugin-pwa": "^4.0.5",
84-
"@vue/cli-plugin-router": "^4.0.5",
85-
"@vue/cli-plugin-typescript": "^4.0.5",
86-
"@vue/cli-plugin-unit-jest": "^4.0.5",
87-
"@vue/cli-plugin-vuex": "^4.0.5",
88-
"@vue/cli-service": "^4.0.5",
80+
"@vue/cli-plugin-babel": "^4.2.2",
81+
"@vue/cli-plugin-e2e-cypress": "^4.2.2",
82+
"@vue/cli-plugin-eslint": "^4.2.2",
83+
"@vue/cli-plugin-pwa": "^4.2.2",
84+
"@vue/cli-plugin-router": "^4.2.2",
85+
"@vue/cli-plugin-typescript": "^4.2.2",
86+
"@vue/cli-plugin-unit-jest": "^4.2.2",
87+
"@vue/cli-plugin-vuex": "^4.2.2",
88+
"@vue/cli-service": "^4.2.2",
8989
"@vue/eslint-config-standard": "^4.0.0",
9090
"@vue/eslint-config-typescript": "^4.0.0",
91-
"@vue/test-utils": "^1.0.0-beta.30",
91+
"@vue/test-utils": "^1.0.0-beta.31",
9292
"babel-core": "^7.0.0-bridge.0",
9393
"babel-eslint": "^10.0.3",
94-
"concurrently": "^5.0.0",
95-
"eslint": "^6.7.2",
96-
"eslint-plugin-vue": "^6.0.1",
94+
"concurrently": "^5.1.0",
95+
"eslint": "^6.8.0",
96+
"eslint-plugin-vue": "^6.1.2",
9797
"fibers": "^4.0.2",
98-
"jest": "^24.9.0",
99-
"lint-staged": "^9.5.0",
100-
"sass": "^1.23.7",
101-
"sass-loader": "^8.0.0",
102-
"style-resources-loader": "^1.3.2",
103-
"swagger-routes-express": "^3.1.1",
104-
"ts-jest": "^24.2.0",
98+
"jest": "^25.1.0",
99+
"lint-staged": "^10.0.7",
100+
"sass": "^1.25.0",
101+
"sass-loader": "^8.0.2",
102+
"style-resources-loader": "^1.3.3",
103+
"swagger-routes-express": "^3.1.2",
104+
"ts-jest": "^25.2.0",
105105
"ts-node-dev": "^1.0.0-pre.44",
106-
"typescript": "^3.7.2",
106+
"typescript": "^3.7.5",
107107
"vue-cli-plugin-element": "^1.0.1",
108108
"vue-cli-plugin-style-resources-loader": "^0.1.4",
109-
"vue-template-compiler": "^2.6.10",
110-
"webpack": "^4.41.2"
109+
"vue-template-compiler": "^2.6.11",
110+
"webpack": "^4.41.5"
111111
},
112112
"bugs": {
113113
"url": "https://github.com/armour/vue-typescript-admin-template/issues"

src/components/DropdownMenu/index.vue

+4-1
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ $transition-time: .1s;
5050
width: 250px;
5151
position: relative;
5252
z-index: 1;
53+
height: auto!important;
5354
5455
&-title {
5556
width: 100%;
@@ -74,10 +75,12 @@ $transition-time: .1s;
7475
position: absolute;
7576
width: 100%;
7677
background: #e0e0e0;
78+
color: black;
7779
line-height: 60px;
7880
height: 60px;
7981
cursor: pointer;
80-
font-size: 20px;
82+
font-size: 18px;
83+
overflow: hidden;
8184
opacity: 1;
8285
transition: transform 0.28s ease;
8386

src/layout/components/Navbar/index.vue

+7-5
Original file line numberDiff line numberDiff line change
@@ -60,11 +60,13 @@
6060
>
6161
<el-dropdown-item>Docs</el-dropdown-item>
6262
</a>
63-
<el-dropdown-item divided>
64-
<span
65-
style="display:block;"
66-
@click="logout"
67-
>{{ $t('navbar.logOut') }}</span>
63+
<el-dropdown-item
64+
divided
65+
@click.native="logout"
66+
>
67+
<span style="display:block;">
68+
{{ $t('navbar.logOut') }}
69+
</span>
6870
</el-dropdown-item>
6971
</el-dropdown-menu>
7072
</el-dropdown>

src/layout/components/Sidebar/SidebarItem.vue

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<template>
22
<div
33
v-if="!item.meta || !item.meta.hidden"
4-
:class="['menu-wrapper', isCollapse ? 'simple-mode' : 'full-mode', {'first-level': isFirstLevel}]"
4+
:class="[isCollapse ? 'simple-mode' : 'full-mode', {'first-level': isFirstLevel}]"
55
>
66
<template v-if="!alwaysShowRootMenu && theOnlyOneChild && !theOnlyOneChild.children">
77
<sidebar-item-link

src/router/index.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ export const constantRoutes: RouteConfig[] = [
4747
meta: { hidden: true },
4848
children: [
4949
{
50-
path: '/redirect/:path*',
50+
path: '/redirect/:path(.*)',
5151
component: () => import(/* webpackChunkName: "redirect" */ '@/views/redirect/index.vue')
5252
}
5353
]

src/views/icons/index.vue

+41-31
Original file line numberDiff line numberDiff line change
@@ -9,40 +9,44 @@
99
</aside>
1010
<el-tabs type="border-card">
1111
<el-tab-pane label="Icons">
12-
<div
13-
v-for="item of svgIcons"
14-
:key="item"
15-
@click="handleClipboard(generateSvgIconCode(item),$event)"
16-
>
17-
<el-tooltip placement="top">
18-
<div slot="content">
19-
{{ generateSvgIconCode(item) }}
20-
</div>
21-
<div class="icon-item">
22-
<svg-icon
23-
:name="item"
24-
class="disabled"
25-
/>
26-
<span>{{ item }}</span>
27-
</div>
28-
</el-tooltip>
12+
<div class="grid">
13+
<div
14+
v-for="item of svgIcons"
15+
:key="item"
16+
@click="handleClipboard(generateSvgIconCode(item),$event)"
17+
>
18+
<el-tooltip placement="top">
19+
<div slot="content">
20+
{{ generateSvgIconCode(item) }}
21+
</div>
22+
<div class="icon-item">
23+
<svg-icon
24+
:name="item"
25+
class="disabled"
26+
/>
27+
<span>{{ item }}</span>
28+
</div>
29+
</el-tooltip>
30+
</div>
2931
</div>
3032
</el-tab-pane>
3133
<el-tab-pane label="Element-UI Icons">
32-
<div
33-
v-for="item of elementIcons"
34-
:key="item"
35-
@click="handleClipboard(generateElementIconCode(item),$event)"
36-
>
37-
<el-tooltip placement="top">
38-
<div slot="content">
39-
{{ generateElementIconCode(item) }}
40-
</div>
41-
<div class="icon-item">
42-
<i :class="'el-icon-' + item" />
43-
<span>{{ item }}</span>
44-
</div>
45-
</el-tooltip>
34+
<div class="grid">
35+
<div
36+
v-for="item of elementIcons"
37+
:key="item"
38+
@click="handleClipboard(generateElementIconCode(item),$event)"
39+
>
40+
<el-tooltip placement="top">
41+
<div slot="content">
42+
{{ generateElementIconCode(item) }}
43+
</div>
44+
<div class="icon-item">
45+
<i :class="'el-icon-' + item" />
46+
<span>{{ item }}</span>
47+
</div>
48+
</el-tooltip>
49+
</div>
4650
</div>
4751
</el-tab-pane>
4852
</el-tabs>
@@ -78,6 +82,12 @@ export default class extends Vue {
7882
margin: 10px 20px 0;
7983
overflow: hidden;
8084
85+
.grid {
86+
position: relative;
87+
display: grid;
88+
grid-template-columns: repeat(auto-fill, minmax(120px, 1fr));
89+
}
90+
8191
.icon-item {
8292
margin: 20px;
8393
height: 85px;

src/views/login/index.vue

+38-21
Original file line numberDiff line numberDiff line change
@@ -25,31 +25,42 @@
2525
:placeholder="$t('login.username')"
2626
name="username"
2727
type="text"
28+
tabindex="1"
2829
autocomplete="on"
2930
/>
3031
</el-form-item>
3132

32-
<el-form-item prop="password">
33-
<span class="svg-container">
34-
<svg-icon name="password" />
35-
</span>
36-
<el-input
37-
:key="passwordType"
38-
ref="password"
39-
v-model="loginForm.password"
40-
:type="passwordType"
41-
:placeholder="$t('login.password')"
42-
name="password"
43-
autocomplete="on"
44-
@keyup.enter.native="handleLogin"
45-
/>
46-
<span
47-
class="show-pwd"
48-
@click="showPwd"
49-
>
50-
<svg-icon :name="passwordType === 'password' ? 'eye-off' : 'eye-on'" />
51-
</span>
52-
</el-form-item>
33+
<el-tooltip
34+
v-model="capsTooltip"
35+
content="Caps lock is On"
36+
placement="right"
37+
manual
38+
>
39+
<el-form-item prop="password">
40+
<span class="svg-container">
41+
<svg-icon name="password" />
42+
</span>
43+
<el-input
44+
:key="passwordType"
45+
ref="password"
46+
v-model="loginForm.password"
47+
:type="passwordType"
48+
:placeholder="$t('login.password')"
49+
name="password"
50+
tabindex="2"
51+
autocomplete="on"
52+
@keyup.native="checkCapslock"
53+
@blur="capsTooltip = false"
54+
@keyup.enter.native="handleLogin"
55+
/>
56+
<span
57+
class="show-pwd"
58+
@click="showPwd"
59+
>
60+
<svg-icon :name="passwordType === 'password' ? 'eye-off' : 'eye-on'" />
61+
</span>
62+
</el-form-item>
63+
</el-tooltip>
5364

5465
<el-button
5566
:loading="loading"
@@ -136,6 +147,7 @@ export default class extends Vue {
136147
private passwordType = 'password'
137148
private loading = false
138149
private showDialog = false
150+
private capsTooltip = false
139151
private redirect?: string
140152
private otherQuery: Dictionary<string> = {}
141153
@@ -158,6 +170,11 @@ export default class extends Vue {
158170
}
159171
}
160172
173+
private checkCapslock(e: KeyboardEvent) {
174+
const { key } = e
175+
this.capsTooltip = key !== null && key.length === 1 && (key >= 'A' && key <= 'Z')
176+
}
177+
161178
private showPwd() {
162179
if (this.passwordType === 'password') {
163180
this.passwordType = ''

0 commit comments

Comments
 (0)